软件工程方法学的学习总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.用有层次的用例图,来描述需求

用例图

活动图

相关文档
最新文档