软件工程 统一过程软件(RUP) 第5篇随笔

1.RUP简介

本质:

是”一般的过程框架”

  • 为软件开发,进行不同抽象层之间”映射”,安排其开发活动的次序,指定任务和需要开发的志平,提供了指导
  • 为对项目中的制品和活动进行监控与度量,提供了相应的准则

特点:是一种以用况(Use Case)为驱动的、以体系结构为中心的、迭代、增量式开发

软件工程 统一过程软件(RUP) 第5篇随笔
软件工程 统一过程软件(RUP) 第5篇随笔
* 迭代、增量式开发 规定了四个开发阶段
– 初始阶段(the inception phase)
– 精化阶段(the elaboration phase)
– 构造阶段(the construction phase)
– 移交阶段(the transition phase)

2.需求获取的目标及其基本途径

需求获取面临的挑战

  • 问题空间理解
  • 人与人之间的交流
  • 需求的不断变化

需求获取技术特征

  • 方便通讯(使用易于理解的语言)
  • 提供定义系统边界的方法
  • 提供划分、抽象、投影等方法
  • 允许采用多种可供选择的设计方法
  • 适应需求的变化
  • 支持使用问题空间术语,思考问题和编制文档 …….

需求获取的目标

对大系统的开发来说,需求一般包括需求获取和需求分析

需求获取的目标:客观问题(系统) => 系统需求获取模型 体系结构描述 Use Case模型

实现需求获取目标的基本途径

实现实际问题到软件开发需求获取层的映射,即从软件开发的角度-实现第一次抽象

需求获取层的术语(概念)及表达模型的工具

  • Use Case
  • actor
  • 4个表达关系的概念:关联、包含、扩展、泛化

如何映射--需求工作流

要做的工作 产生的制品 列出候选的需求 特征列表 理解系统语境 领域模型或业务模型 捕获功能需求 Use Case模型 捕获非功能需求 补充需求或针对一些特定需求的Use Cases

  • 特征:一个新的项及相关的简要描述称为特征
  • 领域模型或业务模型:
  • 领域模型:捕获了系统语境中的一些重要对象类型 领域类的三种形态:
    • 业务对象:表示被哪些业务所操纵的事务,例如订单、账目
    • 实在对象和概念:例如飞机、火箭
    • 事件:例如飞机到达、飞机起飞
  • 业务模型:
    • 业务 use case 模型:抽象一个特定业务
    • 业务对象模型:一个业务的内部模型
  • Use Case模型
  • 用来表达客户认可的需求-系统必须满足的条件和能力
  • 作为客户和开发人员之间的一种共识
  • 是一个系统的一种模型,包括actors use cases 以及它们之间的关系

3.需求分析的目标及其基本途径

分析类的种类

  • 边界类(Boundary classes):用于模型化系统和其他actors之间的交互
  • 实体类(Entity classes):用于模型化哪些需要长期驻留系统的对象
  • 控制类(Control classes):用于模型化系统的动态性
  • 用于表达协同、定序、事务以及其他对象的控制
  • 用于封装哪些与特定有关的控制
  • 用于表达复杂的推导和计算

分析包

分析包提供了一种组织分析制品的手段,形成一些课管理的部分
分析包可包含分析类、use case 细化以及其他分析包

分析包的主要特征

  • 高内聚、低耦合
  • 表达了对所需要分析问题的一种分离
  • 对具有领域知识的人来说,是可以阅读、理解的
  • 很有可能成为一些子系统或成为一些子系统的组成部分

体系结构分析

  • 任务1:标识分析包
  • 任务2:处理分析包之间的共性
  • 任务3:标识服务包
  • 任务4:定义分析包的依赖
  • 任务5:标识重要的实体类
  • 任务6:标识公共的特定需求

Use Case 分析

目标:

  • 标识哪些在use case事件流的执行中所需要的对象和类
  • 将use case 的行为,分布(Distribute)到交互的分析对象
  • 捕获use case细化上的特定需求

4.设计的目标及其基本途径

目标:设计的基本输入是分析的结果,定义满足分析所需的结构

设计层的术语

  • 设计类:是对系统实现中一个类或类似构造一个无缝抽象
  • 用况细化:是设计模型中的一个协作
  • 设计子系统:提供了一种组织设计制品的手段。成为一些更容易管理的部分
  • 接口:用于规约由设计类和设计子系统提供的操作

设计模型、部署模型

  • 设计模型:是设计子系统的层次结构,包含了设计类、use case细化和接口
  • 部署模型:是一个对象模型,描述了系统的物理发布

设计工作流

实施准备:

  • 非功能需求
  • 有关对程序设计语言的限制
  • 数据库技术
  • 用况技术
  • 事务技术

包含哪些活动:

  • 体现结构设计
  • 目标:给出设计模型和部署模型,以及这两个模型视觉下的体系结构描述 任务:
  • 任务1:标识结点和它们的网络配置
  • 任务2:标识子系统和它们的接口
  • 任务3:标识在体系结构方面具有意义的设计类和它们的接口
  • 任务4:标识处理一般性的设计机制
  • 用况Use case 设计 方法:
  • 标识参与用况细化的设计类
  • 标识参与用况细化的子系统和接口
  • 类的设计:进行类的设计,完成在use case 细化中的角色 包括:
  • 类的操作
  • 类的属性
  • 参与的关系
  • 类方法
  • 类的状态
  • 对一般设计机制的依赖
  • 与现实有关的需求
  • 所提供的那些接口的细化 任务:
  • 任务1:概括描述设计类
  • 任务2:标识操作
  • 任务3:标识属性
  • 任务4:标识关联和聚合
  • 任务5:标识泛化
  • 任务6:描述方法
  • 任务7:描述状态
  • 子系统的设计: 目标:
  • 确保子系统尽可能独立于其他子系统或它们的接口
  • 确保子系统提供正确的接口
  • 确保子系统实现了它的目标 任务:
  • 任务1:维护子系统依赖
  • 任务2:维护子系统所提供的接口
  • 任务3:维护子系统的内容

5.RUP 设计小结

RUP设计方法,由三部分组成:

  • 给出用于表达设计模型中基本成分的四个术语;包括:子系统、设计类、接口和用况细化
  • 规约了设计模型的语法,指导模型的表达
  • 给出了创建设计模型的过程以及相应的指导

Original: https://www.cnblogs.com/shuisanya/p/16640372.html
Author: 水三丫
Title: 软件工程 统一过程软件(RUP) 第5篇随笔

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581438/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • php uniapp 支付宝app支付,前后端实战源码

    uniapp端,前端代码 app.php端代码 Original: https://www.cnblogs.com/xiaofengzheng/p/16457966.htmlAut…

    Linux 2023年6月7日
    082
  • go将青龙面板里面的脚本文件都下载到本地

    纯粹练手用的,大家轻喷青龙面板的脚本文件可以下载到本地,这样的话自己可以研究一下对应的脚本文件,能学到更多的知识,原理其实很简单,F12一下就知道了,青龙面板使用Request H…

    Linux 2023年6月7日
    0132
  • 记一次 android 线上 oom 问题

    背景 公司的主打产品是一款跨平台的 App,我的部门负责为它提供底层的 sdk 用于数据传输,我负责的是 Adnroid 端的 sdk 开发。 sdk 并不直接加载在 App 主进…

    Linux 2023年6月6日
    0105
  • RPA纳税申报机器人

    bash;gutter:true;1、机器人开始工作2、机器人打开企业内部税务平台,自动下载报税底表3、机器人自动登录地方税务局,填写报税数据手工报税10分钟/3个表 VS 机器人…

    Linux 2023年6月7日
    077
  • 搭建Nginx七层反向代理

    基于https://www.cnblogs.com/Dfengshuo/p/11911406.html这个基础上,在来补充下七层代理的配置方式。简单理解下四层和七层协议负载的区别吧…

    Linux 2023年6月8日
    0116
  • 关于最近公司一个业务系统的性能优化方案

    一个刚上线的IT系统,往往负载压力不大,所以不会存在什么性能问题。这时,人们大多只关心系统的功能性和用户体验。但是,随着时间推移,用户量和数据量都比刚上线的时候要多很多,高并发和大…

    Linux 2023年6月6日
    097
  • Python Django构建简易CMDB

    前言 本文仅是对以前写的小示例进行一次梳理和代码优化,由于本人菜鸟一枚,前端,系统运维知识只知皮毛,后端python也没有实际开发经验,在开发过程中也没有考虑堡垒机等一系列服务器的…

    Linux 2023年6月7日
    0124
  • SWAP交换分区扩容

    第一章 扩容当前swap 交换分区 注:这种需要停止当前业务,否则会产生影响 [17:09:31 root@libin3 ~]# free -h total used free s…

    Linux 2023年6月13日
    092
  • PHP代码审计_用==与===的区别

    背景介绍 如何审计 绕过案例1 绕过案例2 背景介绍 比较 ==与 ===的差别 == 是等于符号,=== 是恒等于符号,两个符号的功能都是用来比较两个变量是否相等的,只不过两个符…

    Linux 2023年6月6日
    0109
  • idea 运行 tyarn 命令提示系统禁止运行脚本

    无法加载文件D:……….(报错信息。。。),因为在此系统上禁止运行脚本,有关详细信息,请参阅 https:/go.microsoft.com/f…

    Linux 2023年6月13日
    088
  • 在自己的项目中使用PCL

    在自己的项目中使用PCL项目设置:1、创建cpp文件,如pcd_write.cpp,文件内容如下例: #include find_package(PCL 1.3 REQUIRED …

    Linux 2023年5月27日
    078
  • 前端以BASE64码的形式上传图片

    一直有一个很苦恼的问题困扰着铁柱兄,每次上传图片的时候前端要写一大堆js,然后后台也要写一堆java代码做处理。于是就在想,有没有简单又方便的方法把图片上传。今天算是搞定了。现在发…

    Linux 2023年6月13日
    079
  • 基于 vite 创建 vue3 全家桶项目(vite + vue3 + tsx + pinia)

    vite 最近非常火,它是 vue 作者尤大神发布前端构建工具,底层基于 Rollup,无论是启动速度还是热加载速度都非常快。vite 随 vue3 正式版一起发布,刚开始的时候与…

    Linux 2023年6月7日
    084
  • FusionAccess模板制作并发放

    FusionAccess安装并对接 具体安装步骤欢迎参照我的博客:https://www.cnblogs.com/kongshuo/p/16333561.html 在FC上创建wi…

    Linux 2023年6月8日
    0137
  • 创建镜像(alpine版)+alpine

    podman用脚本和dockerfile做apache编译安装镜像 1.0安装介质 2.0 特点 2.0 基础命令 3.0 模式 podman用脚本和dockerfile做apac…

    Linux 2023年6月7日
    094
  • Redis

    一、Redis的介绍 什么是Redis Redis是一个开源的使用ANSI C语言编写Key-Value内存数据库 读写性能强,支持多种数据类型 把数据存储在内存中的高速缓存 Re…

    Linux 2023年6月14日
    082
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球