




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.@:引用软件开发的管理和控制引用uvsoftlifeng的软件开发的管理和控制文章摘要:软件开发是一项很复杂的工作,对于软件开发的管理和控制,如今有一门专门的学科:软件工程。在这方面有许多国家标准和国际标准。许多公司也有相应的文档模版,及相关规定。本文从管理和理论的角度来讨论软件开发的管理和控制应遵循的的一些原那么。正文:软件开发的管理和控制软件开发是一项很复杂的工作,对于软件开发的管理和控制,如今有一门专门的学科:软件工程。在这方面有许多国家标准和国际标准。许多公司也有相应的文档模版,及相关规定。如今不谈技术角度来标准软件开发的管理和控制,从管理和理论的角度来讨论软件开发的管理和控制应遵循的的一些原那么。对于软件开发工程中,经常出现两种极端情况,一种是创造了新的消费率和质量的纪录;一种那么完全是一场灾难,不是被取消就是拖延很长时间。前者如在很短的时间内,为了赶进度,在几乎不可能的时间内开发出一套软件产品,创造了软件开发的记录,满足了上级所要求的上机日期,由于开发时间太短,过于仓促,上机时,问题百出,试运行时间长达几个月或一年半载的,而且程序一改再改,维护工作量大。后者,如某套系统未弄清楚需求,或因设计问题,开发失败。通过提炼这些成功和失败的例子,软件工程成功或失败的根本原因可能会更明晰一些。在讨论这些原因之前,我们先来说明一下什么情况可以称为失败的软件工程。1.由于费用超支或方案执行超时而终止。2.完成方案的时间或费用超过了原方案的50%。3.由于质量或性能上的原因引起和客户的纠纷。下面我们将按其影响大小的顺序排列说明5种错误的理论方式。错误1:没有软件工程开发的历史数据缺乏软件开发的历史数据是大多数软件工程失败的关键所在,这样的结论也许使很多人感到吃惊,但事实就是如此。没有一个可靠的软件开发的历史数据会使工程经理,程序员,客户对于软件开发的过程缺少清醒的认识。假设如今你正在管理一个软件工程,而这个工程还没有一个公司在36个月内完成。作为一个负责的经理,你作了一个比较细致和保守的估计,然后告诉你的客户和你的手下说你认为这个工程需要36-38个月完成。然而常常有这样的情况发生:你的客户和程序员要求把时间压缩到18个月。客户一方面希望软件尽早投入使用而产生经济效益,一方面也想压缩工程时间作为一个讨价还价的筹码;而程序员一方面可能过于自信,一方面尽早完毕工程也能使他们多赚点钱。而此时你的手头上也没有一个可靠的软件开发的历史数据,在他们的压力下你同意了18个月的方案,于是一场灾难开场了。在工程的开场阶段你发现方案被拖延了,于是开场向程序员们施加压力,要求他们加快进度,程序员为了追求进度而不得不把其它指标放在一边,这些问题不断的积累下来而工程经理却蒙在鼓里。到了工程中后期这些质量问题会不断暴露出来,而且互相关联并且难以解决,甚至有些是系统设计的问题,这时才发现好多模块要推倒重来,18个月完成方案变成了天方夜谭。虽然上面只是一个虚拟的例子,但在实际中这种情况比比皆是。问题的关键就在于软件开发的历史数据是反映软件开发队伍的才能的标尺,没有了这个标尺,就无法对软件的开发过程有一个清醒的认识。错误2:不重视使用软件费用估值工具软件和方案工具软件软件开发方法述评60年代中期开场爆发了众所周知的软件危机。为了抑制这一危机,在1968、1969年连续召开的两次著名的NATO会议上提出了软件工程这一术语,并在以后不断开展、完善。与此同时,软件研究人员也在不断探究新的软件开发方法。至今已形成八类软件开发方法。一、Parnas方法最早的软件开发方法是由D.Parnas在1972年提出的。由于当时软件在可维护性和可靠性方面存在着严重问题,因此Parnas提出的方法是针对这两个问题的。首先,Parnas提出了信息隐蔽原那么:在概要设计时列出将来可能发生变化的因素,并在模块划分时将这些因素放到个别模块的内部。这样,在将来由于这些因素变化而需修改软件时,只需修改这些个别的模块,其它模块不受影响。信息隐蔽技术不仅进步了软件的可维护性,而且也防止了错误的蔓延,改善了软件的可靠性。如今信息隐蔽原那么已成为软件工程学中的一条重要原那么。Parnas提出的第二条原那么是在软件设计时应对可能发生的种种意外故障采取措施。软件是很脆弱的,很可能因为一个微小的错误而引发严重的事故,所以必须加强防范。如在分配使用设备前,应该取设备状态字,检查设备是否正常。此外,模块之间也要加强检查,防止错误蔓延。Parnas对软件开发提出了深化的见解。遗憾的是,他没有给出明确的工作流程。所以这一方法不能独立使用,只能作为其它方法的补充。二、楽ASA方法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语言。这一方法在日本较为流行,软件开发的成功率也很高。由于在输入、输出数据构造与整个系统之间同样存在着鸿沟,这一方法仍只适用于中小型问题。五、面向对象的软件开发方法面向对象技术是软件技术的一次革命,在软件开发史上具有里程碑的意义。随着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的根底是目的系统的对象模型,而不是功能的分解。功能是对象的使用,它依赖于应用的细节,并在开发过程中不断变化。由于对象是客观存在的,因此当需求变化时对象的性质要比对象的使用更为稳定,从而使建立在对象构造上的软件系统也更为稳定。更重要的是OMT彻底解决了软件的可维护性。在OO语言中,子类不仅可以继承父类的属性和行为,而且也可以重载父类的某个行为〔虚函数〕。利用这一特点,我们可以方便地进展功能修改:引入某类的一个子类,对要修改的一些行为〔即虚函数或虚方法〕进展重载,也就是对它们重新定义。由于不再在原来的程序模块中引入修改,所以彻底解决了软件的可修改性,从而也彻底解决了软件的可维护性。OO技术还进步了软件的可靠性和强健性。六、可视化开发方法可视化开发是90年代软件界最大的两个热点之一。随着图形用户界面的兴起,用户界面在软件系统中所占的比例也越来越大,有的甚至高达60~70%。产生这一问题的原因是图形界面元素的生成很不方便。为此Windows提供了应用程序设计接口API〔ApplicationProgrammingInterface〕,它包含了600多个函数,极大地方便了图形用户界面的开发。但是在这批函数中,大量的函数参数和使用数量更多的有关常量,使基于WindowsAPI的开发变得相当困难。为此BorlandC++推出了ObjectWindows编程。它将API的各部分用对象类进展封装,提供了大量预定义的类,并为这些定义了许多成员函数。利用子类对父类的继承性,以及实例对类的函数的引用,应用程序的开发可以省却大量类的定义,省却大量成员函数的定义或只需作少量修改以定义子类。ObjectWindows还提供了许多标准的缺省处理,大大减少了应用程序开发的工作量。但要掌握它们,对非专业人员来说仍是一个沉重的负担。为此人们利用WindowsAPI或BorlandC++的ObjectWindows开发了一批可视开发工具。可视化开发就是在可视开发工具提供的图形用户界面上,通过操作界面元素,诸如菜单、按钮、对话框、编辑框、单项选择框、复选框、列表框和滚动条等,由可视开发工具自动生成应用软件。这类应用软件的工作方式是事件驱动。对每一事件,由系统产生相应的消息,再传递给相应的消息响应函数。这些消息响应函数是由可视开发工具在生成软件时自动装入的。国内的软件公司大多数是处在"十几条枪,一个手工作坊"的程度上,在承接软件开发的工程之后往往是几位骨干人物讨论之后对费用和进度作一个大致的估计,然后就开场进入工程的执行。这种方法带有明显的主观性。在作一个准确的软件费用估计和作一个比较现实的工程开发方案时需要考虑许多因素。对于一个大的软件工程,用手工作费用估计和作方案是不能胜任的。如今国外市场上有大约50种商业软件费用估计工具包和大约100种商业工程方案工具包,使用他们作准确的估计比手工的估计更可能获得成功。常用的软件费用估计工具软件有Checkpoint,Colomo,Estimacs,Price_s,Slim。常用的工程管理软件有MSProject,Primavera,ProjectManager*sWorkbench,Timeline。把这二种工具软件结合使用可以互为补充,帮助经理驳回客户和程序员的无理要求并且能准确的控制工程的执行。错误3:无视用户的需求的变动尽管最初的用户需求在签定开发合同时已经包含在需求说明书中,但在整个开发周期中期望用户的需求一直保持不变是不大可能的,因为用户对于如何应用计算机软件并没有一个成熟的经历。在工程进展中用户的需求会不断的增长,一般情况下用户的需求以每月1%的速率增加,假如一个工程在12个月内完成,最终将有超过10%的改动,假如工程要持续36个月,最后将增加1/3的功能。每月1%也只是一个经历数据,一个缺乏计算机应用经历的用户会更频繁的改变和增加他的要求。因此在作工程的费用和时间估计时一定要考虑用户需求的变化。一种比较明智的方法是在签定开发合同时把用户需求的改动和经济
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中语文教研组课题研究计划
- 重庆对外经贸学院《规划研究方法2-基于空间数据的研究方法》2023-2024学年第一学期期末试卷
- 云南三鑫职业技术学院《有限元技术基础》2023-2024学年第一学期期末试卷
- 郑州电子商务职业学院《数字硬件数字电路》2023-2024学年第一学期期末试卷
- 新乡医学院三全学院《信息安全与技术》2023-2024学年第一学期期末试卷
- 新余学院《汽车振动与噪声》2023-2024学年第一学期期末试卷
- 重庆城市管理职业学院《施工图设计》2023-2024学年第一学期期末试卷
- 邢台应用技术职业学院《教育技术学专业认知专题》2023-2024学年第一学期期末试卷
- 智能农业中的自动化收获技术研究
- 湖南长沙明德集团2026届初中物理毕业考试模拟冲刺卷含解析
- IWE国际焊接工程师培训教程
- 员工赔偿金保密协议书
- 分户委托书范本
- 建筑工程质量检验评定标准
- DZ∕T 0130.6-2006 地质矿产实验室测试质量管理规范 第6部分:水样分析(正式版)
- 食品保质期公开课课件
- 客房服务员:高级客房服务员题库考点
- 脾破裂介入栓塞术后护理
- 2023北京高三一模英语汇编:阅读理解A篇
- 中暑的院前急救和护理
- 《中国急性肾损伤临床实践指南(2023版)-》解读
评论
0/150
提交评论