Skip to content

需求工程:软件研发的基石

在软件研发领域,需求工程是极为关键的一环,它如同大厦的基石,决定着软件最终能否满足用户需求、顺利开发并成功应用。今天,咱们就来深入剖析需求工程。

一、软件需求:多面剖析

软件需求涵盖功能性与非功能性需求。从内容维度看,它包含时间成本的限制(比如软件要在13个月内交付,开发经费123万元)、技术条件(像要求软件运行于Android平台)、遵循的标准规范(例如企业自定义的软件流程和质量标准)以及性能指标(如最大并发用户数10人,查询响应时间小于1秒) 。从层次区分,用户需求是抽象的高层概要,系统需求则是精确的底层细节。

非功能性需求也不容小觑,它不仅能衍生出功能性需求,像系统安全会催生出安全管理功能,还和系统架构紧密相连,比如分层架构与安全、备份架构与可靠性之间的关系。按来源划分,非功能性需求又分为产品需求(可用性、效率、可靠性、安全性、可移植性需求)、机构需求(交付、实现、标准需求)、外部需求(互操作和外部规则需求)以及领域需求(特定应用领域的需求,具有隐含性和通用性)。

二、需求工程过程:协作与迭代

需求工程是系统分析师携手项目利益相关者,将软件需求书面化的过程,它是软件过程的重要子过程,高度依赖高层软件过程。其活动丰富多样,有可行性分析、需求导出和发现、分析和求精、协商、描述、验证和管理。整个过程呈螺旋式推进,每一次循环都让需求更加精准、完善。

三、需求工程原则:沟通与建模

沟通在需求工程中占据核心地位。沟通时要做好充分准备,追求双方共赢,最好当面交流,深入实际场景,善于引导并倾听各方声音。在分析建模方面,要秉持不创建无用模型的理念,分析模型专注于描述系统功能,将具体实现细节留给设计模型,并且要注重模型的实用性,而非盲目追求完美。

四、需求导出和发现:挖掘需求宝藏

需求导出和发现需要软件分析人员与项目利益相关者积极沟通。这些利益相关者包括业务人员、销售人员、客户、产品管理人员以及软件工程师等。由于各方期望可能存在冲突,所以要对需求进行优先级排序。收集需求的方式有正式的需求收集会议和非正式访谈,会议要提前规划,访谈则需提前准备问题。最终会产出产品需求和目标、系统范围和环境等成果。

五、分析建模:构建需求蓝图

分析建模旨在生成需求规格说明,加深对软件开发要求的理解。常用的结构化分析方法和面向对象分析方法,从场景、数据、类、行为等不同视图展开建模。场景分析建模聚焦用户与系统的交互;数据分析建模关注数据的结构、关系和处理;类分析建模针对系统操作的对象类;行为建模则研究系统的动态行为。各视图都有对应的建模手段,如场景分析用用例图,数据分析用实体关系图等。

六、需求验证和管理:确保需求质量

需求验证关乎需求是否契合客户需求,需检查有效性、可实现性、一致性等多个方面。可以通过需求评审会议进行人工分析,利用需求原型对关键需求进行检验,在定义需求时同步开发测试用例,保障需求的可测试性。而且,业务和技术环境的变化、用户需求的变动等,都会促使需求进化,所以需求管理至关重要。

需求工程贯穿软件研发全程,是保障软件质量、满足用户需求的关键所在。