Scalability and Extensibility in Software Engineering

2023-12-25 21:48

本文主要是介绍Scalability and Extensibility in Software Engineering,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 Definition

可扩展性(Scalability)是指 系统/网络/软件 能被快速方便应用到的不断增长的工作中的能力。例如,好的数据库系统可以通过增加硬件设施扩大数据库容量。

Scalability is the capability of a system, network, or process to handle a growing amount of work, or its potential to be enlarged to accommodate that growth. For example, a system is considered scalable if it is capable of increasing its total output under an increased load when resources (typically hardware) are added. An analogous meaning is implied when the word is used in an economic context, where a company's scalability implies that the underlying business model offers the potential for economic growth within the company.

Ref: https://en.wikipedia.org/wiki/Scalability

可延展性 (Extensibility)是指系统能够方便的增加组件、扩充功能的能力。例如,好的(松耦合)软件在增加/修改功能时不需要花很多时间去处理耦合关系,可以轻易的延展其功能。

Extensibility is a software engineering and systems design principle where the implementation takes future growth into consideration. The term extensibility can also be seen as a systemic measure of the ability to extend a system and the level of effort required to implement the extension. Extensions can be through the addition of new functionality or through modification of existing functionality. The central theme is to provide for change – typically enhancements – while minimizing impact to existing system functions.

Ref: https://en.wikipedia.org/wiki/Extensibility

 Application in Software

Scalability

对于软件公司来说,Scalability指同一个产品被多次重复利用的能力,这种能力对于商业软件非常重要,因为其开发成本一定,能服务于越多的用户就能创造越大的利润。

Scalability的设计理念体现在软件设计的各个方面,以下是我有体会的一些地方:

1. 权限管理

权限管理可以使得系统使用一套系统框架就可以服务于多种不同类型的用户(eg. 不同权限等级的用户:管理员、开发者、分析者等用户),不同类型的用户共用一套系统框架、一套数据库、一套交互界面,使得一次开发的成果应用在多个不同类型的用户上,是一种典型的提升Scalability的体现。

而且,权力的下放可以减轻开发者的工作量,同时对于面向业务的工作人员也可以减少与开发人员的沟通成本,对业务作出更快的反应。

Ref: http://help.finereport.com/doc-view-661.html

2. 通用功能

提供通用的功能,保证成本的情况下尽可能多的覆盖通用的功能,使得对该软件有需求的用户更多。举一个常见的通用功能的例子:系统监控,dynatrace这家公司就从监控功能这一个点入手已经做得风生水起了,同类的公司还有sematext等,可见这一个通用的功能是有多么大的市场。

反之,对于应用较少的边缘功能,无需开发,因为同样的成本带来的收益相对于通用功能来说太少了,而且会造成许多不必要的麻烦,如果定制化的服务不能回收巨大的回报,这样的开发需求最好拒绝(当然,这是公司层面的考虑,程序员提出拒绝开发的要求需要较大的影响力)。但是实际的业务中肯定有这种定制化的需求,一些软件公司的企业服务部门就专门在做这个事情,收费一般也会比较高。

3. 性能测试

服务于大量用户,需要保证在大量用户同时在线时系统的稳定性、并发的可靠性。

Ref: https://blog.csdn.net/huangjin0507/article/details/51878559

Extensibility

Extensibility在软件开发过程中有着非常多的体现。

基本上所有的设计模式都有增强Extensibility的理念在其中,比如经典的工厂模式,用抽象方法代替实例化过程,真正实例化的过程要放到子类中,通过工厂方法可以灵活的定义子类,不需要太多的修改原有代码(仅需在调用子类时做具体的业务流程)。

Ref: https://blog.csdn.net/sinat_34763749/article/details/80586218

同样的,微服务通过将大型服务拆分成松耦合的小块,小块之间通过一定的协议通信,来完成原来大服务的工作内容。需要新增/修改逻辑时,仅需开发/改动自己的服务,之后在服务器上进行简单的通信配置,不影响其他服务的进程,这个过程也体现了Extensibility的理念。

Ref: https://martinfowler.com/articles/microservices.html

这篇关于Scalability and Extensibility in Software Engineering的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/537065

相关文章

关于javaSocket中 Software caused connection abort: recv failed问题

在学习Socket中今天突然遇到了下面这样的问题 原来是网路连接出了问题,因为我测试的是远程连接所以是在学校的局域网下,结果很不稳定,开始还以为怎么了一会连上了一会又出现问题然后把IP地址改为本机的127.0.0.1之后就没有 出现过了.

myeclipse中没有software update选项

方法一:你在myeclipse中点Windows-->Preferences 在弹出的对话框的左侧栏,点General-->点Capabilities,然后把Classic Update前的框选上,OK了。 方法二:也可以通过Help-->MyEclipse Configuration Center-->Software-->Add Site的方式进行插件安装。。

原创 | 混沌工程(Chaos Engineering)初识

点击上方“朱小厮的博客”,选择“设为星标” 后台回复”1024“获取公众号专属1024GB资料 欢迎跳转到本文的原文链接:https://honeypps.com/chaos/chaos-engineering-start/   Chaos Engineering is the discipline of experimenting on a distributed system in ord

WebSocket官方文档翻译——HTML5 Web Sockets:A Quantum Leap in Scalability for the Web

HTML5 Web Sockets:A Quantum Leap in Scalability for the Web HTML5 Web Sockets:对于网络扩展性上是一个巨大的飞跃 By Peter Lubbers & Frank Greco, Kaazing Corporation (This article has also been translated into

[LLM][Prompt Engineering]:思维链(CoT)

思维链 思维链1. 思维链提示方法和增强策略1.1 简单的思维链提示1.2 示例形式的思维链提示1.3 思维链提示的后处理方案1.4 拓展推理结构 2. CoT的能力来源:为什么思维链提示能显著提升大语言模型在推理任务上的效果? 强大的逻辑推理是大语言模型“智能涌现”出的核心能力之一。 推理:一般指根据几个已知的前提推导得出新的结论的过程,区别于理解,推理一般是一个“多

[LLM][Prompt Engineering]:大语言模型上下文学习-What、How、Why?

上下文学习 上下文学习什么是上下文学习2. 示例的选择2.1 相关度排序2.2 集合多样性2.3 大语言模型 3. 示例格式3.1 人工标注3.2 利用大语言模型自动生成 4. 示例顺序5. 上下文学习为什么可以work5.1 能力来源5.2 ICL的能力 Reference 在GPT-3的论文中,OpenAI 研究团队首次提出上下文学习(In-contextlearni

有关Prompt Engineering(提示词工程)的一些总结

1. 什么是Prompt Engineering? Prompt Engineering是指设计和优化输入提示(prompts)以获得所需输出的过程。 在使用像ChatGPT这样的语言模型时,输入提示的质量和结构对生成的结果有着至关重要的影响。 通过精心设计的提示,可以更好地引导模型生成准确、有用和相关的响应。 2. 为什么要学习Prompt Engineering? 学会提问是一种艺术

『大模型笔记』Prompt Engineering具体实施方案综述!

Prompt Engineering具体实施方案综述! 文章目录 1. 背景2. prompt原则&技巧2.1. 指令清晰、详细2.1.1 问题里包含更多细节2.1.2 让模型角色扮演2.1.3 使用分隔符2.1.4 指定完成任务所需的步骤2.1.5 提供示例2.1.6 设定回答的长度 2.2 提供参考文本2.3 将复杂任务拆分2.3.1 问题分类2.3.2 分段总结长文/长对话 2.

导入项目启动报错Unexpectedexception parsing XML document from file[H:\software\apache-tomcat-7.0.77\webapps\

导入项目启动报错Unexpectedexception parsing XML document from file[H:\software\apache-tomcat-7.0.77\webapps\ItcastOA\WEB-INF\classes\applicationContext.xml]       背景介绍: 导入项目报错1: ER

Agile Software Development

Individuals and interactions over processes and tools.(个人和协作超过过程和工具) working software over comprehensive documentation.(工作软件超过完全文档) Customer collaboration over contract negotiation.(客户协作超过合同谈判)