在软件的设计过程特别是架构设计和概要设计过程中我们不难发现不太可能在整个项目中一刀切而采用完全一致的设计细节 一些设计细节常常需要考虑系统可能的性能系统潜在的变化包括和外部系统的潜在接口(随着一个客户有多个系统建立起来在基础数据等方面重复劳动大量出现的情况下更加突出)等这些变化在设计初期不太可能全面而明确的被识别这个时候设计上就存在一些不那么确定的实现常常体现为更多的接口和代理 有时候需要考虑 到项目组成员的个性风格甚至有时候不得不对项目组成员采取的迁就方式(如项目巨大压力下又无法有足够人手同时也无法说服成员的时候)这个时候设计上可控的灵活性就体现为提供必要的可选实现那就意味着在一个设计中存在多条道路来完成同样的工作 有时候也会存在本来某条设计实现路径是更好的但是碍于项目的实际你无法期望整个团队都按照这个更好的思路去做但是也可能某些团队的成员可以有足够的时间和精力这样子做的这个时候完整的和不完整的选择实现都共同存在而且同在一个设计路线上只是扮演了不同的角色有不同的优先顺序 在这些时候在软件设计中采用色彩化的设计就是很好的做法 其实色彩化的设计说的简单就是在设计中标示必需实现关键设计性能设计可选实现等使得设计能够有优先级或者更好的关注点比如设计人员常常就需要实现或者指导实现关键设计性能设计来保证系统的稳健和性能等这些实践往往决定了系统的质量根基必需实现表明了无论如何项目成员都必须完成的工作这是强制性的或者说没有选择的可选实现是满足优秀的团队成员的需要的她体现了设计人员的最佳期望但依赖于团队的优秀成员来完成(指在编码速度和软件追求上更高的成员) 采用这种色彩化的设计效果是明显的特别是对关键设计性能设计的识别容易让团队更明晰需要面对的技术点从而更好的实现必需实现则对团队加以必要的约束保证团队尽量的协调而可选实现则指明了系统优化的道路 在实践的过程中我对关键设计性能设计常常采用绿色来标示对必须实现采用红色标示对可选实现采用特定设计方式下的默认色彩也可能还有更细化的色彩标示但上述的色彩常常已经确定而不会代表不同的意思设计方式可能是UMLWord但这些色彩的应用都不会受到影响 色彩化的设计简单但是实用欢迎您也使用她 |