先看一下软件设计的四个案例:
1.某项目要求在非常短时间内完毕,并且客户对系统的当前认识还是比較初步的,你还打算如何设计这个系统?
2.某软件公司接了一个“网页+数据库”类型的项目,这类项目已经做过多个,但这次的业务却是新的,你如何考虑这个项目的设计?
3.某软件公司已经成功的为n个医院做了管理系统,如今须要为一家新的大医院做类似这个系统,你会如何考虑这个系统的设计?
4.你接到一个任务,要做一个即时战略游戏,目标是要在当前游戏市场找中杀出一条血路,你如何考虑这个游戏的设计?
以上四个案例各种特点,分别代表4种“典型”:
1.需求非常朦胧,工期非常紧,技术上基本上没有积累。
2.需求是心的,但能够重用“网页+数据库”的技术架构。
3.需求是类似的,技术架构也是类似的,相信你会直接重用之前的系统。
4.这是一个需求创意和高技术含量的游戏,而游戏软件的需求和技术都是充满挑战的。
上述4种情况,相信你採取的设计策略是不一样的,你可能会发现所谓的优秀设计没有固定的标准。
通过你认为优秀设计的标准是什么?是“高效、可靠、易用、安全、可扩展、兼容性强、移植性强……“么,我认为软件设计应该随机应变,软件就应该设计出高性价比。
优秀的设计应具备下面特点:
1.优秀的设计都是需求驱动的,不熟悉需求就做出来的设计是不靠谱的
2.优秀的设计应该是当前团队能理解能实现的,太超前的设计项目团队做不出来,这个设计仅仅能是摆设;
3.优秀的设计应充分考虑当前各种限制条件,适当做出平衡,能保证达成项目的目标;
4.优秀的设计能尽量减少项目的总体工作量,让整个项目更加可控。
优秀的设计是须要从分析需求開始的;架构设计是全面考虑各种需求、项目的工期限制预算限制,还有项目组人员水平后综合做出来的一种平衡。