哈工大2022软件构造课程总结1

这篇文章是对于哈工大2022年软件构造课程第一讲“软件构造的多维度视图和质量目标”的总结和思考

目录

前言

一、多维度视图

1.1 Build-time views

1.2 Run-time views

二、软件构造:视图之间的转换

三、 软件构造过程中的质量因素

3.1 外部质量因素

3.2 内部质量因素

3.3 外部内部质量因素的权衡

四、软件构造的质量目标

 总结


前言

软件构造课程的总体目标就是让学生学会从三个维度看软件系统的构成,学会用怎样的模型/视图描述软件系统,将“软件构造”看成是“不同视图之间的转换”。要先搞清楚:软件构造的对象是什么、如何刻画,然后再关注:如何构造。其中多维度视图主要包括构造时/运行时视图(按阶段划分)、时刻/阶段视图(按动态性划分)、代码/构件视图(按构造对象的层次划分)。

这门课程还要让学生明白软件构造过程中应考虑的重要的质量指标,如果达不到期望的质量目标会有什么后果,有哪些面向质量指标的软件构造技术。除了要搞清楚“要构造的结果是什么”,还要理解清楚“构造的结果怎样才算好”。

以上的文字概括性地解释了软件构造这门课程的学习内容和目标,下面一起开启这一讲的学习吧。

一、多维度视图

首先来看多维度视图的总体情况:

这张图在平面上体现了软件构造的三个维度,分别是Build-time/Run-time,Moment/Perion,Code-level/Component-level,列举了这些维度下的内容,下面我们来一一解读。

1.1 Build-time views

 构造时视图如上图圈中所示,在构造阶段中,具体的过程主要是从想法转化为需求,然后按照需求进行设计,随后得到具体的代码,然后将代码转化成可以运行的或是可以安装到其他位置的包,可以应用于其他地方。

在构造阶段,从代码视图上来看就是代码的逻辑组织,从构件视图上来看就是代码的物理组织,从时刻视图上来看就是特定时刻软件的形态,从阶段视图来看就是软件形态随时间的变化。

1.2 Run-time views

运行时视图如上图圆圈中所示。在运行时,在代码层面上是关注逻辑实体在内存中如何呈现;在构件层面是关注物理实体在物理硬件环境中是如何呈现的;在时刻层面上是关注逻辑/物理实体在内存/硬件环境中特定时刻的形态如何;在阶段层面上是关注逻辑/物理实体在内存/硬件环境中的形态随时间如何变化。

在Run-time, Moment, Code-level这个位置处,主要关注的是代码快照图,即描述程序运行时某时刻内存中变量层面的状态,代码快照图的实例如下图:

 

然后在Run-time, Moment, Code-level这个位置处,还有一个内容是Memory dump(内存信息转储)。之后在Run-time, Code-level, Period这个位置处,还有一个内容是Execution trace,这个是执行跟踪,用日志的方式记录程序执行的调用次序。

本学期我们将重点关注的就是下图这些内容

 

二、软件构造:视图之间的转换

 视图之间转换具体如下:

在我们进行软件构造的过程中,经历的过程主要就是代码从无到有,然后将代码变成构件,可以通过静态链接或者是包的形式应用到其他地方,还有就是要完成从从构建到运行的转换,最后要实现从时刻到过程的变换。

三、 软件构造过程中的质量因素

3.1 外部质量因素

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

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

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

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

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

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

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

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

3.2 内部质量因素

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

3.3 外部内部质量因素的权衡

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

四、软件构造的质量目标

第一条是代码的可理解性,具体内容如下图所示:

第二条是可复用性,具体内容如下图所示:

 

第三条是保持性和适应性,具体内容如下图:

 

第四条是健壮性,具体内容如下图所示:

 

第五条是性能,具体内容如下图所示:

 

 总结

这一讲主要将软件构造课程要讲授的内容和具体构造软件时需要注意的地方详细讲述了出来,是整门课程的主要概括的一讲,让学生可以从整体上了解软件构造的整体轮廓,对于如何构造软件和构造软件时需要注意的内容有了一个印象,这样在之后的实验中也可以进行尝试,将上课学习的理论进行融汇贯通。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值