【愚公系列】2023年12月 智能制造理论篇-项目需求分析的重要性

举报
愚公搬代码 发表于 2023/12/31 21:22:05 2023/12/31
【摘要】 🏆 作者简介,愚公搬代码🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、A...

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

在软件项目中,需求分析阶段的问题往往占据了整个项目的40%~60%。这意味着如果在需求分析阶段存在问题,将会对整个项目产生巨大的影响。然而,许多组织仍然在基本的项目功能上采用一些不合规范的方法,导致开发人员所开发的软件与用户期望之间存在巨大的差异,形成了一条鸿沟。

为了优化和扩展这个问题,以下是一些建议:

  1. 强调需求分析的重要性:组织应该认识到需求分析是项目成功的关键。投入足够的时间和资源来确保需求的准确性和完整性。

  2. 与用户密切合作:开发团队应该与用户保持密切的沟通和合作,确保对用户需求的深入理解。这可以通过定期的会议、访谈和用户测试来实现。

  3. 使用规范的需求分析方法:采用规范的需求分析方法可以帮助减少误解和差异。例如,使用用例分析、用户故事和原型设计等方法来明确需求。

  4. 进行需求验证和确认:在需求分析阶段结束后,进行需求验证和确认,确保开发人员和用户对需求的理解一致。这可以通过需求审查、原型演示和用户验收测试等方式来实现。

  5. 持续改进:在项目开发过程中,持续改进需求分析的方法和过程。通过总结经验教训,不断优化和扩展需求分析的能力。

通过采取上述措施,可以减少需求分析阶段的问题,缩小开发人员与用户之间的期望差异,从而提高软件项目的成功率和用户满意度。

🚀一、项目需求分析的重要性

🔎1.需求的定义

软件工程需求是指对于软件系统的各类需求或要求的形式化陈述,包括功能性需求、非功能性需求、用户需求、系统需求等。需求是软件开发过程中的重要部分,是开发人员和用户之间的桥梁,是软件产品开发的起点。

软件工程需求 作用和地位
功能性需求 描述软件必须执行的任务或提供的服务。它们定义了软件系统的主要行为。对于软件产品功能的明确定义有助于确保软件产品符合用户的需求。
非功能性需求 描述软件产品必须满足的性能、可靠性、安全性、可用性、可维护性、可扩展性等方面的要求。它们对于软件系统的性能和可靠性有重要影响。
用户需求 描述用户对软件系统的需求和期望,包括用户想要什么、为什么需要它以及如何使用它。对于软件产品的设计和开发提供重要的指导方向。
系统需求 描述软件系统的整体性能、安全性、可维护性、可扩展性、可移植性和兼容性等方面的要求。具有指导软件产品整体设计和开发的重要作用。

在这里插入图片描述

良好的需求定义有助于确保软件产品的质量、降低开发成本、提高用户满意度和产品竞争力。因此,需求分析和定义在软件开发过程中是非常重要的一环。

🔎2.需求的层次

需求通常体现为三个层次:业务需求、用户需求和系统需求

🦋1.1 业务需求

在软件开发过程中,需求工程师需要从抽象层次最高的业务需求出发,这些业务需求是系统建立的战略出发点,表现为高层次的目标,描述了为什么要开发系统。

例如,对于生产制造执行管理系统,一个业务需求(BR1)可以是实现生产订单加工过程的数据采集。

业务需求通常来自项目的投资人、购买产品的顾客、实际用户的管理者、销售部门或生产部门等。

为了满足业务需求,需求工程师需要描述系统的高层次解决方案,并定义系统应该具备的特性。这些高层次解决方案和系统特性指导了系统建立的方向,各方参与者必须就这些方案达成一致,以确保涉众朝着同一个方向努力。系统特性说明了系统为用户提供的各项功能,限定了系统的范围。定义良好的系统特性可以帮助用户和开发人员确定系统的边界。

通过明确系统特性并以满足业务需求为衡量标准,可以确保系统开发过程中各方的共识,并提供了一个明确的目标和范围。这有助于确保系统开发的成功,并满足用户的期望和需求。

🦋1.2 用户需求

在软件开发过程中,高层次的目标通常由组织的专门部门提出,但是实际执行任务的是普通用户,他们只有通过一套具体且合理的业务流程才能真正实现这些目标。

用户需求是指执行实际工作的用户对系统所能完成的具体任务的期望,描述了用户希望系统能够为他们做些什么。

这些用户需求主要来源于系统的使用者,也就是直接与系统互动的用户。在某些情况下,系统的直接用户可能无法直接确定,因此用户需求也可能来自间接的渠道,如销售人员或售后支持人员。

在上述的生产制造执行管理系统中,就生产过程而言,用户需求可以通过UR1来表达:

UR1: 在生产订单制造过程中,当完成一个最小单位的产品生产时,用户希望通过PDA设备进行报工,以向系统传送订单即时完成量、完成状态等信息。

用户需求不仅表达了用户的期望,还需要了解这些期望背后的背景知识,以便充分理解用户的真正意图。通常,当用户表达他们的期望时,他们可能不会提及需求所涉及的问题域知识。因此,需求工程师的任务是整理并获取完整的问题域知识,以确保用户需求得到准确理解和满足。这种深入的理解将有助于构建出更符合用户期望的系统。

🦋1.3 系统需求

用户需求是从用户的角度描述的,通常使用自然语言来表达。然而,自然语言存在二义性,容易导致混淆和误解。因此,需求工程师的任务是将用户需求进一步明确和细化,以将其转化为系统需求。

系统需求是用户对系统行为的期望,它们定义了系统中需要实现的功能,以满足用户需求并实现业务目标。系统需求与用户需求紧密相关,可以直接映射为系统的具体行为。

举例来说,对于用户需求UR1,可以将其转化为系统需求SR1,具体包括以下几个方面:

SR1:系统需要提供一个生产报工界面,用户可以通过PDA设备访问。

① 这个界面需要支持多种数据采集方式,包括二维码扫描、设备自动采集和手工录入数据。

② 当用户完成数据录入时,系统应该提供弹窗提醒,以通知用户录入成功与否。

③ 界面应该能够直接反馈订单的总量,以满足用户的实时需求。

通过将用户需求明确转化为系统需求,开发团队可以更容易地理解用户期望的功能,从而有效地构建出满足这些需求的系统。这种转化过程有助于确保系统开发与用户需求一致,以满足业务需求。

🦋1.4 小结

用户需求通常是抽象的,针对不同的读者,需要提供不同程度的详细信息。用户需求的受众通常是管理层或业务相关人员,他们可能不关心系统的技术细节,而更关注系统如何满足业务需求。

系统需求则提供了对系统功能和服务的具体详细解释,通常面向那些需要了解系统如何工作以支持业务过程的人员,例如参与系统实施的技术团队。

下面是对上述观点的优化和扩展:

用户需求通常表达了用户对系统的期望,通常具有一定的抽象性。这些需求的受众主要是高级管理层和业务相关人员,他们更关心系统如何满足业务需求,而不太关心系统的具体技术细节。因此,用户需求的描述应该以业务角度为主,重点强调系统将如何改进业务流程和服务。

与此不同,系统需求提供了对系统功能和服务的更详细的解释。这些需求通常面向系统开发和实施的团队,以及那些需要了解系统内部运作细节的人员。系统需求的描述应该包括技术和功能方面的详细信息,以确保系统可以满足用户需求,并支持业务过程。

通过在用户需求和系统需求之间建立清晰的关系,可以确保开发团队理解用户期望的功能,并在系统需求中提供相应的技术和操作细节,以支持系统的设计和实施。这种方法有助于确保系统开发与用户需求一致,并最终满足业务需求。
在这里插入图片描述

🔎3.需求的分类

🦋3.1 功能需求

功能需求是系统应提供的服务的具体描述,包括如何响应输入以及在特定条件下系统的行为。有时,功能需求还需要明确规定系统不应执行的操作。

例如,生产制造执行管理系统为生产部负责人提供生产订单完成进度查询服务,以下是两个示例功能需求(FR1):

FR1.1: 用户应能够通过输入生产订单号查询订单的生产情况。查询结果应包括生产订单的进度、剩余工作量、质量检验状态等相关信息。

FR1.2: 查询功能必须支持根据不同属性进行条件筛选,以满足生产管理者对不同需求的灵活性。系统应支持属性名称的选择,并根据选择的属性执行查询。如果用户未明确指定查询属性,系统应默认提供生产订单完成数量的查询结果。此需求确保了查询功能的通用性和用户友好性。

需求的精确性至关重要,因为它有助于减少后期的变更和系统交付的延迟。在软件工程中,需求的不确定性和不一致性可能导致项目风险和成本增加。理论上,功能需求应该全面且一致,即包括所有用户所需的服务,并不前后矛盾。然而,在实际项目中,特别是对于大型复杂系统,实现完全一致和全面的需求描述几乎是不可能的。这主要因为系统复杂性和项目相关人员的不同视角可能导致需求的矛盾。

发现需求问题通常需要深入分析和评审,随着项目的不断推进,可能会揭示出更多的问题。一旦问题被发现,需求文档必须及时修正,以确保系统能够满足用户需求并最大程度减少后期的变更和风险。这种迭代和改进的过程有助于确保系统的成功交付。

🦋3.2 非功能需求

非功能需求是对系统性能、可用性、安全性等方面的约束和要求,它们通常不涉及特定功能,而是关于系统如何执行功能的限制和规范。这些约束和规范对于确保系统的整体质量和性能至关重要。以下是对非功能需求的进一步优化和扩展:

非功能需求是系统性能、可用性、安全性和其他关键方面的约束和规范,它们补充了功能需求,确保系统在执行功能时满足特定标准和限制。非功能需求通常包括以下方面:

1. 性能需求(Performance Requirements): 这些需求描述了系统的响应时间、吞吐量和负载容量等方面的性能标准。例如,NR1规定了所有用户查询必须在10秒内完成,确保系统的高性能和用户体验。

2. 容量需求(Capacity Requirements): 容量需求关注系统的数据存储和处理能力。NR2要求系统能够存储至少100万条生产记录,确保系统能够应对大规模数据存储的需求。

3. 可用性需求(Availability Requirements): 可用性需求描述了系统的可靠性和可用性标准。这包括系统的故障恢复能力和维护计划。例如,NR3规定了系统应该允许100个用户同时进行正常的工作,确保系统可用性。

4. 安全需求(Security Requirements): 安全需求关注系统的数据和访问保护。它们可能包括身份验证、授权、数据加密等安全措施,以确保系统的数据和用户信息得到保护。

5. 可维护性需求(Maintainability Requirements): 这些需求关注系统的可维护性,包括代码可读性、文档化、模块化等,以便系统的维护和升级变得更容易。

6. 兼容性需求(Compatibility Requirements): 兼容性需求描述了系统与不同平台、浏览器或其他系统的兼容性,确保系统在各种环境下正常运行。

非功能需求在系统设计和开发过程中起到重要作用,它们帮助开发团队明确了系统的性能标准和限制,以确保系统最终能够满足用户的期望并在各种条件下稳定运行。这些需求通常需要在整个项目周期内进行跟踪和验证,以确保它们得到满足。非功能需求的定义和实现是确保项目成功交付的关键因素之一。


🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。