软件开发的管理和控制Word下载.docx
《软件开发的管理和控制Word下载.docx》由会员分享,可在线阅读,更多相关《软件开发的管理和控制Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
由于费用超支或计划执行超时而终止。
2.
完成计划的时间或费用超过了原计划的50%。
3.
由于质量或性能上的原因引起和客户的纠纷。
下面我们将按其影响大小的顺序排列说明5种错误的实践方式。
错误1:
没有软件项目开发的历史数据
缺乏软件开发的历史数据是大多数软件项目失败的关键所在,
这样的结论也许使很多人感到吃惊,但事实就是如此。
没有一个可靠的软件开发的历史数据会使项目经理,程序员,客户对于软件开发的过程缺少清醒的认识。
假设现在你正在管理一个软件项目,而这个项目还没有一个公司在36个月内完成。
作为一个负责的经理,你作了一个比较细致和保守的估计,然后告诉你的客户和你的手下说你认为这个项目需要36-38个月完成。
然而常常有这样的情况发生:
你的客户和程序员要求把时间压缩到18个月。
客户一方面希望软件尽早投入使用而产生经济效益,一方面也想压缩项目时间作为一个讨价还价的筹码;
而程序员一方面可能过于自信,一方面尽早结束项目也能使他们多赚点钱。
而此时你的手头上也没有一个可靠的软件开发的历史数据,在他们的压力下你同意了18个月的计划,于是一场灾难开始了。
在项目的开始阶段你发现计划被拖延了,于是开始向程序员们施加压力,要求他们加快进度,程序员为了追求进度而不得不把其它指标放在一边,这些问题不断的积累下来而项目经理却蒙在鼓里。
到了项目中后期这些质量问题会不断暴露出来,而且互相关联并且难以解决,甚至有些是系统设计的问题,这时才发现好多模块要推倒重来,18个月完成计划变成了天方夜谭。
虽然上面只是一个虚拟的例子,但在实际中这种情况比比皆是。
问题的关键就在于软件开发的历史数据是反映软件开发队伍的能力的标尺,没有了这个标尺,
就无法对软件的开发过程有一个清醒的认识。
错误2:
不重视使用软件费用估值工具软件和计划工具软件
软件开发方法述评
60年代中期开始爆发了众所周知的软件危机。
为了克服这一危机,在1968、1969年连续召开的两次著
名的NATO会议上提出了软件工程这一术语,并在以后不断发展、完善。
与此同时,软件研究人员也在不断
探索新的软件开发方法。
至今已形成八类软件开发方法。
一、Parnas方法
最早的软件开发方法是由D.Parnas在1972年提出的。
由于当时软件在可维护性和可靠性方面存在着严重问题,因此Parnas提出的方法是针对这两个问题的。
首先,Parnas提出了信息隐蔽原则:
在概要设计时列出将来可能发生变化的因素,并在模块划分时将这些因素放到个别模块的内部。
这样,在将来由于这些因素变化而需修改软件时,只需修改这些个别的模块,其它模块不受影响。
信息隐蔽技术不仅提高了软件的可维护性,而且也避免了错误的蔓延,改善了软件的可靠性。
现在信息隐蔽原则已成为软件工程学中的一条重要原则。
Parnas提出的第二条原则是在软件设计时应对可能发生的种种意外故障采取措施。
软件是很脆弱的,很可能因为一个微小的错误而引发严重的事故,所以必须加强防范。
如在分配使用设备前,应该取设备状态字,检查设备是否正常。
此外,模块之间也要加强检查,防止错误蔓延。
Parnas对软件开发提出了深刻的见解。
遗憾的是,他没有给出明确的工作流程。
所以这一方法不能独立使用,只能作为其它方法的补充。
二、方法
1978年,E.Yourdon和L.L.Constantine提出了结构化方法,即SASD方法,也可称为面向功能的软
件开发方法或面向数据流的软件开发方法。
1979年TomDeMarco对此方法作了进一步的完善。
Yourdon方法是80年代使用最广泛的软件开发方法。
它首先用结构化分析(SA)对软件进行需求分
析,然后用结构化设计(SD)方法进行总体设计,最后是结构化编程(SP)。
这一方法不仅开发步骤明
确,SA、SD、SP相辅相成,一气呵成,而且给出了两类典型的软件结构(变换型和事务型),便于参照,
使软件开发的成功率大大提高,从而深受软件开发人员的青睐。
三、面向数据结构的软件开发方法
Jackson方法
1975年,M.A.Jackson提出了一类至今仍广泛使用的软件开发方法。
这一方法从目标系统的输入、
输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整的程序结构图。
这一方法对输
入、输出数据结构明确的中小型系统特别有效,如商业应用中的文件表格处理。
该方法也可与其它方法结
合,用于模块的详细设计。
Jackson方法有时也称为面向数据结构的软件设计方法。
Warnier方法
1974年,J.D.Warnier提出的软件开发方法与Jackson方法类似。
差别有三点:
一是它们使用的图形
工具不同,分别使用Warnier图和Jackson图;
另一个差别是使用的伪码不同;
最主要的差别是在构造程序
框架时,Warnier方法仅考虑输入数据结构,而Jackson方法不仅考虑输入数据结构,而且还考虑输出数据
结构。
四、问题分析法
PAM问题分析法。
PAM(ProblemAnalysisMethod)是80年代末由日立公司提出的一种软件开发方法。
PAM方法希望能兼顾Yourdon方法、Jackson方法和自底向上的软件开发方法的优点,而避免它们的缺陷。
它的基本思想是:
考虑到输入、输出数据结构,指导系统的分解,在系统分析指导下逐步综合。
这一方法的具体步骤是:
从输入、输出数据结构导出基本处理框;
分析这些处理框之间的先后关系;
按先后关系逐步综合处理框,直到画出整个系统的PAD图。
从上述步骤中可以看出,这一方法本质上是综合的自底向上的方法,但在逐步综合之前已进行了有目的的分解,这个目的就是充分考虑系统的输入、输出数据结构。
PAM方法的另一个优点是使用PAD图。
这是一种二维树形结构图,是到目前为止最好的详细设计表示方法之一,远远优于NS图和PDL语言。
这一方法在日本较为流行,软件开发的成功率也很高。
由于在输入、输出数据结构与整个系统之间同样存在着鸿沟,这一方法仍只适用于中小型问题。
[NextPage]
五、面向对象的软件开发方法
面向对象技术是软件技术的一次革命,在软件开发史上具有里程碑的意义。
随着OOP(面向对象编程)向OOD(面向对象设计)和OOA(面向对象分析)的发展,最终形成面向对象的软件开发方法OMT(LbjectModellingTechnique)。
这是一种自底向上和自顶向下相结合的方法,而且它以对象建模为基础,从而不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数据结构。
所以OMT彻底实现了PAM没有完全实现的目标。
不仅如此,OO技术在需求分析、可维护性和可靠性这三个软件开发的关键环节和质量指标上有了实质性的突破,彻底地解决了在这些方面存在的严重问题,从而宣告了软件危机末日的来临。
自底向上的归纳
OMT的第一步是从问题的陈述入手,构造系统模型。
从真实系统导出类的体系,即对象模型包括类的属性,与子类、父类的继承关系,以及类之间的关联。
类是具有相似属性和行为的一组具体实例(客观对象)的抽象,父类是若干子类的归纳。
因此这是一种自底向上的归纳过程。
在自底向上的归纳过程中,为使子类能更合理地继承父类的属性和行为,可能需要自顶向下的修改,从而使整个类体系更加合理。
由于这种类体系的构造是从具体到抽象,再从抽象到具体,符合人类的思维规律,因此能更快、更方便地完成任务。
这与自顶向下的Yourdon方法构成鲜明的对照。
在Yourdon方法中构造系统模型是最困难的一步,因为自顶向下的"
顶"
是一个空中楼阁,缺乏坚实的基础,而且功能分解有相当大的任意性,因此需要开发人员有丰富的软件开发经验。
而在OMT中这一工作可由一般开发人员较快地完成。
在对象模型建立后,很
容易在这一基础上再导出动态模型和功能模型。
这三个模型一起构成要求解的系统模型。
自顶向下的分解
系统模型建立后的工作就是分解。
与Yourdon方法按功能分解不同,在OMT中通常按服务(Service)来分解。
服务是具有共同目标的相关功能的集合,如I/O处理、图形处理等。
这一步的分解通常很明确,而这些子系统的进一步分解因有较具体的系统模型为依据,也相对容易。
所以OMT也具有自顶向下方法的优点,即能有效地控制模块的复杂性,同时避免了Yourdon方法中功能分解的困难和不确定性。
OMT的基础是对象模型
每个对象类由数据结构(属性)和操作(行为)组成,有关的所有数据结构(包括输入、输出数据结构)都成了软件开发的依据。
因此Jackson方法和PAM中输入、输出数据结构与整个系统之间的鸿沟在OMT中不再存在。
OMT不仅具有Jackson方法和PAM的优点,而且可以应用于大型系统。
更重要的是,在Jackson方法和PAM方法中,当它们的出发点--输入、输出数据结构(即系统的边界)发生变化时,整个软件必须推倒重来。
但在OMT中系统边界的改变只是增加或减少一些对象而已,整个系统改动极小。
需求分析彻底
需求分析不彻底是软件失败的主要原因之一。
即使在目前,这一危险依然存在。
传统的软件开发方法不允许在开发过程中用户的需求发生变化,从而导致种种问题。
正是由于这一原因,人们提出了原型化方法,推出探索原型、实验原型和进化原型,积极鼓励用户改进需求。
在每次改进需求后又形成新的进化原型供用户试用,直到用户基本满意,大大提高了软件的成功率。
但是它要求软件开发人员能迅速生成这些原型,这就要求有自动生成代码的工具的支持。
OMT彻底解决了这一问题。
因为需求分析过程已与系统模型的形成过程一致,开发人员与用户的讨论是从用户熟悉的具体实例(实体)开始的。
开发人员必须搞清现实系统才能导出系统模型,这就使用户与开发人员之间有了共同的语言,避免了传统需求分析中可能产生的种种问题。
可维护性大大改善
在OMT之前的软件开发方法都是基于功能分解的。
尽管软件工程学在可维护方面作出了极大的努力,使软件的可维护性有较大的改进。
但从本质上讲,基于功能分解的软件是不易维护的。
因为功能一旦有变化都会使开发的软件系统产生较大的变化,甚至推倒重来。
更严重的是,在这种软件系统中,修改是困难的。
由于种种原因,即使是微小的修改也可能引入新的错误。
所以传统开发方法很可能会引起软件成本增长失控、软件质量得不到保证等一系列严重问题。
正是OMT才使软件的可维护性有了质的改善。
OMT的基础是目标系统的对象模型,而不是功能的