软件构造复习整理1

软件构造的多维度视图

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

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

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

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

 内部/外部的质量指标

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

外部:

External 1 正确性:最重要的质量指标

External 2健壮性:针对异常情况的处理

External 3可扩展性:规模越大,扩展起来越不容易。为什么要扩展:应对变化

External4可复用性:一次开发,多次使用。发现共性

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

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

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

External 8易用性:容易学、安装、操作、监控。给用户提供详细的指南。

External 9 功能性: 每增加一小点功能,都确保其他质量属性不受到损失

External 10: 及时性

可验证性,完整性,可修复性,经济性……

内部:源代码相关因素,例如代码行数、圈复杂度等。与架构相关的因素,如耦合、内聚等。可读性 易懂 清晰度 尺寸。

质量之间的权衡特性。

质量属性之间的权衡。正直 使用方便 。经济 功能。 效率 可移植性。 效率 可重用性。 经济 可重用性。 及时性 可扩展性。

软件建设的五个关键质量目标 :

优雅美观的代码->易于理解                 注释

为/重用而设计->开发成本低                可复用性

低复杂度->随时可以更改,易于扩展         可维护性

健壮性和正确性->避免错误,不易出错       健壮性

性能与效率->高效运行                     易用编写、运行

软件构造过程与配置管理

传统的软件过程模型

两种基本类型:线性过程(软件不易更改,用户需求一定要明确),迭代过程(每个阶段都可给反馈,适用需求不确定)

现有型号:瀑布模型,增量模型,V字模型,原型模型,螺旋模型

选择合适的过程模型的依据:

1.用户参与程度有多大?--适应变化的能力 

2.开发效率/管理复杂度

3.开发出的软件的质量

瀑布模型: •线性推进 •阶段划分清楚 •整体推进 •无迭代 •管理简单 •无法适应需求 增加/变化(传统线性模型,要求需求稳定)

增量模型: •线性推进 •增量式(多个瀑布的串行) •无迭代 •比较容易适应需求的增加(1.每个模块可运行2.接口简单清晰,后面增量不能影响已有的)

V-model 代表一个开发过程,可以被认为是瀑布模型的扩展。不是以线性方式向下移动,而是在编码阶段之后向上弯曲工艺步骤,以形成典型的 V 形。展示开发生命周期的每个阶段与其相关的测试阶段之间的关系。横轴和纵轴分别代表时间或项目完整性(从左到右)和抽象级别(最粗粒度的抽象)。每个阶段都进行一个测试。

原型模型:在原型上持续不断的迭代,发现用户变化的需求。迭代:开发出来之后由用户试用/评审,发现问题反馈给 开发者,开发者修改原有的实现,继续交给用户评审。 循环往复这个过程,直到用户满意为止。 时间代价高,但开发质量也高。提供给客户可评价的模型,可被抛弃。搞清楚客户需求再开发,系统结构可能不好,因为未进行深层分析。

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

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

Agile = 增量 + 迭代 每次迭代处理一个小规模增量。需求不稳定,快速、短周期迭代,低风险、常改变、更新。对一些高质量、高风险,需用传统,需详细文档(军队火箭)

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

软件配置管理:追踪和控制软件的变化。

软件配置项:软件中发生变化的基本单元(例如:文件)

基线:软件持续变化过程中的“稳定时刻”(例如:对外发布的版本)

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

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

古老的版本控制方法:通过复制文件并修改文件名

Local VCS(局部式)本地版本控制系统: 仓库存储于开发者本地机器 无法共享和协作

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

Distributed VCS(分布式)分布式版本控制系 统:仓库存储于独 立的服务器+每个开 发者的本地机器      缺点:难以同步,耗费空间         git分布式

Git as an example of SCM tool

Git 存储库包含三个部分:本地的CMDB,工作目录:本地文件系统,暂存区:隔离工作目录和Git仓库

每个文件属于以下三种状态之一:已修改,已暂存,已提交

提交:对象图中的节点

每个commit指向一个父亲。多个 commit指向同一个父亲:分支。一个commit 指向两个父亲:合并。A branch is just a name that points to a commit.HEAD points to the current commit.

考:一个commit对象有几个父对象?0/1/2    一个父对象可有多个子对象

git与传统区别:传统VCS存储 版本之间的变 化(行),易于得到版本的变化,但很难创建分支。Git存储发生变化的文件(而非代码行),不变化的文件不重复存储。易于创建任意多个分支。

文件未发生变化,则后 续多个版本始终指向同一个文件。文件发生变化了,存储 两份不同的文件,两个版本指向不同的文件。

在 Git 中创建和合并分支:

General process of software construction

(1) Programming(2) Modeling languages 建模语言(3) Configuration languages 配置语言

Review and static analysis/checking 代码评审

Dynamic code analysis / profiling动态分析:要执行程序并观察现 象、收集数据、分析不足。

Debugging and Testing

What is testing 测试:发现程序是否有错误;What is Debugging 调试:定位错误、发现错误根源

Refactoring 重构:在不改变功能的前提下优化代码

狭义的软件构建过程(Build) 粗略理解build:build-time à run-time 借助于工具,将软件构造各阶段的活动“自动化” (编译、打包、静态分析、测试、生成文档、部署、…) 尽可能脱离“手工作业”,提高构造效率

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值