SEDA(staged event-driven architecture),也称为阶段式服务器模型。这是一类
软件架构模型,它将复杂的、事件驱动的应用分解为一系列通过
队列连接的阶段。
该模型避免了基于
线程的并发模型所带来的高负载问题,同时将事件与线程调度从应用逻辑中解耦。通过对每个队列实施准入控制,使服务得以状态良好地加载。当需求大于服务能力时,能够防止资源过度使用。
SEDA 通过动态控制,自动地对运行时参数进行调优(例如每个阶段的调度参数),并对负载进行管理(例如执行自适应减载)。它将服务分解为一系列阶段也有利于
模块化与代码复用(例如为复杂的事件多驱动应用开发的调试工具)。
软件体系结构是构建
计算机软件实践的基础。与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,
软件架构师或者
系统架构师陈述软件架构以作为满足不同客户需求的实际系统设计方案的基础。从和目的、主题、材料和结构的联系上来说,软件架构可以和建筑物的
架构相比拟。一个软件架构师需要有广泛的软件理论知识和相应的经验来实施和管理软件产品的高级设计。软件架构师定义和设计软件的模块化,模块之间的交互,用户界面风格,对外接口方法,创新的设计特性,以及高层事物的对象操作、逻辑和流程。
软件架构师与客户商谈概念上的事情,与经理商谈广泛的设计问题,与软件工程师商谈创新的结构特性,与程序员商谈实现技巧,外观和风格。
软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在
面向对象领域中,组件之间的连接通常用
接口来实现。
软件模块(Module)是一套一致而互相有紧密关连的
软件组织。它分别包含了
程序和
数据结构两部分。
可复用的
代码以及相关的知识与需求文档,设计,测试用例一样都是软件开发的组织内部所不可或缺的资产。事实上,最早为人所知的复用正是从代码复用开始的。所谓的代码复用,本质上就是对曾经编写过的代码的一部分甚至全部重新加以利用,从而构建新的
程序。使用这种方法就可以将
程序员从费时费力的重复劳动中解放出来。
程序库是一种代码复用的很好的形式。程序员可以创建内部抽象以便程序的部分代码可被复用,或者直接创建一个自定义库给自己使用。用于衡量代码可复用程度的特性通常包括:
模块化,低耦合,
高内聚,
数据封装以及
SOC。
还有一种做法也可被视为代码复用。即直接从已有程序中将一段代码拷贝出来并粘贴到另一个地方作为新程序的一部分。但是这种做法往往会使得程序员最终陷入重复代码过多的问题。
为了使代码复用更加方便,更加迅速并且更加体系化,相关的研究者也进行了大量的研究。
面向对象程序设计就是以此为目的而派生出来的方法。更加新一点的方法就是代码自动生成,它会基于用户设置的一系列参数来自动生成程序的代码。与此类似的概念被称之为
元编程。