软件工程概述.ppt

上传人:F****n 文档编号:109605600 上传时间:2019-10-27 格式:PPT 页数:100 大小:975.50KB
返回 下载 相关 举报
软件工程概述.ppt_第1页
第1页 / 共100页
软件工程概述.ppt_第2页
第2页 / 共100页
软件工程概述.ppt_第3页
第3页 / 共100页
软件工程概述.ppt_第4页
第4页 / 共100页
软件工程概述.ppt_第5页
第5页 / 共100页
点击查看更多>>
资源描述

《软件工程概述.ppt》由会员分享,可在线阅读,更多相关《软件工程概述.ppt(100页珍藏版)》请在金锄头文库上搜索。

1、0,软件工程,基本概述,1,本讲核心,一、软件工程过程 二、软件生存期模型 三、软件开发方法 四、软件工具与软件开发环境 五、路线图,2,软件项目过程,顾客,顾客,需求,满意,产品,输入,输出,产品实现,?,3,软件工程三段论,软件开发,项目管理,过程改进,4,软件开发,开发过程是软件人员生产软件的过程,例如需求分析、设计、编码、测试等,相当于生产线上的生产过程。,5,软件开发路线图,6,软件项目管理,管理过程是项目管理者规划软件开发、控制软件开发的过程,相当于生产线上的管理过程,管理过程是伴随开发过程进行的过程。,7,软件项目管理路线图,8,软件过程改进,过程改进相当于对软件开发过程和软件管

2、理过程的“工艺流程”进行管理和改进,如果没有好的工艺生产不出好的产品,它包括对开发过程和管理过程的定义和改进。,9,软件过程改进路线图,10,软件工程过程(Software engineering process) :指在软件工具的支持下,所进行的一系列软件工程活动。,通常包括以下四类基本过程: 1. 软件规格说明:规定软件的功能及其运行环境。 2. 软件开发:产生满足规格说明的软件。 3. 软件确认:确认软件能够完成客户提出的要求。 4. 软件演进:为满足客户的变更要求,软件必须在使用的过程中演进。,11,本讲核心,一、软件工程过程 二、软件生存期模型 三、软件开发方法 四、软件工具与软件开

3、发环境 五、路线图,12,软件生命周期(Software life cycle)是指从软件开始开发到报废的全过程,亦称软件生存期。,软件生命周期可分为7个阶段: 1. 可行性研究和项目开发计划 2. 需求分析 3. 概要设计 4. 详细设计 5. 编码 6. 测试 7. 维护,软件生存期,一般用经典的瀑布模型来描述。,13,瀑布模型(waterfall model),14,在大部分文献中将生存周期划分为5个阶段,即需求定义、设计、编码、测试及维护。其中需求定义阶段包括可行性研究和项目开发计划、需求分析,设计阶段包括概要设计和详细设计。 为了描述软件生存期的活动,提出了多种生存期模型(也叫软件过

4、程模型),例如: 瀑布模型、V模型、原型化模型、螺旋模型等。,15,常用生存期模型,瀑布Waterfall V模型V-shaped 原型Prototyping 增量Incremental 螺旋式Spiral .,16,Figure 2.1 The waterfall model.,17,瀑布模型,是研究人员提出的第一个模型,它将开发阶段从一个阶段瀑布般转换到另一个阶段。 该图暗示,一个开发阶段必须在另一个开发阶段开始之前完成。 问题:并不能反映实际的代码开发方式,实际上软件是通过大量的迭代进行开发的。 若不对实际的软件开发过程加以控制,开发过程可能看起来会像图2.2。,18,19,瀑布模型的主

5、要缺点是没有把软件看做一个问题求解的过程。 通过引入加强理解的活动和子活动,软件开发过程有助于控制活动之间的反反复复。 原型(prototype)就是这样的一个子过程,它使客户和开发人员能够对计划开发的系统的相关方面进行检查,以决定它对最终产品是否合适或恰当。 确认(validation)确保系统实现了所有的需求。 验证(verification)确保每项功能都是正确的。,20,Figure 2.3 The waterfall model with prototyping,21,WaterFall model适合的项目,在项目开始前,项目的需求很明确 在项目开始前,解决方案也很明确 类似的项目

6、如: 公司的财务系统 库存管理系统 短期项目,22,Figure 2.4 The V model.,23,V模型,接收测试,集成测试,系统测试,项目规化,需求分析,总体设计,详细设计,编码和调试,集成测试,单元测试,24,V模型,V模型使得隐藏在瀑布模型中的迭代和重做更加明确 瀑布模型关注的通常是文档和制品 V模型关注的是活动和正确性 大家误认为测试是开发周期的最后一个阶段,其实早期的测试对提高产品的质量,缩短开发周期起着重要作用。 V模型正好说明的测试的重要性,它与开发是并行的。V模型体现了全过程的质量意识。,25,V模型适合的项目,在项目开始前,项目的需求很明确 在项目开始前,解决方案也很

7、明确 对系统的性能安全很严格的项目 类似的项目如: 航天飞机等 公司的财务系统 实例,26,Figure 2.5 The prototyping model,27,Prototype,28,Prototype 模型适合的项目,在项目开始前,项目的需求不明确 需要减少项目需求的不确定性 类似的项目如: 确定显示界面 第一次开发的产品,验证可行性,29,Figure 2.9 the incremental and iterative models.,30,阶段性开发,增量开发(incremental development) 在增量开发中,需求文档中指定的系统按功能划分为子系统。定义发布时首先定义

8、一个小的功能子系统,然后在每个新的发布中增加新功能。 迭代开发(iterative development) 迭代开发是在一开始就提交一个完整的系统,然后在每个新的发布中改变每个子系统的功能。,31,Incremental Model,32,Incremental Model适合的项目,项目开始,明确了需求的大部分,但是需求可能会发生变化 对于市场和用户把握不是很准,需要逐步了解 对于有庞大和复杂功能的系统进行功能改进,就需要一步一步实施的。 增量模型实例,33,Figure 2.10 the spiral model.,34,螺旋模型(Spiral Model),对于大型软件,只开发一个原型

9、往往达不到要求。螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。 第一次迭代的产品是操作概念 第二次迭代的主要产品是需求 在第三次迭代中,系统开发产生设计 第四次迭代能够进行测试,35,Spiral Model,36,Spiral Model,螺旋模型沿着螺线旋转,在四个象限上分别表达了四个方面的活动,即: 制定计划确定软件目标,需求和选定实施方案,弄清项目开发的限制条件 风险分析评估所选方案,考虑如何识别和消除风险 实施工程实施软件开发,编码,测试等 客户评估评价开发工作,提出修正建议,规划下期任务,37,螺旋模型的每次迭代都根据需求和约束进行风险分析,以权衡不同的选择,并且在确定某

10、一特定选择之前,通过原型化验证可行性或期望度。 当风险确认之后,项目经理必须决定如何消除或最小化风险。,38,Spiral Model适合的项目,风险是主要的制约因素 不确定因素和风险限制了项目进度 用户对自己的需求也不是很明确 需要对一些基本的概念进行验证 可能发生一些重大的变更 项目规模很大 项目中采用了新技术 实例,39,敏捷方法(Agile Software Development),目的:通过过程和工具理解个人和交流的作用;通过全面的文档理解运行的软件;通过合同和谈判得到客户的协作;在计划的执行中做出对变更的响应。 极限编程(XP) 水晶法(Crystal) 并列争球法(Scrum)

11、 自适应软件开发(ASD) ,40,敏捷方法的4个特性,交流 简单性 勇气 反馈,41,XP的12个实践操作,计划游戏 小的发布 隐喻 简单设计 测试驱动 重构 结对编程 集体所有权 持续集成 在现场的客户 代码标准,42,本讲核心,一、软件工程过程 二、软件生存期模型 三、软件开发方法 四、软件工具与软件开发环境 五、路线图,43,软件开发方法,软件开发的目标是要在规定的投资和时间内,开发出符合用户的需求,高质量的软件,为此需要有成功的开发方法。 为了克服软件危机,从20世纪60年代末开始,一直在进行软件方法的研究与实践,提出了多种软件开发方法和技术,对软件产业的发展起着不可估量的作用。,4

12、4,软件开发方法可分为几大类: 面向过程的开发方法(传统的) 面向对象的开发方法 基于构件的开发方法,特别要注意: 由于软件与程序是不同的概念,软件开发方法与程序设计方法是两个不同的概念。 软件开发方法可以是针对局部的,也可以是针对全局的。软件工程方法,更加强调和重点研究的是需求分析与软件设计的开发方法。,45,面向过程的开发方法 结构化开发方法、 JACKSON方法、原型化开发方法、IDEF法等。 面向对象的开发方法 Coad/Yourdon方法、Booch方法、OMT方法以及UML等。,软件开发方法分类,46,结构化开发方法(Structured Developing Method) 是现

13、有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速、自然和方便。 结构化开发方法是一种面向数据流的开发方法,它的基本原则是功能的分解与抽象。 结构化开发方法总的指导思想是自顶向下、逐步求精。,结构化开发方法,47,20世纪70年代初 结构化程序设计方法 (Structured Program,SP) 20世纪70年代中 结构化设计方法(Structured Design,SD) 20世纪70年代末 结构化分析方法 (Structured Analysis,SA) SA,SD,SP 法相互衔接,形成了一整套开发方法。若将SA,SD 法结合起来,又称为结构化分析与设计技术(SADT 技术)

14、。,一、结构化开发方法的组成,48,二、结构化方法的工作模型,瀑布模型,49,但从20世纪80年代开始,逐渐发现其不足,软件开发过程是个充满回朔的过程。而瀑布模型将其分割为独立的几个阶段,不能从本质上反映软件开发过程本身的规律。此外,过分强调复审,并不能完全避免较为频繁的变动。尽管如此,瀑布模型仍然是开发软件产品的一个行之有效的工程模型。,50,JACKSON开发方法,结构化开发方法是面向数据流、数据封闭性的开发方法,JACKSON 系统开发方法则是面向数据结构的开发方法。 其基本思想是先建立输入输出的数据结构,再将其转换为软件结构。,51,JACKSON方法由JSP(Jackson stru

15、ctured Programming)和JSD(Jackson System Development)方法构成。,JSP法主要体现程序结构的设计,不严格区分软件概要设计和详细设计。 JSD法是对JSP法的扩充,针对JSP法的缺陷而提出的解决方案。其主要特点是:用“分而治之”的策略控制系统的复杂性,解决I/O结构的冲突问题。,1JACKSON方法的构成,52,2JACKSON方法的设计过程, 建立数据结构 JACKSON方法中数据结构通常表示为树型结构,有顺序、选择和循环三种基本结构。如图(a)所示,按照三种基本结构建立的文件数据结构。, 以数据结构为基础,建立相应的程序结构图 如图(b),也称

16、为JACKSON 图。当没有结构冲突时,转换过程是简单的。一般情况,数据结构与模块结构是相对应的,因此不难从数据结构导出程序结构。,数据结构转换为程序结构,53,一、原型化方法(Prototyping Method) 原型是软件开发过程中软件的一个早期可运行的版本,它反映了最终系统的部分重要特性。,原型化开发方法,54,原型化方法的基本思想是花费少量代价建立一个可运行的系统,使用户及早获得学习的机会,原型化方法又称速成原型法(Rapid Prototyping)。强调的是软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求,将维护和修改阶段的工作尽早进行,使用户验收提前,从而使软件产品更加适用。,原型化方法的基本思想,55,1)快速建立需求规格原型(RSP 法) RSP(Rapid Specification Protot

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号