【软件建模与设计】-05-软件建模和设计方法概览

news2024/11/15 13:56:06

       

目录

1、COMET基于用例的软件生命周期

1.1、需求建模

1.2、分析建模

1.3、设计建模

1.4、增量软件构建

1.5、增量软件集成

1.6、系统测试

2、COMET与其他软件过程比较

2.1、与RUP对比

2.2、与螺旋模型对比

3、需求、分析和设计建模

3.1、需求建模活动

3.2、分析建模活动

3.3、设计模型活动

4、设计软件体系结构


COMET(Collaborative Object Modeling and Arch-itectural Design Method,协作的对象建模和体系结构设计方法)。

COMET是一个选代用例驱动面向对象的方法,

强调软件开发生存周期的需求、分析和设计建模阶段

1)需求模型:用参与者和用例来描述系统的功能性需求。每个用例定义了一个或多个参与者与系统之间的交互序列。

2)分析模型:实现用例,以描述参与用例的对象以及它们之间的交互。

3)设计模型:开发软件体系结构,以描述构件以及它们之间的接口。

1、COMET基于用例的软件生命周期

1.1、需求建模

所开发的需求模型使用参与者和用例描述了系统的功能性需求。每个用例要开发一个叙述性描述。在此过程中,用户的输人和主动的参与是必不可少的。如果需求没有被很好地理解,那么可以开发一个抛弃型原型来帮助澄清需求。

1.2、分析建模

开发系统的静态和动态模型

1)静态模型:定义了问题域类之间的结构关系(类图)。对象的组织准则用来决定在分析模型中要考虑哪些对象。

2)动态模型:实现来自需求模型的用例,以显示每个用例中参与的对象以及对象间是如何交互的。对象和它们之间的交互描绘在通信图或者顺序图中。使用状态图来定义状态相关的对象。

1.3、设计建模

设计系统的软件体系结构。在此阶段中,分析模型被映射到一个运行环境。

分析模型(问题域)被映射到设计模型(解域)

子系统被视为聚合或者复合对象。

1)将分布式的子系统设计为使用消息相互通信的可配置构件

2)对于顺序系统,重点放在信息隐藏、类和继承的面向对象的概念。

3)对于并发系统的设计,如实时的、客户端/服务器(C/S)和分布式应用,考虑面向对象、并发任务的概念。

1.4、增量软件构建

基于为每次增量选择系统的一个子集构建。子集的确定是通过选择要包含在该增量中的用例和参与这些用例的对象。

增量软件构建包含该子集中类的详细设计、编码和单元测试。

这是一个分阶段的方法,软件被逐渐地构建和集成,直到整个系统构造完成。

1.5、增量软件集成

要执行每个软件增量的集成测试。

为每个用例都要开发集成测试用例。集成测试是白盒测试的一种形式,对参与每个用例的对象之间的接口都进行了测试。

1.6、系统测试

 包括系统的功能测试,即针对系统的功能性需求测试系统。基于黑盒用例。

2、COMET与其他软件过程比较

可以参考【软件建模与设计】-03-软件生存周期模型和过程-CSDN博客

2.1、与RUP对比

COMET生存周期的每个阶段都对应RUP中的一个工作流。

 

2.2、与螺旋模型对比

在为螺旋模型的一个给定周期进行项目计划期间,

1)在项目开发象限(第三象限)中执行哪些特定的技术活动。被选中的技术活动(例如需求建模、分析建模或者设计建模)都将会在第三象限中执行。

2)在第二象限中执行的风险分析活动

3)在第四象限中执行的周期计划决定了在每个技术活动中需要多少次迭代。

3、需求、分析和设计建模

需求建模解决开发系统的功能性和非功能性需求。

分析是拆解或分解问题,以便问题能够被更好地理解;

设计是综合解决方案或组合解决方案(把解决方案放在一起)

3.1、需求建模活动

在需求模型中,系统被认为是一个黑盒。要开发用例模型

  • 用例建模

定义参与者和黑盒用例。系统的功能性需求采用用例和参与者来描述。用例描述是一个行为视图;用例之间的关系给出了一个结构视图。

  • 陈述非功能性需求

对用例建模方法进行补充来陈述非功能性需求,

3.2、分析建模活动

标识问题域中的对象以及对象之间传递的信息

有些问题要推迟到设计阶段,例如对象是主动的还是被动的,消息发送是异步的还是同步的,以及接收对象调用哪些操作等。

  • 静态建模

定义特定问题的静态模型。

类是由它们的属性及其和其他类之间的关系定义的。

操作在设计模型中定义。

  • 对象的组织

决定参加每个用例的对象。给出对象的组织准则,

确定系统中的软件对象:实体对象、边界对象、控制对象以及应用逻辑对象

  • 动态交互建模

实现用例来显示参与每个用例的对象之间的交互。开发通信图或顺序图来显示对象如何相互通信来执行用例。

  • 动态状态机建模

系统的状态相关的视图使用层次状态图来定义。每个状态相关的对象由其状态图来定义。

3.3、设计模型活动

考虑的是解域。

分析模型被映射到一个并发设计模型。设计软件体系结构,执行以下活动:

  • 集成对象通信模型

开发集成的对象通信图。

  • 做关于子系统结构和接口的决策

开发总体的软件体系结构。将应用组织为子系统。

  • 做关于在软件体系结构中使用什么软件体系结构模式和设计模式的决策。
  • 做关于类接口的决策。

、对每个子系统,设计信息隐藏类(被动类)。设计每个类的操作和每个操作的参数。

  • 做关于如何将分布式应用组织为分布式子系统的决策

其中子系统被设计成为可配置的构件,并且定义构件之间的消息通信接口。

  • 做关于对象特性的决策

特别是它们是主动的还是被动的。对于每个子系统,将系统组织为并发的任务(主动对象)。在任务的组织过程中,使用任务组织准则来组织任务,并定义任务的接口。

  • 做关于消息特性的决策

特别是它们是同步的还是异步的(要不要回复)。体系结构通信模式

COMET强调在分析和设计过程中的特定阶段使用组织准则:

1)对象组织准则用来帮助确定系统中的对象

2)子系统组织准则用来帮助确定子系统

3)并发对象组织准则用来确定系统中并发(主动)对象。

4、设计软件体系结构

  • 面向对象的软件体系结构

使用信息隐藏、类和继承的概念来描述面向对象设计。

  • 客户端/服务器软件体系结构

一个典型的设计包含了一个服务器和多个客户端。

  • 面向服务的体系结构

它包含了多个分布式自治服务,这些服务能被组合成分布式软件应用。

  • 基于构件的分布式软件体系结构

可以在分布式配置的分布式平台上部署执行。

  • 实时软件体系结构

用来处理多个输人事件流的并发体系结构。它们典型地依赖于状态,带有集中的或分散的控制。

  • 软件产品线体系结构

为产品族的,需要捕获产品族中的共性和可变性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1933871.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习入门【经典的CIFAR10分类】

模型 神经网络采用下图 我使用之后发现迭代多了之后一直最高是正确率65%左右,然后我自己添加了一些Relu激活函数和正则化,现在正确率可以有80%左右。 模型代码 import torch from torch import nnclass YmModel(nn.Module):def __init__(self):super(…

【香橙派】Orange pi AIpro开发板评测,与树莓派的横向对比以及实机性能测试

一、前言 在人工智能领域飞速发展的时代,国产厂商们也是紧随时代的步伐,迅龙公司联合华为推出了一款全新的开发板 Orange pi AIpro 作为一款建设人工智能新生态的开发板,它可广泛适用于AI边缘计算、深度视觉学习及视频流AI分析、视频图像分析…

ssh远程登录另一台linux电脑

大部分的博客内容所说的安装好ssh服务后,terminal输入 ssh -p port_number clientnameserver_ip 之后输入密码等等就可以登上别人的电脑 但是这是有一个前提的,就是这两台电脑要在同一个局域网下面。 如果很远呢? 远到不在同一个网下面怎么办…

【智能算法应用】粒子群算法求解带出入点车间布局设计问题

目录 1.算法原理2.数学模型3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】粒子群算法(PSO)原理及实现 设施布局问题(Facility Layout Problem, FLP),主要目的是在给定的区域内有效地放置不同设备或部件&am…

大模型学习笔记十一:视觉大模型

一、判别式模型和生成式模型 1)判别式模型Discriminative ①给某一个样本,判断属于某个类别的概率,擅长分类任务,计算量少。(学习策略函数Y f(X)或者条件概率P(YIX)) ②不能反映训练数据本身的特性 ③学习…

JavaScript学习笔记(九)

56、JavaScript 类 56.1 JavaScript 类的语法 请使用关键字 class 创建一个类。 请始终添加一个名为 constructor() 的方法。 JavaScript 类不是对象。 它是 JavaScript 对象的模板。 语法: class ClassName {constructor() { ... } }示例:例子创…

【无人值守】对数据中心电力分配系统发展的影响

数据中心在现代信息发展中承载着巨量数据的计算、存储、挖掘、分析和应用等多个方面的功能,是国计民生各行业的多样化的信息化的资产。对稳定的运行与安全运维是基本需求也是重要的保障。 数据中心属于高能耗产业,对用电负荷大且要求极度稳定。除了对电力…

一文-深入了解Ansible常见模块、安装和部署

1 Ansible 介绍 Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于python 开发的(集合了众多运维工具 puppet、cfengine、chef、func、fabric的优点)自动化运维工具, 其功能实现基于ss…

HarmonyOS介绍

一、什么是HarmonyOS HarmonyOS是新一代的智能终端操作系统,为不同设备的智能化、互联与协同提供了统一的语言,为用户带来简捷、流畅、连续、安全可靠的全场景交互体验。 二、HarmonyOS的核心理念 1、一次开发 多端部署 指的是一个工程&#xf…

题解|2023暑期杭电多校05

【原文链接】 (补发)题解|2023暑期杭电多校05 1001.Typhoon 计算几何 题目大意 依次给定 n n n 个坐标 P P P ,预测的台风路线为按顺序两两连接给定坐标所得的折线 现在有 m m m 个庇护所的坐标 S S S ,求每个庇护所到台风…

基于AT89C51单片机的多功能自行车测速计程器(含文档、源码与proteus仿真,以及系统详细介绍)

本篇文章论述的是基于AT89C51单片机的多功能自行车测速计程器的详情介绍,如果对您有帮助的话,还请关注一下哦,如果有资源方面的需要可以联系我。 目录 选题背景 原理图 PCB图 仿真图 代码 系统论文 资源下载 选题背景 美丽的夜晚&…

c++树(一)定义,遍历

目录 树的定义 树的基本术语 树的初始起点:我们定义为根 树的层次: 树的定义: 树的性质 性质1: 性质2: 树形结构存储的两种思路 树的遍历模板 树上信息统计方式1-自顶向下统计 树上信息统计方式2-自底向上统…

【漏洞复现】泛微E-Cology WorkflowServiceXml SQL注入漏洞

0x01 产品简介 泛微e-cology是一款由泛微网络科技开发的协同管理平台,支持人力资源、财务、行政等多功能管理和移动办公。 0x02 漏洞概述 泛微OAE-Cology 接口/services/WorkflowServiceXml 存在SQL注入漏洞,可获取数据库权限,导致数据泄露…

Purple Pi OH在Android11下测试WiFi和LAN的TCP和UDP传输速率

本文适用于在Purple Pi OH在Andriod11下如何测试WiFi和LAN的TCP和UDP传输速率。触觉智能的Purple Pi OH鸿蒙开源主板,是华为Laval官方社区主荐的一款鸿蒙开发主板。 该主板主要针对学生党,极客,工程师,极大降低了开源鸿蒙开发者的…

C语言 ——— 在控制台上打印动态变化的菱形

目录 代码要求 代码实现 代码要求 输入 整数line &#xff0c;菱形的上半部分的长度就为line&#xff08;动态变化的菱形&#xff09; 菱形由 "*" 号构成 代码实现 #include<stdio.h> int main() {// 上半长int line 0;scanf("%d", &line)…

mysql常用函数五大类

mysql常用函数 1. 第一类&#xff1a;数值函数1.1 圆周率pi的值1.2 求绝对值1.3 返回数字的符号1.4 开平方&#xff0c;根号1.5 求两个数的余数1.6 截取正数部分1.7 向上取整数1.8 向下取整数1.9 四舍五入函数1.10 随机数函数1.11 数值左边补位函数1.12 数值右边补位函数1.13 次…

【网络工具】Charles 介绍及环境配置

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/iAmAo &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会整理一些工作或学习中用到的工具介绍给大家~ &#x1f4d8;Charles 系列其它文章&#xff1a;【网络…

PySide在Qt Designer中使用QTableView 显示表格数据

在 PySide6 中&#xff0c;可以使用 Qt Model View 架构中的 QTableView 部件来显示和编辑表格数据。 1、创建ui文件 在Qt Designer中新建QMainWindow&#xff0c;命名为csvShow.ui。QMainWindow上有两个部件&#xff1a;tableview和btn_exit。 2、使用pyuic工具将ui文件转换为…

路由上传一个ui_control参数(uint32类型)控制页面UI显隐

前言&#xff1a;传一个uint32类型的值&#xff0c;通过 按位或操作符&#xff08;|&#xff09;来设置ui_control的值&#xff0c;通过按位与操作符&#xff08;&&#xff09;来检测是否显示或隐藏 简单介绍一下两个概念&#xff1a; 按位与操作符和按位或操作符都是二进…

LeetCode-随机链表的复制

. - 力扣&#xff08;LeetCode&#xff09; 本题思路&#xff1a; 首先注意到随机链表含有random的指针&#xff0c;这个random指针指向是随机的&#xff1b;先一个一个节点的拷贝&#xff0c;并且把拷贝的节点放在拷贝对象的后面&#xff0c;再让拷贝节点的next指向原链表拷贝…