软件开发方法 (1)

310 阅读6分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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、调整用例模型(可有可无)

类之间的关系