软件构造学习笔记02

复习0-1序章。

了解了软件构造本身就是一门实验性课程,是对国外项目的模仿,其主要目的是为了让大家学会分步编程、编程常识、将学习经验通过实践巩固串联起来。

继续学习1-1内容

软件构造的质量目标

维度:
1.编写时和运行时
2.周期角度:变化情况,逐步更改的记录(月、时期)
3.代码和模块的层级:类的组成、属性等等,微观与宏观的不同角度。

大纲

软件构造的质量特征:

外部和内部质量因素
    外部质量因素(使用相关):与用户直接相关,比如运行速度、易用性等等
    内部质量因素(编程相关):与编程人员相关,比如模块化、可读性等等
    我们的目标在于外部特性,但是内部特性影响甚至从某种意义上决定外部特性。
重要的外部质量因素
各个质量因素的权衡

软件构造的五大质量目标:

易于理解
易于改变
易于拓展
健壮性
运行效率

外部质量因素

正确性

正确性:若输入正确,则输出正确。
是最重要的质量标准。
保证方法:
条件性:因为上层模块需要依赖下层模块,所以要想保证下层的模块是正确的。也就是说自底向上,保证每层都正确,同时调用也没有问题
通向正确性的方法:测试以及Debug
形式化方法:数学才可能保证程序的正确性
特别注意:测试只能证明程序错误,但是不可能证明程序是正确的。

健壮性

健壮性:若输入错误,而程序依旧正常工作。
与正确性相辅相成。正确性是正常的情况,而健壮性是异常的情况。异常与正常往往取决于程序的规定本身。
有以下几种保证健壮性的处理方式:
异常 → 提示
异常 → 退出
异常 → 降级技术
总之,最好是在异常的情况下可以让程序就像什么都没有发生过一样,只是发出提示或者甚至不(比如作为服务器或者卫星等等的系统)。如果做不到,也得“优雅地退出”。

拓展性

软件易于调整变化以适应新要求的能力。
一般来说,软件的规模越大就越难以扩展。
由于人们的需求是在不断改变的,所以我们不得不不断改变软件的功能。当软件大到一定的程度,不再有能力修改的时候,软件的生命周期也就走到了尽头。
提高扩展性:

解耦合:模块之间尽量不要过于依赖,也就是说:要尽量降低模块与模块的耦合性
简单:体系结构越简单,越容易变化

复用性

减少无用功,为程序员省事情。
如何复用:

调用库:内部库或者第三方库
调用自己或者同事的代码

适配性/兼容性

适配性也就是使软件与软件易于合作。
软件与软件之间需要相互联系,其开发与使用之间并不是完全割裂的。
但是,毕竟人与人之间的想法难以做到相同,程序员也是人,所以程序员之间的想法也难以做到相同。那么不同的软件之间就会有不同的规则与定义。
解决适配性的方法就是标准化。
标准化的方式:

协议
借口
……

效率

这里的效率是指软件系统对硬件资源的需求程度。

时间效率
空间效率
实际上,二者相互制约,矛盾只可缓解,不可调和。

移植性

指是否便于将软件产品移植到种种不同的硬件和软件环境之中。

易用性

其实这里的易用性也局势我们常常说的“用户体验”的问题。
易用性的目的就在于让用户易于使用我们开发出来的软件,包括了安装、运行以及监听的容易程度。
Key:

用户手册:给新用户提供相应的手册以及解释,这样做可以不用让老用户感到厌烦。
简单:简洁就是美
用户视角:站在用户的角度上去理解用户、思考用户,从而了解用户需要什么。也就是所谓的换位思考。

功能性

功能性:系统尽可能提供更加全面的功能。
问题:在程序设计的过程之中,程序员不断地给软件增加功能,试图满足用户全方位的需求,但是却使软件不断复杂化,变得笨重,导致无谓的空间占用。也就是说,过多的功能将会导致软件易用性的缺失。
Key:

先实现核心功能
逐步按照需要添加新功能,同时保持功能性以及易用性的平衡,让用户有良好的用户体验。

及时性

在需要之时被开发出来。

其他

可验证性:是否易于验证
完整性:软件系统保护其各个组件(程序和数据)免受未经授权的访问和修改的能力
可修复性:促进缺陷修复的能力
经济性:同及时性相伴,是系统按照其分配的预算或低于预算完成的能力

内部质量因素

源码相关因素
    代码量
    圈复杂度:用来衡量一个模块判定结构的复杂程度。
结构相关因素
    高聚合
    低耦合。
可读、可理解、清晰
复杂度
规模

内部质量因素通常用作外部质量因素的部分标准。

质量因素之间的权衡

程序员需要在多个方面进行平衡,而大部分时候,效率会成为主导因素。

完备性 VS 易用性
经济性 VS 功能性
效率 VS 可移植性
效率 VS 复用性
经济性 VS 复用性
及时性 VS 扩展性
在软件构造的过程中,质量的目标应当有明确指出。
当然,正确性永远是首位的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值