【软构课】How OOP improves quality(面向对象编程如何提升软件构造质量)

1.概念简介

【OOP】:面向对象设计(Object Oriented Programming),一种计算机编程架构,本质是以建立模型体现出来的抽象思维过程和面向对象的方法。OOP的一条基本原则是计算机程序由单个能够起到子程序作用的单元或对象组合而成。OOP=对象+类+继承+多态+消息,其中核心概念是类和对象。

【软件构造质量目标】:编写软件程序所追求的质量目标,主要包括但不限于正确性、健壮性、可扩展性、可复用性、兼容性、可移植性、易用性、性能、及时性、经济性、功能等。

本文将逐条简述各个质量目标的含义,并分析OOP的哪些特性或功能使它能够提升软件构造这方面的质量。

2.正文分析

2.1.正确性(Correctness)

        正确性:按照预先定义的“规约”执行,是最重要的质量目标。 

        想要确保正确性,可以通过测试和调试发现错误并消除;在写程序时就采用防御式编程确保正确性;通过形式化验证发现问题。

        OOP的优点:OOP采用封装的做法,将数据和操作捆绑在一起,将接口与实现分离,通过接口访问分散在各个类中的数据,调用相应的函数,更加安全,有助于提升正确性。

2.2.健壮性(Robustness)

        健壮性:健壮性是对正确性的补充,要求出现规约定义之外的情形的时候,软件要做出恰当的反映。即针对异常情况处理得当,起码不要“崩溃”。

        

         OOP的优点:OOP采用封装的做法,在每个封装的类中一般都会有相应的错误处理函数(如catch函数),有助于提升健壮性。

2.3.可扩展性(Extendibility)

        可扩展性:为了应对一些变化,有时需要对软件的规约进行修改,是否容易修改是一个值得考虑的问题。由此还引出了简约主义设计和分离主义设计等设计思想。

        OOP的优点:OOP采用封装的做法,隐藏了对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,在需要修改规约扩展代码时,只需要修改相应部分的代码即可,而其他部分的代码不用修改,降低了软件维护的难度。

2.4.可复用性(Reusability)

        可复用性:一次开发,多次使用,很多软件系统都采用相似的模板,因此软件代码的可复用性也是很有用的质量属性。

        OOP的优点:OOP的设计原则使它的代码呈模块化,很多在以前的项目领域中已被测试过的组件和模型都可以复用,且具有较高的质量,一个模型也可以用于多个系统之中,有助于提升可复用性。

2.5.兼容性(Compatibility)

        兼容性:不同的软件系统之间相互可容易的继承,关键在于保持设计的同构性。

        OOP的优点:OOP中对模块的设计尤其是对类的设计采用统一的标准化模块和接口设计,极大地满足了设计的同构性,有助于提升兼容性。

2.6.可移植性(Portability)

        可移植性:软件在不同的技术环境之间移植的方便程度。

        OOP的优点:OOP采用数据抽象,可以隐藏对象的具体细节,在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰,使得即便转换技术环境也依然可以正常运行,有助于提升可移植性。

2.7.易用性(Ease of use)

        易用性:易用性是指软件使用起来容易学、安装、操作、监控,即对于用户来说使用尽量方便,为此许多软件常常给用户提供详细的指南。

        OOP的优点:将OOP原则应用于GUI组件和系统架构的设计,一方面可以使软件结构更加清晰易懂,另一方面可以帮助设计师更好地理解预期用户群体的需求,有助于提升易用性。

2.8.性能(Efficiency)

        性能:性能是指一个软件尽可能少的占用硬件资源而能满足软件功能需求的能力。需要注意的是如果没有足够的正确性,那性能将毫无意义,关注性能的同时要与其他质量属性进行折中。

        OOP的优点:面向对象分析设计允许将现实问题中的对象直接映射到程序中,减少了软件开发过程中中间环节的转换过程,通过继承大幅减少冗余的代码,有助于降低复杂度,提升性能。

2.9.及时性(Timeliness)、经济性(Economy)和功能(Functionality)

之所以将这三个特性放在一起,是因为它们都更倾向于对软件更新发布而不是程序编写的要求。

        及时性:在用户需要时或之前,保证软件及时发布。

        经济性:与及时性相伴,是一个系统在其制定预算之内满足功能需求的能力。

        功能:软件开发者为了竞争而增加越来越多的功能,值得注意的是要警惕程序因为增加功能而变得复杂、不灵活、占用过多的磁盘空间,与性能一样要与其他质量属性进行折中。

        OOP的优点:一方面,通过重用现有的模型,可以大幅提高编码效率;另一方面由于继承、封装、多态的特性,根据OOP设计出的系统具有高内聚、低耦合的特点,使系统更灵活,更容易扩展,而且成本较低。故OOP有助于提升及时性、经济性和功能。

3.总结

        学习并采用OOP原则,对于提升软件构造质量有着明显的优点,同时也不可否认OOP设计具有运行效率较低、类库庞大、类库可靠性未知等缺陷。要积极学习,辩证应用。

        注意:本文为作者软件构造课的课上笔记与课后思考的结合,作者为技术小白,java萌新,对很多专业知识的叙述可能不够准确,如有错误,还请海涵,欢迎友善指正。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值