1-UML基础

1. UML基础

1.1 UML简介

1.1.2 UML背景

1970年期间,面向对象方法出现,1989-1994得 到大发展。不同的方法大发展,触使建立一个标准的、统一的建模语言。

1990年代,3个最流行的面向对象方法:++OMT(强分析弱设计)、Booch(强设计弱分析)、OOSE(强分析弱其它)++。

++统一建模语言UML (Unified Modeling Language)的出现++结束了符号方面的”方法大战“。UML统一了Booch、OMT、OOSE方法的符号,并采纳了其他面向对象方法的许多好概念。

1.1.2 UML发展

image

1.1.3 UML内容(定义,重要)

  1. 元数据(描述数据的数据)
  2. 语义(元模型的定义)
  3. 表示法(UML符号表示方法)
适用范围(重要)

Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。

UML元数据(重要)
概念理解
  1. 描述数据的数据,是一种抽象;
  2. 描述数据的含义和性质,以便更好地理解、管理和使用数据的数据。
示例

数据:图书馆中的书籍

元数据:标题、作者、关键词、ISBN号

UML语义(重要)

UML语义给出了基于UML的精确的元模型定义。元模型为UML的所有元素在语法和语义上提供简单、一致、通用的定义性说明,使开发者在语义上取得一致。支持元模型的扩充定义。

UML表示法(重要)

UML表示法定义了UML符号的表示方法,为系统建模提供标准。表达应用级的模型,在语义上是UML元模型的实例。

1.1.4 UML主要特点

  1. UML统一了Booch、OMT、OOSE和其他面向对象方法的基本概念和符号。
  2. UML是一种先进实用的标准建模语言,其发展存在着一个进化过程。
  3. UML是一种建模语言而不是一种方法。UML独立于过程,用户根据不同的需要选用不同的过程。UML是一种语言,独立于过程,最好应用于用例驱动的、以体系结构为中心的、迭代的、递增的过程。

1.1.5 UML功能(重要)

  1. 为软件系统的产出建立可视化模型.利于交流、理解,系统结构直观、软件易维护。
  2. 规约软件系统的产出.定义分析、设计和实现规格。
  3. 构造软件系统的产出.支持模型到语言的前向工程,语言到模型的逆向工程。(是否支持软件的改进性、适用性与实用性?)
  4. 为软件系统的产出建立文档.包括需求、体系结构、设计、源代码、项目计划、测试、原型、发布。(软件工程的全过程)

UML优点(重要)

  1. UML具有定义良好的语义,不会引起歧义。
  2. UML是可视化的建模语言,为系统提供了图形化的可视模型,使得系统的结构变得直观,易于理解。
  3. 用UML为软件系统建模,不但利于交流,还有利于对软件的维护。

1.1.6 UML组成 (重要)

  1. 元素
  2. 关系
元素(重要)

包括结构元素、行为元素、分组元素、注释元素。

  1. 结构元素(静态):类(Class)、接口(Interface) 、协作(Collaboration)、用例(UseCase) 、活动类(ActiveClass)、组件(Component)和节点(Node)。(协作实现用例)
  2. 行为元素(动态):交互作用和状态机。对象间交互:消息、动作序列、连接。
  3. 分组元素(组织):包。
  4. 注释元素(解释):注解。
关系(重要)
  1. 依赖关系 (Dependency):调用关系,语义联系。
  2. 关联关系 (Association):一对一,一对多,多对多。
  3. 类属关系 (Generalization):类或对象间的继承和派生。
  4. 实现关系 (Realization):接口与类。
图(重要)
  1. 用例图:从用户角度描述系统功能(用户和操作);
  2. 静态图:描述类的静态结构,包括类图和对象图;
  3. 行为图:描述系统的动态模型和系统对象间的交互关系,包括状态图和活动图;
  4. 交互图:描述对象间的交互关系,包括时序图、协作图(信息交换,对象间的关系,对象组织);
  5. 实现图:描述代码组件的物理结构及各组件之间的依赖关系,包括组件图和配置图。

1.2 Rationa统一过程

1.2.1 RUP的发展(Rational Unified Process)

软件项目失败的原因(重要)
  1. 混乱的需求管理(不要仅考虑新技术,更需考虑用户的实际要求,新旧技术的良好接口,合理地选择最合适的开发软硬件环境);
  2. 开发者之间以及开发者和用户不清晰的交流(没有统一标准,尤其是开发者和用户之间缺乏行之有效的沟通方式、手段);
  3. 架构不够坚固(与软件和硬件均有关系,尽可能地选择经过严格测试的工具进行开发,减少因开发平台不当造成开发失败的可能性);
  4. 没有发现需求、设计和实现中的不一致(硬件和软件两方面);
  5. 缺少有效的测试(单元测试、整体测试、用户测试、Beta发布测试,测试人员的素质不高,无实际开发经验无法做好测试工作,现代QoS测试贯穿于软件工程全过程);
  6. 对项目状态的主观估计(开发团队的经验,市场的正确估计,用户的充分参与,有效的单元测试与阶段性整体测试) ;
  7. 没有正确地处理项目开发过程中的风险(风险预期不足,风险控制应对机制准备不足,技术储备不足,用户需求变化估计不足,市场变化估计不足,同类产品的发展估计不足,风险规避还是风险追求) ;
  8. 没有对项目变更进行控制(严重影响软件开发质量和可维护性的一个因素,可能由开发人员流动产生,可能由用户需求变化产生,可能由市场变化产生,直接对项目文档变更造成重大困难,尤其是文档的实时行,内部环境变化) 。

image

1.2.2 什么是RUP

  1. RUP是一个软件工程化过程。
  2. RUP是由Rational软件公司开发和维护的过程产品。
  3. RUP为如何有效地使用统一建模语言UML提供指导。
  4. RUP说明了如何有效地使用成熟技术开发软件。
  5. RUP是一个可配置的过程(软件可配置)。

1.2.3 过程概览(重要)

RUP的四个阶段(重要)

image

1.2.4 时间轴(各阶段工作,重要)

  1. 起始阶段 (Inception)
  2. 细化阶段 (Elaboration)
  3. 构建阶段 (Construction)
  4. 交付阶段 (Transition)
起始阶段
  1. 明确说明项目规模,了解环境以及最重要的需求和约束(需求动态变化),以便可以得出最终产品的验收标准;
  2. 计划和准备商业理由,评估风险管理、人员配备、项目计划以及成本/进度/收益折衷的被选方案;
  3. 综合考虑被选构架,评估构架;
  4. 准备项目的环境(软硬件环境),评估项目和组织,选择工具,决定流程中要改进的部分。(评估:风险、费用、人事、流程改进)
细化阶段

细化阶段的焦点是需求、分析和设计工作流。需求贯穿于软件工程全过程。

  1. 标明用例模型中的用户和参与者,并且建立用例的描述文档,用例模型需完成80%;
  2. 创建软件系统开发过程中的软件结构的描述文档(文档时间可能非常长,至数年);
  3. 创建可执行的系统原型(开发项目的积累) ;
  4. 细化商业案例和风险列表(大型软件) ;
  5. 创建整个项目的开发计划(针对公司实际与当前开发情况,并行完成项目) 。
构造阶段
  1. 优化资源、避免不必要的报废和返工,使开发成本降到最低;
  2. 尽快达到质量的要求;
  3. 快速完成有用的版本,例如Alpha 版、Beta 版和其他测试发布版;
  4. 完成所有功能的分析、开发和测试;
  5. 迭代式、递增地开发随时可以发布的产品(降低开发风险,快速应对各种可预期和不可预期的变化);
  6. 确定准备好软件系统的外部环境。构建阶段的焦点是实现工作流。
交付阶段
  1. 进行Beta版测试,按用户的要求验证新系统;
  2. 替换旧的系统;
  3. 对用户和维护人员进行培训;
  4. 开始调整活动,例如调试、性能或可用性的增强(电信,银行,7X24方式维护);
  5. 与用户达成共识,配置基线与评估标准一致。
  6. 交付阶段的焦点是实现和测试工作流。

1.2.5 迭代(反复多次)

RUP中的每个阶段可以进一步分解为迭代。

  1. 吻合需求
  2. 适应变化
  3. 降低风险
  4. 积累经验
  5. 人员易安排
  6. 保证质量
  7. 用户真实意图挖掘

1.2.6 工作流(描述工作过程,重要)

过程分为核心过程工作流和核心支持工作流

RUP中有9个核心工作流,分为6个核心过程工作流(Core Process Workflows)和3个核心支持工作流(Core Supporting Workflows)。

6个核心过程工作流
  1. 商业建模(Business Modeling):理解系统的组织结构及其商业运作,确保所有参与人员对开发系统有共同的认识。确定系统功能和用户需要。

  2. 需求分析(Requirements):定义系统功能及用户界面,明确客户需要的系统的功能,开发人员理解系统的需求,为项目预算及计划提供基础。 注重功能性需求与非功能性需求相结合。

  3. 分析与设计(Analysis and Design):把需求分析的结果转化为实现规格。
    .考虑实现环境,可行的技术方案,周期可能很长,大大长于实现和测试时间。
  4. 实现(Implementation):定义代码的组织结构、实现代码、单元测试、系统集成。 同时修正分析与设计的结果。
  5. 测试(Test):验证各自子系统的交互与集成。质量管理,贯穿于软件工程的全过程。单元测试,整体测试。
  6. 配置(Deployment):打包、分发、安装软件,升级旧系统;培训用户及销售人员,并提供技术支持。制定并实施beta测试。
3个核心支持工作流
  1. 配置和变更管理(Configuration and Change Management):跟踪并维护系统所有产品的完整性和一致性。 工作量大,技术要求高,大量行业经验的积累, 企业知识的积累。
  2. 项目管理(Project Management):为计划、执行和监控软件开发项目提供可行性的指导;为风险管理提供框架。工作人员的经验,管理规范与动态适应性,开发 团队与管理。
  3. 环境(Environment):为组织提供过程管理和工具的支持。软件和硬件的管理与支持。

image

1.2.7 微过程的划分(细化,粒度依软件规模而定)

商业建模:RUP为软件工程师和商业工程师提供共同的语言和过程,在商业模型和软件模型之间创建并保持直接的可跟踪性,使两方面对需要被支持的商业过程达成共识。

需求分析:描述系统做什么,使开发人员和用户达成共识。抽取用户的需求,识别系统参与者和用例。使用文字对每个用例进行详细描述,包括非功能性描述。用例贯穿于整个系统开发周期,是一条主线,同一用例将被用在需求捕捉、分析、设计和测试阶段。

分析:对问题域进行分析,确定系统问题域中的类

确定类(静态结构)有两种途径:
(1) 阅读规格说明、用例、寻找系统问题域中的类及类间关系类来分析问题域。
(2) 与用户和领域专家讨论,识别出所有关键类及类之间的相互关系。

设计:任务是综合考虑技术限制,扩充和细化分析阶段产生的模型。目的是确定易转化为代码的设计方案,细化分析阶段的抽象类,并增加新类以处理如数据库、通信、硬件等技术领域问题。

分为两个部分:
(1) 结构设计:高层设计,划分子系统,确定子系统之间的依赖性和关联性。
(2) 详细设计:细化子系统,清晰地描述类。

实现:目的在于定义代码的组织结构;以组件的形式实现类和对象;对开发出的组件进行单元测试;将开发人员或小组开发的软件集成为可执行系统。

测试:目的在于验证对象间的交互作用、软件组件的正确集成、所有需求的正确实现、确保BUG的处理。

测试类型:
(1) 单元测试:使用规格说明测试单独类或一组类。
(2) 集成测试:使用组件图和协作图测试组件间协作。
(3) 系统测试:使用用例图测试系统需求满足度。
(4) 验收测试:用户测试满意度。

配置:将软件分发给最终用户。早期阶段的工作为后期的软件发布做准备。配置图描述系统的物理结构,说明设备之间的关系,节点与可执行软件单元的对应关系。

项目管理:平衡冲突目标,管理风险,克服各种限制以同时满足用户费用要求和系统要求。

配置和变更管理:控制同一项目组不同成员的大量产出物。

避免冲突:
(1) 更新同步:小组成员的系统软件版本保持一致。
(2) 有限通知:通知小组成员项目组软件的最新进展,防止错误理解和重复劳动。
(3) 多版本:保证系统多个版本之间的一致性。一个大系统中,必须进行版本管理和版本跟踪,对版本的更新、成员更新信息等要有详细的记载。
环境:为软件开发组织提供软件开发环境。开发环境的选择最好是最适合于当前项目的开发,对当前项目开发有最多的各方面支持。

静态建模:创建并建立一个系统的静态特征

  1. 用例图:描述系统功能及功能的使用者.
  2. 类 图:表现系统里实体的关系,责任,类和类之间的关系,属性及方法.
  3. 对象图:当类图不能完全显示关系时用对象图.描述对象的属性,对象名,方法.
  4. 组件图:对类功能的封装,一个组件包含多个类.
    虚线:表示依赖关系.
  5. 部署图:描述系统中的物理结构.
    实线:表示连接

动态间模:用来展示系统的行为

  1. 时序图:描述对象的交互过程.以时间为参考(强调的是时间顺序).
    虚线:(生命线)表示对象的生命周期.
    实线:对象消息.
    虚线:返回消息.
    长方形:活动(激活).
    叉:对象消亡.
  2. 协作图:跟时序图一样,但强调对象的连接关系.
  3. 状态图:描述对象的自身的状态(一个对象的类型不同可能行为很古怪,行为变化很大).
  4. 活动图:(类似于流程图)描述一个环境中的交互顺序.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值