软件功能设计:
针对软件中某一具体的功能,所进行的设计。包括:这个功能的实现方式,实现的基本结构,类的组成,职责划分等,是软件设计中最最重要的基本功。
功能设计在整个软件设计中的层次:
软件设计的层次很多,不同的软件设计过程有不同的划分层次,大致可分为:架构设计,api/spi设计,数据库设计,功能设计,类设计,方法设计。
从难度上说:公共类库》公共框架》基础平台/框架》应用(产品》项目)
功能设计在整个软件设计中的地位:
功能设计从属于详细设计,是整个系统功能实现的基石。
功能设计与设计模式的关系:
功能设计通常会综合应用多种设计模式,是各种设计思想的具体体现的载体。由于功能千变万化,因而要有较高的设计技巧和功力,才能设计出正确的,易用的,灵活的, 扩 展性高的,高性能实现。
设计模式是业界公认的,优秀的设计经验和设计理念,理解、掌握、融会贯通、并能熟练变形应用设计模式,对于功能设计是由极大的帮助的。
功能设计与详细设计的关系:
功能设计只是详细设计中的一部分,详细设计还包括很多其他的设计,比如:流程设计、对api/spi的完善和细化,对数据库设计的完善和细化,对多个功能交互的控制,事 务 的规划,权限/安全的规划,例外的控制。。。很多很多
功能设计要考虑的东西/评价标准:
这个业界没有统一的标准,而且不同类型、不同业务的系统考虑的东西并不完全一样,但还是有一些通常要考虑的东西:
“正确性”,易用性,可扩展性,复杂性(易理解,开发难度等),易维护,安全,性能,可重用,可测试。。。
软件设计的实战方法---经验总结
1,基本的功能实现方式,并进行细化;
2,分析每个步骤,每个细节中,哪些是可变的,哪些是不可变得。通常分析3个部分:数据的输入,具体实现,数据产出;
3,分析这个细节功能和其他步骤的关系,比如:顺序,平行,依赖等,已确定这些职责的粒度和分离方式,从而考虑他们之间的组合方式,也需要分离这些组合方式的变 与不变
4,根据前面分析的结果,进行相应的类,方法的设计、进行职责的划分,并通过合适的方式把他们组织起来。
通常这个时候,就会融合进一个或多个设计模式的应用。当然也可能是没有现成的设计模式,需要自己来灵动的组织和实现。
5,按照前面讲述的评价标准,进行系统的思考和调整,以形成最终的设计方案。
关于软件设计的一些思考:
设计的基本技巧:发现和封装变化,进行抽象和封装,实现高内聚和低耦合。
设计是危险的平衡艺术,尽可能的找到最佳平衡点。
没有完美的设计,设计总是在不断的演变中
设计是没有标准答案的,只要能更好的实现功能,更好的满足那些评价标准,就是好东西。
不要过度设计不等于不设计,而是更要精巧设计。
关于重构的思考:在设计角度讲,重构是打补丁的思想。
关于敏捷的思考:
设计是否增加了复杂度:
设计是否增加了软件成本:好的设计是会降低软件成本的。