1、软件工程 Software Engineering,内蒙古师范大学计算机与信息工程学院2006年9月,第二章 软件过程,ISO 9000定义:软件过程是把输入转化为输出的一组彼此相关的资源和活动。 从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)。,软件工程过程定义了: 方法使用的顺序、 要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的里程碑。 软件工程过程包含四种基本的过程活动:Plan 软件规格说明Do 软件开发Check 软件确认Action 软件演进,
2、2.1 软件生命周期的基本任务 2.2 瀑布模型 2.3 快速原型模型 2.4 增量模型 2.5 螺旋模型 2.6 喷泉模型,2.1 软件生命周期的基本任务,软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即软件的生存期。软件生存期包含三个阶段:软件定义软件开发运行维护,可行性研究与计划,需求分析,设计,编码,运行维护,测试,定义 阶段,开 发 阶 段,维护阶段,软件生存期模型是软件工程思想的具体化,是跨越软件生存期的系统开发、运行、维护所实施的全部活动和任务的过程框架。,软件生存期的六个步骤:制定计划(问题定义和可行性研究)需求分析设计(概要设计和详细设计)程序编码测试(单元测试和
3、综合测试)运行维护,1.制定计划 确定要开发软件系统的总目标 给出功能、性能、可靠性以及接口等方面的要求 完成该软件任务的可行性研究 估计可利用的资源 (硬件,软件,人力等)、成本、效益、开发进度 制定出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查,2.需求分析和定义 准确回答“目标系统必须做什么” 对用户提出的要求进行分析并给出详细的定义 编写软件需求说明书或系统功能说明书及初步的系统用户手册 提交管理机构评审,3.软件设计 概要设计 把各项需求转换成软件的体系结构。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应。 详细设计 对每个模块要完成的工作进行具体的
4、描述,为源程序编写打下基础。 编写设计说明书,提交评审。,4.程序编写 把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单” 写出的程序应当是结构良好、清晰易读的,且与设计相一致的,5.软件测试 单元测试,查找各模块在功能和结构上存在的问题并加以纠正 组装测试,将已测试过的模块按一定顺序组装起来 按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用,6.运行维护 改正性维护 :运行中发现了软件中的错误需要修正 适应性维护 :为了适应变化了的软件工作环境,需做适当变更 完善性维护 :为了增强软件的功能需做变更,软件过程模型是软件
5、开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。 软件过程模型也常称为:软件开发模型软件生存期模型软件工程范型,瀑布模型 快速原型模型 增量模型 螺旋模型 喷泉模型,2.2 瀑布模型,各项活动按自上而下,相互衔接的固定次序,如同瀑布逐级下落。每项活动均处于一个质量环(输入-处理-输出-评审)中。,瀑布模型,按照传统瀑布模型开发软件的特点: 1).阶段间具有顺序性和依赖性。 2).推迟实现的观点。 3).每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。,2.3 快速原型模型,由于在项目开发的初始阶段人们对软件的需求认
6、识常常不够清晰,因而使得开发项目难于做到一次开发成功,出现返工再开发在所难免。做两次。 第一次只是试验开发,其目标只是在于探索可行性,弄清软件需求。 第二次则在此基础上获得较为满意的软件产品。,原型范型,听取用 户意见,建造/修改原型,用户测试 运行原型,先开发一个“原型”软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。,2.4 增量模型(渐增模型),把软件产品分解成一系列的增量构件,在增量开发迭代中逐步加入。 每个构件由多个相互作用的模块构成,并且能够完成特定的功能。,增量模型(递增模型、增殖模型),先完成一个系统子集的开发,再按同样的开发步骤增加功能 (
7、系统子集),如此递增下去直至满足全部系统需求。系统的总体设计在初始子集设计阶段就应作出设想。,分析,增量模型,设计,编码,测试,分析,设计,编码,测试,分析,设计,编码,测试,分析,设计,编码,测试,增量1,增量2,增量3,增量4,交付的 增量1,交付的 增量2,交付的 增量3,交付的 增量4,日历时间,2.5 螺旋模型,螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即: 制定计划确定软件目标,选定实施方案,弄清项目开发的限制 风险分析分析所选方案,考虑如何识别和消除风险 实施工程实施软件开发 客户评估评价开发工作,提出修正建议,2.6 喷泉模型,迭代重复演进 无间隙各阶段间无明显
8、界限,体现了迭代和无间隙的特性。 系统某个部分常常重复工作多次,相关对象在每次迭代中随之加入演进的软件成分。 无间隙是指在各项开发活动,即分析、设计和编码之间不存在明显的边界。 喷泉模型是对象驱动的过程。 主要用于支持面向对象开发过程体现了软件创建所固有的迭代和无间隙的特征。,相关的其他内容:,智能模型是基于知识的软件开发模型,它把瀑布模型和专家系统综合在一起。 该模型在各个开发阶段都利用了相应的专家系统来帮助软件人员完成开发工作。 为此,建立了各个阶段的知识库,将模型、相应领域知识和软件工程知识分别存入数据库。以软件工程知识为基础的生成规则构成的专家系统与包含应用领域知识规则的其他专家系统相结合,构成该应用领域的开发系统。,智能模型,可重用部件组装模型,使用重用技术的软件工程模型部件(构件): 可重用的软件成份,可重用部件组装模型,系统A的 软件构成,系统C的 软件构成,系统B的 软件构成,可重用 部 件,可重用部 件,在软件开发过程中必须遵循的软件工程原则有: 抽象与自顶向下、逐层细化 信息隐蔽和数据封装 模块化 局部化 确定性 一致性和标准化 完备性和可验证性,软件工程原则,作业,请苏老师补充,