1. 软件构造过程中的多维度视图

多维度视图
在这里插入图片描述

Moment维度关注于程序在某一个时刻的表现,而Period维度更关注于程序在一段时间内的表现;
    Build-time维度关注程序还未被投入运行,编码阶段的表现,而Run-time维度更关注于程序运行时的表现;
    Code-level维度关注程序的语句层面,Component-level维度更关注于一段代码,当作一个块观察比如一个包、一个库。

(1) Build-time, moment, and code-level view 关注的是源码的组织情况,可在词汇(源码)、语法(抽象语法树)、语义(类图)三个层面分别分析。

(2) Build-time, period, and code-level view 关注的是代码的变化(Code churn代码变化)

(3) Build-time, moment, and component-level view 关注的是包/库,而且是静态链接库

(4) Build-time, period, and component-level view 关注代码的更迭,与(2)中不同的是,这个维度下更关注文件版本的变化,而不是具体语句的变化(2中关注的是哪一行代码被修改了)----VCS的引出

(5) Run-time, moment, and code-level view 关注的是程序在某个时间点内存中的情况,如代码快照图(Code Snapshot)、内存信息转储(Memory dump)。

(6) Run-time, period and code-level view 关注的是代码的执行情况,执行跟踪

(7) Run-time, moment, and component-level view 关注的也是包/库,但却是在代码执行过程中的情况,如动态链接库

(8) Run-time, period, and component-level view 关注的是系统的使用情况,使用日志查看
2. 视图之间的联系

在这里插入图片描述
从无到有,写出了代码,就进入了Build-time维度,开始只是单个的没有任何联系的代码文件,所以是在moment+Code-level维度,此时随着时间的推移,代码删删改改,就属于Period+Code-level了,而代码越写越多成为了一个包,甚至形成了一个库,于是就属于moment+Component-level维度了,但是随着时间的推移,你的库文件由于需求的变化发生了变化,所以就属于Period+Component-level。代码写好了,投入运行,进入Run-time维度,观察的如果是某一句代码的执行后结果,那就是moment+Code-level维度,但如果看的是代码执行的轨迹,那就是Period+Code-level维度,而如果看的是一个库文件的连接情况等,那就是moment+Component-level维度了,如果看的是线程或进程的执行过程,也就是通过日志等手段查看一段时间内系统都做了什么事情,那么就是Period+Component-level了。

3. 软件构造过程中的质量因素
3.1 外部质量因素

①外部质量因素的第一个就是正确性,正确性是最重要的质量指标,在进行软件构造时一定要按照事先定义好的规约进行,构造过程中的每一个层次都要确保正确。在进行软件构造时,可以通过测试和调试、防御式编程、形式化方法去发现问题、改正问题。

②外部质量因素的第二个就是健壮性,健壮性是针对异常情况的处理,要确保程序在出现异常时不会崩溃。

③外部质量因素的第三个就是可扩展性,主要是关注对于软件的规约的修改是否容易,一般规模越大的软件的可扩展性越差,但是保留一定的可扩展性是必要的,我们需要软件能够应对变化。

④外部质量因素的第四个就是可复用性,指的是软件一次开发可以多次使用,我们在开发过程中要找到不同函数、软件之间的共性,以此来增强可复用性。

⑤外部质量因素的第五个就是兼容性,要求软件在不同的系统之间可以相互容易地集成,在不同的系统、架构之下也可以使用软件,这个是有一定难度的,因为不同软件有着不同的设定、规定。

⑥外部质量因素的第六个就是性能,这一点是建立在正确性的基础上的,必须先保证了正确性,然后再考虑性能的因素,如果无法绝对保证正确性,那么性能也是可以略作折中的。如果对一个软件进行过多的优化,那么很可能导致这个软件将无法在别的地方继续使用,可复用性降低,因为对于性能的提升必然要用到一些系统的特性,所以如果将软件性能提高最多,势必无法移动到别的地方继续使用。

⑦外部质量因素的第七个就是可移植性,要求软件可以简单地在不同的技术环境之间移植。

其实还有一些因素,但是不是非常重要了,所以就先不写啦。
3.2 内部质量因素

内部质量因素主要指的就是代码的可读性、代码量、复杂性、清晰程度。
3.3 外部内部质量因素的权衡

在正确的软件构造开发过程中,开发者应该将不同质量因素之间如何做出折中的设计决策和标准明确地写下来。虽然需要折中,但是正确性绝对不能折中。

哈工大软件构造第一章相关推荐

  1. 哈工大软件构造第一章总结

    软件构造第一章名为软件构造的多维视图和质量目标,作为整个课程的开篇,阐释了软件构造的对象是什么,以及软件系统构成的维度和指标. 1.软件构造的多维视图 第一章的第一部分内容可以由下面这幅图来概括: 那 ...

  2. 软件构造 第一章第二节 软件开发的质量属性

    ​软件构造 第一章第二节 软件开发的质量属性 1.软件系统质量指标 External quality factors affect users 外部质量因素影响用户 Internal quality ...

  3. 软件构造 第二章 第一节 软件生命周期和版本控制

    软件构造第二章 第一节 软件生命周期和版本控制 基本内容 Software Development Lifecycle (SDLC) Traditional software process mode ...

  4. 2022哈工大软件构造lab1小结(知识点)

    哈工大软件构造lab1小结 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 问题一 使用的库 异常处理机制 字符串内容检查 写入文件 问题二 problem 3:画一 ...

  5. 哈工大软件构造课程知识点总结(一)

    系列文章目录 哈工大软件构造课程知识点总结(一) 哈工大软件构造课程知识点总结(二) 哈工大软件构造课程知识点总结(三) 哈工大软件构造课程知识点总结(四) 哈工大软件构造课程知识点总结(五) 哈工大 ...

  6. 哈工大软件构造课程知识点总结(三)

    系列文章目录 哈工大软件构造课程知识点总结(一) 哈工大软件构造课程知识点总结(二) 哈工大软件构造课程知识点总结(三) 哈工大软件构造课程知识点总结(四) 哈工大软件构造课程知识点总结(五) 哈工大 ...

  7. 哈工大软件构造实验一

    哈工大软件构造lab1 实验目标 实验过程 Magic Square 第一部分 要求 实现 第二部分 要求 实现 Turtle Graphics 第一部分 绘制多边形 第二部分 计算方位 第三部分 凸 ...

  8. 哈工大软件构造期末知识点总结

    哈工大软件构造试题构成: 1.30-45分的选择题,10-20题 2.55-70分的简答与设计题,5-6题 考试知识点(不全面): 1.git工具的知识点 2.Java设计模式(一共有23个,主要考察 ...

  9. 哈工大软件构造 复习

    哈工大软件构造试题构成: 1.30分的选择题 2.70分的简答题 2019考试知识点(重要的,但不涵盖全部考试范围): 1.git工具的知识点(没有考察命令行,考察的主要是git的演变及各部分的作用) ...

最新文章

  1. apue学习之文件IO第二部分
  2. CentOS7.2基于LAMP搭建WordPress,并自定义Logo和名称
  3. python编程自学能学会吗-Python能自学成功吗?
  4. win10上编译libharu库
  5. Java日志操作总结
  6. Chrome 爬虫插件 Web Scraper
  7. mongdb安装配置
  8. 微信小程序开发教程(六)配置——app.json、page.json详解
  9. android多点触控
  10. 修剪花卉(codevs 1794)
  11. case when的几种用法
  12. 更改计算机的主题和桌面背景,禁止更改电脑主题背景的技巧
  13. 从零开始Android游戏编程(第二版) 第一章 搭建开发环境
  14. AIS 2019(ACL IJCAI SIGIR)论文研讨会研究趋势汇总
  15. 中断系统应用实例(1)用定时器T1工作方式1控制两个LED以不同周期闪烁
  16. Understand安装与使用
  17. 学人工智能电脑主机八大件配置选择指南
  18. 计算机中的英语六级作文万能模板,英语六级作文万能模板汇总
  19. 51单片机花样流水灯
  20. MapStruct Map 转换成对象

热门文章

  1. 在Linux上,使用time优雅的统计程序运行时间
  2. 基于JavaWeb的在线外卖系统平台设计
  3. ipad发布会ipad_如何在iPad上调试网站
  4. 【转】光荣的传统,荣耀的历史,勇敢的心!
  5. Linux应用编程和网络编程(3)------- Linux中文件的属性
  6. 「nature protocols」组学数据的通路富集分析和可视化: g:Profiler, GSEA, Cytoscape 和 EnrichmentMap...
  7. HTTP上传数据 :表单,二进制数据(multipart/form-data application/octet-stream boundary)...
  8. 椭圆曲线:超级完整的椭圆曲线学习记录
  9. 《深入理解Java虚拟机(第2版)》-笔记
  10. 自勉三句话--关于职业生涯规划