HIT软件构造学习笔记【一】(第1章)

本文详细探讨了软件构造的多维度视图,包括构造时视图、运行时视图,以及代码级和组件级的区分。同时,阐述了视图之间的转换过程,如从代码到组件的构建,以及从构造时到运行时的演变。软件质量方面,文章区分了外部质量因素,如正确性、健壮性和性能,以及内部质量因素,如代码的可读性和可维护性。总结强调了质量的五大核心因素:可理解性、可复用性、可维护性、健壮性和表现。
摘要由CSDN通过智能技术生成

目录

1 软件构造的多维度视图和质量目标... 2

1.1 软件多维视图※.. 2

1.1.1 软件的构造时视图... 2

1.1.2 软件的运行时视图... 3

1.2 视图转换... 3

1.3 软件质量... 4

1.3.1 外部质量因素... 4

1.3.2 内部质量因素... 5

1.4 总结... 5

  1. 软件构造的多维度视图和质量目标
    1. 软件多维视图※

这张图便是软件的多维视图,它有着三个维度:

构造时视图(Build-time),运行时视图(Run-time);

代码级视图(Code-level),组件级视图(Component-level);

瞬时视图(Moment),阶段视图(Period)。

      1. 软件的构造时视图

代码级视图:源码、类结构;代码变化
表示代码的逻辑组织

组件级视图:文件、目录、包、库、静态链接、测试项;配置项、版本
表示代码的物理组织

瞬时视图:源码、类结构;文件、目录、包、库、静态链接、测试项
表现源码和组件在特定时刻的软件形态

阶段视图:代码变化;配置项、版本
表现软件形态随时间的变化

源码组织在文件中,进而组织在目录

文件存档在中,并逻辑上归属于组件子系统

可重用的模块以的形式存在,库存储在磁盘文件

静态链接:库被拷贝进代码形成整体,执行的时候无需提供库文件

      1. 软件的运行时视图

代码级视图:代码快照、内存转储;堆栈轨迹、并发线程
逻辑实体在内存中如何呈现

组件级视图:包、库、动态链接、数据库、网络、硬件;事件日志、多进程、分布式程序
物理实体在物理硬件环境中如何呈现

瞬时视图:代码快照、内存转储;包、库、动态链接、数据库、网络、硬件
逻辑/物理实体在内存/硬件环境中特定时刻的形态

阶段视图:堆栈轨迹、并发线程;事件日志、多进程、分布式程序
逻辑/物理实体在内存/硬件环境中的形态随时间的变化

动态链接:库文件不会在构建阶段被加入可执行软件,仅仅做出标记;程序运行时,根据标记装载库至内存;发布软件时,将程序所依赖的所有动态库都复制给用户

分布式程序:需要多个运行程序,分别部署于多个计算机物理环境

代码快照:描述程序运行时内存里变量层面的状态

内存转储(Memory dump):一个包含进程内存拷贝的磁盘文件,包含程序异常退出时的寄存器、调用栈、程序数据等,调试器可以加载转储文件并显示信息

执行跟踪(Execution tracing):软件层面,用日志方式记录程序执行的调用次序

事件日志:系统层面的日志

    1. 视图转换

代码

– 编程/编码 (ADT/OOP)

– 审查、静态分析/检查

代码组件

– 设计(ADT/OOP;可重用性;可维护性)

– 构建:编译、静态链接、打包、安装等

构造时运行时

– 安装/部署

– 调试、单元/集成测试(稳健性和正确性)

瞬间阶段

– 版本控制

– 加载、动态链接、执行(转储、分析、日志记录)

– 并发线程

    1. 软件质量
      1. 外部质量因素

指可被用户感知的因素,如软件速度、易用性;影响用户。

  1. 正确性

指按照预先定义的“规约”执行,是最重要的质量指标。

测试和调试:发现不正确、消除不正确

防御式编程:在写程序的时候就确保正确性

形式化方法:通过形式化验证发现问题

  1. 健壮性/鲁棒性

指针对异常情况的处理,关键在于出现异常时不要崩溃。

健壮性是对正确性的补充,正确性保证了软件的行为要严格符合规约中定义的行为;健壮性保证了出现规约定义之外的情形的时候,软件要做出恰当的反应。

“正常”和“异常”是主观而非客观的,未被规约覆盖的情况即为“异常情况”。

  1. 可扩展性

指对软件的规约进行修改,是否足够容易。

软件规模越大,扩展起来越不容易。

  1. 可复用性

一次开发,多次使用。

  1. 兼容性

使不同的软件系统之间相互可容易的集成。

核心是保持设计的同构性,关键在标准化。

  1. 性能

程序的效率。除非有足够的正确性,否则性能毫无意义。对性能的关注要与其他质量属性进行折中,过度的优化会导致软件不再适应变化和复用。

  1. 可移植性

软件可方便的在不同的技术环境之间移植,包括硬件和操作系统。

  1. 易用性

指对用户而言容易学、安装、操作、监控。

提升易用性的方法是给用户提供详细的指南。

  1. 功能性

程序设计中一种不适宜的趋势,即软件开发者增加越来越多的功能,企图跟上竞争,其结果是程序极为复杂、不灵活、占用过多的磁盘空间,忽视整体质量,失去可持续性。

  1. 及时性

在用户有对应需求前放出新版本。

      1. 内部质量因素

指作为软件产品的质量,如代码可读性;影响软件本身和它的开发者。

源码方面:行数(LoC)、逻辑复杂度。

结构方面:耦合、内聚。

除此之外还有代码可读性、易于理解、清晰、大小等。

    1. 总结

质量的五大核心因素:

可理解性:

可复用性:

可维护性和适应性:

健壮性:

表现:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值