软件构造复习笔记(一)

软件构造的多维度视图:

 

首先是对软件的不同阶段进行划分:

构造阶段:

代码层面:更加注重代码的逻辑组织(函数,类,方法,接口)

组件层面:更加注重代码的物理组织(文件,目录,包,库)

时刻角度:特定时刻的软件形态

长期角度:软件形态随时间的变化

  1. 某一时刻的代码层面:代码是怎么相互关联的(词汇,语法,语义)

词汇:半结构化:近乎自然语言的风格+遵循特定的编程语法

语法:AST(Abstract Syntax Tree)

语义:联系源代码与现实世界:图形化

  1. 长期的代码角度:代码变化(Code churn)
  2. 某一时刻的组件层面:目录组织文件,文件存放在包中,重复使用的组件形成库

静态链接:构建阶段时,库被拷贝进入代码,执行时不需要库文件

  1. 长期的组件层面:版本控制系统(VCS)

V 1.6(major).1(minor).5(patch)

运行阶段:

代码层面:逻辑实体在内存中如何呈现

组件层面:物理实体在物理硬件环境中如何呈现

时间同上

动态链接:build阶段库文件做出标记。程序运行时,根据标记装载库到内存;发布软件,将所有动态库复制给客户

  1. 某一时刻的代码层面:代码快照图(描述程序运行时内存中变量层面的状态)

Memory dump(内存信息转储)

  1. 长期的代码角度:执行跟踪(用日志的方式记录程序执行的调用次序)
  2. 某一时刻的组件层面:UML部署图(Deployment diagram)

静态链接:构建阶段时,库被拷贝进入代码,执行时不需要库文件

  1. 长期的组件层面:事件日志(系统层面)

 

软件构造的阶段划分、各阶段的构造活动:

SDLC(Software Development Lifecycle)从无到有

Planning(计划)

->analysis(分析)

->design(设计)

->implementation(执行)

->testing&integration(测试&结合)

->maintenance(维护)

版本:从有到好

编码(编程语言,建模语言,配置语言,构建语言)->重构(不改变功能的前提下优化代码)->调试->测试->性能分析->代码评审(利用工具进行静态代码分析)->构建

内部 / 外部的质量指标:

外部质量因素(影响用户):

正确性(按照规约执行):测试与调试,防御式编程,形式化方法;

健壮性(针对异常情况的处理);

可扩展性(应对变化):简约主义,分离主义;

可复用性;一次开发,多次使用

兼容性(针对不同的软件系统):设计的同构性,标准化;

高效性(性能);

可移植性(针对不同技术环境,包括软件(操作系统), 硬件);

易用性;

功能性(容易出现矛盾,程序复杂不灵活占用空间);

及时性;

可验证性,完整性,可修复性,经济性 so on

内部质量因素(影响软件和开发者):

LOC(Lines of Code):代码行数;

循环复杂度;

连接性,凝聚性;

可读性,可理解性;

清楚与否;

规模 so on

外部质量取决于内部质量。

软件配置管理 SCM(Software Configuration Management)

与版本控制系统 VCS(Version Control System):

SCM:追踪和控制软件变化

软件配置项( Software Configuration Item (SCI)):SCM中的基本单元,如文件。

仓库:SCM中的CMDB;

工作拷贝:开发者本地机器上的一份项目拷贝;

文件:独立的配置项;

版本:某个特定时间点的所有文件的共同状态;

变化:两个版本之间的差异;

Head:程序员工作的版本;

VCS:
本地版本控制系统:库存储于开发者本地机器;无法共享和协作。

集中式版本控制系统:仓库存储于独立的服务器;支持多开发者之间的协作

 

分布式版本控制系统:仓库存储于独立的服务器+每个开发者的本地机器

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值