软件的功能、规模及复杂性与日俱增,软件的复杂性达到了它的开发者难以控制的程度。
这种情况导致了严重的后果:
- 软件可靠性下降
- 开发效率低下
- 维护极为困难
这使软件开发者陷入困境,人们称之为“软件危机”。
因此,为了解决软件危机,软件工程学就此诞生,即用工程学的方法进行软件的开发与维护,并对软件生产过程进行工程化的管理。软件工程有三要素:
- 方法:完成软件开发的各项任务的技术方法,为软件开发提供“如何做” 的技术
- 工具:为运用方法而提供的自动的或半自动的软件工程的支撑环境
- 过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤,如何将软件工程方法与软件工具相结合,合理、及时地进行软件开发
如何衡量软件设计质量
首要的标准
- 满足软件的功能需求
- 满足软件功能需求的设计并不一定就是好的设计。
好的设计
- 可读性:软件的设计文档是否轻易被其他程序员理解。可读性差的设计会给大型软件的开发和维护过程带来严重的危害。
- 可复用性:软件系统的架构、类、组件等单元能否很容易被本项目的其它部分或者其它项目复用。
- 可扩展性:软件面对需求变化时,功能或性能扩展的难易程度。
- 可维护性:软件维护(主要是指软件错误的修改、遗漏功能的添加等)的难易程度。
简而言之,好的设计应该符合“高内聚,低耦合”的特征。
内聚度:表示一个应用程序的单个单元所负责的任务数量和多样性。内聚与单个类或者单个方法单元相关
耦合度:
表示类之间关系的紧密程度。
要做到“高内聚,低耦合”,就应该满足如下的一些设计原则: