软件构造思考1-软件构造的多维度视图以及质量指标

1.多维软件视图:

按阶段划分:构造时/运行时视图

按动态性划分:时刻/阶段视图

按构造对象的层次划分:代码/构件视图

2. 软件构造的五个关键质量目标 

易理解性、可维护性和适应性、复用性、健壮性、性能

3.多维视图:

3.1Build-time (构造阶段):

         Code-level view:源码、类结构;代码变化:代码的逻辑组织

        Component-level view:文件、目录、包、库、静态链接、测试项;配置项、版本:代码的物理组织

        moment view:源码、类结构;文件、目录、包、库、静态链接、测试项:特定时刻的软件形态

        Period view:代码变化;配置项、版本:软件形态随时间 的变化

3.1.1Build-time, moment, and code-level view:词汇层面:源代码、语法层面:抽象语法树、语义层面:类图

3.1.2Build-time, period, and code-level view:代码变化

3.1.3Build-time, moment, and component-level view:源代码被物理组织成文件,这些文件进一步按目录组织,文件被封装到包中、类库、静态链接、

3.1.4Build-time, period, and component-level view:配置项以及版本

        这里我们需要知道软件配置管理SCM和版本控制系统VCS:

        我们要知道软件配置管理可以追踪和控制软件的变化,而软件配置项SCI是软件中发生变化的基本单元(例如:文件)。基线指的是软件持续变化过程中的“稳定时刻”(例如:对外发布的版本)。CMDB是配置管理数据库存储软件的各配置项随时间发生变化的信息 +基线。

       版本为软件的任一特定时刻(Moment)的形态指 派一个唯一的编号,作为“身份标识”。古老的版本控制方法是通过复制文件并修改文件名。我们有三种VCS:(1)本地版本控制系统: 仓库存储于开发者本地机器 无法共享和协作;(2)集中式版本控制系统:仓库存储于独立的服务器, 支持多开发者之间的协作;(3)分布式版本控制系 统:仓库存储于独 立的服务器+每个开 发者的本地机器。

        我们要学会使用Git作为版本控制管理工具,要熟悉一些命令:

        git add/mv/rm : workingspace->storing

        git commit : storing->local repository

        git commit -a : workingspace->local repository

        git reset<file> : storing->workingspace

        git reset<commit> :  local repository->workingspace

        git push :  local repository->remote repository

        git fetch : remote repository->local repository

        git clone/pull : remote repository->workingspace

        每一个文件都属于以下三种状态之一:已修改、已缓存、已提交。在版本之间的演化关系图中,每个commit指向一个父亲,多个 commit指向同一个父亲表示分支,一个commit 指向两个父亲表示合并,Head指向当前的commit。

        传统VCS存储版本之间的变化是代码行的变化,Git存储发生变化的是文件而非代码行, 不变化的文件不重复存储。

        git创建一个新的分支:git checkout –b 分支名

        git控制权回到某个分支:git checkout 分支名

        git合并某个分支:git merge 分支名

3.2Runtime Views:运行时:程序被载入目标机器,开始执行

        Code-level view:代码层面:逻辑实体在内存中的呈现

        Component-level view:构件层面:物理实体在物理硬件环境中的呈现

        Moment view:逻辑/物理实体 在内存/硬件环境中特定时刻形态

        Period view:逻辑/物理实体在内存/ 硬件环境中的形态随时间的变化

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

3.2.1Run-time, moment, and code-level view:代码快照图:描述程序运行时内存 里变量层面的状态,Memory dump (内存信息转储)

3.2.2Run-time, period and code-level view:执行跟踪,用日志方式记录程序执行的调用次序,代码层面。

3.2.3Run-time, moment, and component-level view:UML的部署图

3.2.4Run-time,period, and component-level view:事件日志:系统层面

4.质量指标:

        外部质量因素影响用户,内部质量因素影响软件本身和它的开发者,外部质量取决于内部质量。

4.1 外部质量指标:

        正确性:最重要的质量指标(一定要按照事先约定的spec),要防御式编程、进行调试与测试。

        健壮性:针对异常情况的处理,健壮性是对正确性的补充。

        鲁棒性:未被specification覆盖的情况即为“异常情况”

        可扩展性、可复用性、兼容性、性能、可移植性、易用性、多功能性、及时性······

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值