《软件工程课件1概述》由会员分享,可在线阅读,更多相关《软件工程课件1概述(17页珍藏版)》请在金锄头文库上搜索。
1、软件工程导论软件工程导论武汉科技大学计算机学院2010年3月4-13周周三,5-6节,13105周五,5-6节,13407第一章第一章 软件工程学概述软件工程学概述(1)计算机系统=计算机硬件系统+计算机软件系统计算机硬件系统经历了4个发展阶段,现在处于第五个发展阶段:1.第一代计算机(1946年1957年)主要元器件是电子管。2.第二代计算机(1958年1964年)晶体管时代。3.第三代计算机(1965年1970年)以中、小规模集成电路取代了晶体管.4.第四代计算机(1971年至今)采用大规模集成电路和超大规模集成电路。现在,又进入了智能计算机阶段.大、小、集中、分布、全球互联网计算机系统第
2、一章第一章 软件工程学概述软件工程学概述(2)计算机软件系统第一阶段:个体化生产,过程隐含,随意性大;面向批处理;有限的分布;自定义软件;第二阶段:软件作坊面向批处理+多用户+实时;数据库;软件产品;第三阶段:分布式系统;嵌入“智能”;低成本硬件;消费者的影响;第四阶段:强大的桌面系统;面向对象技术;智能信息处理系统;网络与网格计算系统;1946-19591)冯.诺依曼程序存储;2)Fortran高级语言-56可执行+速度快+结果好1)1960-19692)非数值计算-范围扩大;3)高级语言程序设计,注重逻辑性;4)软件独立于硬件;1)1970-19792)数据与程序分离,数据结构+算法=程序
3、设计;3)系统软件+应用软件;4)软件工程方法;1)1980-现在:2)?软件的定义(Boehm):软件是程序以及开发、使用和维护程序需要的所有文档。软件是程序以及开发、使用和维护程序需要的所有文档。软件危机的表现开发成本难以控制,进度不可预计;软件系统的质量和可靠性很差,难以满意;软件文档相当缺乏,软件系统不可维护;软件开发生产率很低,软件产品供不应求。软件产品成本十分昂贵。软件危机产生的原因软件本身的特点:-软件是一种逻辑实体,而不是具体的物理实体,具有高度的抽象性;-软件是一个逻辑上复杂而规模上庞大的系统,涉及技术、管理等多方面的问题;-软件的生产方式与硬件明显不同:产品的质量控制在设计
4、和制造阶段的不同;产品的生产方式不同;设计和制造阶段的资金和人力投入、技术复杂度不同;-软件的运行和维护阶段,没有传统意义上的机械磨损、老化问题。-软件与硬件有关,对软件有可移植性的要求。-软件工作涉及许多社会因素。对软件开发与维护存在许多错误认识和做法:忽视软件需求分析的重要性;对软件与程序的概念不清;轻视软件维护。软件开发与维护的方法不正确:对系统需求没有清楚和准确的认识就进入开发阶段,忽视对软件开发过程的管理;1.1 软件危机磨合调整磨损用坏t失效率硬、软件产品失效率曲线硬件软件计算机软件开发和维护过程计算机软件开发和维护过程中所遇到的一系列严重问题中所遇到的一系列严重问题软件改进 软件
5、产品需要分阶段的定义、软件产品需要分阶段的定义、设计和开发,严格的产品质量控制,设计和开发,严格的产品质量控制,完整的文档记录。完整的文档记录。早期中期晚期引入同一变动付出的代价随时间变化的趋势$改正一个问题的估计费用(美元)改正一个问题的估计工作量(人天)20200100020000.050.52.55.0RASDDDCDITSTRTBell 实验室统计结果(US)$5060708090硬件软件$年代1.1 软件危机解决软件危机的途径将软件开发看成是一种组织严密、管理严格、各类人员协同配合共同完成的工程项目。研究和推广成功的软件开发技术和方法。开发和使用好的软件工具。1.2 软件工程1基本概
6、念:软件生命周期:软件所经历的定义、开发、使用和维护直到废弃所经历的时期。程序设计环境:源程序编辑,编译或解释,链接,调试和运行工具的集合。软件工程环境:软件定义,设计和实现,测试和维护等各个阶段所使用的软件工具的集合。概念 可行性 需求设计实现测试 安装交付维护报废软件生命周期t软件工程:是指导计算机软件开发和维护的工程学科;1)采用工程的概念、原理、技术和方法来开发与维护软件;2)把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量地软件并有效地维护它。科学规律、态度、方法和知识;技术运用科学、专门经验(设计和生产);工程多快好省地运用技术;技术技
7、术+管理管理1.2 软件工程采用现代程序设计技术提高开发和维护的效率,如结构化分析SA和结构化设计SD技术。结果应能清楚地审查开发小组的人员应少而精1)软件开发的进度并非与参与开发人员的数量成正比,有时恰恰相反。2)软件产品的质量绝对与开发人员的素质相关。承认不断改进软件工程实践的必要性用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理6类计划项目概要计划,里程碑计划,项目控制计划,产品控制计划,验证计划,运行维护计划。2、软件工程的基本原理坚持进行阶段评审坚持进行阶段评审1)经验数据说明,大部分错误是在编码之前造成的,在整个软件设计错误中,设计错误占63%,而编码错误占37%。2)
8、错误发现和改正得越晚,所需付出的代价就越高。实行严格的产品控制实行严格的产品控制主要实行基准配置管理。软件配置成分:软件开发各个阶段产生的文档和代码。基准配置:经过评审后的软件配置成分。1.2 软件工程(续1)生命周期各阶段的基本任务问题定义可行性研究需求分析总体设计(概要设计)详细设计编码和单元测试综合测试软件维护。3.软件工程方法学生命周期方法学的基本内容从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。生命周期方法学的应用方法从对任务的抽象逻辑分析开始,一个阶段一个阶段地进行开发;前一个阶段任务的
9、完成是后一个阶段工作的前提和基础,而后一个阶段任务通常是使前一阶段提出的解法更进一步的具体化,加进了更多的实现细节。阶段过渡方法每一个阶段的开始和结束都有严格标准,前一阶段结束的标准是后一阶段工作开始的标准。技术审查和管理复审。基本概念文档:是软件开发人员包括用户之间地通信工具,反映和定义了关于软件的知识和进一步工作的基础。也起软件开发备忘录的作用,提供对开发结果的检查和督察1)传统方法学:生命周期方法学/结构化范型3. 软件工程方法学2)面向对象方法学:软件系统本质上是信息处理系统:数据及其行为是高度统一的。传统的软件工程技术将两者分离,给软件开发带来很大的局限性;功能子程序数据子集合传统方
10、法程序对象方法程序操作1操作2操作3状态1、客观世界是由各种对象所组成的,任何事物都是对象,每一个对象都有自已的运动规律和内部状态,每一个对象都属于某个对象类,都是该对象类的一个元素。复杂的对象可以是由相对比较简单的各种对象以某种方式而构成的。2、消息:软件对象之间进行交互作用和通讯是利用消息的。3、封装、继承和多态性1.3 软件生命周期4.瀑布模型问题定义特点:1)阶段间具有顺序性和依赖性2)推迟实现的观点3)质量保证的观点。可行性研究需求分析总体设计详细设计编码与单元测试综合测试软件维护软件定义时期软件开发时期软件运行维护时期1.4 软件过程 1、瀑布模型问题定义可行性研究需求分析总体设计
11、详细设计编码与单元测试综合测试软件维护要解决的问题是什么?问题性质、工程目标和规模的报告分析员:实际用户+负责人是否有解决办法?分析员高层逻辑模型,准确和具体的工程规模和目标,成本/效益分析等可行性报告为了解决的问题,目标系统必须做什么?准确确定系统的功能系统的逻辑模型(数据流图+数据字典+简要算法)如何解决这些问题模块划分软件结构如何具体地实现系统:每个模块的流程图(程序的详细规格说明)通过各种类型的测试,使软件达到预定的要求写出正确的容易理解和容易维护的程序模块通过各种必要的维护活动使系统持久地满足用户的需要四种不同类型的维护改正性维护、适应性维护、完善性维护、预防性维护2、快速原型模型快
12、速原型:就是快速建立起在计算机上运行的程序,它所完成的功能往往是最终产品能完成的功能的子集。快速原型验证规格说明验证设计验证编码测试综合测试维护变化的需求验证3、增量模型:分批、逐步提供软件功能规格说明设计编码和集成交付客户规格说明设计编码和集成交付客户规格说明设计编码和集成交付客户构件1:构件2:构件n:需求分析验证规格说明验证概要设计验证维护针对每个构件,完成详细设计、编码和集成,经测试后交付给用户增量模型风险很大的增量模型4、螺旋模型快速原型验证规格说明验证设计验证编码测试综合测试维护变化的需求验证风险分析风险分析风险分析风险分析风险分析风险分析在快速模型的基础上每一个环节引进风险分析4
13、螺旋模型1.5 技术审查和管理复审1.必要性管理复审和技术复审错误传播模型原始要求正确的规格说明错误的规格说明正确的设计错误的设计对错误说明的设计正确编码错误编码对错误设计的编码对错误说明的编码正确功能可改正的错误不可改正的错误潜伏的错误需求分析设计编码测试错误的扇形传播模型习题和阅读文献习题: P22-第1,3,4,6,7题深度阅读文献: 1 http:/ Crises 2 http:/ Engineering/SE 3 http:/ Environment 4 http:/ 5 http:/ OOP 6 http:/ 软件过程Software Process 7 http:/ 软件开发模型(Software Development Model) 8 http:/ 要求掌握软件设计工具要求掌握软件设计工具:PowerDesign 和和 Visio 2003