赞
踩
软件=程序+数据+文档
软件的基本特征
Complexity(复杂性)
Consistency(一致性)
Variability(易变性)
人们总是认为软件是容易修改的,但忽视了修改所带来的副作用
不断的修改最终导致软件的退化,从而结束其生命周期
Invisibility(不可见性)
软件所具有的复杂性、一致性、可变性、不可见性等特性,使得软件开发过程变得难以控制,开发团队如同在焦油坑中挣扎的巨兽
软件开发面临的挑战
软件之道
定义:软件工程是一个技术,方法和工具的集合,帮助生产
一个高质量的软件系统
与给定的预算
在给定的期限
while change occurs
软件工程是一项解决问题的活动
我们想要软件解决的问题是“邪恶的”
现代系统的特点
是什么问题?
为什么需要软件工程?
什么是好的软件?
软件过程
基本活动包括:
需求定义和分析
设计
编码(实施)
测试
维护
开发包括(设计,编码,测试)
软件工程费用
软件开发生命周期(SDLC)
瀑布模型
瀑布模型认为,只有当前一个阶段完成并完善时,才应该进入该阶段
早期花在确保需求和设计正确上的时间可以节省后期的大量时间和精力
提出了许多过程模型
V型
Incremental Model增量模型
Iterative Model迭代模型
Spiral Model螺旋模型
Agile敏捷的
修复错误的相对成本
需求缺省的典型案例
为什么需求分析很困难?
沟通:客户与分析师之间的误解
问题复杂性
问题域:问题所存在的现实世界中的那个部分,也称应用领域
解系统:待开发的软件
需求:用户期待解系统在问题域内产生的某些效果
用户解决问题或实现目标所需的条件或能力-------IEEE标准术语表
需求是期望系统的外部可观察特征
候选要求必须通过两项测试才能被视为有效: 需求的满足必须从系统外部的角度进行观察 需求必须有助于满足潜在客户或其他利益相关者的某些需求(涉众) -------艾伦·戴维斯2005
需求是系统中的一个必要属性,一种声明,它标识了系统的能力、特征或质量因素,以使其对客户或用户具有价值和效用----------The RE Handbook
IEEE 610.12-1990“要求”的标准定义:
用户解决问题或实现目标所需的条件或能力
系统或系统组件必须满足或拥有的条件或能力,以满足合同、标准、规范或其他强制文件的要求
如1或2所示的条件或能力的书面表示
2.3要求的类型
三级
一个常见的分类
功能需求:
质量需求:
约束:
非功能性需求(质量需求+约束)
住房信息系统的要求
质量需求
可用性:可用性是指系统实际可用和完全运行效率的时间百分比。
效率:是衡量系统利用硬件资源(如处理器时间、内存或通信带宽)的指标。
灵活性:灵活性表示需要多少努力来扩展系统的新功能完整性完整性表示系统在防止未经授权访问、违反数据隐私、信息丢失方面的保护程度。
互操作性:指的是系统与其他系统交换数据或服务的容易程度。
可靠性:指的是系统在一段时间内不发生故障的运行概率。
鲁棒性:鲁棒性是指当系统或部件面临无效输入、连接的系统或部件存在缺陷或意外运行条件时,其继续正常运行的程度。可用性衡量用户为准备输入、操作、并解释系统可维护性的输出。
可维护性:表明纠正缺陷或更改系统可移植性的容易程度。
可移植性:与将系统或组件从一个操作环境迁移到另一个操作环境所需要的工作有关。
可重用性:可重用性指的是一个组件可以在系统中使用的程度,而不是它最初开发的那个系统。
可测试性:可测试性指的是测试软件组件或集成系统以发现缺陷的容易程度。
非功能性需求
约束:约束是一种组织或技术需求,它限制了开发系统的方式。
约束类型
约束限制了需求实现的范围,也限制了整个系统的范围
约束可能导致需求的变更或新需求的定义。
一些例子
需求类型间存在一定的重叠
不切实际的期望
性能需求(performance)
什么是工程?
需求工程的定义
定义1
定义2
定义3
定义4
3.3需求工程活动
elicitation需求获取
analysis and negotiation需求分析和谈判
需求规范
需求验证
需求管理
需求开发过程
需求的三个维度
内容——问题的覆盖
文档化-定义良好的需求
一致性-商定的要求
连续需求工程
传统的系统分析
持续需求工程
RE作为一个跨生命周期的活动
持续需求工程
RE作为一个跨项目和跨产品的活动
Requirements Inception的主要任务
Requirements Inception的文档
Context aspect 环境方面
Goals 目标
问题分析
可行性分析和风险分析
RE过程的起点
它的主要任务包括
1.确定业务需求
2.Gain agreement on problem definition 就问题定义达成一致
Gain agreement on problem definition 远景、界限、范围
产品愿景:描述产品是关于什么以及它最终可能成为什么
了解根本原因是什么
确定导致问题的因素
项目范围:确定当前项目将解决的最终长期产品愿景的哪一部分
在输入和输出之间绘制边界
3.确定利益相关者
谁使用这个系统?
谁是顾客?
谁受到产出的影响?
谁开发/评估/批准系统?
其他外部/内部用户?
谁维护这个系统?
有人在乎吗?
4.确定约束和风险
经济(如:成本、许可问题)
政治(如:内部或外部、部门间问题)
技术(如:技术/平台选择)
系统(如:现有系统、兼容性问题)
环境(如:法律/生态/安全/标准)
时间表和资源(如:固定时间表、团队)
5.进行可行性研究
RE Inception的主要任务总结
Project Vision & Scope Document
项目可行性报告
项目计划书
4.4.1 A Template for Documenting Goals
使用非结构化自然语言的目标文档
记录目标的七条规则
1.简明扼要地记录目标
2.使用主动语态
G2:与以前的系统相比,季度报告的创建时间将缩短一半
The duration of creating the quarterly reports shall be cut down by
half compared with the predecessor system.
G2的改进定义:用户应能够在使用当前系统所需的一半时间内创建季度报告。
The duration of creating the quarterly reports shall be cut down by
half compared with the predecessor system.
3.准确记录利益相关方的意图
4.将高级目标分解成更具体的子目标
5.陈述目标的附加价值
6.记录引入目标的原因
7.避免定义不必要的限制
4.4.2 AND/OR Trees and AND/OR Graphs
和/或树:
和/或图:
扩展和/或图:
4.4.3 i*(i-star)
I *框架是一个记录和分析目标和目标依赖关系的综合方法。
基于GRL的建模语言
基本概念
对象:参与者、目标、任务、资源、软目标
关系
i*框架中建模构造的符号
i*中参与者之间的依赖关系
i中对象之间的关系*
两种目标模型
策略依赖模型(SDM)
策略原理模型(SRM)
4.4.4 KAOS
KAOS建模语言是KAOS框架的一部分,用于引出、指定和分析目标、需求、场景和责任分配。
六个补充视图或子模型
KAOS框架的基本结构,用于为目标建模并将目标责任分配给代理
目标
将未知问题转化为已知问题
问题分析工具
用帕累托图
产品愿景:描述产品是关于什么的,以及它最终可能成为什么
边界:解决方案系统边界系统和参与者之间的
职责边界
系统边界将属于系统并因此可以在开发过程中更改的部分与系统上下文中在开发过程中不能更改的部分分开
边界确定
范围和边界
作用域和边界的表示
5.5.1分解策略
程序分解结构
系统→子系统→模块→子模块
业务流分解结构
5.5.2分解步骤
(1)划分主题域
职责驱动的
(2)确定主题域范围
绘制每个主题域的上下文关系图
项目的主要风险
◼不清楚的需求
◼不断变化的需求
◼不稳定的产品或设计
◼紧迫的项目和不可达到的里程碑
◼肤浅的或不准确的工作量和影响估计
◼没有跟踪的项目计划
◼没有控制的分包
减轻风险的技术
◼组合管理(portfolio management)中评价与选择的技术
◼在需求分析阶段就评估变更风险
◼项目管理要适应不确定性和变更
◼开发过程适应不确定性和变更
◼架构和设计适应不确定性和变更
◼严格的和系统性的变更管理
风险核查清单
◼项目里有没用过的新技术吗?
◼完整定义了与其他系统或组件的接口吗?
◼设计依赖于不切实际或过于乐观的假设吗?
◼考虑了系统的行为(性能等)吗?
◼外部组件质量达标了吗?
◼使用了专利、版权或专有技术吗?其法律或间接成本确定
了吗?
◼使用了什么开源软件,用的是什么协议?
◼有分包商(或外包,离岸外包)吗?
◼与供应商签订的是什么样的合同?供应商承担什么样的风
险?
◼对于关键零部件是否有替代供应商?
系统开发人员和工程师与客户和最终用户
引出需要及时完成
不仅仅是一个简单的过程需求,但是一个高度复杂的过程
Elicitation Notes笔记
正式文件
当前状态和所需状态场景
正面和负面情景
不当使用场景
描述性、探索性和解释性情景
实例、类型化和混合场景
系统内部、交互和上下文场景
系统内部(A型)场景
只关注系统内部交互
一个系统内部的场景只记录系统内部的交互,即系统不同部分之间的交互序列。
eg.组件“导航控制”向“本地化”组件请求GPS坐标。“本地化”组件为“导航控件”提供坐标。组件“导航控件”调用组件“显示控件”,并传递当前位置和目标。组件“屏幕输入”将路由参数传递给组件“导航控制”。因此,“导航控制”组件计算最终的路线。
交互(B型)场景
记录系统与其参与者(上下文中的人和系统)之间的交互序列
eg.参见描述场景“enter destination”
上下文(C型)场景
记录系统与其参与者之间的直接交互
记录与系统使用或系统本身相关的附加上下文信息(例如参与者以及系统的间接用户之间的交互)
主场景、可替换场景和例外场景
用例:一个系统、子系统或类可以通过与外部对象交互来执行的动作序列(包括变量序列和错误序列)的规范,以提供有价值的服务。
用例包含:
上下文信息:
主要情景
备选方案
例外情况
用例的组成部分
叙事情景
结构化场景
通过结构提高自然语言场景的可理解性和可读性
两种构造方法
场景步骤的枚举
交互序列的表格文档
场景参考模板
用例的参考模板
以类似的方式用作各个场景的参考模板
属性
记录场景的十一条规则
序列图
UML支持通过序列图记录交互
序列图的基本建模元素
序列图中场景的文档
序列图中的替代方案和异常方案
活动图
用例图
记录用例之间的关系
用例图的建模元素
用例图的重要建模元素
示例:用例图的建模元素
需求分析
充分了解所发现的需求
发现缺陷并将其反馈给涉众,通过协商过程来解决它们
创建一个解决方案
方法:结构化分析(SA),面向对象分析(OOA),问题域分析(PDA)
分析什么?
如何分析?
Problem Checklists分析清单检查表
Interaction Matrix分析需求交互矩阵
需求沿着矩阵的行和列列出
SA 结构化分析
OOA 面向对象分析
需求建模
需求协商
元素
外部实体
流程
数据流
数据存储
分级数据流图
Context Diagram背景信息图
0级图
1级图
DFD的绘图过程
不同关系类型的泛化/规范
Disjoint vs. overlapping 不相交vs重叠
Total vs. partial全部vs部分
行为模型用于记录系统的反应行为。
状态图是一种常用的基于有限自动机的行为建模语言
有限自动机是一个五元组
(
Q
,
∑
,
δ
,
q
0
,
F
)
(Q,\sum,\delta,q0,F)
(Q,∑,δ,q0,F)
DFA & NFA
DFA确定有限状态自动机
NFA非确定有限自动机
Mealy和Moore自动机
状态图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nR4rBhoA-1643256503700)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\image-20211220192848598.png)]
Default state
◼ 同时发生的◼ ti:事件
DD 数据字典
DD是对数据元素、数据流、数据流程、数据存储的详细定义。
DD示例
导航系统示例
数据视角
实体关系图
功能视角
数据流图
行为视角
状态图
三个视角之间的关系示例
\
类:
属性:
用来说明类的特征
关联(类之间的关系):
角色名,多重性,属性字符串
聚合和组合:整体-部分关系
组合:强整体-部分关系(部分只有一个所有者,不能独立存在)
泛化关系(将子类与超类相关联)子类的
实例是超类的实例
子类必须可替代其超类
子类定义了附加属性和操作
辅助元素
导航箭头
派生属性
限定词
约束
用例图
参与者:系统之外的任何人或系统,并与系统交互
用例:在系统中执行的一系列动作,这些动作将为特定的执行者生成可见且有价值的结果。
关系:
用例图示例
任务:理清需求的结构框架(领域类图)和行为脉络(流程图和用例图)
输入:需求定义阶段产生的业务事件列表和报表列表
输出:领域模型和用例模型
过程:
4.1.1Business flow analysis业务流程分析
业务流程分析的要点与产物
跨职责流程图应用基础与要点
活动图应用基础与要点
活动图基础见Chapter 3
数据流图应用基础与要点(see 2.2)
4.1.2Business entities analysis业务实体分析
领域建模/概念建模
分析过程:
产物:
4.1.3Roles and Use Case Analysis角色和用例分析(参见3.3、3.4)
细化领域类的数据窗口、字段、格式、派生数据的计算方法等
细化用例
决策图表
决策表
有分解的地方就有接口
说明要点:
用户:名称、业务目标、使用时间、使用频率
内容和格式:交互过程描述、数据包描述
设计约束:
数据包必须是TCP格式,数据交换必须由库交换实现
“接口调用必须在3秒内应答”
“用户可以通过Internet访问该界面”
设计约束是对设计的限制,通常来自非功能需求。
开发者无法控制的强加的限制
开发者自己强加的,作为改进设计的一种方式。
用户界面和人为因素考虑
硬件方面的考虑
建议的系统将在什么硬件上使用?
目标硬件的特点是什么,包括内存大小和辅助存储空间?
错误处理和极端条件下
系统接口
质量问题
系统开发和修改
物理环境
资源和管理问题
一种较新的技术,强调描述,较少强调建模
组成:
分析步骤:
核心:问题域
问题域的类型
系统软件/应用软件
批处理系统(脱机系统)/交互系统/实时系统
数据为主系统/交互为主系统/算法为主系统
Jackson问题域分类
Jackson基于不同问题子域的本质及存在于问题子域间的关系,将问题域分为:
域的特征
工件框架:系统必须完成针对只存在于系统中的对象的直接操作
绘图工具
CASE工具
Word,Excel
网站开发工具
例如:有限自动机工具
上下文图
问题框架
控制框架:系统控制部分问题域的行为,包括待求行为框架(待求行为完全由规则预先确定)和受控行为框架(行为的控制取决于操作员发出的命令)
电梯控制系统 现代汽车工业的引擎管理系统温室环境控制系统
信息框架:
系统将提供有关问题域的信息,包括信息是自动提供的和信息只在响应具体的请求时提供
学生档案管理系统
财务管理系统
航空交通控制系统
转换框架:系统必须将某种特定格式的输入书转换成相应的、另一种特定格式的输出
文件格式转换
根据人体扫描数据自动生成图片这类应用
连接框架:系统必须维持那些相互没有直接连接的子域间的通信
各种问题域的特征
域属性:
要求:
规格:
根据文件编制的不同目的,不同RE活动产生的信息采用不同的表示格式、不同的详细程度、不同的指南和文件编制规则进行记录。
需求说明是一种特定的文档。只有当要求文件符合为项目定义的specification rules and guidelines规范规则和指南时,指定要求才是指定要求
Software Requirements Specification(SRS)
文档需求使用自然语言,如英语、汉语、法语、德语或类似语言
文档需求,使用参考模板
非正式规范
优势
缺点
eg.
歧义
词法歧义
语法歧义
语义歧义
参考模糊
术语模糊
避免歧义的技巧1
词汇表
词汇表的结构
避免歧义的技巧2
避免歧义的技巧3
受控语言
受控语言为特定域定义了一个受限自然语言语法和一组术语(包括术语的语义),这些术语将在受限语法中使用,以记录关于该域的语句。
可以看作是语法需求模式的扩展。
Guidelines for specifying
结构化的语言规范
Form-based specifications 基于表单的规范
文档需求,使用图表,如DFD、ERD、类图、序列图等。
当您需要显示状态如何变化或需要在何处描述一系列操作时,图形模型最为有用。
UML:统一建模语言(UML)是一种用于指定、可视化、构造和记录软件系统工件的语言。
UML2中的十三种图表类型。
用例图
类图
行为图
状态图
活动图
交互图
实现图
组件图
部署图
对象图
时序图
复合结构
包装图
交互概述图
部署图方法=建模语言+方法/流程
RE related diagrams
形式规范的目标
使用正式规范
形式规范基础
正式的方法
正式规范是一个更一般的一部分的技术集合被称为‘正式的方法’
这些方法都是基于数学表示和分析软件
正式方法包括
接受正式的方法
形式化方法的使用
形式化规范工具概述
形式化规格说明语言的组成
形式化规格说明语言的分类
形式化规格说明的优势与不足
理论基础:基于集合论和一阶谓词逻辑
使用称为”模式(schema)”的图形结构进行形式说明
Z形式说明由一组”模式”构成
状态模式
操作模式
Z说明例1—停车场管理系统
全局量的声明:
状态模式定义:
Z说明例1—停车场管理系统
状态变量初始化:
SV停车数量= 0
操作模式定义
Z说明例2—电梯控制系统
全局量的声明:
状态模式定义:
Z说明例2—电梯控制系统
状态变量初始化:
操作模式定义
4.3四变量模型
4.4表格式(Parnas表)
Parnas Tables使用表格结构来组织数学表达式,其中
有十多种表类型。
一个表达式通常可以用几种表类型表示。文档编写者的目标是选择(或创建)一种表格式,为该表达式生成一个简单、紧凑的表示。
什么是Tabular Expression? 列表表达式?
不同的名称:
表格表达式或表或Parnas表
本质上:
内容:
应用:
优点:
例子
规范和描述
TE的发展
Summary of TE
Tabular expressions (table/Parnas table)是一种实用的形式化定义方式;
提供了如何采用表格化结构来组织(定义关系或函数的)数学表达式的方式;
Tabular expressions遵循“分而治之(divide and conquer)”的原则,对复杂的数学表达式进行分解和简化,在保持了定义的严格性同时,还提高了可读性;
Tabular expressions不仅可以定义需求文档,还可以用来定义软件开发中其他技术文档。
Tabular expressions具备了如下特点:
Tabular expressions为文档驱动软件开发方法提供了很好的支持。
10表列表达式类型
一些概念
Examples of TenTable Types
Normal Function Table
Inverted Function Tables
Vector Function Table
Normal Relation Table
Inverted Relation Table
Vector Relation Table
Mixed Vector Table
Predicate Expression Table
Characteristic Predicate Table
Generalized Decision Table
International Standard
IEEE Std 830-1998
组织
附样本说明
Atlee, Berry, Day, Godfrey
U Waterloo
CS445 (Winter 2011)
National Standard
国家标准
军队标准
动机
质量保证(QA)
目标
验证不足成本
软件测试:
软件测试是指以检测故障为目标的软件单元的系统执行。
关注锻炼和观察产品行为或质量属性
测试用例
当观察到的输出与指定的输出相对应,且后置条件为真时,就认为测试通过。如果不是这样,则认为测试失败。
失败表示预期输出(在测试用例定义期间定义)与测试执行期间观察到的输出之间的偏差
测试用例定义
优点/缺点
好处:
努力:中等
关键成功因素:
验证完整性:自上而下
验证不必要需求:自下而上
正确性已证明
完整性已证明
软件需求管理是一种发现、记录、组织和跟踪需求变化的系统方法。它可用于获取、组织和记录系统需求,并使客户和项目团队就系统变更达成一致。
需求工程中需求管理的目标是:
需求在整个系统生命周期中都会发生变化。
需求变更是不可避免的。
系统运行期间遇到的问题可能导致需求变更:
更多的需求变更源于系统上下文。
主体、使用、IT系统、开发
可能的环境变化
管理需求工程活动
需求管理的内容
时间:前可追溯性与后可追溯性
方向:向前与向后跟踪
扩展的前后可追溯性
跟踪矩阵
3.3.1One-Criteria Classification单准则分类
3.3.2 Kano分类
根据系统特性(或顾客要求)对顾客满意的影响进行分类
3.3.3Two-Criteria Classification双准则分类
3.3.4 Wiegers的优先级矩阵
优先化过程考虑四个优先化标准:
需求优先级的执行是基于这样一个假设:需求的优先级与它的收益(如果实现了)和惩罚(如果没有实现)成正比,与需求的成本和风险成反比
3.3.5Cost-Value Approach 成本-价值法
计算投资回报(ROI)
估算成本和价值
两种方法:
比较过程-选项
基本排序-对于每一对需求(i,j),询问i>j?
需要n*(n-1)/2个比较
构造二叉排序树需要O(n logn)比较
构造最小生成树需要(n-1)比较
一些复杂的情况:
层次优先级
将需求分组到一个层次结构
只对单个节点的分支进行比较:
reciprocal 倒数的
绘制ROI图
做AHP进度两次:
使用结果计算ROI率
变更控制委员会(CCB)
职责:对变更进行评估(控制范围扩大和影响分析),做出决策,并确保已批准变更的实施
成员:
控制范围扩展
影响分析
对需求工件的影响分析
对后续工件的影响分析
1)为需求管理工具定义项目需求。确定下列事项:
最重要的功能是什么?
是否要与其它使用的工具连接以及通过Web远程数据处理是否重要?
决定是使用数据库存储全部数据还是只存储一部分。
2)列出影响决策的10~15个因素。既要有主观的也要有客观的因素(如裁剪能力、有效性及GUI的效率)
3)对步骤2中列出的因素打分(总计100分),对更重要的因素可以打更高的分。
4)获得有关可用的需求管理工具的最新信息,根据影响决策的因素对候选工具排序。对客观因素的评分只有在使用每个工具后才能进行。开发商的展示可能会增加一些感性认识。但展示往往不全面,所以最好还是亲自使用一个(几个小时).
5)根据给每个因素的加权值来计算每个候选工具的得分,从而确定最合适的产品。
6)从候选工具的其他用户那里获得一些体会,可以通过在线论坛获得经验,对自己的判断和开发商的投标进行补充。
7)从候选工具中前三名的开发商处得到评估拷贝。确定候选工具前先定义一个评估处理过程,确保获得足够的信息做出好的决策。
8)最好用一个实际的项目来评估工具,不要仅用工具所带的示教项目进行评估。完成评估后,如有必要调整排名分数。找出得分最多的工具。
9)经过对排名、许可权费、开发商后续支持费、当前用户的输入、工作小组主观印象等的考虑之后做出决定
需求管理工具选型要素
商业需求管理工具示例
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。