软件开发生命周期(精)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


原则:

程序设计方法回顾
IBM Software Institute

程序正确性证明

??调试能证明吗?

调试(debugging)的三个概念:

测试testing

Unit testing, integration testing, acceptance testing

确认validation(开发结束时进行的评价) 验证verification(开发过程中某阶段是否到达前 一阶段确定要求的活动)
2004 IBM Software Institute
程序设计方法回顾
IBM Software Institute


扇入fan in
模块直接隶属的模块个数:

一个模块被其他模块调用的个数,称为该模块的 扇入。扇入大些,一般不会影响问题的复杂性, 而且扇入越大,说明该模块的复用性越好


扇出fan out:

传统软件工程概论
IBM Software Institute
wk.baidu.com
一般问题的工程设计过程


问题阐述 问题分析(设计 细节) 寻找解法 判定最佳解法 设计规约(规格说明、报告) 实现
2004 IBM Software Institute
程序设计方法回顾
IBM Software Institute

结构化程序设计(SP)

三种基本结构:


顺序结构 分支结构 循环(迭代) 只有上面三种结构 自底向上,逐步抽象,最终形成一个函数型节点 每个节点只有一个出口和一个入口 其他:注意风格:注视和缩进等
2004 IBM Software Institute
直接下属的模块个数

一个模块调用其他模块的个数,称为该模块的扇 出。扇出越大,设计该模块时需要考虑的问题就 越多,因而复杂性越高。
2004 IBM Software Institute
程序设计方法回顾
IBM Software Institute


原则:高内聚度、低耦合度 一般中等内聚即可(功能性最理想) 尽量不采用控制耦合(不使用goto语句), 限制使用外部、公共、内容耦合 扇出越多,模块间逻辑关系 越复杂。应控制在7+-2
50
75
100
其中集成和测试最高,40%~50% 另外,软件投入使用后,其变更和更新也需要成本。对许多使用期限长的软 件而言,该成本往往高达开发成本的3~4倍!
2004 IBM Software Institute
IBM Software Institute
什么是CASE


计算机辅助软件工程Computer Aided Software Engineering 分类:
程序设计方法回顾
IBM Software Institute

内聚度cohesion:模块所执行的任务在 功能上互相关联的程度
1. 2. 3. 4. 5. 6. 7.
巧合内聚coincident cohesion Logical cohesion Temporal cohesion Procedure cohesion Communicational cohesion Sequential cohesion Functional cohesion
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
软件工程与一般工程的差异
•逻辑产品而不是实物
•其功能依赖于人的操作和相关硬件而体现
•对软件产品的要求比一般有形产品来的复杂 •100万汇编语句,1万子功能,每功能2个实现,则 210000=103000 组合! •Hetgel负责软件研制工程时候: •几个人)时候,认为关键是方法学问题:


高端CASE: 支持软件过程的早期阶段,如分 析和设计 低端CASE: 支持实现和测试,如调试器,程 序分析系统,测试用例生成器和程序编辑器 等。
2004 IBM Software Institute
IBM Software Institute
优良软件属性



可维护性:不断进化,满足用户需求变 化; 可依赖型:可靠性、安全性、保密性等, 以及失败时不造成伤亡和损失。 有效性:不浪费内存和系统资源等 可用性:用户不需特殊努力即可操作。
1962年,第一个金星探测器水手1号偏离航线失败。原因:导航程序一个语句语义错误 Apollo8存储器信息丢失;11号运行10天18个软件错误。


规模相对较小; 崇尚个人技巧技艺 缺乏有效方法与软件工具支持 不重视开发过程的管理 维护困难

(编写1条汇编语句=研制2个硬件逻辑门;维护1汇编语句条=修理4个硬件逻辑门) 1968年NATO(北大西洋公约组织)会议: software crisis, software engineering.
——《谁动了我的奶酪?》
2004 IBM Software Institute
习题和答案

IBM Software Institute


1.什么是软件危机?为什么会产生软件危机? 怎样克服软件危机? 解: 研制软件系统需要投入大量的人力和物力,但系统的质量却难以保证,也就是说,开发软件所需的高成本同产品的低质量 之间有着尖锐的矛盾,这种现象就是所谓的“软件危机”。 产生软件危机的原因: 用户对软件需求的描述不精确,可能有遗漏、有二义性、有错误,甚至在软件开发过程中,用户还提出修改软件功能、界面、 支撑环境等方面的要求。 软件开发人员对用户需求的理解与用户的本来愿望有差异,导致开发出来的软件产品与用户要求不一致。 大型软件项目需要组织一定的人力共同完成,多数管理人员缺乏开发大型软件系统的经验。各类人员的信息交流不及时、不 准确、有时还会产生误解。 软件项目开发人员不能有效地、独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误。 缺乏有利的方法学和工具方面的支持,过分的依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化。 软件产品的特殊性和人类智力的局限性,导致人们无力处理“复杂问题”。 要克服软件危机,就要认真分析软件危机的原因,探索用工程的方法进行软件生产的可能性,即用现代工程的概念、原理、技 术和方法进行计算机软件的开发、管理、维护和更新。 2. 什么叫软件工程?软件工程的诞生是否从根本上消除了软件危机? 为什么? 解: 软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。 软件工程的诞生只能大大减少软件开发成本并提高软件质量,不能从根本上消除软件危机。 3.软件生存周期为什么要划分阶段?各个阶段的任务是什么? 解: 软件也是一种产品,同样存在生存周期。把软件生存周期划分为几个阶段后,软件开发按照每个阶段的基本任务进行并产 生相应的工作结果,这样有利于对软件开发过程进行管理,有利于提高软件产品质量。 可行性研究与计划阶段的基本任务:研究开发该项目的可行性。 需求分析阶段的基本任务: 理解和表达用户的要求。 设计阶段的基本任务: 建立系统的结构。 编程阶段的基本任务: 编写程序。 测试阶段的基本任务: 发现错误和排除错误。 4.什么是软件?如何评价软件的质量? 解: 软件是程序以及开发、使用和维护程序所需的所有文档。 软件质量从可维护性、可靠性、可理解性和效率等方面对软件作较全面的评价。 2004 IBM Software Institute
软件销售收入比较图
800 700 600 500 400 300 200 100 0
微软公司第三季度
三、理解软件工程为什么很重要
中国全年
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
学习软件工程是大势所趋
世界上唯一不变的东西就是变化。拒 绝改变的人将永远也找不回他的奶酪! 人对不了解的东西会产生抵触。他因 为害怕而拒绝改变!
二、什么是软件工程?
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
理解软件工程为什么很重要
• 为什么需要那么长时间才能结束开发? • 为什么成本如此之高? • 为什么我们不能在把软件交给客户之前 就发现所有的错误? • 为什么在软件开发过程中我们难以度量 其进展?


扇入越多,模块可复用性越强(但可能产生低 内聚) 模块大小:30句以上,程序员对其的理解力迅 2004 IBM Software Institute 速下降;50-100句,开发成本迅速上升。
IBM Software Institute
软件工程的成本

开发成本分布
设计 开发 集成和测试
描述
0
25
•50人时候,文档越来越重要
•200人:关键是管理问题。 •复杂性:功能多样性,实现多样性,能见度低,结构合理性差
•其“资金密集程度”中包含更多的人的成分(即“智力密集”)
二、什么是软件工程?
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
如:模拟训练、数据管理、辅助决策、人工智能 等各个领域。
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
什么是软件工程?

软件工程是将系统化的、规范的、可度量 的方法应用于软件的开发、运行和维护的 过程,即将工程化应用于软件中。软件工 程还包括上述方法的研究。
2004 IBM Software Institute
IBM Software Institute
2004 IBM Software Institute
程序设计方法回顾
IBM Software Institute

耦合度coupling:模块之间相互依赖的程 度
1. 2. 3. 4. 5. 6. 7.
非直接nondirect耦合 数据data耦合(参数) 标记stamp耦合 控制control耦合(控制语句) 外部external耦合 公用common耦合 内容content耦合
2004 IBM Software Institute
程序设计方法回顾
IBM Software Institute

模块化与信息隐蔽


模块化:自顶向下,逐步细化 模块直接的接口应尽可能简明 模块之间尽可能彼此隔离 要求:

可修改性 易读性 以验证性
2004 IBM Software Institute
IBM Software Institute
软件开发生命周期
2004 IBM Software Institute
Unit 标题
IBM Software Institute
第一章 软件工程概述
章节目标

了解什么是软件 了解什么是软件工程 理解软件工程为什么很重要 学习软件工程的意义
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
什么是软件?


软件是程序和所有使程序正确运行所需 要的相关文档和配置信息。 软件产品有以下两类: 通用软件产品
如:操作系统、多媒体、word、PowerPoint等。
定制软件产品
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
软件工程中的分层
二、什么是软件工程?
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
软件工程的一般视图
如果不考虑应用领域、项目规模和复杂 性,与软件工程相关的工作可分为三个 一般的阶段:
. 定义阶段——集中于“做什么” . 开发阶段——集中于“如何做” . 维护阶段——集中于“改变”
二、什么是软件工程?
2004 IBM Software Institute
IBM Software Institute
第一章 软件工程概述
典型的保护性活动
. 软件项目追踪和控制
. 正式的技术评审
. 软件质量保证 . 软件配置管理 . 文档的准备和产生 . 可复用管理 . 度量 . 风险管理
相关文档
最新文档