软件构造复习1

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

多维软件视图

By phases: build- and run-time views

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

By dynamics: moment and period views

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

By levels: code and component views

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

在这里插入图片描述

将库集成到可执行程序中 1.静态链接 发生在Build Time,库被拷贝进入代码形成整体,执行的时候无需提供库文件 不依赖 缺点:难以升级 2.动态链接 库不会加入可执行文件,只做标记 运行时根据标记装载库至内存 发布软件时,记得将程序所有依赖的动态库都复制给用户 优点:易于升级

Event logging:系统管理员使用,高层次信息(如安装程序失败),有一定输出格式,不必敏捷

Execution tracing:开发者使用,低层次信息(如抛出异常),较低格式限制,必须敏捷

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

1.      
Software development lifecycle SDLC 软件开发生命周期

1.      
0->1 从无到有

计划-需求-设计-构造(实现)-测试-部署-运维

2.      
1->n 从有到好

版本更新

2.      
传统软件开发模型

基本类型:Linear 线性过程;Iterative 迭代过程

Waterfall (Linear,
non-iterative) 瀑布过程

瀑布过程: • 线性推进 • 阶段划分清楚 • 整体推进 • 无迭代 • 管理简单 • 无法适应需求 增加/变化

Incremental
(non-iterative) 增量过程

增量过程: • 线性推进 • 增量式(多个瀑布的串行) • 无迭代 • 比较容易适应需求的增加

V-Model (for
verification and validation) V字模型

Prototyping
(iterative) 原型过程

迭代:开发出来之后由用户试用/评审,发现问题反馈给 开发者,开发者修改原有的实现,继续交给用户评审。

循环往复这个过程,直到用户满意为止。 时间代价高,但开发质量也高。

Spiral (iterative)
螺旋模型

非常复杂的过程: • 多轮迭代基本遵循瀑 布模式 • 每轮迭代有明确的目 标,遵循“原型”过 程,进行严格的风险 分析,方可进入下一 轮迭代

敏捷开发:通过快速迭代和小规模 的持续改进,以快速适应变化。

内部/外部质量指标

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

External
quality factors 外部质量 (最重要的有4个:正确性(最重要)、健壮性、可拓展性、可复用性)

1.      
Correctness 正确性:按照spec执行,得到正确的结果,软件的行为要严格符合规约中定义的行为

保证正确性:

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

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

形式化方法(形式化语言) :通过形式化验证发现问题

2.      
Robustness 健壮性:针对异常情况的处理:出现规约定义之外的情形,软件做出恰当的反应(出现异常时不要崩溃),未被spec覆盖的情况即为"异常情况"

3.      
Extendibility 可扩展性:是否容易使软件适应规约的变化

提升可扩展性的两个原则:简约主义设计,分离主义设计

4.      
Reusability 可复用性:一次开发,多次使用,发现共性

5.      
Compatibility 兼容性:不同软件系统之间相互可容易的集成

保持设计的同构性:标准化文件格式,标准化数据结构,标准化用户接口

6.      
Efficient 性能

性能毫无意义,除非有足够的正确性

对性能的关注 要与其他质量属性进行折中

过度的优化导致软件不再适应变化和复用

7.      
Portability 可移植性:软件可方便的在不同的技术环境之间移植:硬件、操作系统

8.      
Ease of use 易用性:易学、安装、操作、监控

给用户提供详细的指南,结构简单

9.      
Functionality 功能

10.  
Timeliness 及时性:及时发布等

11.  
其他质量:verifiability 可验证性、integrity完整性,repairability可修复性,economy经济型

2.      
Internal quality factors 内部质量

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

代码相关:lines of
code(LOC)、cyclomatic complexity 循环复杂性

结构相关:coupling耦合度(多个模块间联系),cohesion聚合度(一个模块;高内聚,一个程序只执行一种功能) (应当 高内聚低耦合,单一责任原则)

1.      
Readability 可读性

2.      
Understandability 可理解性

3.      
Clearness

4.      
Size

3.      
最重要的几个质量因素

Correctness
and robustness: reliability(可靠性)

Extendibility
and reusability: modularity(模块化)

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

1.      
Easy to understand: elegant and
beautiful code / understandability 便于理解

Understandability:注释、命名、日志等

2.      
Cheap for develop: design for/with
reuse: reusability 发展

Reusability:ADT、OOP、设计模式等以及复用外部文件

3.      
Ready for change: maintainability
and adaptability 变化

Maintainability and Adaptability

4.      
Safe from bugs: robustness 安全

Robustness 异常处理、断言、防御式变成、测试优先原则、日志追踪、debug、内存导出

5.      
Efficient to run: performance 高效

Performance 代码调优、空间复杂性(内存管理)、时间复杂性(I/O性能等),分布式系统,多线程

软件配置管理SCM与版本控制系统VCS

5.      
VCS version control system

1.      
Local VCS 本地:仓库在开发者本地机器

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

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

6.      
SCM 软件配置管理:追踪和控制软件的变化

核心:版本控制和基线的确立

1.      
SCI 软件配置项:软件变化的基本单元(如一个文件)

2.      
Baseline 基线:软件持续变化过程中的"稳定时刻"(如 对外发布的版本)

3.      
CMDB 配置管理数据库:存储软件的各配置项随时间发生变化的信息+基线

4.      
Versioning 版本控制

版本:为软件的任一特定时刻(Moment)的形态指 派一个唯一的编号,作为“身份标识”

在多个开发者之间共享和协作

记录每个开发者的动作,便于“审计”

Git的结构、工作原理、基本指令

7.      
结构

每个文件都属于以下三种状态之一:

已修改,已暂存,已提交

1.      
Working directory 工作目录:本地文件系统 (已修改,未暂存)

2.      
Staging area 暂存区:隔离工作目录和git仓库 (已暂存)

3.      
.git directory 本地仓库(本地CMDB) (已提交)

8.      
Object Graph

Git的所有操作都是在一个图数据 结构(对象图)上进行

.从另一台机器/服务器复制git项目意味着复制 整个对象图

9.      
指令

git branch
branchname创建新分支

git checkout
branchname切换到分支

git checkout
-b branchname 创建新分支并切换到新分支

git merge
branchname 合并当前分支与目标分支

pull=fetch +
merge

fetch 从远程仓库获取最新版本到本地,不会自动merge

fork 复制别人的仓库到自己的仓库(自己不是contributor,不能提交修改给别人)

clone 复制仓库到自己的本地仓库

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值