软件工程思想概述_第1页
软件工程思想概述_第2页
软件工程思想概述_第3页
软件工程思想概述_第4页
软件工程思想概述_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程思想概述HE系统二处一部2011.3.261Contents概述可行性研究需求分析总体设计实现维护面向对象方法学2概 述软件危机软件危机是指在计算机软件的开发和维护过程 中所遇到的一系列严重问题。图1 引入同一变动付出的代价随时间变化的趋势3概 述软件工程软件工程方法学传统方法学面向对象方法学软件生命周期问题定义 问题是什么?可行性研究问题有解吗?需求分析必须做什么?总体设计怎样实现?详细设计具体实现方案?编码和单元测试真正实现综合测试验收软件维护可持续发展4概 述基本软件过程瀑布模型特点阶段间具有顺序性和依赖性推迟实现的观点质量保证的观点优点可强迫开发人员采用规范化方法质量保证小组对

2、文档的审核保证了软件的质量缺点由文档驱动,不直观图2 传统瀑布模型5图3 实际瀑布模型概 述6快速原型模型图4 快速原型模型概 述7增量模型图5 增量模型概 述8图6 风险更大的增量模型概 述9螺旋模型图7 螺旋模型概 述10喷泉模型图8 喷泉模型概 述11Rational统一过程Rational统一过程(Rational Unified Process, RUP)是由Rational软件公司推出的一种完整而且完美的软件过程。最佳实践迭代式开发管理需求使用基于构件的体系结构可视化建模验证软件质量控制软件变更概 述12概 述RUP软件开发生命周期图9 RUP软件开发生命周期13敏捷过程与极限编程

3、敏捷过程敏捷过程开发宣言:个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划根据上述价值观提出的软件过程统称为敏捷过程,其中最重要的是极限编程极限编程(eXtrem Programing, XP)“极限”二字的含义是指把好的开发实践运用到极致。概 述14图10 XP项目的整体开发过程图11 XP项目的迭代开发过程概 述15微软过程图12 微软软件生命周期阶段划分和主要里程碑图13 微软过程的生命周期模型概 述16可行性研究可行性研究的任务可行性研究目的是确定问题是否有解,并对以后的行动方针提出建议。可行性研究的过程复查系统规模和目标研究目前正在使用

4、的系统导出新系统的高层逻辑模型进一步定义问题导出和评价供选择的解法推荐行动方针草拟开发计划书写文档提交审查17可行性研究系统流程图系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工控制的过程图14 基本符号18可行性研究数据流图(DFD)描绘信息流和数据从输入移动到输出的过程中所经受的变换,其中没有任何具体的物理部件,只是描绘数据在软件中流动和被处理的逻辑过程数据字典数据字典是关于数据的信息的集合,其作用不言而喻,主要是供人查阅对不了解条目的解释。数据流图和数据字典共同构成系统的逻辑模型,同时构成系统的规格说明19可行性研究图15 数据流图的符号20需求分析需求分析的任务需

5、求分析一般遵守下述准则:建立数据模型建立功能模型建立行为模型用层次的方式展示细节确定对系统的综合要求功能需求性能需求可靠性和可用性需求出错处理需求接口需求21需求分析约束逆向需求将来可能提出的要求分析系统的数据要求导出系统的逻辑模型通常用数据流图、实体-联系图(ER图)、状态转换图、数据字典和主要的处理算法描述这个逻辑模型。修正系统开发计划22实体-联系图(entity-relationship)数据对象数据对象是对软件必须理解的复合信息的抽象属性属性定义了数据对象 的性质联系数据对象彼此之间的相互连接的方式需求分析图16 某校教学管理ER图23状态转换图状态转换图 = 状态 + 事件 + 符

6、号需求分析图17 电话系统状态图24层次方框图需求分析图18 层次方框图的一个例子25Warnier图Warnier图可以表示信息的逻辑组织,括号中的数字代表该信息的重复次数。需求分析图19 Warnier图的一个例子26IPO图需求分析图20 IPO图的一个例子27总体设计设计过程设想供选择的方案选取合理的方案推荐最佳方案功能分解设计软件结构设计数据库制定测试计划书写文档审查和复审28设计原理模块化模块是由边界元素限定的相邻程序元素的序列。过程、函数和宏等都可称为模块。面向对象中的对象及对象内的方法也是模块。模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,集成起来即

7、可构成一个整体。总体设计图21 模块化和软件成本29抽象抽象就是抽出事务的本质特性逐步求精为了能集中精力解决主要问题而尽量推迟对问题细节的考虑Miller法则:一个人在任何时候都只能把注意力集中在(72)个知识块上信息隐藏和局部化应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的局部化是指把一些关系密切的软件元素物理地放得彼此靠近总体设计30模块独立内聚与耦合内聚(Cohesion)是一个模块内部各成分之间相关联程度的度量。耦合(Coupling)是模块之间依赖程度的度量。内聚和耦合是密切相关的,与其它模块存在强耦合的模块通常意味着弱内聚,

8、而强内聚的模块通常意味着与其它模块之间存在弱耦合。模块设计追求强内聚,弱耦合。内聚强度内聚按强度从低到高有以下几种类型:1)偶然内聚如果一个模块的各成分之间毫无关系,则称为偶然内聚。2)逻辑内聚几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。3)时间内聚如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。总体设计314)过程内聚如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行,则称为过程内聚。5)通信内聚如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。6)顺序内聚如果一个模块的各个成

9、分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。7)功能内聚。模块的所有成分对于完成单一的功能都是必须的,则称为功能内聚。耦合强度耦合的强度依赖于以下几个因素:(1)一个模块对另一个模块的调用;(2)一个模块向另一个模块传递的数据量;(3)一个模块施加到另一个模块的控制的多少;(4)模块之间接口的复杂程度。总体设计32耦合按从强到弱的顺序可分为以下几种类型:1)内容耦合当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模块。2)公共耦合两个以上的模块共同引用一个全局数据项就称为公共耦合。3)

10、控制耦合一个模块在界面上传递一个信号(如开关值、标志量等)控制另一个模块,接收信号的模块的动作根据信号值进行调整,称为控制耦合。4)标记耦合。模块间通过参数传递复杂的内部数据结构,称为标记耦合。此数据结构的变化将使相关的模块发生变化。5)数据耦合模块间通过参数传递基本类型的数据,称为数据耦合。6)非直接耦合模块间没有信息传递时,属于非直接耦合。如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,坚决避免使用内容耦合。总体设计33启发规则改进软件结构提高模块独立性模块规模应该适中深度、宽度、扇出和扇入都应适当模块的作用域应该在控制域之内力争降低模块接口的复杂程度设计单入

11、口单出口的模块模块功能应该可以预测总体设计34面向数据流的设计方法通俗地讲,任何软件都是对输入数据进行处理,所以面向数据流的设计方法理论上可以设计任何软件的结构。通常所说的结构化设计方法(SD方法),就是基于数据流的设计方法。变换流信息通常以“外部世界”的形式进入软件系统,经过处理以后再以“外部世界”的形式离开系统总体设计35事务流这种数据流是以“事务”为中心的。总体设计图22 变换流图23 事务流36编码选择编程语言选择良好的编程规范编写高效代码测试测试类型集成测试自顶向下集成自底向上集成Alpha和Beta测试白盒测试逻辑覆盖控制结构测试黑盒测试等价划分边界值分析错误推测单元测试重点模块接口局部数据结构重要的执行通路出错处理通路边界条件实 现37维 护决定软件可维护性的因素可理解性 可测试性可修改性 可移植性可重用性软件再工程图24 软件再工程过程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论