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