一章节软件工程概论.ppt
1,第一章软件工程概论,1.1 软件的概念、特点1.2 软件的发展1.3 软件生存周期,2,1.3 软件生存周期(1),一.软件生存周期的概念 1.在软件项目开发过程中一般要面临如下的问题:(1)提出问题?(2)有无解决问题的办法?(3)达到的标准?(4)问题如何解决?(5)解决问题的具体方法?(6)如何实现?(7)产品的检验?(8)产品的使用和维护等。2.软件生存周期:从软件定义、开发、使用、维护到淘汰的全过 程。,3,1.3 软件生存周期(2),二.划分软件生存周期阶段的原则 1.软件生存周期每一个阶段的任务尽可能独立。2.同一阶段内的任务性质尽可能相同。3.软件每一个阶段任务的开始和结束有严格的标准。三.软件生存周期阶段的划分 1.定义阶段:包括问题定义、可行性研究、概要需求 分析。2.开发阶段:包括总体设计、详细设计、编码、软件 测试。3.软件维护阶段:运行维护。,4,1.3 软件生存周期(3),问题定义,可行性研究,需求分析,概要设计,详细设计,编 码,测 试,分析需求,设 计,制 造,测 试,附:一台机器的生存周期,软件生存周期模型,5,1.3 软件生存周期(4),软件生存周期各个阶段文档,理解问题,系统目标与范围说明书,理解工作范围,项目计划任务书,定义用户要求,需求规格说明书,建立软件结构,概要设计说明书,各模块的功能实现,程序规格说明书,编写程序,程序清单,发现和排除错误,软件产品,运行和管理,改建的软件产品,6,1.3 软件生存周期(5),软件项目提出,进入开发阶段,确定工作范围、资源需求和投资成本;可行性分析;制定开发进度表。,确定功能、性能要求;制定有效性验收标准;编写初步用户手册。,技术评审,软件计划,软件计划规格说明,软件项目“搁浅”,定义阶段流程图,7,1.3 软件生存周期(6),确定的软件需求,进入运行维护,定义软件结构与数据结构,确定模块功能、调用关系接口,确定每个模块算法,评审,静态检查,软件结构图与模块功能说明,测试计划测试结果,单元测试,集成测试,验收测试。,编写程序,评审,详细设计描述,源程序清单,开发阶段流程图,8,1.4 软件开发的方法和技术(1),软件开发采用的主要方法有瀑布型、渐增型和变换型三种形式。一.瀑布型 1.按照软件生存周期的划分,明确规定每一个阶段的任务。2.该方法适用于软件需求比较明确、开发技术比较成熟、工程管 理比较严格的情况。3.该方法的特点(1)各个阶段的顺序性和依赖性;(2)划分逻辑设计与物理设计,尽可能推迟程序的物理实现;(3)每个阶段必须完成规定的文档,通过复审及早发现问题,及早解决。4.开发阶段划分与开发过程如前面软件生存周期所示。5.问题:要求用户及软件分析员在开始对软件产品提出完全、精 确和正确的要求往往是不实际的。,9,1.4 软件开发的方法和技术(2),二.渐增型 1.渐增型方法是从问题的部分需求出发,先建立一个不完全的系 统,通过测试运行该系统取得经验和信息反馈,加深对软件需 求的理解,进一步使系统扩充和完善。如此反复,直至软件人 员和用户对所设计完成的软件系统满意为止。2.在渐增型开发下的软件是随软件开发的过程而逐渐形成的。3.渐增型开发方法适合于知识型软件的开发,设计系统时对用户 需求的认识开始不是很清楚的,需要在开发过程中不断认识、不断获得新的知识去丰富和完善系统。多数研究性质的试验软 件,一般采用此方法。开发过程图解如下所示:,10,1.4 软件开发的方法和技术(3),问题描述,软件需求分析(渐增),软件设计和编码(渐增),软件运行和测试,满意否?,软件交付使用,渐增型开发过程图解,11,1.4 软件开发的方法和技术(4),4.渐增型快速的原型化方法(1)思想:首先建立一个能够反映用户需求的原型,让用户实际了解未 来系统的概貌,确认需要和改建的功能,然后将原型系统反复改建,最终建立完全符合用户要求的新系统。(2)方法:原型系统仅包括未来系统的主要功能,以及系统的重要接口;尽量使用能缩短开发周期饿语言和工具;把原型系统作为基础,通 过补充与修改获得最终的实际系统。(3)建立原型的过程是帮助定义软件需求的一种手段。(4)采用原型化技术需处理好以下几个方面的问题:A.功能选择:部分功能,需求可以模拟实现;B.构造原型:着眼于预期评估,一般采用高级语言实现;C.评价与确认:通过运行原型,对软件规格说明书进行评价与确认.D.进一步使用:根据原型实现的特定和环境,可以把原型作为试验的 工具,用完弃之;或使原型全部或部分成为最终系统的组成部分.,12,1.4 软件开发的方法和技术(5),需求分析,原型开发,最终系统实现,原型评价,最终系统设计,原型化开发过程,13,1.4 软件开发的方法和技术(6),系统需求分析、初步设计,确定系统模型,系统转换、维护与评价,利用快速生成工具实现系统模型,满意否?,修改设计,MIS原型开发过程图解,14,1.4 软件开发的方法和技术(7),问题描述,软件需求分析(渐增),软件设计和编码(渐增),程序,程序,三.变换型 1.从软件需求的形式化规格说明出发,经过一系列的程序变 换,得到最终的程序系统。2.该方法必须有严格的数学理论和形式化技术的支持,目前 尚处于研究和实验阶段。,开发过程图解,15,1.5 软件工程学(1),一.软件工程 软件工程是指导计算机软件开发和维护的工程学科。1.它采用工程的概念、原理、技术和方法来开发和维 护软件;2.它将管理技术与当前经过时间考验的而证明是正确 的技术方法结合起来;3.它强调使用生存周期方法学和结构分析和结构技术。4.经过人们长期的努力和探索,围绕着实现软件优质 高产这个目标,从技术到管理两个方面做了大量的 努力,逐渐形成了“软件工程学”这一新的学科。,16,1.5 软件工程学(2),二.软件工程学所包含的内容,软件工程学,软件开发技术,软件开发方法学,软件工具,软件工程环境,软件管理学,软件工程管理,软件经济学,17,1.5 软件工程学(3),三.软件开发方法学的形成 无统一的个人活动方法 采用结构化的方法编写程序“结构分析”与”结构化设计”等软件开发技术 1.各种方法的具体内容虽然各有不同,但都遵循某些 共同或类似的原则,都对软件开发步骤和文档格式 提出了规范化的要求。2.软件生产进入了有章可寻的、向结构化和标准化迈 进的“工程化”阶段。,18,1.5 软件工程学(4),四.软件工具 1.软件工具:帮助开发软件的软件。2.编译阶段中的编译程序、编辑程序、连结程序、操作系统都属于软 件工具。3.分析阶段、设计阶段和测试阶段中相对应的“工具箱”或“集成工具”等。五.软件工程环境 方法与工具的结合,加上配套的软、硬件支持称为软件工程 环境。它能支持开发者按照软件工程的方法,全面完成生存周期中的各项任务。如UNIX环境、Ada环境以及各种工作站。六.软件工程管理 1.按照进度及预算完成软件计划,实现预期的经济和社会效益。2.软件管理可以借助计算机来实现。3.一个理想的软件工程环境,应该具备支持开发和支持管理两个方面 的工具。,19,第一章 习 题,1.什么是软件危机?2.为什么会产生软件危机?3.怎样克服软件危机?4.构成软件项目的最终产品?5.什么是软件生存周期?6.软件生存周期为什么划分成阶段?7.应该怎样来划分阶段?8.软件开发模型有几种?它们的开发方法有何特点?9.什么是软件工程?10.什么是软件工程环境?,