现在的位置: 首页 > 综合 > 正文

放之四海皆适用的设计原则(一)

2013年08月31日 ⁄ 综合 ⁄ 共 1589字 ⁄ 字号 评论关闭

放之四海皆适用的设计原则(一)

一种设计适合某一项目但未必适用于另一个项目,要掌握每一个项目所适用的各种设计是不现实的。经验告诉我们,通过使用规则有助于让我们的大脑掌控更多的东西。同样地,借助设计原则将使得我们能更好地掌控软件设计。一旦掌握一定的设计原则,无论做怎样的项目,通过运用它们将有助于做出(更)好的设计。

由于设计原则带有一定的抽象性,因此它在设计中所起到的作用仍是指导性的。同一个设计原则在不同的项目中所起的效果也可能不同,恰当地运用各原则需要不断地思考和练习。有了枪就一定能打到猎物吗?没有枪法的练习,枪只是枪而不是真正的狩猎工具。

下面将介绍作者在工作中常使用的部分设计原则,并通过提供设计实例帮助读者理解。由于在创作本书期间,对一致性原则和完整性原则没有碰到合适的素材,所以没有将它们写入本书。在以后碰到合适的素材时,作者将通过博客与大家分享。

以人为本

在13.1节阐述什么是软件设计时指出,软件设计是一个塑造模型的过程。塑造模型时,应以现实世界为参照,这就是以人为本设计原则的具体含义。

设计出来的软件除了达到它所应满足的需求外,另一个很重要的功能是它能向他人传达设计意图。一个设计不可能永远由一个人去维护,这就存在设计者与后继者的沟通问题。沟通的形式有多种,比如写文档、口授等,但最有效的沟通方式是让设计自身具有“自说明”的能力。

我们在现实生活中积累了大量的生活经验,这些经验为沟通带来了极大的效率。比如,一说到刀大家就能立即明白刀是什么,而不需要解释为“是一种由铁做成的用于切割东西的工具”。既然生活经验对于沟通效率是如此的重要,那设计时在软件世界所创造的模型就应当迎合人们的生活经验。如果在软件世界里将刀设计成一种用于拧螺丝的工具,那多少显得有点怪异,因为这与我们的生活常识完全不符。

《数据结构》这类书籍所传授的内容主要立足于软件世界,它们是软件世界的基石,对于软件开发工程师之间的沟通也很有效,但却不够生动,表达力也不够。设计应当尽可能在软件世界中反映现实世界,只有这样才会更生动,更容易让人理解。通过以人为本设计原则所设计的软件能让涉众知其一后根据自己的经验推测出二,这显然将大大地提高被设计软件的“自说明”能力。

下面以一个在VxWorks操作系统上采用内存管理单元保护任务内存池的设计为例,来帮助读者进一步理解“以人为本”这一设计原则。

假设在一个运行VxWorks操作系统的嵌入式设备上存在多个任务,且所有的任务是以共享系统内存的方式运行的,也就是说,即使是任务A所专有的内存池任务B也可以因为出错而意外访问。通过采用内存管理单元(参见1.10节)实现内存池保护功能,将有助于防止程序中因为未初始化指针等因素所造成的非法内存池访问问题。在探讨设计方案之前,需要先了解设计用例(use case)。

图13.3示例说明了三个任务和三个内存池,在每一个内存池中也标识出它可以被哪个(些)任务读写。当任务A处于活动状态时(注意:每一时刻只能有一个任务是处于活动状态的),内存池1和2可被读写,而内存池3不可以;同理,当任务B处于活动状态时,内存池2和3将变为可被读写但内存池1不可以;最后,当任务C处于活动状态时,三个内存池都不可被读写。

 

 

 

根据“以人为本”设计原则,我们需要在生活中找到能表达这一设计用例的相似场景,并将之引入到软件世界中。很多公司都有员工牌且员工牌与公司的门禁系统是关联在一起的,每个人能进入公司哪些办公区或实验室都是通过员工牌来进行权限管理的。如果将员工牌的这种现实模型搬到软件世界中就能让最终的设计结果具备良好的“自说明”能力。

 

本文选自《专业嵌入式软件开发——全面走向高质高效编程(含DVD光盘1张)》一书

图书详细信息:http://blog.csdn.net/broadview2006/article/details/7089444

 

抱歉!评论已关闭.