面向对象的需求分析 余阳 教授 中山大学软件学院

Slides:



Advertisements
Similar presentations
——Windows98与Office2000(第二版) 林卓然编著 中山大学出版社
Advertisements

LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
初级会计电算化 (用友T3) 制作人:张爱红.
公务员管理子系统建设步骤 1、组建由局长直接领导的体制,制定公务员管理、工资管理、其他业务用户的管理权限,以及各业务间的协作流程。
UI(用户界面)集训班 Illustrator 高级班.
用即兴剧原则 打造敏捷应变的团队 December-6, 2015 曾宪钰 创新与引导
第六讲 面向对象分析(6学时) 了解面向对象分析的概念 了解面向对象分析的发展 理解面向对象的基本概念 理解面向对象分析的过程、内容
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
第三篇 组织工作.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
在PHP和MYSQL中实现完美的中文显示
程序的形式验证 - 简介 中国科学院软件研究所 张文辉 1.
北京移动(中国移动的子公司)是中国主要的无线运营商之一。中国移动做为无线市场的开拓者,拥有中国70%的无线通信市场,也是世界上第二大的无线提供商,北京移动拥有上亿的手机用户,支持60多个国家的漫游业务。 为北京移动创造的价值 … 优秀的性能,支持了庞大的用户群 标准化了系统接口 加强了系统的灵活性.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Hadoop I/O By ShiChaojie.
Harvard ManageMentor®
SVN的基本概念 柳峰
面向对象建模技术 软件工程系 林 琳.
R in Enterprise Environment 企业环境中的R
欢乐玩转单元测试之JUnit 讲师:FREE QQ:
存储系统.
SOA – Experiment 3: Web Services Composition Challenge
大学计算机基础 典型案例之一 构建FPT服务器.
SVN服务器的搭建(Windows) 柳峰
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
Visual Studio Team System 简介
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
Harvard ManageMentor®
化学品清单 类型.
数据挖掘工具性能比较.
PaPaPa项目架构 By:Listen 我在这.
CPU结构和功能.
整合思维导图的初中英语教学设计 主讲人:卢璐.
Windows 7 的系统设置.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
程序设计工具实习 Software Program Tool
何勉 新浪微博: Scrum框架及其背后的原则 原始图片 何勉 新浪微博:
新一代安全网上银行 小组成员:杨志明 王晶 任毅 刘建中 关昊 刘超.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
解决变化问题的自底向上 流程建模方法 严志民 徐玮.
C语言程序设计 主讲教师:陆幼利.
微机系统的组成.
VisComposer 2019/4/17.
Cassandra应用及高性能客户端 董亚军 来自Newegg-NESC.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
企业文化内涵体系 持续循环 企业标志 品牌力:…… 服务力:…… 品牌力/服务力 潜规则是…… 1、品质 2、战略 1、价值 2、绩效
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
iSIGHT 基本培训 使用 Excel的栅栏问题
数据集的抽取式摘要 程龚, 徐丹云.
Chapter 18 使用GRASP的对象设计示例.
Visual Basic程序设计 第13章 访问数据库
OpenStack vs CloudStack
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
基于列存储的RDF数据管理 朱敏
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
徐迎晓 复旦大学软件学院 用例模型--SSD 徐迎晓 复旦大学软件学院.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
ATM自动取款机系统 一、 需求分析 二、系统用例模型 三、系统动态模型 四、创建系统包图 五、系统类模型 六、系统部署.
Chapter 11 操作契约.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
学习数据结构的意义 (C语言版) 《数据结构》在线开放课程 主讲人:李刚
入侵检测技术 大连理工大学软件学院 毕玲.
Presentation transcript:

面向对象的需求分析 余阳 教授 中山大学软件学院 面向对象的需求分析 余阳 教授 中山大学软件学院 1. OOA与UML 2. 瀑布模型与OOA建模 3. RUP与OOA建模 4. 系统愿景 5. 业务建模 6. 系统建模 7. 非功能性需求的定义 8. 案例分析

0. OOA与UML OOA的核心是利用面向对象的概念和方法建造需求模型。包含:图形语言机制+面向对象方法学 历史: 60年代中Simula 67; 80年代初Smalltalk;80年代中后期成为软件开发方法。 90年代中后期,UML(统一建模语言) OO方法把程序看作是相互协调而又彼此独立的对象的集合。 OO方法强调软件开发过程中面向客观世界中的事物,采用人类认识世界的普遍的思维方法。

1. OOA与UML——OO的概念 对象:是现实世界中个体或事物的抽象表示,是其属性和相关操作的封装。 类:某些对象共同特征(属性和操作)的表示。 继承:是现实世界中遗传关系的直接模型,它表示类间的内在联系以及对属性和操作的共享。 聚集:现实世界中部分-整体关系的模拟。 消息:对象与外部世界相互关联的唯一途径。 关联、依赖、多态……

1. OOA与UML——UML简介 用于对软件密集型系统的制品进行可视化、祥述、构造和文档化的图形语言,是一种描绘系统蓝图的标准方法。 综合了Grady Booch的Booch方法、Jackson的 OOSE和Rumbaugh的OMT方法,1994年底开始,1998年发布了UML 1.3版。 UML是一种语言,提供了用于交流的词汇表和词汇表中组合词汇的规则。特别着重于对系统进行概念上物理上的可视化描述。主要完成的工作:可视化、祥述、构造、文档化。 使用UML描述系统,可直接得到需求、体系结构、项目计划和源代码等文档。

1. OOA与UML——UML的语言机制 图形化的表示机制,十多种视图,分4类: 用例图:用户角度:功能、执行者 静态图:系统静态结构 类图:概念及关系 对象图:某种状态或时间段内,系统中活跃的对象及其关系 包图:描述系统的分解结构 行为图:系统的动态行为 交互图:描述对象间的消息传递 顺序图:强调对象间消息发送的时序 合作图:强调对象间的动态协作关系 状态图:对象的动态行为。状态-事件-状态迁移-响应动作 活动图:描述系统为完成某功能而执行的操作序列 实现图:描述系统的组成和分布状况 构件图:组成部件及其关系 部署图:物理体系结构及与软件单元的对应关系

1. OOA与UML——UML语言机制(用例图) 例:

1. OOA与UML——UML语言机制(类图)

1. OOA与UML——UML语言机制(顺序图)

1. OOA与UML——UML语言机制(协作图)

1. OOA与UML——UML语言机制(状态图)

2.瀑布模型与OOA建模 瀑布模型的OOA过程 用例图 用例 系统用例模型 系统愿景 领域专家 SSD或泳道图 用例图 用例BSD 业务用例模型 领域(概念)模型 操作契约 分析师 系统非功能性需求 系统顶层架构

3. RUP与OOA建模——过程与目标 迭代渐进式,四个阶段: 初启:确定目标、范围、粗略估价、决策。识别并简略描述用例、精化10%的用例。几天或一周。 细化:初步需求分析、初步高层设计、部分详细设计、部分原型构造。主要需求通过用例及用例图描述(详细描述90%)和部分用例的产品级实现(20%);标识重要的风险,并能够精确估算实现每一用例的完成时间。2-6次迭代。 构造:通过迭代完成对所有用例的软件实现。 迭代计划及其原则:业务价值大、风险高、能反映系统架构的用例优先 迭代过程:针对用例的分析、设计、编码、测试、集成 移交

3. RUP与OOA建模——敏捷RUP的OOA

3. RUP与OOA建模——RUP阶段与任务

谁被《财富》杂志评为“20世纪最伟大企业家”? 4. 系统愿景——愿景(Vision) 谁被《财富》杂志评为“20世纪最伟大企业家”? 让每个家庭都拥有一辆汽车! 让每个桌面都有一台计算机!

4. 系统愿景——概念 系统愿景:客户开发该系统的目的 客户(Customer) vs. 用户(User) vs. 涉众(Stakeholder) 系统愿景决定了系统的需求! 如果仅允许一份文档、模型或工件来支撑项目,我会选择愿景文档。 --Philippe Kruchten

4. 系统愿景——规则1 规则1:愿景必须来自客户的老大——最有权力的观众、你的衣食父母,他是否高兴很重要!

4. 系统愿景——规则1 接触不到“老大”?

4. 系统愿景——规则1 愿景不是功能,老大往往不会从功能角度考虑。

4. 系统愿景——规则2 规则2:必须指出度量指标

4. 系统愿景——规则2 不同维度度量指标之间的排序

4. 系统愿景——规则3 规则3:愿景必须恰如其分,换一个项目就不合适

4. 系统愿景——规则4 规则4:单独列出涉众高阶目标及利益 谁关心这个系统?会涉及到他的什么利益?

4. 系统愿景——规则4 同一件事情,不同的利益视角

4. 系统愿景——规则4 开发人员花在前排涉众身上的时间往往不够! 排序是否正确直接影响需求。 台上演什么戏?由台下各种人角逐而定。 探索系统的需求,就是探索涉众利益之间的最佳平衡点。 越是一线用户,往往排位越低,没有用户的系统,也一样有涉众。

4. 系统愿景——其它规则 规则5:保持简捷,最好不超过10条。

5. 业务建模 系统“需求”不断变化的根源——来路不正! 把视角从系统转向组织 网站系统 != 网站组织 没有把系统放在组织中来看,导致得到的系统不符合组织需要 把视角从系统转向组织 系统如何给组织带来好处?讲一个好卖的故事! 网站系统 != 网站组织

5. 业务建模——选定业务组织 愿景波及的需要改进的组织 绝大多数工作流不相干--太大 很多要改进的地方未涉及--太小 和老大的职权范围有关

5. 业务建模——选定业务组织 从外部看:价值的集合——业务用例图 从内部看:系统的集合——业务序列图

5. 业务建模——业务用例图 业务执行者:在组织之外和组织交互的人群或组织 业务工人:在组织的一部分

5. 业务建模——业务用例图 业务工人vs. 业务实体(Business Entity) 待开发系统——组织中的一个新的业务实体,以取代现有业务工人或业务实体的一些责任

5. 业务建模——业务用例图 组织为业务执行者提供哪些价值? 注意:业务建模的研究对象是组织! 对外的价值(业务用例)基本不会变化,但内部的实现每次会变化一部分。

5. 业务建模——业务用例图 业务流程就是业务用例的实现 组织里发生的一切都是为业务执行者提供价值

5. 业务建模——业务用例描述 文字 活动图 序列图 活动图往往只表现动作,序列图强迫思考背后目的,更清晰。

5. 业务建模——业务用例描述 消息的名字——代表责任和目的

5. 业务建模——业务用例描述 消息的方向——责任委托,不是数据流动

5. 业务建模——业务用例描述 不要围着待开发系统编造业务流程

5. 业务建模——业务用例描述 只画领域相关的系统

5. 业务建模——业务用例描述 把时间看作特殊的业务实体。时间 != 定时器

5. 业务建模——业务用例描述 最小单位是人或独立智能系统

5. 业务建模——业务改进 原业务用例的业务流程

5. 业务建模——业务改进 用新的软件改进原来的业务流程

5. 业务建模——业务改进 改进点:改善信息流转

5. 业务建模——业务改进 改进点:封装复杂业务逻辑

5. 业务建模——业务改进 访问和操作业务对象

5. 业务建模——业务改进 改进点,结合愿景,针对每个活动思考: 涉及到信息的流动吗(物流能变成信息流吗)? 包含的业务逻辑能封装到系统里吗? 涉及到什么业务对象?需要系统管理起来吗?

5. 业务建模——抽取系统用例

6. 系统建模 系统建模的研究对象是要开发的系统 系统用例:从外部用户的角度看,一个用例是执行者与软件系统间的一次典型的交互作用。从系统内部看:一个用例代表系统执行的一系列动作,且动作结果被外部执行者察觉。 执行者通过系统用例达到某个目标,对解决某个业务问题有价值。 系统执行者:在系统外,与系统作有意义交互的系统

6. 系统建模——系统执行者 系统执行者与重要无关

6. 系统建模——系统执行者 有意义的交互

6. 系统建模——系统执行者 主执行者、辅执行者

6. 系统建模——系统用例 用例是“能卖”的价值 期望和承诺、买和卖的平衡点

6. 系统建模——系统用例 用例多大?——期望、契约、承诺例多大--期望、契约、承诺

6. 系统建模——系统用例 业务序列图帮助理清责任 智能批假——请假变成了人事系统的用例

6. 系统建模——系统用例 命名:动宾结构 慎用弱动词弱名词--会掩盖真正的业务 命名:不存在“子系统”的用例 弱动词: 进行、使用、复制、加载、生成… 弱名词: 数据、报表、表格、表单、系统… 命名:不存在“子系统”的用例

6. 系统建模——系统用例 用例不存在“粒度问题” 最常犯“粒度”错误:把步骤当作用例

6. 系统建模——系统用例 四轮马车! 用有色眼镜看,所有业务最终都会成为CRUD 多问:为什么要CRUD?仅CRUD能为执行者提供价值吗?

6. 系统建模——系统用例 业务用例vs. 系统用例 一个业务用例,多个系统用例

6. 系统建模——系统用例 业务用例vs. 系统用例 多个业务用例,一个系统用例

6. 系统建模——系统用例 用例模版: 基本路径:客户最想看到、最关心的路径。 把基本路径单独分离,凸现用例的核心价值。不要忘记初衷! 用例名 执行者 前置条件 后置条件 涉众利益 基本路径  1…..××××  2……××××  3…..×××× 扩展  2a.××××: 2a1….××××× 字段列表 业务规则 非功能需求 设计约束 基本路径:客户最想看到、最关心的路径。 把基本路径单独分离,凸现用例的核心价值。不要忘记初衷!

6. 系统建模——系统用例 涉众利益

6. 系统建模——系统用例图 执行者与用例间的关系:触发执行/信息交换 用例图中的边 用例之间的关系 执行者-〉用例:表示触发执行/信息交换 用例-〉执行者:用例生成的信息传递给执行者 用例之间的关系 使用(include)关系 扩展关系(extend) 继承关系

6. 系统建模——系统用例图 多个用例会操作同一项数据

6. 系统建模——系统用例图

6. 系统建模——系统用例图

6. 系统建模——系统用例图 “高层”用例:错误根源——偷换了研究对象

6. 系统建模——建立领域概念模型 机制:类图 UML类图 领域概念模型的建立 UML的类包含:类的名称、属性列表、方法列表。图元: 类之间的关系:继承与泛化、聚集(普通、构成,)、关联关系(稳定性)、依赖关系(临时性) 关联是依赖的强化、聚合是关联的强化、构成是聚合的强化 领域概念模型的建立 标示关键的概念,来源:? 标示概念间的关系 类名 属性名称:类型=初值 操作名称 操作名称(参数表):返回值类型

6. 系统建模——建立领域概念模型(例子)

Enteritem(UPC, quantity) 6. 系统建模——SSD SSD:系统顺序图System Sequence Diagram Cashier :System 将系统看做黑盒子 重复直到货物为空 Buy-Item-version 1 Enteritem(UPC, quantity) endSale() makePayment(amount) Actor 系统事件触发了系统操作

6. 系统建模——操作契约 操作: 操作名和参数 交叉引用: 此操作发生时所在的系统用例 前置条件:在此任务执行前,对系统或领域模型中对象状态的重要假定。 后置条件: 此操作完成后,领域模型中对象的状态

6. 系统建模——操作契约(例) 契约 CO2: enterItem 操作: enterItem(itemID: ItemID, quantity: integer) 交叉引用: Use Cases: Process Sale 前置条件:正在进行销售. 后置条件: 创建了SalesLineItem的一个实例sli.(创建实例) sli 与当前的Sale对象关联 (形成关联). sli.quantity赋值为quantity (修改属性). 基于itemID的匹配,将Sli关联到ProductDescription(形成关联)。

6. 系统建模——建立顶层架构(包图) 建立顶层架构的机制:包图 UML包图 包:UML对类进行分组的一种机制 包之间的关系:依赖、构成 连接器:表示包之间的信息传递、事件发送和软件调用关系等,且有单向和双向(无向)之分

6. 系统建模——建立顶层架构(模式) 软件顶层架构设计,几种主要架构模式: 流程处理模式 客户/服务器模式 模型-视图-控制器(MVC) 分层模型。

6. 系统建模——建立顶层架构(原则) 建立顶层架构过程中要考虑的问题: 架构中包的数量 架构中包的耦合度 软件元素的稳定性 软件元素的必然性 作为软件系统运行环境的物理网络拓扑 软件元素的安全、保密级别 开发团队的技术专长

7.非功能性需求的定义 量化描述

7.非功能性需求的定义——可用性

7.非功能性需求的定义——可靠性 系统应能防范磁盘故障(安全) (对照)系统应采用冗余磁盘阵列  系统应保证收到的数据和发送的数据一致(完整)  MTBF(Mean Time Between Failures)  MTTR(Mean Time To Repair)

7.非功能性需求的定义——性能 系统应在0.5秒之内拍摄超速车的照片(速度) 系统应允许1000个用户同时使用(容量) 在标准工作负荷下,系统的CPU占用率应少于50%(能力)

7.非功能性需求的定义——可支持性 95%的紧急错误应能在30工作时内修复 在修复故障时,未修复的相关缺陷平均数应小于0.5 在两年内,以每功能点××的价格升级系统 升级新版本时,应保存所有系统设置和个人设置

8. 案例分析 中大软件人才培训中心(简称:中大软培)要开发一个和以下业务相关的计算机系统: 广州市政府为大力发展软件产业,常年委托中大软培举办与软件开发相关的技术培训。参加对象为广州市软件行业的软件开发人员,技术讲座由业界或高校知名专家主讲。市政府向中大软培下达培训任务后,培训主管根据任务需要决定请哪一位专家,并拟定培训计划,交给教务人员执行。教务人员根据培训主管提供的专家资料(职务、擅长领域、Email、电话等)更新自己的专家资料Excel文件,然后通过各种方式联系专家,与专家商议培训的时间和主题。确定后,教务人员就要尽快制作好培训网页,在中大软培网站上发布。中大软培还拥有一个邮件列表系统,教务人员也可制作好培训宣传邮件群发。开发人员会在讲座网站上下载报名表WORD文档,填好后Email给教务人员,教务人员会把报名表剪贴合并到一个WORD文件中,然后给开发人员回信通知已接受报名,并告知培训相关事项。 培训前一天,教务人员逐个Email提醒报名的开发人员准时参加讲座,如果留了手机,还需要短信提醒学员。讲培训当天,学员到达培训地点后,首先要到现场找教务人员签到。教务员查对名单,发放资料。如果来人名单上没有,教务员判断培训教室是否有空位,若有,则现场办理报名(填表或给名片),若无座位,拒绝该人参加。