软件构造复习1

 一、软件构造的多维度视图:

共有三个维度:1.按阶段划分:构造时/运行时视图,2.按动态性划分:时刻/阶段视图,3.按构造对象层次划分:代码/构件视图

具体可如图所示(图片来自PPT):

关于此图的一些理解学习:

在build-time构造阶段时:从代码视角来看,我们关注于源代码的逻辑层次,如类、方法、接口等;从构件视角来看,我们关注于构件——代码的物理层次,如包、文件、库等;从时刻视角来看,我们关注特定时刻的软件状态;从阶段视角来看,我们关注软件状态随时间的变化——重点在变化。

在run-time运行阶段时:从代码视角来看,我们关注于逻辑实体在内存中如何实现;从构件视角来看,我们关注于物理实体在硬件环境下如何实现;从时刻视角来看,我们关注逻辑/物理实体在内存/硬件环境下特定时刻的状态;从阶段视角来看,我们关注逻辑/物理实体在内存/硬件环境下状态随时间的变化——重点在变化。

二、软件构造的阶段划分、各阶段的构造活动

从无到有代码:编程,技术手段是ADT/OOP面向对象的编程;

从代码到组件:设计,技术手段是ADT/OOP,面向可复用性和可维护性;

从构建阶段到运行阶段:Debug,单元测试或者融合测试,面向健壮性和正确性;

从时刻到时段:版本控制,动态链接

开发就是各个视图的转化等,如图(图片来自PPT):

三、内部,外部质量指标

外部因素影响客户,内部因素影响软件以及开发者,外部质量取决于内部质量

外部指标有:

正确性:(最重要的质量指标)保持正确性的技术手段有:测试和调试(不能提高程序能力)、防御式编程、形式化方法(通过形式化验证发现问题)

健壮性:(是对正确性的补充)——出现异常时不要崩溃

可扩展性:规约更改时是否容易;可复用性:一次开发多次使用

性能——“性能毫无意义,除非有足够的正确性”——对其关注要与其他指标折中;及时性等

内部指标有:代码行数,可读性,可理解性等

四、软件配置管理SCM与版本控制系统VCS

SCM:追踪控制软件变化,其中SCI(软件配置项)是软件中发生变化的基本单元(如文件);基线是软件变化中的“稳定时刻”(如版本);CDMB(配置管理数据库)是SCI变化信息+基线

VCS:有本地,集中式,分布式三种。本地的仓库存储于开发者本地机器,无法共享和协作;集中式的仓库存储于独立的服务器,支持多开发者之间的协作;而分布式的是前两种的结合,仓库存储于独立的服务器+每个开发者的本地机器

五、Git

git分为三个部分,本地库.git——本地的CMDB;工作目录:本地文件系统;工作暂存区:隔离工作目录和Git仓库

其中关系如下(图片来自网络)

Object Graph:版本演化图,a->b表示b的基础上演化得到了a

VCS与Git的差别:传统VCS存储版本之间的变化(行);Git存储发生变化的文件(而非代码行),不变化的文件不重复存储

如图(图片来自PPT)

“产生冲突的原因”:

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。 Git 无法替我们决定使用哪一个。必须人为决定新代码内容。查看状态(检测到有文件有两处修改)。

git的一些指令(图片来自网络)

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

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

相关文章

信息系统项目管理师0129:输入(8项目整合管理—8.7监控项目工作—8.7.1输入)

点击查看专栏目录 文章目录 8.7 监控项目工作8.7.1 输入8.7 监控项目工作 监控项目工作是跟踪、审查和报告整体项目进展,以实现项目管理计划中确定的绩效目标的过程。本过程的主要作用: 让干系人了解项目的当前状态并认可为处理绩效问题而采取的行动;通过成本和进度预测,让…

mac 系统正确安装nvm

mac 系统正确安装nvm 使用镜像命令 git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout git describe --abbrev0 --tags配置环境变量: cd ~ vi .zshrc然后将以下信息赋值到文件当中保存: export NVM_…

内外网文件传输安全可控的方式有哪些?这几款软件值得参考

在信息化时代,随着企业对网络安全和数据保护需求的日益增强,内外网隔离已成为一种常见的网络安全策略。内外网隔离旨在防止未经授权的访问和数据泄露,确保企业网络的安全稳定。然而,在实施内外网隔离的同时,如何实现文…

vue源码之mustache模板引擎1

模板引擎的一个有点:它是将数据转为视图的最优雅的方法 对于下面的数据 [{"name":"小名",age:"12","sex":男},{"name":"小红",age:"12","sex":女},{"name":"小王…

每日5题Day10 - LeetCode 46 - 50

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;46. 全排列 - 力扣&#xff08;LeetCode&#xff09; class Solution {//这道题就是一个dfs//把所有结果遍历&#xff0c;到叶子节点就可以添加结果了List<Int…

git回退到指定版本,同时提交记录也会删除

第一步&#xff1a; git reset --hard xxx (需要恢复版本的 commit id)第二步&#xff1a;branch_name就是远程分支的名称 git push origin <branch_name> --force

异相(相位不平衡)状态下的合成器效率分析-理论与ADS仿真

异相&#xff08;相位不平衡&#xff09;状态下的合成器效率分析-理论与ADS仿真 12、ADS使用记录之功分器设计中简单介绍了威尔金森功分器的设计方法。一般来讲&#xff0c;功分器反过来就能作为合路器使用&#xff0c;在输入信号相位一致的情况下&#xff0c;各种合路器的效率…

mySql从入门到入土

基础篇 在cmd中使用MYSQL的相关指令&#xff1a; net start mysql // 启动mysql服务 net stop mysql // 停止mysql服务 mysql -uroot -p1234//登录MYSQL&#xff08;-u为用户名-p为密码&#xff09; //登录参数 mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认1…

infoq读书笔记-云原生时代,如何建设稳定性可观测体系?

而可观测性则是把Log、Trace、Metric拧成了一股绳&#xff0c;让三大支柱互相之间建立亲密的“血缘关系”&#xff0c;通过这种关系我们可以结构化的从整体到局部再到具体细节的观测业务&#xff1a; 图片来自网络如果把业务系统比作一座海上的冰山&#xff0c;监控仅能看到的…

回见,那果园

记不得何时开始骑行&#xff0c;何时开始爬山&#xff0c;何时偶遇洛师傅&#xff0c;何时进了那半山腰的果园。 似乎很远&#xff0c;又很近。 昨天打电话给果园的师傅&#xff0c;本意问问杏是否熟了&#xff0c;周末骑行过去、进山聊天顺道吃个新鲜。 洛师傅呵呵的笑…

Unity | 框架MVC

目录 一、MVC介绍 二、搭建UI界面 三、代码实现 1.Model层 2.View层 3.Controller层 四、MVC框架测试 五、知识补充 一、MVC介绍 model&#xff1a;数据层。界面展示的数据&#xff08;需要进行初始化、更新、保存、事件通知等操作&#xff09;&#xff0c;单例模式&am…

【golang】内存对齐

什么是内存对齐 在访问特定类型变量的时候通常在特定的内存地址访问&#xff0c;这就需要对这些数据在内存中存放的位置有限制&#xff0c;各种类型数据按照一定的规则在空间上排列&#xff0c;而不是顺序的一个接一个的排放&#xff0c;这就是对齐。 内存对齐是编译器的管辖…

机器视觉-硬件

机器视觉-硬件 镜头焦距凸透镜焦点不止一个相机镜头由多个镜片组成对焦和变焦 镜头光圈光圈的位置光圈系数F 镜头的景深景深在光路中的几何意义 远心镜头远心镜头的种类远心镜头特性应用场景 镜头的分辨率镜头反差镜头的MTF曲线镜头的靶面尺寸镜头的几何相差相机镜头接口螺纹接…

个人手里有一批宽带资源,想跑PCDN 如何做?

网友问我手里有一批宽带资源&#xff0c;想要跑PCDN该如何做&#xff0c;可以按照以下步骤操作&#xff1a; 了解PCDN的基本原理和市场需求。PCDN&#xff08;Peer-to-Content Delivery Network&#xff09;是一种基于P2P技术的内容分发网络&#xff0c;通过将用户设备上的空闲…

javas-core VS java-object-diff

对照工具选择 javas-core 和 java-object-diff ,对比demo https://github.com/kofgame/objectdiff-vs-javers&#xff0c;都为同源对比&#xff0c;都支持嵌套对象。 使用JMH测试方法进行性能测试&#xff0c;使用题库的QuestionResponseVO对象来进行对照对比&#xff0c;进行…

【Python搞定车载自动化测试】——Python基于Pytest框架实现UDS诊断自动化(含Python源码)

系列文章目录 【Python搞定车载自动化测试】系列文章目录汇总 文章目录 系列文章目录&#x1f4af;&#x1f4af;&#x1f4af; 前言&#x1f4af;&#x1f4af;&#x1f4af;一、环境搭建1.软件环境2.硬件环境 二、目录结构三、源码展示1.诊断基础函数方法2.诊断业务函数方法…

深入探索Python基础:两个至关重要的函数

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、初学者的基石&#xff1a;print与input函数 二、类型转换&#xff1a;从字符串到浮点数…

【完整解析】2024电工杯数学建模A题论文与代码

园区微电网风光储协调优化配置 1 论文2 代码分享2.1 第三题第一问 3 数据与代码 1 论文 2 代码分享 2.1 第三题第一问 function anssq3w1ObjFun(ttt,id); %ttttt(1); tt[750,0,0,1000,600,500]; limttt(1)*200; limmttt(2)*500*0.9-ttt(2)*500*0.1; t1ttt(3)*1000;t2ttt(4)*1…

ASP+ACCESS多功能论坛程序设计

摘 要 随着计算机的广泛应用&#xff0c;人们已经对网络不再感到陌生。在科技飞速发展的今天&#xff0c;电脑信息技术与各行各业进行了有效的结合。人们在网上可以进行网上购物&#xff0c;网上交友&#xff0c;电子商务&#xff0c;网络营效等等。面对强大的网络功能&#x…

通过Kafka-Logger插件收集流量进行漏洞扫描

通过Kafka-Logger插件收集流量进行漏洞扫描 方案 可以通过APISIX kafka-logger 插件将日志作为 JSON 对象推送到 Apache Kafka 集群中&#xff0c;消费Kafka里的数据格式化后添加到MySQL。 方案详情 1、登录APISIX&#xff0c;启用内置的kafka-logger 插件&#xff1a; 2…