COSMIC 方法 - 需求评估 映射阶段

news2024/11/25 16:56:41

通用软件模型
原则 - COSMIC 通用软件模型
a) 软件块跨越边界与功能用户交互、并与边界内的持久存储介质进行交互。
b) 被度量软件块的 FUR 能够被映射到唯一的一组功能处理。
c) 每个功能处理由一系列子处理组成
d) 一个子处理可以是一个数据移动或者是一个数据运算。
e) 有四类数据移动:输入,输出,写和读。
输入从功能用户移动一个数据组到功能处理。
输出从功能处理中移出一个数据组到功能用户。
写从功能处理移动一个数据组到持久存储介质。
读从持久存储介质移动一个数据组到功能处理。
f) 一个数据移动仅移动单个数据组
g) 一个数据组描述一个单一的兴趣对象,它由唯一的一组数据属性集组成。
h) 每个功能处理都是通过触发输入数据移动来启动的。触发输入移动的数据组由功能
用户响应触发事件生成
i) 一个功能处理包括至少一个输入数据移动,以及一个写或输出数据移动,即一个功
能处理应该包含至少两个数据移动。一个功能处理中数据移动的数量没有上限。
j) 作为对度量目的的一种近似处理,数据运算子处理不单独度量。任何数据运算的功
能被假定已经计算在相关的数据移动内了。

重要提示:上述原则中的所有 COSMIC 关键词(除了“持久存储介质”)都应该以“类型”结尾。例如,“子处理”实际上应该写为“子处理类型”,“输入”应写作“输入类型”。所有的 FSM 方法都是为了识别功能或数据的类型,而非实例。

关键关系:事件/功能用户/功能处理
原则 b)和 h)告诉我们,软件的任务是响应在其功能用户的世界中发生的事件。功能用户通知软件事件发生,并发送事件相关的数据。作为对该事件的响应,软件必须为功能用户做些有用的事情。我们将这种“有用的事情”称为功能处理。 所有软件的 FUR 都可以用功能处理来表示。存在于功能用户世界中的事件与软件的功能处理之间的关系如图所示。(边界是正在度量的软件与其功能用户之间的接口。)
在这里插入图片描述
这个图通常的解释是,事件引发功能用户生成消息(数据组),该消息由“触发输入”移动到其功能处理中,从而启动功能处理。(请注意,当人类功能用户决定对现有数据进行查询时,才真正生成该事件,然后生成消息。)
事件就是“发生的事情”。触发事件要么已经发生,要么没有发生;在待度量软件的 FUR 中,它不能被再拆分。

案例:一场足球比赛。三个不同的软件程序的 FUR 可能对比赛中发生的事件有完全不同的视图。 应用程序 A 允许记者在报纸上刊登足球比赛的结果。FUR 识别的唯一事件是“比赛结束”。 应用程序 B 是一个“现场直播”系统,它允许记者通过网络向应用程序的在线用户发送在比赛期间记者 认为重要的事件的评论,如开球、进球、犯规、受伤等。FUR 识别的唯一事件是“记者向应用程序 B 输入比赛时发生的任何事件的评论” 应用程序 C 允许对球员的表现进行实时监控。每个球员都携带一个 GPS 定位装置和一个心率监控 器,以非常短的时间间隔定期传送数据。 FUR 识别的唯一事件是时钟的“节拍”,它负责将每个球员 在每个“节拍”时刻所处的位置和心率数据传输到应用程序 C。 (请记住,对于以上这些 FUR,我们实际上应该记录“事件类型”。这三个 FUR,每一个都只识别了一 个事件类型,但这三个事件类型又完全不同。但就事件实例而言 ,App A 预计每场比赛只发生一 次,App B 预计每场比赛可能发生几十次,而 App C 则可能每场比赛发生成千上万次。)

请注意,图中没有说明各种概念之间关系的程度(或“基数”)。例如,一个事件可能被相同或不同的软件块的多个功能用户检测到。 (例如地震可被多个传感器检测到);一个软件块功能用户也可以感知到多种类型的事件(例如,人类与软件的交互)。

适用于图中关系基数的唯一一条规则是(这是一个非常重要的规则):“任何触发待度量软件块的触发输入可能只启动该软件的一个功能处理”。

FUR 和功能处理的结构
原则 b)、c)和 d)描述了 FUR 的理论结构,也就是它分解为功能处理和子处理的结构,如 图所示
在这里插入图片描述
[“鱼尾”符号表示两个相邻概念之间的推导关系。原则 i)表明一个功能处理可以有 2 个(最少)至 n 个数
据移动。 ]
正确识别功能处理是映射阶段最重要的步骤。所以必须完全理解它的定义。

定义- 功能处理
a) 体现了被度量软件的功能用户需求基本组成部分的一组数据移动,这些数据移动在该
FUR 中是唯一的,并能独立于该 FUR 的其他功能处理进行定义。
b) 一个功能处理可能只有一个触发输入。每个功能处理在接受到由其触发输入数据移动
所移动的一个数据组后,开始进行处理。
c) 一个功能处理的数据移动的集合是响应触发输入的所有可能的功能性需求所需要的集
合。
注 1:实现时,一个功能处理实例,在收到一个触发输入实例移动的数据组实例时,才开
始执行处理。
注 2:除了触发输入外,一个功能处理的 FUR 可能需要一个或多个其他的输入。
注 3:如果功能用户发送了包含错误的数据组,例如,由于传感器失灵,或者人输入的命
令存在错误,通常是由功能处理来判断事件是否确实发生、和/或输入的数据是否有效、
以及如何响应。

数据运算的统计
COSMIC 方法没有刻意度量数据运算,因为目前还没有被普遍接受的度量数据运算的方法,因此它可以与数据移动的度量相结合,生成有意义的功能规模。因此,我们引用原则 j),假设每个数据移动都可以承担与之相关联的数据运算,如图部分所示。事实证明,这个假设对于所有实践中的度量目的是合理的,正如设计该方法的初衷:用于项目性能度量和估算,并且在该方法的常用领域都行得通。如果出现这样的合并假设无法充分代表数据运算的场景时,COSMIC 度量方法支持对方法的本地化扩展,以克服其局限性。

四种类型的数据移动
原则 e)如图所示。
在这里插入图片描述
输入和输出分别将数据从功能用户移入或移出软件。
读和写分别将数据从持久存储介质移出或移入软件。

持久存储介质
持久存储介质(如上图所示)是通用软件模型的一个抽象概念。在模型中,如果需要存储数据或检索存储的数据,软件的任何层都可以访问该存储介质。 当一个功能处理写入了一些数据到持久存储介质后,该“持久数据”就可以被其他功能处理所用,或者被写入它的功能处理的另一个实例所用。从这个概念可以推断,如果您正在度量一个必须存储数据或检索存储数据的应用程序,则不必考虑底层软件或硬件如何从物理层面处理这些数据。只需分析通过写和读需要存储或检索数据的 FUR。如果在度量策略阶段已经把物理硬件设备定义为软件的功能用户,那么只需要把持久存储介质看作物理磁盘或内存来考虑。而功能用户总是通过输入和输出与要度量的软件进行交互。

一个数据移动移动了单一数据组,描述了单个兴趣对象
那么,我们如何区分两个不同的输入数据移动,以及区分输出、读和写呢?
兴趣对象是待度量软件必须为之处理或存储数据的“事物”(物理或概念上的)。数据移动会移动由一个或多个数据属性(在其他 FSM 方法中称为“数据元素类型”)组成的单个数据组。数据组中的所有属性都描述同一个兴趣对象。
根据度量目的,不需要识别数据属性。提到它们的唯一原因是,有时通过检查数据属性有助于区分不同的数据组及兴趣对象。
图中用两个例子展示了这三个概念之间的关系。
在这里插入图片描述
为了帮助您理解这些概念:
• 如果您熟悉在业务应用领域通常使用的数据分析方法,那么在实体关系分析中找到的实体类型,以及在关系数据分析中找到的第三范式的主体都是兴趣对象。 但这些分析方法通常只适用于存储(或“持久”)数据组结构。对于 COSMIC 度量来说需要应用这些分析方法来区分兴趣对象,从而区分功能处理的输入和输出中的数据移动。同时,任何一个输入或输出移动一个瞬态数据组时,也都是兴趣对象。
• 兴趣对象与 UML 分析中的对象类是一对一的关系,尽管它们是不同的概念。
• 在实时软件领域,通常不需要考虑兴趣对象。如图的实时案例,传感器可以看作是发送关于自身数据的功能用户,即功能用户扮演兴趣对象的角色,因此它将在度量策略阶段的早期被识别出来。(除非这样做有助于度量过程,否则做这种区分是没有意义的。)

映射阶段
如果软件的可获取制品达到功能处理颗粒度级别,我们便可以通过 COSMIC 模型推导出 FUR。这个过程的步骤(记住我们一直说的是类型)如下:
• 识别软件必须响应的功能用户世界中的独立事件,即“触发事件”。
• 识别这些触发事件是由哪些功能用户响应的,后者会生成一个由触发输入移动的数据组。
• 为每个触发输入识别一个功能处理。
• 在每个功能处理中,识别响应该触发输入的、满足 FUR 所需的所有其他数据移动,包括输入、输出、读和写。
对于最后一步,需要识别每次数据移动所移动的数据组和所描述的兴趣对象。

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

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

相关文章

[flink 实时流基础] 转换算子

flink学习笔记 数据源读入数据之后,我们就可以使用各种转换算子,将一个或多个DataStream转换为新的DataStream。 文章目录 基本转换算子(map/ filter/ flatMap)聚合算子(Aggregation)按键分区(…

【Spring MVC】快速学习使用Spring MVC的注解及三层架构

💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录文章:【Spring MVC】快速学习使用Spring MVC的注解及三层架构 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 Spring Web MVC一: 什么是Spring Web MVC&#xff1…

成绩管理系统|基于springboot成绩管理系统的设计与实现(附项目源码+论文)

基于springboot成绩管理系统的设计与实现 一、摘要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装毕业设计成绩管…

全局自定义指令实现图片懒加载,vue2通过js和vueuse的useintersectionObserver实现

整体逻辑: 1.使用全局自定义指令创建图片懒加载指令 2.在全局自定义指令中获取图片距离顶部的高度和整个视口的高度 3.实现判断图片是否在视口内的逻辑 一、使用原生js在vue2中实现图片懒加载 1.创建dom元素,v-lazy为自定义指令,在自定义指令传入图片…

瑞吉外卖实战学习--8、人员编辑更新

人员编辑更新 前言1、进入编辑窗口需要先获取用户信息2、通过上篇文章的update的方法来改变数据3、测试效果 前言 1、进入编辑窗口需要先获取用户信息 通过注解PathVariable 来获取路径需要携带的id然后赋值到路径上,再通过id查询用户信息 /*** 通过id查询用户信…

Java毕业设计-基于springboot开发的招聘信息管理系统平台-毕业论文+答辩PPT(附源代码+演示视频)

文章目录 前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求分析3、系统功能结构 三、系统实现展示1、系统功能模块2、管理员功能模块3、企业后台管理模块4、用户后台管理模块 四、毕设内容和源代码获取总结 Java毕业设计-基于spri…

黄金涨是商品牛市的领先信号

自2022年11月以来,黄金价格持续上涨,目前已经突破历史新高,历史上黄金上涨,大多是商品全面牛市的领先信号。在2008年Q4、2019年也出现过,黄金比其他商品更强,但随后的2009年和2020年均是商品的全面牛市。同…

【前端】layui前端框架学习笔记

【前端目录贴】 参考视频:LayUI 参考笔记:https://blog.csdn.net/qq_61313896/category_12432291.html 1.介绍 官网:http://layui.apixx.net/index.html 国人16年开发的框架,拿来即用,门槛低 … 2. LayUi的安装及使用 Layui 是一套开源的 Web UI 组件库&#xff0…

【论文阅读】UniLog: Automatic Logging via LLM and In-Context Learning

注 由于其公司的保密政策,本文没有公开源代码,数据是公开的。 文章目录 摘要一、介绍二、背景和动机2.1、日志语句生成2.2、大语言模型2.3、上下文学习(In-Context Learning,ICL) 三、UNILOG3.1、模型骨干3.2、提示策略3.2.1、提…

stable diffusion如何下载预处理器?

如何下载预处理器? 具体位置:SD文件>extensions>sd-webui-controlnet>annotator” 把整个文件夹复制到SD的文件夹里面 里面有一个“downloads”文件夹 把这些模型复制到“downloads”文件夹里

YOLOV5训练自己的数据集教程(万字整理,实现0-1)

文章目录 一、YOLOV5下载地址 二、版本及配置说明 三、初步测试 四、制作自己的数据集及转txt格式 1、数据集要求 2、下载labelme 3、安装依赖库 4、labelme操作 五、.json转txt、.xml转txt 六、修改配置文件 1、coco128.yaml->ddjc_parameter.yaml 2、yolov5x.…

PLC的大脑和心脏——CPU及其分类、端子接线图

CPU不断地采集输入信号,执行用户程序,刷新系统的输出。 根据供电方式和输入/输出方式的不同,CPU分为3类,如下图1。 图1 CPU的分类 第1对字母,表示CPU的供电方式,AC(Alternating Current&#…

vcf文件可以用excel打开吗?四种解决方案

vcf文件可以用excel打开吗? 当然可以。 一、VCF文件简介 VCF(vCard)文件是一种用于存储联系人信息的文件格式。它通常包含姓名、电话号码、电子邮件地址、地址等详细信息。VCF文件在多种设备和操作系统中广泛使用,特别是在电子邮…

百度云加速方法「Cheat Engine」

加速网盘下载 相信经常玩游戏的小伙伴都知道「Cheat Engine」这款游戏内存修改器,它除了能对游戏进行内存扫描、调试、反汇编 之外,还能像变速齿轮那样进行本地加速。 这款专注游戏的修改器,被大神发现竟然还能加速百度网盘资源下载&#xf…

MySQL数据库备份策略与实践详解

目录 引言 一、MySQL数据库备份的重要性 (一)数据丢失的原因 (二)数据丢失的后果 二、MySQL备份类型 (一)根据数据库状态 (二)根据数据的完整性 (三)…

uniapp开发App(二)开通 微信授权登录功能(应用签名、证书、包名 全明白)

前言:开发App肯定要包含登陆,常用登陆方式很多,我选择微信登陆。 一、如何获得微信的授权登陆 答:申请,根据uniapp官网的提示有如下三个步骤 开通 1. 登录微信开放平台区,添加移动应用并提交审核&#xf…

基于java+SpringBoot+Vue的网上书城管理系统设计与实现

基于javaSpringBootVue的网上书城管理系统设计与实现 开发语言: Java 数据库: MySQL技术: SpringBoot MyBatis工具: IDEA/Eclipse、Navicat、Maven 系统展示 前台展示 后台展示 系统简介 整体功能包含: 网上书城管理系统是一个基于互联网的在线购书平台&#…

MSTP环路避免实验(华为)

思科设备参考:MSTP环路避免实验(思科) 一,技术简介 MSTP(多生成树协议),MSTP解决了STP和RSTP没有考虑vlan的问题,STP和RSTP将所有的vlan共享为一个生成树实例,无法实现…

STM32 字符数组结束符 “\0”

STM32 字符数组结束符 “\0” 使用字符数组使用printf,string参考 使用字符数组 使用STM32的串口发送数据,核心代码如下: char str[] "hello world!\n\r";while(1) {HAL_UART_Transmit(&huart2, str, sizeof (str), 10);HAL…

AI预测福彩3D第22弹【2024年3月31日预测--第5套算法开始计算第4次测试】

今天,咱们继续进行本套算法的测试,今天为第四次测试,仍旧是采用冷温热趋势结合AI模型进行预测。好了,废话不多说了。直接上结果~ 仍旧是分为两个方案,1大1小。 经过人工神经网络计算并进行权重赋值打分后,3…