中文翻译《ASPICE in practice》之“ENG.1 需求引出”

2.3 ENG.1 需求引出(需求获取)

2.3.1 目的

需求获取过程的目的是收集、处理和跟踪产品和/或服务整个生命周期内不断变化的客户需求和要求,以建立需求基线,作为定义所需工作产品的基础。

如果需求没有得到足够仔细的引出,整个项目就没有坚实的基础,后期必然会出现问题。以书面形式记录需求通常会在实践中造成困难或不足。常见的原因有:

  1. 开发项目从一开始就面临着巨大的时间压力,因此需求定义不明确。
  2. 客户不能或不愿意在项目早期承诺所有细节。
  3. 这是第一次开发一个高度创新和复杂的系统,最初很难定义需求。

通常,在报价阶段获取需求会面临相当大的时间压力。特别是在客户-供应商关系中,需求分析无法进行得足够深入,因为专家们在报价截止日期迫在眉睫的压力下被迫局限于最基本的分析。在这种情况下,只有在下订单后才能进行详细分析,这反过来又经常导致合作伙伴之间对报价内容产生意见分歧。以下情况已被证明会对项目的进一步进展造成问题:

  1. 客户不参与系统功能的规范,规范工作完全留给供应商。但是,客户在项目后期发出各种变更请求和新要求。
  2. 供应商未能让客户确认其指定的要求,或者客户拒绝确认。

在某些情况下,已经建立了一种“节省劳动力的做法”,即订购的系统“与竞争对手的系统相同”或“与前一个项目类似,只有以下变化......”。此时,项目的后续问题的种子已经播下。

使用现有的和已经开发的平台解决方案,或重复使用为其他客户设计的应用程序,也可能存在问题。这样的组合在下订单时可能看起来非常诱人;然而,由于必要的更改和调整,它们可能会在以后迅速将项目推向失败的边缘,并在以后引发重复使用的经济竞争力问题。在实践中,提供平台解决方案的公司不得不在项目期间放弃它们并重新开始的情况不止一次。造成这种情况的原因可能是,相对于项目规模而言,更改可能过于广泛,或者由于架构问题,计划的解决方案无法再实施。这些情况下的成功不仅取决于需求的识别,还取决于其他因素,例如变更管理及其与工程流程、软件架构、单个软件组件封装等的联系。因此,客户将获得添加更改的“拼凑解决方案”或符合其要求的一致产品。

在复杂的系统中,我们经常会发现定义了大量需求,这些需求分布在不同的文档中。无论发生什么变化,都必须保证这些需求的内容在整个项目生命周期内保持一致。通常,我们会在一段时间内收集变更,然后一次性将其纳入需求文档中,这一步骤通常用于创建所谓的需求基线。

2.3.2 汽车行业特有的特征

在大多数情况下,需求并非仅仅来自明确表达的客户需求。在复杂的产品中,还必须考虑其他要求、标准或其他法规,例如与 ECU 可闪存性相关的诊断法规和规范。需要考虑的文档数量可能很快就会达到数百份。在某些情况下,文档已经过时,而且它们经常充斥着相互矛盾的信息。这会导致大量的开发工作,因为不仅需要检查、分配和确定所有这些文档的优先级,而且还必

### 关于 ASPICE SWE.1BP7 的要求及实现指南 #### 一、SWE.1BP7 的定义与目标 ASPICE(Automotive SPICE)中的 **SWE.1BP7** 是针对软件需求分析过程的具体实践要求。其核心在于确保软件功能需求、非功能需求以及接口需求能够被充分识别并记录下来,以便后续的设计和开发活动得以顺利开展。 根据已知的信息,在软件工程过程组(Software Engineering Process Group, SWE)中,SWE.1 描述的是软件需求分析(Software Requirements Analysis)。此过程中涉及的关键要素包括但不限于系统需求的分解、功能性需求与非功能性需求的提取,以及接口需求的确立[^2]。 对于具体的 BP(Base Practice),即基本实践部分,SWE.1BP7 主要关注以下方面: - 确保所有的软件需求都经过详细的分析,并形成清晰的需求文档。 - 明确描述软件的功能性需求、非功能性需求及其对应的接口需求。 - 提供足够的细节支持下游的工作产品设计阶段。 #### 二、SWE.1BP7 的具体要求 以下是基于行业标准对 SWE.1BP7 的解读及相关要求: 1. **需求细化与分类** - 对来自利益相关者的需求进行深入挖掘,将其转化为明确的软件需求。这些需求应覆盖功能性需求(Functional Requirements)、非功能性需求(Non-functional Requirements)以及接口需求Interface Requirements)[^1]。 2. **需求可追溯性** - 建立从原始需求到最终软件需求之间的映射关系,确保每一条需求都可以回溯至源头。这种可追溯性的建立有助于验证需求的一致性和完整性。 3. **需求文档化** - 将所有分析后的软件需求以正式的形式记录下来,通常采用需求规格说明书(Software Requirements Specification, SRS)或其他标准化模板来呈现。该文档需具备高可用度,便于团队成员查阅和理解。 4. **评审机制** - 实施严格的需求评审流程,邀请多方参与(如客户代表、开发者、测试人员等),共同确认需求的有效性和可行性。这一步骤旨在减少后期变更带来的风险成本。 #### 三、SWE.1BP7 的实现指南 为了满足上述要求,可以遵循以下建议实施策略: 1. **组建跨职能团队** 组织一支由不同领域专家组成的团队负责需求分析工作,其中包括但不限于业务分析师、软件工程师和技术顾问。这样的多元化组合能更全面地捕捉潜在需求点。 2. **应用结构化的分析方法** 使用诸如用例图(Use Case Diagrams)、数据流图(Data Flow Diagrams)或者状态转换图(State Transition Diagrams)之类的工具辅助完成复杂系统的建模任务。这种方法不仅提高了沟通效率,还增强了模型的表现力。 3. **引入自动化工具支持** 利用现代ALM(Application Lifecycle Management)平台管理整个生命周期内的需求变动情况,自动维护版本历史记录并与关联工件保持同步更新。例如 Jira Align 或 IBM Rational DOORS Next Generation 都是非常优秀的候选方案。 4. **持续改进反馈循环** 定期回顾已完成项目的经验教训总结报告,提炼出最佳实践经验用于优化未来同类项目的执行方式;同时鼓励全员积极参与贡献想法意见,营造开放包容的企业文化氛围。 ```python # 示例代码:展示如何利用 Python 创建简单的 UML 类图表示法 from plantuml import PlantUML p = PlantUML(url='http://www.plantuml.com/plantuml/img/') diagram = """ @startuml class SoftwareRequirement { - id: int - description: str } class FunctionalRequirement << (F,#FFAAAA) >> { + priority_level: int } class NonfunctionalRequirement << (N,#AAFFFF) >> { + performance_metric: float } SoftwareRequirement <|-- FunctionalRequirement SoftwareRequirement <|-- NonfunctionalRequirement @enduml """ response = p.processes(diagram) print(response.url) ``` 以上示例展示了通过 `plantuml` 库生成类图的方式,帮助直观表达各类需求对象间的关系。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值