第1章需求工程导论.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第1章.需求工程导论主要内容1.软件的需求问题1.软件的发展2.软件生产状况调查2.需求问题的原因分析3.需求工程4.需求工程师1.1软件的发展——60年代的发展机器为中心应用为中心50's60's指令码、汇编语言BIOS批量事务处理、计算性工作3GL,OOLOS,VirtualMachine基本业务处理,应用处理1.1软件的发展——软件危机1968年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危机”(softwarecrisis)这个名词。软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题开发成本超出预算,实际进度比预定计划一再拖延。用户对“已完成”系统不满意的现象经常发生。软件产品的质量往往靠不住。Bug一大堆,Patch一个接一个。软件的可维护程度非常之低。软件通常没有适当的文档资料。软件的成本不断提高。软件开发生产率的提高赶不上硬件的发展和人们需求的增长1.1软件的发展——软件工程概括来说,软件危机包含两方面问题:一、如何开发软件,以满足不断增长、日趋复杂的需求;二、如何维护数量不断膨胀的软件产品。解决方案:软件工程[IEEE]:(1)应用系统化的、学科化的、定量的方法,来开发、运行和维护软件,即,将工程应用到软件。(2)对(1)中各种方法的研究”1.1软件的发展——90年代的发展机器为中心应用为中心企业为中心50's60's90's指令码、汇编语言BIOS批量事务处理、计算性工作3GL,OOLOS,VirtualMachine基本业务处理,应用处理4GL,CBDMiddlewareEAI,BPR,ERP,...1.290年代的软件生产状况调查——StandishGroup1995Success,16.2%Challenged,52.7%Impaired,31.1%10018910022210061050100150200250费用时间功能预期值实际值365家公司的8380个项目成功项目Success:在预计的时间之内,在预算的成本之下,完成预期的所有功能问题项目Challenged:已经完成,软件产品能够正常工作,但在生产中或者超支,或者超期,或者实现的功能不全失败项目Impaired:因无法进行而被中途撤销,或者最终产品无法提交使用1.290年代的软件生产状况调查——StandishGroup1995大公司开发项目的平均成本是232.2万美元,中等公司是133.1万美元,小型公司是43.4万美元大约31%的项目在完成之前被取消,项目平均成本是预算的189%大公司9%按预算交付,小公司16%按预算交付1.290年代的软件生产状况调查——影响因素[StandishGroup1995]成功项目的影响要素影响指数用户参与15.9%高层管理支持13.9%清晰的需求说明13.0%正确的项目计划9.6%切合实际的期望8.2%细化的项目里程碑7.7%员工能力7.2%主人翁精神5.3%清晰的目标和前景2.9%努力工作2.4%其他13.9%1.290年代的软件生产状况调查——影响因素[StandishGroup1995]问题项目的影响要素影响指数缺少用户输入12.8%不完整的需求说明12.3%需求变化11.8%缺乏高层管理支持7.5%技术能力不足7.0%缺乏资源6.4%不切实际的期望5.9%目标不清晰5.3%不现实的时间要求4.3%新技术的影响3.7%其他23.0%1.290年代的软件生产状况调查——影响因素[StandishGroup1995]失败项目的影响要素影响指数不完整的需求说明13.1%缺少用户输入12.4%缺乏资源10.6%不切实际的期望9.9%缺乏高层管理支持9.3%需求变化8.7%缺乏计划8.1%额外的无用功能7.5%缺乏IT管理6.2%技术能力不足4.3%其他9.9%1.290年代的软件生产状况调查——影响因素[StandishGroup1995]需求因素用户参与(用户输入)高层管理支持清晰的需求说明切合实际的期望清晰的目标和前景需求变化额外的无用功能综合来看,需求因素对成功项目的影响指数为53.9%对问题项目的影响指数为55.6%对失败项目的影响指数为60.9%1.290年代的软件生产状况调查——ESPITI,1996欧洲软件协会ESI欧洲软件过程改进培训计划项目ESPITI17个国家的超过3800个组织0102030405060需求规格说明文档需求管理文档制作软件测试项目管理编码%主要问题次要问题不是问题1.290年代的软件生产状况调查——需求问题的典型案例[Bray2002]PROMS(演出权益协会),1992,未能以常人能理解和检查的形式表述软件需求,软件规格说明也考虑不周RISP(西萨克斯地区信息系统计划),1990,缺少清晰的项目范围定义TAURUS(伦敦股票交易),1993,未能协调不一致的需求LASDS(伦敦救护车服务派遣系统),1992,社会服务领域糟糕的需求分析ATC(空中交通控制系统),1998-2001,缺乏健壮的需求规格说明主要内容1.软件的需求问题2.需求问题的原因分析1.应用软件的模拟特性2.需求问题的具体原因分析3.需求工程4.需求工程师2.1应用软件的模拟特性——软件的三种类型软件类别纯工具型软件应用型软件专业用户普通用户评判标准功能的复杂性使用的高效性技术的先进性功能的有用性使用的方便性技术的可行性功能的“模拟”性使用的方便性技术的可行性关注点创新性有效性模拟性示例系统编程环境DBMSOffice语言翻译MISEAI2.1应用软件的模拟特性——软件的分析活动创新:1)观念创新2)技术创新功能分析:有用性设计、实现与集成发布设计、实现与集成发布现实分析:目的、问题领域知识设计、实现与集成移交功能分析:“模拟”性A)面向专业用户的工具型软件B)面向普通用户的工具型软件C)应用型软件功能分析2.1应用软件的模拟特性——软件模拟性的实践调查对应用型软件的“模拟”特性理解及应用问题CapersJones[Capers1996]在调查了几百个公司之后发现超过75%的企业在需求处理环节存在不足。2000年Nikula等人在对芬兰的中小型公司进行需求处理实践情况评价时发现[Nikula2000]:在以30分为标准线的情况下,75%的公司竟然在10分以下。Hofmann等人在欧洲的需求工程实践调查中发现仅有约1/3的项目有明确的需求处理过程[Hofmann2001]。Juristo等人在对欧洲的150多名RE实践者进行调查后发现,在需求处理的诸多技术当中,需求获取和冲突协商的技术没有得到充分的应用[Juristo2002]。研究也发现当软件生产面临时间、市场等其他压力时,漠视“模拟”特性的情况就更为严重[Lubars1993,Francisco2003]2.2需求问题的具体原因分析非技术性和社会性因素组织机构文化、社会背景、商业目标、利益协商关注软件系统和现实之间的互动效应软件系统环境的组织机构文化、社会背景和系统涉众的目标与利益比软件内部的数据流与状态更应该得到重视解决方案和具体应用环境相关的不能忽视具体应用环境中的相关因素,例如组织机构的文化、组织机构的规范、组织的行业规范、组织的社会背景等等单纯通过技术的运用来建立一个一致、完整的需求模型是不太可能的面对冲突要能够分析社会原因和组织机构方面的原因,引导涉众进行利益协商2.2需求问题的具体原因分析结构化分析和面向对象分析具有一定的先天缺陷编程-设计-分析设计和编程都有构建高质量(健壮性、可维护性、适应性等等)软件的共同目标,而且使用相同的概念和组织机制保证了从设计到编程的平滑过渡,所以,它们在设计领域的应用也取得了成功但是需求分析除了拥有构建高质量软件的目标之外,还有一个更加重要的目标是理解现实2.2需求问题的具体原因分析以“企业”为中心的软件反映了软件规模日益扩大一方面提高了需求处理中非技术性和社会性因素的影响比重另一方面也进一步放大了传统技术在需求处理阶段的不适应性2.2需求问题的具体原因分析需求错误的高代价性020406080100120140160180200需求设计编码编码测试验收测试运行代价主要内容1.软件的需求问题2.需求问题的原因分析3.需求工程1.简介2.基本活动3.需求工程与系统工程4.需求工程特性4.需求工程师3.1需求工程是软件工程的一个分支它关注于软件系统所应予实现的现实世界目标、软件系统的功能和软件系统应当遵守的约束同时它也关注以上因素和准确的软件行为规格说明之间的联系关注以上因素与其随时间或跨产品族而演化之后的相关因素之间的联系3.2需求工程的基本活动需求工程需求开发需求管理需求获取需求分析需求规格说明需求验证3.3需求工程与系统工程需求获取需求分析系统设计人力工程硬件工程软件工程系统集成系统测试需求产品需求阶段设计阶段编码阶段测试阶段系统需求开发软件需求开发需求工程3.4需求工程的特性——必要性软件开发是这样一个工程问题利用通用的计算机结构,构建一个有用的软件系统,来满足人们的某些目的计算机应用于现实世界的广泛性新的问题和新的解决方案定义问题就是需求工程的任务3.4需求工程的特性——重要性FrederickBrooks[Brooks1987]“开发软件系统最为困难的部分就是准确说明开发什么。最为困难的概念性工作便是编写出详细技术需求,这包括所有面向用户、面向机器和其它软件系统的接口。同时这也是一旦做错,将最终会给系统带来极大损害的部分,并且以后再对它进行修改也极为困难。”容易忽略需求工程重要性的地方问题广为人知电梯调度、图书管理问题小而简单出错也无所谓3.4需求工程的特性——复杂性处理范围广泛现实世界和计算机世界涉及诸多参与方客户、用户、领域专家、需求工程师、软件开发者、系统维护者等处理内容多样功能需求、非功能需求、环境及其约束处理活动互相交织需求开发的各项活动虽然在理论上具有顺序处理的特性,但在实际执行过程中往往是迭代和互相交织的处理结果要求苛刻正确性、完整性和一致性主要内容1.软件的需求问题2.需求问题的原因分析3.需求工程4.需求工程师1.知识要求2.技能要求4.1需求工程师需要具备的知识软件技术尤其是软件建模与分析技术认知学和社会学等方面的知识认知心理学人类学社会学语言学哲学知识掌握涉众的信仰与理念(认识论)分析在现实中观察到的各种现象(现象学)4.2需求工程师需要具备的技能专业技能需求工程的相关知识分析技能抽象能力整合能力系统化思想交流技能交谈和提问的技巧倾听的技巧4.2需求工程师需要具备的技能观察技能建模技能写作技能文档组织能力语言驾驭能力创新技能发现连用户都没有意识到的潜在需求协调能力本章小结从20世纪60年代末期软件工程产生起,需求分析就一直是软件开发的重要主题20世纪90年代的调查状况表明,单纯的需求分析已经不能很好的解决软件生产中的“需求”问题应用型软件的模拟性和一系列的具体原因表明软件生产需要进行一个比需求分析更加复杂和完整的需求工程需求工程是软件工程当中一项重要和复杂的活动,需求工程需要具备一定的知识和技能才可以很好的执行需求工程活动

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功