概念与原理 - wolai 笔记

1.结构化设计

传统软件工程方法学采用结构化设计技术(SD)。
从工程管理角度结构化设计分两步:
  • 概要设计:将软件需求转化为数据结构软件系统结构。
  • 详细设计:过程设计,通过对结构细化,得到软件详细数据结构和算法

1.1结构化设计与分析关系图

数据设计:数据模型及核心数据字典转变为数据结构。
体系结构设计:功能模型中数据流图转变成计算机模块框架。
接口设计:功能模型中数据流图转变成软件内部、软件与协作系统间、软件与用户间通信方式。
过程设计:行为模型及功能模型中的“处理规格说明”转换成软件构件过程描述。

2.模块化

模块(module)

“模块“又称”构件”一般指用一个名字调用的相邻程序元素序列。

模块化设计(modular design)

按适当的原则把软件划分为一个个较小的、相关而又相对独立的模块。

软件工程基本定理

设: C(x) 为复杂程度函数
E(x) 为决定解决问题x所需的工作量(时间)函数
C(P1+P2)>C(P1)+C(P2)E(P1+P2)>E(P1)+E(P2)\mathrm{C}(\mathrm{P} 1+\mathrm{P} 2)>\mathrm{C}(\mathrm{P} 1)+\mathrm{C}(\mathrm{P} 2)\\ \mathrm{E}(\mathrm{P} 1+\mathrm{P} 2)>\mathrm{E}(\mathrm{P} 1)+\mathrm{E}(\mathrm{P} 2)

3.抽象

抽出事物的本质特性,暂不考虑细节。

4.逐步求精

求精是指为了能集中精力解决主要问题尽量推迟对细节问题的考虑,实际上是一个细化过程,与抽象是互补的概念。
抽象使得设计者能够说明过程和数据,同时却忽略底层细节;
求精帮助设计者在设计过程中揭示底层细节。

5.信息隐藏

每个模块的实现细节对于其他模块来说是隐藏的也就是说,模块中所包含的信息是不允许其他不需要这些信息的模块访问的。
每个客户只能通过接口来了解该模块,而所有的实现都隐蔽起来

6.模块独立

具有独立功能且和其他模块没过多作用。
两条理由:
  • 容易分工合作;
  • 容易测试和维护,修改工作量较小,错误传播范围小,扩充功能容易。
两个定性度量标准:耦合内聚


Comment