需求建模(I) 建模和分析(I) 通用的建模问题 建模目的、组织 和非功能需求
需求建模(I) 建模和分析(I) 通用的建模问题 建模目的、组织 和非功能需求
建模的动机 想象一下我们已经与一些投入者进行过交谈 主要执行官 餐饮经理 航班如果取消,VIP首先要被升仓 机上带的食物由乘坐特定的仓位的旅 打折机票应该向政治家们提供,因为 客的数量决定 他们制订影响航线的决定 乘坐飞机的预计的旅客数必须在起飞 关于常旅客的信息不能透露给外面的 以前24小时给出 客户 要求特殊食物的旅客必须在起飞前24 主要的保密方面的官员 小时指明他们的要求 飞机运载的行包数与机上乘客的名单 机票销售经理 相符合 机票只有在付费的时候才出 旅客名单不应该向外界公开 对某种票价,机票可以一直保留并不 旅客应该只能检票一次 需要确认 旅行代理 当一种折扣票被预订,正常的提前预 代理负责预订的维持和取消 订的需求不再有效 个代理提供的票有不同的票价,需 所有的票都要有涉及条款和出票条件 要和航线销售部门协商 的背书 我们怎么样从这里产生一个被一致接受的规格说明呢?
建模的动机 主要执行官 ◼ 航班如果取消,VIP首先要被升仓 ◼ 打折机票应该向政治家们提供,因为 他们制订影响航线的决定 ◼ 关于常旅客的信息不能透露给外面的 客户 主要的保密方面的官员 ◼ 飞机运载的行包数与机上乘客的名单 相符合 ◼ 旅客名单不应该向外界公开 ◼ 旅客应该只能检票一次 旅行代理 ◼ 代理负责预订的维持和取消 ◼ 一个代理提供的票有不同的票价,需 要和航线销售部门协商 餐饮经理 ◼ 机上带的食物由乘坐特定的仓位的旅 客的数量决定 ◼ 乘坐飞机的预计的旅客数必须在起飞 以前24小时给出 ◼ 要求特殊食物的旅客必须在起飞前24 小时指明他们的要求 机票销售经理 ◼ 机票只有在付费的时候才出 ◼ 对某种票价,机票可以一直保留并不 需要确认 ◼ 当一种折扣票被预订,正常的提前预 订的需求不再有效 ◼ 所有的票都要有涉及条款和出票条件 的背书 想象一下我们已经与一些投入者进行过交谈… 我们怎么样从这里产生一个被一致接受的规格说明呢?…
建模有什么用? ◆建模能指导抽取 ■建模过程帮助你想岀要问什么问题吗? ■建模过程帮助将隐含的需求显式化吗? ●即,它帮助你问正确的问题吗? ◆建模能提供对进展的度量 模型的完整性蕴涵了抽取的完整性吗? ●即,如果我们填好了模型的每个部分,我们就做 完了吗?
建模有什么用? 建模能指导抽取 ◼ 建模过程帮助你想出要问什么问题吗? ◼ 建模过程帮助将隐含的需求显式化吗? ⚫ 即,它帮助你问正确的问题吗? 建模能提供对进展的度量 ◼ 模型的完整性蕴涵了抽取的完整性吗? ⚫ 即,如果我们填好了模型的每个部分,我们就做 完了吗?
建模有什么用? 建模能帮助发现问题 ■模型中的不一致性揭示什么有趣的事吗? ●比如:不一致性可能对应为矛盾的或不可行的需求 ●比如:不一致性可能意味着术语、范围等的混乱 ●比如:不一致性可能揭示投入者之间的不同意见 ◆建模能帮助我们检査我们对问题的理解 ■我们能检测模型具有我们期望的特性吗? 我们能根据模型的推理去理解它的结论吗? ■我们能模拟这个模型,以便帮助我们将需求可视化/检验需求的 有效性吗?
建模有什么用? 建模能帮助发现问题 ◼ 模型中的不一致性揭示什么有趣的事吗? ⚫ 比如:不一致性可能对应为矛盾的或不可行的需求 ⚫ 比如:不一致性可能意味着术语、范围等的混乱 ⚫ 比如:不一致性可能揭示投入者之间的不同意见 建模能帮助我们检查我们对问题的理解 ◼ 我们能检测模型具有我们期望的特性吗? ◼ 我们能根据模型的推理去理解它的结论吗? ◼ 我们能模拟这个模型,以便帮助我们将需求可视化/检验需求的 有效性吗?
建模技术分类 为企业建模(本讲的内容) 信息建模:ERD 目标和目的 组织建模:I*、SSM、ISAC 组织结构 目标建模:KAOS、 CREWS 活动、过程、生产 主体和工作角色 为功能需求建模 结构化分析:SADT、 SSADM、JSD 结构视点(数据的结构) 面向对象分析: 行为视点 OOA、OOSE、OMT、UML 时间需求 形式化方法:Z、VDM ◆为非功能需求建模 产品需求 质量交易:QFD、win-win 过程需求 特殊的非功能需求 外部需求 时间 Petri网(性能) 任务模型(可用性) 概率MTTF(可靠性)
建模技术分类 为企业建模(本讲的内容) ◼ 目标和目的 ◼ 组织结构 ◼ 活动、过程、生产 ◼ 主体和工作角色 为功能需求建模 ◼ 结构视点(数据的结构) ◼ 行为视点 ◼ 时间需求 为非功能需求建模 ◼ 产品需求 ◼ 过程需求 ◼ 外部需求 信息建模:ERD 组织建模:I*、SSM、ISAC 目标建模:KAOS、CREWS 结构化分析:SADT、SSADM、JSD 面向对象分析: OOA、OOSE、OMT、UML 形式化方法:Z、VDM 质量交易:QFD、win-win 特殊的非功能需求: 时间Petri网(性能) 任务模型(可用性) 概率MTTF(可靠性)
企业建模方法:进一步分类 软系统方法 涉及整个组织,从各个不同视点分析问题 产生不止规格说明,还包括:组织结构修改计划、任务结构、目的、以及对环 境的理解 ■例子:SSM、ISAC 基于知识的方法 利用知识表示框架建立可执行的领域模型,包括静态和动态方面 例子:RML、 Requirements apprentice、 Nature 目的论方法 需求实际上就是目标,所以要为目标层次建模 关心“为什么”的问题,而不是“什么/如何”的问题 用情景作为目标怎样能够被满足的具体例子 例子:KAOS、Ⅰ*、 CREWS
企业建模方法:进一步分类 软系统方法 ◼ 涉及整个组织,从各个不同视点分析问题 ◼ 产生不止规格说明,还包括:组织结构修改计划、任务结构、目的、以及对环 境的理解 ◼ 例子:SSM、ISAC 基于知识的方法 ◼ 利用知识表示框架建立可执行的领域模型,包括静态和动态方面 ◼ 例子:RML、Requirements Apprentice、Nature 目的论方法 ◼ 需求实际上就是目标,所以要为目标层次建模 ◼ 关心“为什么”的问题,而不是“什么/如何”的问题 ◼ 用情景作为目标怎样能够被满足的具体例子 ◼ 例子:KAOS、I*、CREWS、…
模型的形式 自然语言形式 绝对的表达能力和灵活性 能选择各种不同的概念框架一 非常难以捕获模型的语义 用于需求抽取,或为便于沟通进行模型的标记等方面比较好 半形式化表示(如:图,表,结构化英语等) 捕获结构和一定的语义 可以实施一定的推理,一致性检查,模拟,等等 ●比如:图、表、结构化英语、等等 形式化表示 非常精确的语义,外延推理成为可能 离开应用领域还有很长的距离 ●注意:需求形式化主要是为了认知的考虑,因此与计算机科学的形式化 有点不同
模型的形式 自然语言形式 ◼ 绝对的表达能力和灵活性 ◼ 非常难以捕获模型的语义 ◼ 用于需求抽取,或为便于沟通进行模型的标记等方面比较好 半形式化表示(如:图,表,结构化英语等) ◼ 捕获结构和一定的语义 ◼ 可以实施一定的推理,一致性检查,模拟,等等 ⚫ 比如:图、表、结构化英语、等等 形式化表示 ◼ 非常精确的语义,外延推理成为可能 ◼ 离开应用领域还有很长的距离 ⚫ 注意:需求形式化主要是为了认知的考虑,因此与计算机科学的形式化 有点不同 能 选 择 各 种 不 同 的 概 念 框 架
模型的特征 独立于实现 容易分析 模型不是数据的表示、数据的内 有能力分析出二义性、不完整 部组织、等 性和不一致性 抽象 可跟踪性 抽取根本的方面 能够交叉索引元素 比如,那些不经常变化的东西 能够连结设计、实现、等 形式性 ◆可执行性 无二义的语法 能够模拟这个模型,以便将它 丰富的语义理论 与现实进行比较 可构造性 最小性 为了应付复杂性和规模,能够构 在模型框架中无概念的冗余 造模型的片段 即,在如何表达什么事情上, 构造性能支持沟通 不需要进行额外的选择
模型的特征 独立于实现 ◼ 模型不是数据的表示、数据的内 部组织、等 抽象 ◼ 抽取根本的方面 ⚫ 比如,那些不经常变化的东西 形式性 ◼ 无二义的语法 ◼ 丰富的语义理论 可构造性 ◼ 为了应付复杂性和规模,能够构 造模型的片段 ◼ 构造性能支持沟通 容易分析 ◼ 有能力分析出二义性、不完整 性和不一致性 可跟踪性 ◼ 能够交叉索引元素 ◼ 能够连结设计、实现、等 可执行性 ◼ 能够模拟这个模型,以便将它 与现实进行比较 最小性 ◼ 在模型框架中无概念的冗余 ⚫ 即,在如何表达什么事情上, 不需要进行额外的选择
建模第一步:元建模 ◆元模型要表达什么? ■该模型关注什么问题?或者要捕获什么 现象? ■对如何细化模型存在何种引导? 在模型上可以进行什么样的分析?
建模第一步:元建模 元模型要表达什么? ◼ 该模型关注什么问题?或者要捕获什么 现象? ◼ 对如何细化模型存在何种引导? ◼ 在模型上可以进行什么样的分析?
元模型决定需求关注点 关于领域的命题 事实 修改 承认 活动 触发 事件 使得应用领域中的事实 应用领域中 发生变化的活动 状态的改变
元模型决定需求关注点 事实 活动 事件 修改 承认 触发 关于领域的命题 使得应用领域中的事实 发生变化的活动 应用领域中 状态的改变