软件构造博客三

软件构造博客三
提示:由于个人习惯,作为一个留学生,一直把个人笔记和blog的内容随手记录在Mweb这个软件内,然后日常上传到自己的私人上,因为我认为这样才会对自己以后的工作发展和代码能力有更大的帮助,所以一直等到今天才在csdn上发布自己的第一篇关于软件构造的博客,但是博客的内容则都是从我陆陆续续每天都在记录的私人笔记中搬运过来的 。教育的目的是为了让我们养成记笔记和发blog的习惯,而我很早之前就养成了这个习惯,只是不在这个平台上发 。所以希望检查的助教或老师不要因为发布时间问题而对我的成绩进行扣分 。
文章目录三、内部/外部的质量指标 总结
前言
提示:本博客旨在介绍软件构造课程的一些知识小结,让大家明白便于对这个课程进行一些复习
软件构造这节课的课程,由于使用的是英文PPT,不便于阅读 。因此这次博客我想用我的笔记来作为一个知识小结来帮助大家理解和以后的复习 。
以下是本篇文章正文内容
一、多维度视图
三个维度看软件系统的构成
按阶段划分:build-time(构造阶段)和run-time(运行阶段)
按动态划分:(时刻)和(时期)
按层次划分:code(代码层面)和(组件,文件层面)
二、阶段划分、各阶段的构造活动 1. Build-time
想法?\?需求?\?设计?\?代码?\?可安装并执行的包 ??Code-level view:代码的逻辑组织(函数、类、方法、接口······) ??-level view:代码的物理组织(文件、目录、包、程序库······) ?? view:特定时刻的软件形态 ?? view:软件形态随时间的变化
【软件构造博客三】

软件构造博客三

文章插图
1.build-time; ; code-level 三种相互关联的形式
面向词法:半结构化源代码 面向词法:(AST抽象语法树)半结构化的源代码变成语法树(编译器能够处理) 面向词法:UML视图(通常是图形化或形式化的)
2.build-time; ; code-level Code churn(代码变化)
3.build-time; ; -level 源代码如何组织成文件——通过类库 文件被压缩进,逻辑上进入(组件)and sub-(子系统)
4.build-time; ; -level SCI 配置项的更改 VCS 版本控制系统 各项软件实体随时间如何变化 软件随时间变化的版本 版本控制(通过Git,SVN等等)
2.Run-time
程序被载入目标机器,开始执行 。
Code-level view:逻辑实体在内存中的呈现方式 -level view:物理实体在物理硬件环境中的呈现方式
view:在内存/硬件环境中特定时刻的形态view:硬件环境中的形态随时间的变化
动态链接
库文件不会在build阶段被加入可执行软件,仅仅做出标记 。程序运行时,根据标记装载库至内存 。发布软件时,记得将程序所依赖的所有动态库都复制给用户 。分布式程序
三、内部/外部的质量指标
外部质量因素影响用户 内部质量因素影响软件本身和它的开发者 外部质量取决于内部质量
3.1(外部质量因素)
1.(正确性) 按照预先定义的“规约”执行 正确性是至高无上的质量指标 每一层保证自己的正确性,同时假设其下层是正确的 测试和调试:发现不正确、消除不正确 防御式编程:在写程序的时候就确保正确性 形式化方法:通过形式化验证发现问题
软件构造博客三

文章插图
2.(健壮性) 针对异常情况的处理 – 健壮性是对正确性的补充 – 正确性:软件的行为要严格的符合规约中定义的行为 – 出现规约定义之外的情形的时候,软件要做出恰当的反应 出现异常时不要“崩溃” 健壮性是主观而非客观 – 未被覆盖的情况即为“异常情况” – 所谓的“异常”,取决于spec的范畴