5.1 设计中的挑战
软件设计即构思、创造或者方面一套方案,把一份计算机软件的规格说明书要求转变为和实际运行的软件。设计过程中哪些值得注意的呢?
1、设计是一个险恶的问题
险恶问题的定义是只有通过解决或部分解决才能被明确的问题,即就是一个试错的过程。但个人觉得,这是对初次涉及或者全新问题域来说的,因为完全没有经验,没有借鉴,只能自己去尝试,然而,对于工作中的绝大多数问题,都是经验性、重复性的问题,可能整个系统要解决的问题各异,但是落实到各个子系统、各个模块,我想基本上是大同小异的。但是,在做设计时需要保持试错的心态,不可能一蹴而就的完美的设计出解决方案。
2、设计受到诸多因素
设计是一定要考虑并且列出当前系统的约束,如果随心所欲的进行设计,那么得出来的结果往往也是和实际不符的。
3、设计是不确定的
千人千面。
5.2 关键的设计理念
1、管理复杂度
软件的首要使命:管理复杂度。这个不敢苟同,个人觉得软件的首要使命是解决问题,软件管控的首要使命才能是管理复杂度吧。因为复杂度是软件的 一个核心、上层的概念,复杂度直接决定了软件构架的质量,实现难度、测试难度、项目进度和维护成本。
2、理想的设计特征
1)最小复杂度
应该专注于简单并且易于理解的设计。
2)易于维护
3)松散耦合
设计时让程序各个组成部分的关联性最小。模块化设计。
4)可扩展性
功能扩展时,不影响到原有程序的结构。即扩展时,做到只增不改。
5)可重用性
6)高扇入
让大量的类使用某个给定的类,高复用。
7)低扇出
一个类里少量的使用其他的类。松散耦合。