携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第26天,点击查看活动详情
软件开发方法
1)结构化方法
2)面向对象
3)面向服务
4)原型法
5)敏捷
6)构件化开发
结构化方法
结构化开发以“过程”为中心,核心思想是”自顶向下,逐步分解“,适合于数据处理领域的问题。
结构化方法由结构化分析、结构化设计、结构化程序设计组成,它是一种面向数据流的开发方法。
优点:1)开发目标清晰化 2)开发工作阶段化 3)开发文档规范化 4)设计方法结构化
缺点:开发周期长、难以适应需求变化、很少考虑数据结构,不适合解决大规模的、特别复杂的项目
结构化分析
结构化分析是根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,从而完成需求分析工作。
分析流程:
(1)画出当前系统的数据流图,说明系统的输入、输出、及数据流情况
(2)建立系统逻辑模型
(3)划清人机界限
结构化分析一般包括一下工具L数据流图(Data Flow Fiagram,DFD)、数据字典(Data Dicitionary,DD)、结构化语言、判定表、判定树
结构化分析结果由一下几部分组成:一套分层的数据流图、一本数据词典、一组小说明(也称加工逻辑说明)、补充材料
结构化设计
结构化设计是根据模块独立性准则、软件结构优化准则将数据流图转换为软件的体系结构,用软件结构图来建立系统的物理模型,实现系统的概要设计。
结构化设计包括体系结构设计、接口设计、数据设计和过程设计等任务。它是一种面向数据流的设计方法,是以结构化分析阶段所产生的成果为基础,进一步自顶向下、逐步求精和模块化的过程。
在结构化方法中,模块化是一个很重要的概念,它将一个待开发的软件分解称为若干个小的简单部分--模块,每个模块可以独立地开发、测试。
具体说,模块是指执行某一特定任务的数据结构和程序代码。通常将模块的接口和功能定义为其外部特性,将模块的局部数据和实现该模块的程序代码称为内部特性。在设计时,最重要的原则就是实现信息隐藏和模块独立。模块通常具有连续性,也就是意味着作用于系统的小变动将导致行为上的小变化,同时规模说明的小变动也将影响到一小部分模块。
设计流程及概要
1、抽象化
可以有不同的抽象层次。抽象化包括对过程的抽象、对数据的抽象和对控制的抽象
2、自顶向下,逐步细化
3、信息隐蔽
通过信息隐蔽可以提高软件的可修改性、可测试性和可移植性,它也是现代软件设计的一个关键性原则
4、模块独立
目标是高内聚、低耦合
模块的 内聚 类型为 7 种,根据内聚度 从高到低排序
| 内聚类型 | 描述 |
|---|---|
| 功能内聚 | 完成一个单一功能,各个部门协同工作,缺一不可 |
| 顺序内聚 | 处理元素相关,而且必须顺序执行 |
| 通信内聚 | 所有处理元素集中在一个数据结构的区域上 |
| 过程内聚 | 处理元素相关,而且必须按特定的次序执行 |
| 瞬时内聚 | 所包含的任务必须在同一时间间隔内执行(如初始化模块) |
| 逻辑内聚 | 完成逻辑上相关的一组任务 |
| 偶然内聚 | 完成一组没有关系或松散关系的任务 |
模块的 耦合 类型为 7 种,根据耦合度 从低到高排序
| 耦合类型 | 描述 |
|---|---|
| 非直接耦合 | 没有直接联系,互相不依赖对方 |
| 数据耦合 | 借助参数表传递简单数据 |
| 标记耦合 | 一个数据结构的一部分借助于模块接口被传递 |
| 控制耦合 | 模块间传递的信息中包含用于控制魔铠内部逻辑的信息 |
| 外部耦合 | 与软件意外的环境有关 |
| 公共耦合 | 多个模块引用同一个全局数据区 |
| 内容耦合 | 一个模块访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口 |
结构化程序设计
结构化程序设计使用3中基本控制结构构造程序,任何程序都可以由顺序、选择和重复3中基本控制结构构造
面向对象的方法
面向对象开发以“对象”为中心
对象
对象具有唯一的“对象标识”来区分其他对象
对象拥有的一组数据来描述自身的状态信息。这是对象的属性
每个对象都有自己的可以执行的程序或叫对象的方法
消息
消息是对象之间传递的内容
消息是对象之间交互的唯一内容
消息是“对象.函数()”的调用和执行
面向对象方法的类别
| Coad/Yourdon方法 | Coad/Yourdon放大特别强调OOA和OOD采用完全一致的概念和表示法,使分析和设计之间不需要表示法的转换 |
|---|---|
| Booch方法 | 开发模型包括静态模型和动态模型,静态模型分为逻辑模型(类图、对象图)和物理模型(模块图、进程图),用来描述系统的构成和结构。动态模型包括状态图和顺序图,用来描述对象的状态变化和交互过程。 |
| OMT方法 | 使用了建模的思想,采用对象模型(对象图)、动态模型(状态图)和功能模型(DFD)来建立一个实际的应用模型 |
| OOSE | 使用用例取代了DFD来进行需求分析和建立功能模型 |
用例
用例建模过程:1、识别参与者 2、合并需求获取用例 3、细化用例描述 4、调整用例模型(可有可无)