软件构造复习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_…

mybatis 注解式 XML式 通用mapper(tk-mybatis)使用

Jdbc、jpa、mybatis区别 1.Jdbc(java database connectivety)是java数据库连接规范,但由于其使用过于繁琐,出现了ORM(object relative mapping)对象关系映射对jdbc进行了封装,简化了操作,常见的ORM有mybatis、hibernate等 2.JPA(Java Persistence API) ,是Sun官方…

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

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

vue源码之mustache模板引擎1

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

js之-闭包

代码分析 html复制代码<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>对常见闭包的理解…

每日5题Day10 - LeetCode 46 - 50

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

Java面试题大全(从基础到框架,中间件,持续更新~~~)

从Java基础到数据库&#xff0c;Spring&#xff0c;MyBatis&#xff0c;消息中间件&#xff0c;微服务解决全部Java面试过程中的问题。&#xff08;持续更新~~&#xff09; Java基础 2024最新Java面试题——java基础 MySQL基础 mysql基础知识——适合不太熟悉数据库知识的小…

消息传递与集成:使用Springboot进行异步通信

消息传递与集成&#xff1a;使用Spring Boot进行异步通信 在现代的分布式系统中&#xff0c;异步通信已经成为了一种常见的设计模式。通过使用消息队列和事件驱动架构&#xff0c;我们可以实现系统之间的解耦&#xff0c;提高系统的可扩展性和可靠性。本文将介绍如何使用Sprin…

汽车防抱死制动系统ABS的单片机程序Proteus仿真设计

次设计对汽车防抱死系统进行简单的设计,针对车速、轮速两个信号进行分析,并根据最佳滑移率计算。采用对比实时滑移率对比分析,ECU控制制动器进行制动力调节使滑移率在制动过程处于最佳范围,保证系统具有良好制动性能。 汽车的制动液压调节器主要包含以下几个部件:调压电磁…

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;各种合路器的效率…

YOLOv8改进 | 卷积模块 | 用DWConv卷积替换Conv【轻量化网络】

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 在YOLOv8的GFLOPs计算量中,卷积占了其中大多数的比列,为了减少计算量,研究人员提出了用DwConv代替Conv。本文给大家带来的教程是将原来的Conv替换为DwConv。文章在介绍主要的原理后,将手把手教学如何进行模…

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;监控仅能看到的…

PHP基础学习笔记(面向对象OOP)

类和对象 <?php //声明一个名为 Fruit 的类&#xff0c;它包含两个属性&#xff08;$name 和 $color&#xff09;以及两个用于设置和获取 $name 属性的方法 set_name() 和 get_name()&#xff1a; class Fruit {// Propertiespublic $name;public $color;// Methodsfuncti…

回见,那果园

记不得何时开始骑行&#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曲线镜头的靶面尺寸镜头的几何相差相机镜头接口螺纹接…