软件构造笔记2

这篇笔记主要记录第二章的内容,今天重新回顾了一下第二章的知识

首先完成一下第一章笔记没有记录的部分:软件的质量指标

软件的质量指标包括外部质量指标和内部质量指标,外部指标主要是对用户来说的,比如程序运行的快慢、程序的容错能力等,而内部质量指标主要针对程序员,程序内部的内聚、耦合如何啊等。显然,外部指标更为重要,但外部指标往往取决于内部指标

  1. 正确性:显然这是软件最至高无上的指标,如果无法保证正确性的话程序就没有任何意义了,保证程序正确性的方法有1)分层:就是软件的层次划分开,并保证每层的正确,并假设下层也是正确的2)测试和调试:含义就是发现程序的错误、改正程序的错误3)防御式编程:就是在写程序的时候保证程序的正确性4)形式化方法:通过形式化验证发现问题,用数学的方法证明软件的正确性
  2. 健壮性:一个好的程序不仅仅是保证程序的正确,同时他也应该是健壮的,比如当用户输入一个错误的信息时,我们不应该直接报错,程序中断,我们应该给用户返回错误信息,提醒用户。
  3. 可扩展性:好的软件应该是可以面临变化的、可扩展的,因为用户的需求可能发生变化。有两条原则对于提高可扩展性至关重要,第一条是简约主义设计,因为规模越大,扩展起来就越不容易,往往某一处进行改动,其他地方也会受到影响。第二条是分离主义设计,软件系统的模块越独立,简单改变只会影响一个模块或少量模块,而不会触发整个系统变化的连锁反应的可能性就越高。
  4. 可复用性:可复用的程序节省了程序员的很大工作量,可复用性即不要重复发明轮子,利用已有的工具会节省我们很大精力

以上四点是外部质量指标中最为重要的四点,同时软件也有内部质量指标,包括代码耦合度、规模等等

但软件的这些指标并不一定是统一的,往往是冲突的,这些指标中无论如何都不能牺牲正确性,要根据具体情况来进行折中

接下来记录第二章的知识内容,软件的生命周期和配置管理

传统的软件开发有两种模型,一种是线性过程,一种是迭代过程

  1. 瀑布模型:瀑布模型是一种线性的,层层递进的,阶段划分清楚,易于管理的模型,像瀑布一样,但其缺点是不易与应对变化,无法变动需求
  2. 增量模型:增量模型可以理解为瀑布模型的升级版,是由多个瀑布模型串行而成,也是线性的,易于管理层层推进的,并且弥补了不易于改变需求的弱点
  3. V字模型:V字模型以被认为是瀑布模型的扩展的开发过程,就是完成之后再进行向上反馈,呈一个V型
  4. 原型模型:原型模型的过程是先完成一个模型交由用户评审,用户进行反馈,以此提高软件质量,循环往复这个过程,直到用户满意为止。时间代价高,但开发质量也高
  5. 螺旋模型:螺旋模型是一种非常复杂的过程:多轮迭代基本遵循瀑布模式;每轮迭代有明确的目标,遵循“原型”过程,进行严格的风险分析,方可进入下一轮迭代

敏捷开发是指通过快速迭代和小规模的持续改进来进行开发,极限编程指严格遵守任务版按时间来进行编程

版本控制系统分为三种

  1. 本地版本控制系统:即个人本地作为仓库记录版本,与外界无协作
  2. 集中式版本控制系统:仓库存储于独立的服务器, 支持多开发者之间的协作
  3. 分布式版本控制系统:仓库除了位于服务器之外,每个用户本地也有一个仓库,如git

广义的软件构造过程为:
Design=>Programming/refactoring=>Debugging=>Testing=>Build=>Release

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值