能力成熟度模型(CMM)是美国卡内基梅隆大学软件工程研究所建立的、用于评价软件机构的软件过程能力成熟度的模型,它将能力成熟度定义为5个等级:初始级、可重复级、已定义级、已管理级、优化级[3]。建立CMM的目的在于:通过改进软件过程管理,帮助软件开发机构建立一个有规律的、成熟的软件过程,使其软件过程能力得到循序渐进的提高。不能不提的是统一建模语言(UML)[4],它是一种图形化了的语言,是一种构建模型的工具,它随着面向对象技术的发展而发展, 1997年11月OMG (ObjectManagementGroup)接纳UML1·1为基于面向对象技术的标准建模语言,从那时开始, UML得到广泛应用,成为软件工程的重要内容之一。由此可以看出构建模型思想在软件工程中的重要地位。
先设计全局,后设计局部的思想,当你开始设计一个比较大的问题解决方案时,一般来说,先进行全局设计、后进行局部设计。先进行全局设计,就是先从宏观上把握这个问题,构建好解决问题的总体框架结构,将大问题分解为局部性小问题,暂时不考虑局部性小问题如何设计。在解决问题的总体框架结构已经构建好的前提下,再去考虑局部性小问题如何设计,详细研究每个局部性小问题的解决方案。软件工程中介绍的结构化软件设计方法,就是“先设计全局,后设计局部”思想的典型体现,结构化软件设计方法将设计分“总体设计”和“详细设计”两个阶段,先进行“总体设计”,后进行“详细设计”。总体设计将被开发的软件系统划分成若干个模块,每个模块具有一定功能,各模块间具有一定的联系,这样就将软件的总体宏观结构搭建好了。详细设计是根据每个模块应该具有的功能,设计实现其功能的算法和数据结构,这样就将每个局部问题(每个模块)设计好了。
分层次进行分解与合成的思想,大而复杂的问题不好处理,但如果将问题分解为一个一个的小问题,就好处理了。这种分解一般是分层次进行的,先进行第一层分解,将大问题分解成几个稍小的问题,再进行第二层分解,将上一层的每个问题分解为更小的问题,直到不需要分解为止。合成是由若干个小的部分组合成一个大的整体。这种合成一般也是分层次进行的,从最底层开始,先进行第一层合成,将所有小的部分合成为若干个稍大的部分,再进行第二层合成,得到几个更大的部分,直到所有的各部分合成为一个整体。在软件工程中,有多处知识中蕴涵了这种思想。在画软件系统的数据流图[5]时,就是通过分层次分解来画的。先画顶层数据流图,这时只有一个“处理框”;然后进行第一层分解,将顶层数据流图中的“处理框”分解成几个“处理框”和其它部分,得到第二层数据流图;然后进行第二层分解,将第二层数据流图中的“处理框”再进行分解;如此下去,直到得到不必再分解的详细的数据流图。在进行软件体系结构设计时采用的模块化结构,也是通过分层次分解来构建的,根据系统应该实现的功能,将系统分层次分解成若干个模块,形成一个层次化的模块结构图,每个模块负责实现系统的某部分功能。详细设计所用的几种工具[6],也体现出分层次进行分解与合成来处理问题的思想。例如PAD图,对于复杂问题的设计,可以通过分层次画PAD图来完成,分层次所画的各个PAD图,体现出分解与合成相结合的思想。例如判定树,非常直观地体现出分层次进行分解与合成的思想。
借鉴其它领域成功经验的思想,他山之石,可以攻玉。借鉴其它领域的经验,来解决本领域问题,是通向成功的快捷之路。从软件工程概念提出到现在,还不到50年的时间,而软件工程理论发展如此之快,在很大程度上是得益于借鉴其它领域的成功经验来解决问题。许多工业产品是通过使用零部件组装方式生产的,各种零部件按
项目经理胜任力免费测评PMQ上线啦!快来测测你排多少名吧~
http://www.leadge.com/pmqhd/index.html