技术开发 频道

软件工程的目标与常用模型

【IT168 技术文章】

    软件工程的目标是提高软件的质量与生产率,最终实现软件的工业化生产。质量是 软件需求方最关心的问题,用户即使不图物美价廉,也要求个货真价实。生产率是软件 供应方最关心的问题,老板和员工都想用更少的时间挣更多的钱。质量与生产率之间有 着内在的联系,高生产率必须以质量合格为前提。如果质量不合格,对供需双方都是坏 事情。从短期效益看,追求高质量会延长软件开发时间并且增大费用,似乎降低了生产 率。从长期效益看,高质量将保证软件开发的全过程更加规范流畅,大大降低了软件的 维护代价,实质上是提高了生产率,同时可获得很好的信誉。质量与生产率之间不存在 根本的对立,好的软件工程方法可以同时提高质量与生产率。

    软件供需双方的代表能在餐桌上谈笑风生,归功于第一线开发人员的辛勤工作。质 量与生产率的提高就指望程序员与程序经理。对开发人员而言,如果非得在质量与生产 率之间分个主次不可,那么应该是质量第一,生产率第二。这是因为:(1)质量直接体 现在软件的每段程序中,高质量自然是开发人员的技术追求,也是职业道德的要求。(2) 高质量对所有的用户都有价值,而高生产率只对开发方有意义。(3)如果一开始就追求 高生产率,容易使人急功近利,留下隐患。宁可进度慢些,也要保证每个环节的质量, 以图长远利益。

    软件的质量因素很多,如正确性,性能、可靠性、容错性、易用性、灵活性、可扩 充性、可理解性、可维护性等等。有些因素相互重叠,有些则相抵触,真要提高质量可 不容易啊!

    软件工程的主要环节有:人员管理、项目管理、可行性与需求分析、系统设计、程 序设计、测试、维护等,如图 1.1 所示。

图 1.1    软件工程的主要环节

    软件工程模型建议用一定的流程将各个环节连接起来,并可用规范的方式操作全过 程,如同工厂的生产线。常见的软件工程模型有:线性模型(图 1.2),渐增式模型(图1.3),螺旋模型,快速原型模型,形式化描述模型等等  [Pressmam 1999, Sommerville 1992]。

 
图 1.2    软件工程的线性模型
图 1.3    软件工程的渐增式模型

    最早出现的软件工程模型是线性模型(又称瀑布模型)。线性模型太理想化,太单纯, 已不再适合现代的软件开发模式,几乎被业界抛弃。偶而被人提起,都属于被贬对象, 未被留一丝惋惜。但我们应该认识到,“线性”是人们最容易掌握并能熟练应用的思想方 法。当人们碰到一个复杂的“非线性”问题时,总是千方百计地将其分解或转化为一系 列简单的线性问题,然后逐个解决。一个软件系统的整体可能是复杂的,而单个子程序 总是简单的,可以用线性的方式来实现,否则干活就太累了。线性是一种简洁,简洁就是美。当我们领会了线性的精神,就不要再呆板地套用线性模型的外表,而应该用活它。 例如渐增式模型实质就是分段的线性模型,如图  1.3  所示。螺旋模型则是接连的弯曲了 的线性模型。在其它模型中都能够找到线性模型的影子。

    套用固定的模型不是程序员的聪明之举。比如“程序设计”与“测试”之间的关系, 习惯上总以为程序设计在先,测试在后,如图 1.4(a)所示。而对于一些复杂的程序, 将测试分为同步测试与总测试更有效,如图 1.4(b)所示。

图 1.4  (a)程序设计在先测试在后

图 1.4  (b)测试分为同步测试与总测试

    不论是什么软件工程模型,总是少不了图  1.1  中的各个环节。

0
相关文章