软工导论知识框架(六)面向对象分析

news2024/7/4 5:54:43

前言:绘制各种类型的图是重点,对于面向对象建模中需要绘制的图总结在第五期中:

软工导论知识框架(五)面向对象方法学


一.分析过程

1.获取需求

  • 与用户交谈,向用户提问题;  
  • 参观用户的工作流程,观察用户的操作;  
  • 向用户群体发调查问卷;  
  • 与同行、专家交谈,听取他们的意见;  
  • 分析已经存在的同类软件产品,提取需求;  
  • 从行业标准、规则中提取需求;  
  • 从Internet上搜查相关资料等。

2.整理需求:书写需求陈述

   需求陈述内容包括问题范围,功能需求,性能需求,应用环境及假设条件。(建模用的蓝本

3.建立模型

面向对象分析模型由三个独立模型组成:

  • 功能模型:指明系统应“做什么”,由用例图表示。
  • 对象模型:描述静态结构, 定义做事情实体,类图和对象图表示。
  • 动态模型:描述交互过程, 由状态图和顺序图表示。

4.书写需求规格说明书

5.复审

二.功能模型

功能模型用用例图表达,研究需求陈述建立用例图:

1.识别外部执行者

2.识别用例

3.建立用例图

4.补充用例描述:为建立对象模型和动态模型打基础

 

三.对象模型

对象模型描述类及相互关系,表达目标系统静态结构。

建立对象模型步骤:

1.确定分析类: 分析模型中,分析类是概念层次上内容,类直接与应用逻辑相关,不关注技术实现。

(1)找出候选分析类    

①边界类:通常,一参与者与一用例间交互或通信关联对应一边界类。    

②控制类:  控制类负责协调边界类和实体类,通常在现实世界没有对应的事物。一般来说,一个用例对应一个控制类。   

 ③实体类:实体类通常是用例中的参与对象,对应着现实世界中“事物”。

非正式分析法实现实体类的识别:需求陈述中的名词。 

(2)筛选出正确的类

① 冗余   

② 无关    

③ 笼统    

④ 属性     

⑤ 操作   

⑥ 实现     事务日志、通信链路。

(如上类型要进一步考虑完成筛选)

2.确定类的关联:

(1)初步确定关联:动词或动词词组、隐含关联、与用户及领域专家讨论补充。

① 直接提取动词短语

② 需求陈述中隐含的关联

③ 根据问题域知识得出的关联

(2)筛选

  ① 已删去类之间关联 

  ② 与问题无关或与实现密切相关的关联删去。

  ③ 瞬时事件    

  ④ 三元关联  : 三个或三个以上对象关联,可分解为二元关联或限定关联。

(3)进一步完善

 ① 正名

 ② 分解

 ③ 补充     

   

 3.划分主题;    

4.确定属性——需求陈述中的名词  

(1)误把类当属性 :独立存在更重要,则应为类。  

(2)误把链属性作为属性 :属性要依赖某关联链存在,则为关联类的属性。  

(3)误把限定当属性:属性值固定下来可减少重数,则应为限定。  

(4)误把内部状态当属性:对象的非公开内部状态不作属性。  

(5)过于细化:忽略对大多数操作都没有影响的属性。  

(6)存在不一致属性:分解两个类。

 5.识别继承

 6.反复修改

 四.动态模型:开发交互式系统,动态模型非常重要

1.编写典型交互行为脚本  

 ①正常情况脚本  

 ②异常情况脚本  

 ③错误情况脚本

2.从脚本中提取事件及相关对象,用顺序图表达  

 

从脚本提取所有外部事件,确定每类事件发送和接收对象。   针对系统中的典型功能,画出顺序图。

3.确定对象状态及状态间转换关系,用状态图描绘

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

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

相关文章

YOLOv5可视化界面

Pyside6可视化界面 安装Pyside6 激活之前的虚拟环境yolov5 在该环境的终端输入以下命令 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyside6输入where python找到当前使用的Python的路径 找到该路径下的designer.exe文件(/Lib/site-packages/PySi…

IP地址定位技术在电商行业的应用

IP地址定位技术在电商行业的广泛应用引起了行业内外的广泛关注。该技术能够提供精确的位置信息,对于电商运营商而言有助于提供更加个性化和便捷的购物体验。 IP地址定位是一种通过Internet协议(IP)地址识别用户地理位置的技术。在电商行业中&…

windows录屏指南,最详细的教程来了!

在现代科技时代,录屏成为了一种非常常见的技术,它可以让我们轻松记录电脑屏幕上的内容,包括教学、演示、游戏体验等。windows作为全球最流行的操作系统之一,自然也提供了多种方式来录制屏幕。本文将为您介绍三种windows录屏方法&a…

B2B2C多用户手机购物商城快速搭建(java开源)

要快速搭建一个B2B2C多用户手机购物商城,需要使用Java语言和开源框架进行开发。以下是一个基本的搭建步骤: 选择合适的开发框架 首先需要选择一个适合开发B2B2C多用户手机购物商城的Java开源框架,它提供了丰富的功能模块和灵活的扩展性&…

cesium学习记录05-加载数据

1. 矢量数据: 1.1. GeoJSON 定义: 一个基于JSON的地理数据格式,Cesium支持GeoJSON的直接加载。 例子: 加载一个简易故宫建筑的GeoJSON数据。 代码: /*** 添加故宫geojson数据*/AddGuGong() {var viewer this.v…

基于百度语音识别API智能语音识别和字幕推荐系统——深度学习算法应用(含全部工程源码)+测试数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 翻译3. 格式转换4. 音频切割5. 语音识别6. 文本切割7. main函数 系统测试工程源代码下载其它资料下载 前言 本项目基于百度语音识别API,结合了语音识别、视频转换音频识别以及语句停顿…

从数据仓库到数据结构:数据架构的演变之路

在上个世纪,从电子商务巨头到医疗服务机构和政府部门,数据已成为每家组织的生命线。有效地收集和管理这些数据可以为组织提供宝贵的洞察力,以帮助决策,然而这是一项艰巨的任务。 尽管数据很重要,但CIOinsight声称&…

【C++】AVL树模拟实现插入功能

AVL树模拟实现插入 前言正式开始树节点树insert旋转左单旋右单旋左右双旋右左双旋 用旋转来平衡树测试 前言 本篇主要介绍AVL树的插入功能。其中就包含了最重要的旋转。 通过旋转来使得树平衡,是学习AVL树的一个重点,也是也是一个难点。 正式开始 先…

虹科方案 | 汽车总线协议转换解决方案

汽车总线: 汽车总线是一种用于在车辆电子系统中传输数据和控制信息的通信系统。它允许不同的电子控制单元(ECU)在车辆中相互通信,协调各个系统的操作,以实现功能的集成和协同工作。 在现代汽车中,综合通信…

提高办案效率:公检系统引入自动校对技术

引入自动校对技术到公检系统中可以有效提高办案效率。自动校对技术结合公检系统的特点,可以在以下方面提高办案效率: 1.节省时间:自动校对技术可以快速检测和修正法律文书中的语法、拼写和标点符号等错误。与手动校对相比,自动校对…

dfs+回溯做题笔记

题目链接:t矩阵中的路径_牛客题霸_牛客网 参考代码: import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * param matrix char字符型二维数组 * param …

虹科方案 | 汽车总线协议转换解决方案(二)

上期说到,虹科的PCAN-LIN网关在CAN、LIN总线转换方面有显著的作用,尤其是为BMS电池通信的测试提供了优秀的解决方案。假如您感兴趣,可以点击文末相关链接进行回顾! 而今天,虹科将继续给大家带来Router系列在各个领域的…

个推消息推送专项运营提升方案,基于AIGC实现推送文案智能生成

个推消息推送专项运营提升方案自今年3月份发布以来,已应用于游戏社交、影音资讯、电商购物等多个行业。现个推消息推送专项运营提升方案又实现了推送策略的智能化和推送流程的自动化,助力APP进一步提升消息推送的效率和效果。 丰富推送策略组合&#xf…

Tomcat10.1源码安装与部署

安装JDK 1、下载jdk17 [rootmysql80 ~]# wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz[rootmysql80 ~]# ll -h jdk-17_linux-x64_bin.tar.gz -rw-r--r--. 1 root root 174M Mar 18 03:53 jdk-17_linux-x64_bin.tar.gz2、安装目录[rootmysql8…

第三方电容笔怎么样?apple pencil的平替笔

在当今世界,高科技已经成为推动电子产品迅速发展的重要动力。无论是工作,还是学习,iPad平板都很方便。iPad平板电脑将会和我们的生活联系在一起,不管是现在还是未来。iPad配上一支简单的电容笔,不仅提高了工作效率&…

数据库管理-第九十七期 以一当十的数据库路线(20230810)

第九十七期 以一当十的数据库路线(20230810) 距离上一期已经过去了整整9天了,相较于前几个月的“生产队的驴”,确实慢了很多,归根结底有几点:一是19c OCM的相关内容暂时告一段落,少了一半内容&…

从NPM注册中心获取包

目录 1、搜索和选择要下载的包 1.1 为什么使用 1.2 工作原理 1、质量 2、维护 3、受欢迎程度 4、名气 1.1、开始搜索包 2、在本地安装下载和安装软件包 2.1 安装未限定作用域的包 2.2 安装有作用域的公共包 2.3 安装私有包 2.4 测试包安装 2.5 已安装的软件包版本…

LeetCode算法递归类—两两交换链表中的节点

目录 24. 两两交换链表中的节点 题解: 代码: 运行结果:​编辑 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节…

线程池工作原理深入解析

目录 1. 线程正常的生命周期 2. 为什么要用线程池? 3. 线程池的核心原理 4. 怎样创建线程池? 5.线程池的代码实现 6. ThreadPoolExecutor 源码分析 7. ThreadPoolExecutor 工作原理展示(重点) 1. 线程正常的生命周期 我们知…

Pyinstaller 打包 django 项目如何将命令行参数加入?

起因 Pyinstaller 打包 django 项目,打包成 manage.exe 后用命令行 cmd manage.exe runserver 0.0.0.0:8001 --noreload 来运行感觉很不方便。 希望能够直接把命令行参数也打包进去,直接运行 exe 。我走了些弯路,但最终实现了。 弯路 我看…