软件项目管理课程之第4讲:软件需求管理

news2025/3/31 11:04:03

讲授内容

  1. 项目案例

  2. 软件需求管理的基本概念

  3. 软件需求开发

  4. 软件需求管理

项目案例

  • 案例背景:小王作为软件项目负责人,带领团队开展需求调查工作,但在需求分析和后续开发过程中出现了一系列问题。

  • 问题表现

    • 项目规模庞大,需求分析小组不知如何开展工作,对需求分析的复杂性和难度估计不足。

    • 需求分析小组不能有效工作,不知哪些属于用户需求,哪些不是,不知怎样获取用户需求,如何分析清楚。

    • 不知按照怎样的规范书写软件需求规格说明书,得到的软件需求质量不高,存在说不清、遗漏、矛盾、啰嗦等问题。

    • 需求评审不严格,导致遗漏了许多需求,获取的用户需求不一致、描述不清晰和准确。

    • 用户没有参加需求评审,许多软件需求未得到用户认可,最终开发出的软件不能满足用户要求,用户拒绝接收软件并拒绝付款。

    • 在软件开发阶段,由于软件需求的不准确性、不一致性和二义性,软件设计人员需通过用户再次确认需求。

    • 在开发过程中,用户的需求仍在改变,这些改变的需求未得到有效管理和控制,未能及时反馈给软件开发小组,导致未能在待开发的软件中得到体现。

    • 由于需求未能有效管理,在最终项目验收过程中出现问题,实际开发的软件未能完全反映用户的需求,导致用户不满意,项目延期。

  • 案例启示:需求分析极为重要且困难复杂,用户需求经常性变更正常,为保证软件需求质量,必须对需求分析的人、过程和产品进行有效管理,需求管理不善将导致严重后果。

软件需求管理的基本概念

  • 什么是软件需求

    • 软件需求是用户对目标软件系统在功能、性能、设计约束等方面的期望和要求,是用户希望软件能做的事情和完成的功能。

    • 软件需求关注用户的期望、要求和需要,不是解决方案,需区分what和how。

    • 软件需求主要指功能、性能、设计约束、时间进度等,不包括重量、软件大小等。

    • 并非所有用户的期望和要求都是软件需求,用户需求必须中肯、有意义。

    • 软件需求解决目标系统“做什么”的问题,而非“如何做”的问题,是连接用户和软件开发团队的桥梁。

  • 软件需求的分类

    • 业务需求:组织或客户高层次的目标,来自项目投资人、购买产品的客户、实际用户、市场营销部门或产品策划部门,描述组织开发系统的理由和目标,使用愿景和范围文档记录。

    • 用户需求:描述用户目标和任务,通过用例、场景描述和事件-响应表表达。

    • 功能需求:规定软件系统开发人员必须实现的功能,描述开发人员需要实现的内容。

    • 非功能性需求:包括质量属性(可靠性、可维护性、安全性、易操作性等)、系统需求(系统运行环境、开发环境等)、业务规则等。

  • 软件需求的重要性

    • 软件开发的基础和前提,明确需求后才能开展系统设计和编码。

    • 制定软件开发计划的基础,知道需求才能确定工作量,进而制定计划。

    • 软件系统验收的标准,明确需求才能进行验收。

  • 获取软件需求的复杂性和面临的问题

    • 系统复杂和庞大,难以全面获取需求。

    • 需求可能存在片面、不完全、模糊、不准确、不一致、歧义等问题。

    • 需求变更时,难以及时通知相关人员。

    • 需求变动可能带来波动性和放大性问题。

  • 解决方法和手段

    • 技术层面:运用需求分析方法、技术和工具,如数据流、面向对象、抽象、建模、多视点、原型、UML、Rose、Word、Excel、RequisitePro等。

    • 管理层面:对需求分析中的人、活动和产品进行管理,形成需求工程研究领域。

软件需求开发

  • 什么是软件需求开发:需求开发是从用户处获得需求并形成与用户需求相一致的、可供阅读的软件需求规格说明书的过程。

  • 软件需求开发的任务:通过对应用问题及其环境的理解和分析,准确、一致和完全地刻画用户需求,并达成一致,形成软件需求规格说明书(SRS)。

  • 软件需求开发的目标

    • 全面性:没有遗漏。

    • 一致性:没有矛盾。

    • 准确性:说清楚。

    • 认同:共同、相互认可。

    • 文档化:书面文档。

  • 软件需求开发的过程

    1. 需求获取:从用户处收集、获取软件需求,帮助用户发现潜在的软件需求。技术手段包括Q&A列表邮件提问、电话会议访谈、用户调研、需求专题讨论会、头脑风暴、参观交流、实践等。需求获取的注意事项包括识别真正的用户、正确理解用户需求尤其是隐含需求、具备较强的忍耐力和清晰思维、说服和教育用户。

    2. 需求分析与建模:提炼、分析和审查已收集到的用户需求,建立一个概念模型,发现并纠正不一致、不准确和不全面的软件需求,形成准确的用户需求描述。主要活动包括绘制系统关联图、创建用户接口原型、分析需求可行性、确定需求的优先级别、为需求建立模型(如UML)、建立数据字典、使用质量功能调配等。需求建模方法包括用例分析方法、原型分析方法和结构化分析方法。

    3. 文档化软件需求:根据软件需求初步描述和软件需求模型,撰写软件需求规格说明书(SRS)。SRS的编制是为了使用户和软件开发者对该软件的初始规定有一个共同的理解,使之成为整个开发工作的基础。SRS的原则包括从现实中分离功能、采用一定的规格说明语言、包括系统运行环境的说明、容许不完备性并允许扩充。

    4. 软件需求验证:由多方对软件需求规格说明书进行评审,分析需求的正确性、完整性以及可行性等,确保需求说明准确、无二义性并完整地表达系统功能以及必要的质量特性。验证活动包括审查需求文档、以需求为依据编写测试用例、编写用户手册、确定合格的标准、最后的签字。参与验证评审的人员包括项目经理、用户方代表、需求分析小组、软件设计小组、软件测试小组、软件质量保证小组等。

软件需求管理

  • 需求管理的必要性

    • 需求获取的偏差难以避免,客户描述的需求与项目经理、分析员、程序员等的理解可能存在差异。

    • 需求具有易变性和难以表述性,需求错误出现的高频性和修复的高昂成本。

  • 需求管理的目标

    1. 使软件需求受控,并建立供软件工程和管理使用的基线。

    2. 使软件计划、产品和活动与软件需求保持一致。

  • 需求管理的原则

    • 需求一定要分类管理:目标性、业务需求和操作性。

    • 需求必须分优先级:需求过多、需要裁剪。

    • 需求必须文档化:记录,避免忽略重要需求。

    • 需求一旦变化,就必须对需求变更的影响进行评估。

    • 需求管理必须与需求工程的其他活动紧密整合。

  • 需求管理策略

    • 需求一定要与投入有必然的联系。

    • 需求变更要经过出资方认可,小的需求变更也要经过正规的需求管理流程。

    • 精确的需求与范围定义并不会阻止需求变更。

  • 需求管理活动

    • 需求管理规划:需求识别、变更管理过程、需求跟踪和自动化工具。

    • 需求管理是一个对系统需求变更了解和控制的过程,与其他需求工程过程相互关联。

    • 变更控制:建议需求变更并分析其影响,做出是否变更的决策。

    • 版本控制:确定单个需求和SRS的版本。

    • 需求跟踪:定义对于其他需求及系统元素的联系链。

    • 需求状态:定义并跟踪需求的状态。

  • 需求变更的原因

    1. 在项目的早期所有的问题不可能被完全定义,软件需求是不完全的,注定了需求需要变更。

    2. 随着软件项目的进行,软件开发人员对问题的理解会发生变化,这些变化也要反馈到需求中去。

    3. 不同类型的用户的需求可能是冲突的或是矛盾的,最后的系统需求是它们之间的一个妥协,这种妥协的程度在项目进行过程中有可能发生改变,从而导致系统需求的改变。

    4. 系统购买者或系统最终用户很少是同一人,有的系统客户对系统提出的一些需求可能和最终用户需求不一致。

  • 需求变更控制基本流程

    1. 客户或开发人员提出变更请求。

    2. 项目经理进行初步判断,分流处理。

    3. 对于应重视的问题,提交变更控制委员会进行决策。

    4. 变更控制委员会分析变更影响,做出接受或不接受的决策。

    5. 如果接受,修改SRS、开发计划和其他相关文档。

  • 需求文档版本控制

    • 保证软件项目干系人得到最新版本的需求文档和记录需求的全部历史版本。

    • 统一确定需求文档的每一个版本,保证每个成员都能得到当前的需求版本。

    • 清楚地将变更写成文档,并及时通知项目开发所涉及的人员。

    • 只允许指定的人来更新需求文档。

  • 需求状态

    • 包括需求属性(背景资料和上下文关系、创建时间、涉及的子系统、版本、涉及的产品版本、创建者、批准者、验证方法、状态、优先级、原因、稳定性等)。

    • 需求状态的变化过程(提出需求、已建议、已批准、已拒绝、需求分析、已设计、已实现、已验证、已删除、已交付等)。

  • 需求跟踪

    • 目的:建立和维护从用户需求开始到测试之间的一致性与完整性,确保所有实现都以用户需求为基础,而实现的需求也全部覆盖了预期的需求,同时确保所有输出与用户需求的符合性。

    • 可追溯性信息:源可追溯性信息、需求可追溯性信息、设计可追溯性信息。

    • 需求跟踪的方式:正向跟踪和逆向跟踪。

    • 需求跟踪的实现:需求跟踪矩阵。

    • 需求跟踪的作用:在需求验证中的作用、有助于需求变更影响分析、便于需求的维护、便于测试时找出问题所在、便于项目跟踪、减小项目的风险、简化了系统的再设计、易于软件重用。

  • 需求管理工具:CaliberRM、DOORS、RTMRational RequisitePro。

案例分析:如何面对项目需求变更?

  • 案例背景:小主的公司遇到两个项目,分别由项目经理A和B负责。项目经理A对客户提出的问题无论大小都给予解决,客户满意但项目进度拖得较长;项目经理B对客户提出的问题大多不予理睬,客户不满意但项目进度控制较好。

  • 问题

    1. 如果你遇到需求变更,你会采用哪种方式?

    2. 分析这两种应对需求变更方式的优缺点。

  • 分析

    1. 需求变更对项目的成本、进度、质量都会产生影响,对客户提出的需求变更要求要谨慎对待,既不能一味接受也不能全盘拒绝,要综合分析,合理的需求变更可以接受,过分的要求则要拒绝,且需求变更要严格按照需求变更审核控制流程来进行。

    2. 在项目前期尽量把用户的需求了解清楚,注意引导用户的需求到我们的方案中来,与销售部保持良好沟通,避免项目实施后进行变更。

    3. 对于用户提出的意见和建议,要系统评估需求变化导致的成本增加和质量改进,最终进行决策,并与用户及时沟通。

  • 分析2

    • 项目经理A的应对方式的优点是客户满意,缺点是对项目进度延期,成本增加,质量没保障。

    • 项目经理B的应对方式优点是项目可以按时完成和交付使用,缺点是影响客户关系,对将来的合作产生不利影响。

本章小结

  • 软件需求工程:包括需求获取、需求分析、需求规格编写、需求验证、需求变更控制、版本控制、需求跟踪等。

  • 需求管理:包括需求状态、需求管理原则、需求管理策略、需求管理活动等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2324096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux和windows是采用何种机制保存密码的?

传统Linux的不足: 1)存在特权用户root 任何人只要得到root的权限,对于整个系统都可以为所欲为。这一点Windows也一样。 2)对于文件的访问权划分不够细 在linux系统里,对于文件的操作,只有「所有者」…

matlab打开两个工程

1、问题描述 写代码时,需要实时参考别人的代码,需要同时打开2个模型,当模型在同一个工程内时,这是可以直接打开的,如图所示 2、解决方案 再打开一个MATLAB主窗口 这个时候就可以同时打开多个模型了 3、正确的打开方…

HarmonyOS主题管理工具封装:动态切换、持久化存储与常见问题解析

注:适用版本(Harmony OS NEXT / 5.0 / API 12 ) 一、效果展示 二、技术栈 HarmonyOS ArkUI框架 使用AppStorage实现跨组件状态管理,PersistentStorage持久化存储用户偏好。 系统配置常量 ConfigurationConstant.Color…

60V单通道高精度线性恒流LED驱动器防60V反接SOD123封装

产品描述: PC561A 系列产品是用于产生单通道、高精度恒流源( Constant Current Regulator, CCR) 的LED 驱动芯片,为各类 LED 照明应用提供高性价比恒流方案。PC561A 采用晶体管自偏置技术,可在超宽工作电压范围内维持…

学习threejs,使用Sprite精灵、SpriteMaterial精灵材质

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.Sprite1.1.1 ☘️代码…

Cent OS7+Docker+Dify

由于我之前安装了Dify v1.0.0,出现了一些问题:无法删除,包括:知识库中的文件、应用、智能体、工作流,都无法删除。现在把服务器初始化,一步步重新安装,从0到有。 目录 1、服务器重装系统和配置…

本地AI大模型部署革命:Ollama部署和API调试教程

Ollama:你的私人AI助手 还在为云端AI服务的高昂费用和隐私问题而烦恼吗?Ollama横空出世,它是一款专为本地环境打造的大模型部署神器,让你轻松在自己的设备上运行各种强大的AI模型。无论你是开发者还是普通用户,Ollama…

centos7 linux VMware虚拟机新添加的网卡,能看到网卡名称,但是看不到网卡的配置文件

问题现象:VMware虚拟机新添加的网卡,能看到网卡,但是看不到网卡的配置文件 解决方案: nmcli connection show nmcli connection add con-name ens36 ifname ens36 type ethernet #创建一个网卡连接配置文件,这里con…

K8S学习之基础五十一:k8s部署jenkins

k8s部署jenkins 创建nfs共享目录, mkdir -p /data/v2 echo /data/v2 *(rw,no_root_squash) > /etc/exports exportfs -arv创建pv、pvc vi pv.yaml apiVersion: v1 kind: PersistentVolume metadata:name: jenkins-k8s-pv spec:capacity:storage: 1GiaccessMod…

在 Mermaid 流程图里“驯服”quot;的魔法指南!!!

🐉 在 Mermaid 流程图里“驯服”"的魔法指南 在使用 Mermaid 画流程图时,是不是经常遇到想秀一波 " 却被它“反杀”的情况?🎯 今天就来教大家如何在这头代码野兽的嘴里,抢回我们的双引号实体编码&#…

GitHub美化个人主页3D图表显示配置操作

这个功能主要是用的这个开源仓库:https://github.com/yoshi389111/github-profile-3d-contrib 想看效果的话,我的个人主页:https://github.com/Sjj1024 开始操作 1.创建自己的github主页属性项目——跟你github用户名一致即可,…

HarmonyOS NEXT 鸿蒙中关系型数据库@ohos.data.relationalStore API 9+

核心API ohos.data.relationalStore API 9 数据库 数据库是存储和管理数据的系统 数据库(Database)是一个以特定方式组织、存储和管理数据的集合,通常用于支持各种应用程序和系统的运行。它不仅是存放数据的仓库,还通过一定的…

【JavaScript】JavaScript Promises实践指南

【JavaScript】JavaScript Promises实践指南 你了解JavaScript中的Promises吗?这是一个很多人一开始就放弃的主题,但我会尽量让它变得尽可能简单。 1. “Promise”到底是什么? “Promise”是异步编程中的一个基本概念,特别是在J…

git push的时候出现无法访问的解决

fatal: 无法访问 https://github.com/...:gnutls_handshake() failed: Error in the pull function. push的时候没有输入自己的github账号密码,为了解决每次push都要登录github这个问题,采用ssh密钥的方式认证,可以免去每次都输入…

为什么大模型在 OCR 任务上表现不佳?

编者按: 你是否曾经用最先进的大语言模型处理企业文档,却发现它把财务报表中的“$1,234.56”读成了“123456”?或者在处理医疗记录时,将“0.5mg”误读为“5mg”?对于依赖数据准确性的运营和采购团队来说,这…

HCIP(VLAN综合实验)

实验拓补图 实验分析 一、实验目的 掌握VLAN的创建和配置方法理解VLAN在局域网中的作用学习如何通过VLAN实现网络隔离和通信 二、实验环境 交换机(SW1、SW2、SW3)个人电脑(PC1、PC2、PC3、PC4、PC5、PC6)路由器(R1…

每日算法-250328

记录今天学习和解决的LeetCode算法题。 92. 反转链表 II 题目 思路 本题要求反转链表中从 left 到 right 位置的节点。我们可以采用 头插法 的思路来反转指定区间的链表。 具体来说,我们首先定位到 left 位置节点的前一个节点 prev。然后,从 left 位置…

从 Word 到 HTML:使用 Aspose.Words 轻松实现 Word 文档的高保真转换

从 Word 到 HTML:使用 Aspose.Words 轻松实现 Word 文档的高保真转换 前言一、环境准备二、核心代码实现1. 将 Word 转换为 HTML 文件流2. 优化超链接样式 三、测试效果四、总结 前言 在日常开发中,我们经常需要将 Word 文档转换为 HTML,用于…

RSA 简介及 C# 和 js 实现【加密知多少系列_4】

〇、简介 谈及 RSA 加密算法,我们就需要先了解下这两个专业名词,对称加密和非对称加密。 对称加密:在同一密钥的加持下,发送方将未加密的原文,通过算法加密成密文;相对的接收方通过算法将密文解密出来原文…

机器学习——LightGBM

LightGBM(light gradient boosting machine,轻量梯度提升机)是对XGBoost进行改进的模型版本,其三者之间的演变关系为:GBDT-》XGBoost-》LightGBM,依次对性能进行优化,尽管XGBoost已经很高效了,但是仍然有缺…