当前位置:网站首页>从类、API、框架三个层面学习如何设计可复用软件的学习心得
从类、API、框架三个层面学习如何设计可复用软件的学习心得
2022-06-23 12:56:00 【静静子*】
目录
软件复用
软件复用是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。
早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。
软件复用的分类
软件复用主要分为代码级复用、组件级复用、模块级复用和构架级复用,软件复用即是将软件看成是由不同功能部分的“组件”所组成的有机体,每一个组件在设计编写时可以被设计成完成同类工作的通用工具,这样,如果完成各种工作的组件被建立起来以后,编写一特定软件的工作就变成了将各种不同组件组织连接体来的简单问题,这对于软件产品的最终质量和维护工作都有本质性的改变。软件复用可以降低开发成本、有效提升开发层次,这项技术也是当前软件技术发展的必然阶段。
三方面讲述软件复用
1.类
是面向对象程序设计实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。其实就是一种引用数据类型,它的本质是代表一种数据类型,是作为现实生活中一类具有共同特征事物的抽象,类的内部封装了属性和方法用于操作自身的成员,这些方法是对这个对象进行操作的程序和过程,类的构成包括成员属性和成员方法,从类出发的软件复用方式为继承和委托,继承就是通过新操作扩展基类或覆盖操作,委托则是捕获操作并将其发送给另一个对象,从类层面来说,有了继承,就可以使子类拥有父类的属性和方法,这也是一种复用,甚至可以说是十分重要的一种复用,子类可以不用将某些方法。而对于委托方法,在java中类直接调用这个类的static方法,类似c语言中的函数,直接调用就行,这样也是一种类的复用,类似的有Math.sprt()这种方法的调用与使用。
2.API
即是应用编程接口,它是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而无需访问原码,或理解内部工作机制的细节。API 以不同的格式连接数据。每种数据格式要求以不同的数据命令和参数实现正确的数据通信,但同时也会产生不同类型的错误。因此,除了具备执行数据共享任务所需的知识以外,这些类型的API 还必须解决很多网络参数问题和可能的差错条件,即每个应用程序都必须清楚自身是否有强大的性能支持程序间通信。相反由于这种API 只处理一种信息格式,所以该情形下的信息交付API 只提供较小的命令、网络参数以及差错条件子集。交付API 方式大大降低了系统复杂性,所以当应用程序需要通过多个平台实现数据共享时,采用信息交付API 类型是比较理想的选择。API要设计地小巧、完整、简单清晰,要让调用代码容易记忆、可读性高,其次,API要遵循LSP原则,即如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。并且也要实现所有引用基类的地方必须能透明地使用其子类的对象。总之,API地复用技术具有较大地发展前景,但同时要在设计时充分考虑以上提到的规范,
2.框架
就是一组具体类、抽象类、及其之间的连接关系 开发者根据 framework的规约,填充自己的代码进去,形成完整系统。通常通过选择性覆盖来扩展框架;或者程序员可以添加专门的用户代码来提供特定的功能。我们从应用方面和目的方面给出框架的定义:
应用方面:框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法。
目的方面:框架是可被应用开发者定制的应用骨架。
用户可以扩展框架,但不应修改其代码。为了增加代码的复用性,可以使用委派和继承机制。同时,在使用这两种机制增加代码复用的过程中,我们也相应地在不同的类之间增加了关系(委派或继承关系)。而对于一个项目而言,各个不同类之间的依赖关系就可以看做为一个框架。一个大规模的项目可能由许多不同的框架组合而成。常见的框架类似于spring框架这种,spring框架代码不能修改但是拥有DI,IOC,方便用户创建对象,何时创建对象,交给系统来判断,用户只需要使用对象就行了。
框架的复用类型
白盒复用:源代码可见,可修改和扩展,复制已有代码当正在开发的系统,进行修改
优点:可定制化程度高
缺点: 对其修改增加了软件的复杂度,且需要对其内部充分的了解
黑盒复用:源代码不可见,不能修改,只能通过API接口来使用,无法修改代码
优点:简单清晰
缺点:适应性差
总结
软件复用在当前的软件开发环境下今后将进一步得到发展,如何更好地运行工程化思想合理、科学地应用这些复用技术去创造更完善地软件工程也将是更大的研究课题,作为在校软件工程专业学生,也势必要理解复用方法模式并给予实践,为我们的职业发展做好优秀的设计思维基础。
边栏推荐
- 互联网技术发展内卷后的出路——iVX的诞生
- Tt-slam: dense monocular slam for flat environment (IEEE 2021)
- 【深入理解TcaplusDB技术】单据受理之事务执行
- 在线文本实体抽取能力,助力应用解析海量文本数据
- In flinksql, the Kafka flow table and MySQL latitude flow table are left joined, and the association is made according to I'd. false
- js: 获取页面最大的zIndex(z-index)值
- 90%的人都不懂的泛型,泛型的缺陷和应用场景
- Getting started with reverse debugging - learn about PE structure files
- Analysis and solution of connection failure caused by MySQL using replicationconnection
- 那些技术实战中的架构设计方法
猜你喜欢

Quarkus+saas multi tenant dynamic data source switching is simple and perfect

Hanyuan hi tech 1-channel gigabit optical port to 4-channel Gigabit Ethernet electrical port Gigabit 1-optical 4-electric optical fiber transceiver

DBMS in Oracle_ output. put_ How to use line
React query tutorial ④ - cache status and debugging tools

Lm05 former VIX (second generation product)

Go write file permission WriteFile (filename, data, 0644)?

#yyds干货盘点# 解决剑指offer: 判断是不是平衡二叉树

Online text filter less than specified length tool

4-way telephone +1-way Gigabit Ethernet 4-way PCM telephone optical transceiver

在線文本過濾小於指定長度工具
随机推荐
After the uncommitted transactions in the redo log buffer of MySQL InnoDB are persisted to the redo log, what happens if the transaction rollback occurs?
20 years' Shanghai station D question Walker (two points, concise)
Generics, generic defects and application scenarios that 90% of people do not understand
Network foundation and framework
How long is the financial product? Is it better for novices to buy long-term or short-term?
Capacity limited facility location problem
AssetBundle resource management
2 万字 + 30 张图 |MySQL 日志:undo log、redo log、binlog 有什么用?
R language is used to build ordered multi classification logistic regression model, ordinal or. The display function obtains the summary statistical information of the ordered logistic regression mode
CDH mail alarm configuration
Hanyuan hi tech 1-way uncompressed 4k-dvi optical transceiver 4K HD uncompressed DVI to optical fiber 4k-dvi HD video optical transceiver
首次曝光!唯一全域最高等级背后的阿里云云原生安全全景图
Wallys/DR6018-S/ 802.11AX MU-MIMO OFDMA / 2* GE PORTS/WIFI 6e / BAND DUAL CONCURRENT
windows 安装 MySQL
R语言dplyr包arrange函数排序dataframe数据、通过多个数据列排序dataframe数据(默认是升序排序)
ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.
R language dplyr package mutate_ The all function multiplies all numeric columns (variables) in the dataframe by a fixed value to generate a new data column, and specifies a user-defined suffix name f
DBMS in Oracle_ output. put_ How to use line
火绒安全与英特尔vPro平台合作 共筑软硬件协同安全新格局
How to use sed -i command