1、问题的提出
很多程序员写程序,想到哪写到哪,缺乏一个整体规划。结果随着代码的堆积,软件内部结构就乱得一团糟。想要修改一个地方,影响这、影响那,牵一发而动全身。最后不得不重构,甚至从根基重构---直接推倒重来! 一个欠设计的系统会随着规模的扩大加速死亡;而一个设计考究的系统,则可以长久保持年轻,后期维护成本也会降低。
2、软件设计评价
软件设计分为几个层面:框架级、组件级、类级、算法级。
框架级:框架可以认为是软件系统搭建所基于的平台(平台比框架还多了一些开发工具)。框架主要目的是实现系统的非功能需求,例如通用控件、通用组件、组件装配、运行管理、可移植性、可扩展性、可伸缩性、灵活性、可维护性等等。框架的好坏,体现在它满足软件系统的非功能需求的程度。
组件级:组件的意义是把复杂系统拆解成几个简单独立的部分,这些部分能够被独立开发、独立部署、独立运行。组件设计非常强调组件的独立性,首先从单一职责、功能内聚去评价,满足这些条件才容易独立开发。独立部署是指组件可以单独部署和卸载,而对系统不会造成破坏性影响。不过独立运行不等于独立实现业务功能,有些大功能还需要通过与其他组件相互协作才能完成,独立运行是指即使组件所依赖的外部条件不具备,其行为也不会超出受控范围。
类级:类设计的目的是封装、抽象、复用。封装就是不要把脆弱的内部暴露到外部,抽象就是为将来的功能扩展预留灵活性,而复用则是封装和抽象的副产