软件经历了以“机器”为中心,以“应用”为中心,以“企业”为中心的发展过程,随着“应用”为中心的软件发展,原来的个体化“软件做坊式”的软件开发模式显示出了不少的问题,针对这些问题,人们在不断地讨论与制定对策,在软件开发技术和软件开发过程与管理方面都取得了不少进步。工具
根据不少方面的调查显示,在全部的软件开发项目中,项目成功的概率是很小很小的。形成这些软件问题的一个很重要的缘由是:未能很好地理解和掌握应用型软件的模拟特征以及由此而产生的一系列影响和要求。性能
软件能够分为:面向专业用户的纯工具型软件、面向普通用户的纯工具型软件和应用型软件。不一样种类的软件的评判标准是不同的,面对不一样的用户他们有不一样标准。这就要求软件需求的全面性。产生需求问题的最大缘由是应用型软件的模拟特征理解不透彻或应用不坚定。一样,非技术性和社会性因素重视不足、传统需求分析的方法的缺陷也会带来需求问题。需求工程必须说明软件系统将被应用环境及其目标,必须将目标、功能和约束反映到软件系统中,映射为可行的软件行为,并对软件行为进行准确的规格说明,须要妥善处理目标、功能和约束随时间的演化状况。动画
需求工程分为需求开发、需求管理,需求开发分为需求获取、需求分析、需求规格说明、需求验证。spa
【IEEE1998】将需求分为功能需求、性能需求、质量属性、对外接口、约束5类,即两大类功能需求和非功能需求。接口
功能需求中按抽象层次的高低分为业务需求、用户需求、系统需求。业务需求是系统的目标,用户需求是系统的任务,系统需求是系统的行为。事件
对于非功能需求,咱们很难在系统完成以前清晰地看到,不少时候是在系统完成以后才会发现非功能需求。在解决系统成功或失败的因素中,非功能需求与功能需求同等重要,甚至更重要。开发
一个优秀的需求是完整的,每一个需求都完整的描述出系统所须要的功能,并将用户的指望传递给了开发人员,能够在系统及运行环境的已知条件和约束下实现,任何一个需求都是不能忽视的、无歧义的、能够验证的。原型
需求工程的一些工做须要不少的活动细节,经过实践的方法来完成这些活动细节,不一样的需求阶段都有其标志性的活动,都有各自的实践方法。软件
需求获取中会遇到不少的困难,例如:用户与开发人员的背景、立场不一样,交流存在困难;用户缺少归纳性、综合性的表述能力;用户存在认知困难;开发者为用户创造需求,用户为开发者提出解决方案;用户很差选择,用户不肯参与等等,这都要采起措施去面对、解决,有一个好的需求获取流图。程序
项目开始的时候要确立项目的目标,咱们要有一个共同的认识,明确的分析出问题,发现业务需求,制定一个解决方案找到系统特征,这一点在写系统时有了不少的感触,面对一个系统,不知道应该有什么样的内容,不了解用户,不知道用户会用它干什么,用户须要什么,单从本身的理解去创建系统的功能,不少时候都有一种写文章的感受,不知道下面该有什么,下文是什么?一个功能,加也不是,不加也不是。这时候真的很须要用户的需求。
面谈是需求获取的方法之一,他能够得到不少的内容:事实和问题、被会见者的观点、被会见着的感觉、组织和我的目标。可是访谈者要注意不少问题:礼貌的倾听,选择好的时间和地点,笔录,在用户赞成的条件下录音或录像。
原型的介质有不少:纸面、幻灯动画、快速语言和工具和程序代码。纸质原型的真实感最低但其可以缓解原型方法的高成本缺点。当用户需求出现了模糊、不清晰、不完整等具备必定不肯定性的特征时,就能够考虑使用原型方法。[Houde1997]认真原型的需求内容有:外观、角色、实现。
观察能够帮助理解复杂的协同事件,获取工做中的异常处理,获取与用户认知不一致的实际知识,了解用户的认知,获取默认的知识。