系统架构师学习笔记_第四章(下)

4.2  需求管理

需求 最终文档 经过评审批准后,则定义了需求基线 Baseline;构筑了 功能需求 和 非功能需求 的一个 约定Agreement。约定是需求开发和需求管理之间的桥梁。

需求管理是一个 对系统 需求变更、了解和控制 的过程,初始需求导出的同时 就启动了需求管理规划。


4.2.1  需求管理原则

过程能力成熟度模型 CMM,指导软件过程改进,5个成熟级别,6个关键过程域KPA。

一旦需求 文档化了,开发组和有关团队 需要评审文档。发现问题应与客户或者其他需求源协商解决。软件开发计划是基于 已确认的需求。

绝不要承诺 任何 无法实现的事。

关键处理领域 通过版本控制和变更控制 来管理需求文档。确保与新的需求保持一致。


4.2.2  需求规格说明的版本控制

版本控制是管理需求的一个必要方面,必须统一确定需求文档的每一个版本,当需求发生变更时,及时通知所有涉及人员。

为了尽量减少困惑、冲突、误传,应该仅允许指定的人员来更新需求。

清楚地区分草稿和文档定稿版本。


4.2.4  需求变更

迟到的 需求变更 会对已进行的工作产生非常大的影响。

如果每一个建议的需求变更都采用,该项目将可能永远无法完成。

需求文档应该 精确描述 要交付的产品。

项目负责人 在信息充分的条件下 做出决策。

变更成本计算 应该包括 需求文档的修改、系统修改的设计、实现的成本。

变更控制过程 并不是给变更设置障碍,相反,它是一个渠道和过滤器,确保采纳最合适的变更,使变更产生的负面影响降到最低,变更过程应该做成文档。

绝不能 删除或者修改 变更请求的 原始文档。

变更控制委员会 只要能决定合适的人做正确的事就足够了,在保证权威性的前提下 应尽可能精简人员。

对每个变更 权衡利弊 做出决定。
“利”包括 节省资金 或 额外收入、客户满意度、竞争优势、减少上市时间;
“弊”是指 增加开发费用、推迟交付日期、产品质量下降、减少功能、用户不满意。

变更总是有代价的,即使 拒绝的变更 也因为决策行为 而耗费资源。

接受了重要的需求变更时,为了适应变更情况 要与管理部门和客户重新协商约定。推迟交货时间、增加人手、推迟实现尚未实现的较低优先级的需求,或质量上进行折中。
要是不能获得一些约定的调整,应该把面临的风险写进风险计划中。


4.2.5  需求跟踪

需求、体系结构、其他设计部件、源代码模块、测试、帮助文件、文档 等。

跟踪能力(联系)链(traceability link)是优秀需求规格说明书的一个特征,确保软件需求规格说明包括所有客户需求。

跟踪能力联系链 记录了单个需求之间的 父层、互连、依赖 的关系。

不必拥有所有种类的跟踪能力联系链,要根据具体情况调整。


4.2.6  需求变更的代价和风险

只有在知道变更成本后 才能做出理智的选择,一个表面上很简单的变更 也可能转变成很复杂的局面。

影响分析 确定对现有系统做出是修改或者抛弃的决定,创建新系统以及评估每个任务的工作量,进行 影响分析的能力 依赖于 跟踪能力、数据的质量、完整性。


4.3  开发管理

1、范围
可交付物、架设、约束条件 的基础上准备详细的项目范围说明书,是项目成功的关键。

2、时间
进度安排的准确程度可能比成本估计的准确程度更重要。对于成本估计的偏差,可以靠重新定价或大量的销售来弥补成本的增加,
如果进度计划不能得到实施,则会导致市场机会的丧失或用户不满意,而且会使成本增加。
工作分解结构 Work Breakdown Structure WBS


4.3.2  配置管理 文档管理

1、配置管理

配置项 Configuration Item CI,

属于产品组成部分的工作成果,如 需求文档、设计文档、源代码、测试用例 等。

属于项目管理和机构支撑过程域 产生的文档,如 工作计划、项目质量报告、项目跟踪报告 等。

每个配置项的主要属性有 名称、标识符、文件状态、版本、作者、日期 等。

2、文档管理

文档是影响软件可维护性的决定因素,使用过程中必然会经受多次修改,所以文档比程序代码更重要。

用户文档:主要描述系统功能和使用方法。
系统文档:描述系统设计、实现、测试 等各方面内容。

软件文档应该满足下述要求:
1.如何使用
2.怎样安装 和 管理
3.需求 和 设计
4.实现 和 测试

说明用户操作错误时 应该怎样恢复和重新启动。


4.3.3  软件开发的质量与风险

1、软件质量

IOS9000 对 项目质量 的定义:一组固有特性 满足需求的 程度。

质量 与 范围、成本 和 时间,是项目成功的关键因素,通过范围管理 转换隐含需求为项目需求。

质量低 说明产品或服务存在问题,而低等级的产品或服务 不一定存在问题,二者概念不同。

2、软件开发风险

认识不足 或者 没有足够的力量加以控制。

了解、掌握 风险的来源、性质、发生规律,进而施行有效的管理。

或然性、不确定性、涉及到某种选择时,才成为有风险,以上三个是风险定义的必要条件,不是充分条件,具有不确定性的事件不一定是风险。


4.4.1 结构化分析与设计

结构程序设计 较流行的定义为:采用自顶向下 逐步求精 的设计方法 和 单入口单出口的控制构件。

自顶向下逐步求精的方法是:先整体后局部,先抽象后具体,一般具有较清晰的层次。

仅使用单入口单出口的控制构件,具有良好的结构特征。

采用结构程序设计,可能会多占用一些时间和空间资源,这也是那些反对从高级语言中排除GOTO语句者的主要依据。实际上,硬件飞速发展,这点耗费,不再是重要的因素。


4.4.2  面向对象的分析设计

面向对象的 分析模型主要由 顶层架构图、用例与用例图、领域概念模型 构成;

设计模型包含:

以包图表示的 软件体系结构图、
以交互图表示的 用例实现图、
完整精确的类图、
针对复杂对象的状态图、
描述流程化处理过程的 活动图 等。


4.5  软件的重用

重复使用 相同或相似 软件元素。

软件元素:需求分析文档、设计过程、设计文档、程序代码、测试用例、领域知识 等,通产这些软件元素称为 软部件。

不断地进行软部件的积累,并将它们组织成软部件库。

横向重用(horizontal reuse):重用不同应用领域中的软件元素。

标准函数库 是一种 典型的、原始的 横向重用机制。

纵向重用广受瞩目,并称为软件重用技术的真正希望所在,关键点是 域分析,根据应用领域的 特征 以及 相似性 预测软部件的可重用性。

库的组织结构 直接影响软部件的检索效率。

由于软部件大都经过严格的质量认证,并在实际运行环境中得到检验,因此重用软部件有助于改善软件质量。


4.6  逆向工程与重构工程

逆向工程 就是 分析已有的程序,寻找比源代码更高级的抽象表现形式。

相关概念:
重构 Restructuring,在同一抽象级别上转换系统描述形式;
设计恢复 design recovery,
重构工程 re-engineering,也称 修复和改造工程。

1、恢复信息的级别

逆向工程导出的信息,4个抽象层次
1.实现级
2.结构级
3.功能级
4.领域级

2、恢复信息的方法,4类:

1.用户指导下搜索与变换
2.变换式方法
3.基于领域知识的
4.铅板恢复法

原文地址:https://www.cnblogs.com/Leo_wl/p/1801880.html