发布网友 发布时间:2024-10-23 22:34
共1个回答
热心网友 时间:2024-11-02 12:10
需求工程在软件工程中占据核心地位,一项1995年美国的调查结果显示,约有45%的软件项目失败,其中缺乏用户参与和不完整的需求是主要原因。需求工程的复杂性源于客观和主观两个层面。客观上,它涉及广泛的应用领域,非功能性需求与功能性需求的交织使得分析建模难度加大。主观上,不同领域的专家和用户等参与人员的知识背景各异,沟通困难增加了工程实施的难度。
需求工程起初是软件生命周期的首个阶段,但研究深度不足。传统软件工程中,需求分析阶段主要负责定义软件功能和性能、接口设计等。然而,现代需求工程已超越这些,它融合了系统工程和软件工程,关注软件系统的目标、服务、约束和环境,以及这些因素与系统规格和进化之间的关系。
需求工程的基本活动包括抽取需求、模拟分析、传递需求、认可需求和进化需求。每个活动都有其动机、任务和挑战。例如,抽取需求时,工程师需识别问题并获取知识,而缺乏领域知识、默认知识和客户偏见是主要的困难。模拟和分析需求则帮助理解问题并发现潜在问题,需求建模需做到独立、抽象、形式化和可执行。
传递需求是书写需求规格说明,以明确理解和契约形式传达给各方。认可需求则需要解决各方对于规格说明的冲突,如协商、仲裁等方法。进化需求是应对客户需求不断变化的必要过程,传统方法如软件配置管理和产品线方法,以及多视点方法都在处理需求变化中发挥作用。
需求工程是指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科。它通过合适的工具和记号系统地描述待开发系统及其行为特征和相关约束,形成需求文档,并对用户不断变化的需求演进给予支持。