软件工程方法学的学习总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程方法学学习总结
•软件工程方法学是研究软件设计方法论及工程开发技术的一门学科,主要研究的是:模型、方法、过程、工具、理念/原则、文档,甚至相应的开发语言。随着软件工程的发展,形成了不同的软件工程方法:结构化、面向对象、敏捷方法。在某个开发项目中,如何选择、应用哪种软件开发方法,用哪种方法更好,就成研究软件工程方法学的基本动机。
•定义(2)把在软件生命周期全过程中使用的一整套技术的集合,称为软件工程方法学。软件工程方法学包括三个要素:方法、工具和过程。
•软件工程方法的分类
1.按不同的分类准则,会有不同的分类方法
a)注意,这一分类体系中并不是非此即彼,有可能有重复、冲突
2.按开发理念来分:
a)结构化方法;面向对象方法
3.按有无使用数学工具协助分析、设计、验证、实现来分
a)形式化方法:从规范出发的开发、函数式编程、净室方法
b)非形式化方法:目前大多数软件工程方法
4.按是否有大量文档工作和设计规范要遵守来分
5.重量级的方法:传统结构化方法、面向对象方法b)轻量级的方法:敏捷方法(极限
编程,快速原型法…),目前,并没有一个很规范的分类体系。
•其相关知识体系:
1结构化方法: 基本的结构化方法;复杂的结构化方法IDEF体系、Jackson方法
2面向对象方法:基本的面向对象方法;RUP
3极限编程方法(XP)
4快速原型软件开发方法
5测试驱动的软件开发方法
6形式化方法:
7基于规范的开发方法/函数式编程开发方法
8净室(clean room)/零缺陷软件开发方法
9面向方面编程的软件开发(AOP)
10产生式编程、开发(GP)
11SOA: 面向服务的体系结构
12MDA/MDSD: 模型驱动体系结构/软件开发
•结构化软件分析设计方法的概述
1.它是第一个成型的、完整的软件工程方法
2.它是随着函数和结构化语言(不要goto语句)的出现来诞生的
3.它第一次引入了模型图的使用(程序流程图)
4.基本流程
a)项目调研
b)需求调查与分析
c)系统设计
d)系统实现
e)系统测试
f)系统维护
5.根据这些基本步骤的不同排列,可以有瀑布型、迭代型、螺旋型等等不同软件开发模型•对结构化方法和面向对象方法的对比和讨论
结构化方法的特点
1.结构化思想的开发本质是:基于分解
2.简单
3.把一个复杂过程用多个单个小过程来实现
4.用数据流图,可以完成整个分解过程(其它的内容都可以从数据流图派生出来)
5.结果的唯一性
6.同一个问题,不同的人分解出来的结果基本是一样的。
7.也即,用结构化方法,基本上是有标准答案的(差主要在于细不细)
适用范围:(1)较适合初学者学习(2)一个连续的处理过程
面向对象的特点
1.基于映射:
a)把现实世界的工作过程或系统,用代码系统中的相对应的元素模拟出来,就完成
了软件的设计和开发
i.事物→对象
ii.事物的特征→对象的属性
iii.事物的行为→对象的方法
iv.事物之间的信息交换与协同→类方法调用…
2.复杂:
a)由于现实事物的复杂性,为了要更好地完成上面的模拟/映射,需要从多个角度描
述系统或过程
b)静态关系:多态、继承、聚合、状态转换
c)动态关系:用例、活动、序列、协作
d)这仅仅是UML1.5之前的
e)UML2.0又增加了:时序、结构
3.结果的唯一性
a)同一个问题,有经验的人和没有经验的人,进行面向对象设计时,结果可能会判
别很大
适用范围:(1)设计复杂系统;(2)设计高质量系统(3)设计与现实世界对应程度比较大的系统
未来的发展趋势
面向对象仍将是主流,但结构化方法并不会,相反在某些领域还会有进一步应用,如:(1)网页/网站;(2)工作流系统;(3)SOA
•深入全面的面向对象分析设计方法
1.首先要搞清楚:软件工程的分析和设计阶段是要干什么的?需求->方案
a)了解用户的需求:需求调查
b)把需求描述清楚、规范:用模型图来描述需求
c)在需求分析的过程中,从规范的需求描述开始,描述及定义以下内容,完成需求分析
(1)业务中要处理的数据(2)业务数据的处理过程
d)从这个需求分析出发,完成概要设计和详细设计
i.概要设计是什么?完成软件组成单元的划分
ii.详细设计是什么?单元接口设计(输入输出设计)、业务处理流程设计、数据库设计、界面设计
2.需求调查结果: 系统化、条目化的软件需求文档
3.需求定义
a)用标准化的软件设计模型来描述已经获得的需求,结果:用例图
4.需求分析
a)就是要从需求定义(用例图)中提取出这些内容,进行软件概要设计和详细设计
(1)处理过程设计:模块内部流程设计(2)数据库设计(3)界面设计
5.概要设计
构造软件的大模块(在OO方法中,模块就是“类”)
6.详细设计
(1)处理过程设计:模块内部流程设计(2)数据库设计(3)界面设计•面向对象需求分析要完成的任务
1.描述出软件的大致结构和功能分工
以便划分类,确实类的属性和方法;最终结果用类图来表达。
2.描述出类的相互调用关系
3.描述出每项系统工作的工作过程
以便设计每个模块的输入输出;最终结果用交互图和活动图来表达。
4.描述类的内部运作规律最终结果用状态图来表达
5.在整个OO分析设计中,最重要的是类图
•面向对象分析设计方法
–从用例图出发,进行需求分析,结构化方法是从数据流图出发,而OO是从用例图出发(请对比一下)
–第一,就是细化用例图
1.用例是描述外部用户使用本软件系统的应用场景。就是一个单个的使用功能
2.一个用例可能进一步分解成更小的应用场景的序列来实现
3.用有层次的用例图,来描述需求
用例图
活动图