如果你对项目管理、系统架构有兴趣,请加微信订阅号“softjg”,加入这个PM、架构师的大家庭

软件架构有三个主要来源:拿取、方法以及直觉。拿取也就是可重用资源。对于一个标准的系统而言,可能包含80%的拿取、19%的方法和1%的直觉。而崭新的系统则包含30%的拿取、50%的方法和20%的直觉。由此可见,拿取在软件架构中的重要性,本节我来带领大家了解可重用架构资源。

一个可重用资源可以代表一个可重用需求(在不同系统里反复出现的需求)、可重用的解决方案元素(一个架构模式或者可重用代码)、可重用测试、可重用的方法等。可重用资源减少了架构师必须关注的事情的数量,使他们不必再做无用功,因此可重用资源会对项目的时间计划、成本和交付系统的质量产生重大的影响。一个成功的架构师通常是懂的可重用资源的人。

对于架构资源来说,它分为开发期资源和运行期资源。其中开发期资源包括开发方法、架构风格、架构机制、模式、参考模型和架构决策,而运行期资源则包括现有的应用程序、应用程序框架和组件库。开发期资源和运行期资源的元模型如下图所示。

开发方法

开发方法包括最佳实践和相关的指导、技术以及标准,还有与创建工作产品相关的可重用元素,如模板和样例。我们对开发方法的重用通常是指某些自动化的适当工具,如建模工具Rose、编译器Eclipse、调试器RestClient等。

架构风格

架构风格定义组件和连接器类型的词汇及它们如何进行组合的一组约束。架构风格整体应用于系统。架构风格可以指面向服务的架构(SOA),客户端-服务器模型,管道和过滤器模型等。

架构机制

架构机制代表经常遇到的问题的共同的具体解决方法。持续机制、错误记录机制、通信机制和购物车都属于架构机制。

模式

模式是在给定的上下文中针对一个常规问题的一个常规解决方法。模式的范围非常广,包括需求模式、架构模式、设计模式、编程模式、测试模式、项目管理模式、方法模式和组织模式等。

对架构模式的重用例子有基于电子商务的IBM模式,基于金融系统的IBM模式等。对与设计模式的重用主要是对经典的Gof设计模式的重用。

参考模型

参考模型是一个特定关注领域的实体、它们的关系和行为的一个抽象表示,它通常为更具体的元素的开发形成概念基础。

参考模型的例子有很多,比如业务模型、信息模型和术语表等。参考模型最典型的一个例子是IBM的保险应用架构(IIA,Insurance Application Architecture),这个模型提供了代表保险行业普遍使用的最佳实践的200多个业务流程和700个独立的业务活动。

架构决策

架构决策是关于一个软件系统整体或它的一个或多个核心组件的刻意设计决策。这些决策决定系统的非功能特性和质量指标。

把架构决策看作是可重用资源,是一个正在形成的领域,目前支持这类资源的方法和工具也相对不成熟。

现有的应用程序

任何现有的应用程序都是高可重用的资源。这些应用程序通常是指遗留应用程序,没有经验的架构师把遗留应用程序看作是要回避的东西而不是真正的有价值的资源。

当我们把现有应用程序集成到架构中时,这项工作的主要精力在集成而不是定制开发,重用的水平明显提高。这种集成有时候是指遗留集成或企业应用集成(EAI)。

封装的应用程序

封装的应用程序是提供很多能力(和重用)的一个粗粒度的商业化成熟产品,如一个客户关系管理(CRM)应用程序或企业资源计划(ERP)应用程序。Siebel和SAP是典型的封装应用程序的例子。

如果封装的应用程序占待开发系统的很大一部分,需要定制的开发量就会显著减少,精力会移动到封装应用程序的配置和集成上。

应用框架

应用框架代表一个应用程序的特定领域的部分实现。应用框架的范围非常广阔,它可以指完整的平台,如J2EE和.NET;也可以指一个特定的领域,如数据访问(Hibernate)或用户界面(JSF、ASP.NET)。

本节只是基于可重用架构资源的分类介绍,并对其中的关键概念做了简单介绍。稍后,我将在案例方面介绍可重用架构资源及其他方面的关于架构的设计。

如果你对项目管理、系统架构有兴趣,请加微信订阅号“softjg”,加入这个PM、架构师的大家庭

向架构师进军-->可重用架构资源的更多相关文章

  1. 向架构师进军--->系统架构设计基础知识

    假设你对项目管理.系统架构有兴趣,请加微信订阅号“softjg”,增加这个PM.架构师的大家庭 在解说系统架构设计之前,有必要补充一下架构相关的概念,因此本博文主要讲述架构.架构师和架构设计等相关的概 ...

  2. 向架构师进军--->系统架构设计基础知识

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 在讲解系统架构设计之前,有必要补充一下架构相关的概念,因此本博文主要讲述架构.架构师 ...

  3. WEB架构师成长之路-架构师都要懂哪些知识 转

    Web架构师究竟都要学些什么?具备哪些能力呢?先网上查查架构师的大概的定义,参见架构师修炼之道这篇文章,写的还不错,再查查公司招聘Web架构师的要求. 总结起来大概有下面几点技能要求: 一. 架构师有 ...

  4. 阿里P8架构师深度概述分布式架构

    简介 作为一名架构师,我们要专业,要能看懂代码,及时光着臂膀去机房,也能独挡一面!及时同事搞不定问题,或者撂挑子,你也能给老大一个坚定的眼神:不怕,有我在!还能在会议室上滔滔不绝,如若无人,让不懂技术 ...

  5. Java程序员如何从码农晋升为架构师,你跟架构师的差别在哪里?

    一.如何定义架构师 Java架构师,首先要是一个Java程序员,熟练使用各种框架,并知道它们实现的原理.jvm虚拟机原理.调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,怎么解决并发量. ...

  6. 最新咕咆+鲁班+图灵+享学+蚂蚁+硅谷+源码 Java架构师资料《Java架构师VIP课程》

    最新的Java架构师完整资料,完整视频+源码+文档. 每一套都是一百多个G的资料,无密. JAVA架构师全套课程 咕泡学院互联网架构师第一期 咕泡学院互联网架构师第二期 咕泡学院互联网架构师第三期 博 ...

  7. 向架构师进军--->如何编写软件架构文档

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 问:为什么要编写软件架构文档,它的好处是什么? 答: 有文档的架构有助于不同利益相关 ...

  8. 向架构师进军--->怎样编写软件架构文档

    假设你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",增加这个PM.架构师的大家庭 问:为什么要编写软件架构文档,它的优点是什么? 答: 有文档的架构有助于不同利益相关 ...

  9. 架构师之路--应用架构的选型和dubbo

    这个选型主要决定于系统复杂度.先回顾一下. 1>单一应用架构:对于一个流量很小的网站来说,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本.之前在上家公司做过一个微信公众号的开发就是基 ...

随机推荐

  1. jstl 标签库的使用

    JSTL 核心标签库 使用   JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.ot ...

  2. Obiee11g变量

    原文地址:http://xee123.blog.163.com/blog/static/277119942012612104438332/ Obiee 版本 11.1.1.5 库变量 库变量在同一时刻 ...

  3. Linux系统初始流程

    一.0S(内核的功能):平台类软件(通用软件) 进程管理:进程调度器(scheduler)维持一个任务结构(task_struct) 内存管理:如何使用线性地址空间,如何分段,如何分页,如何避免内存( ...

  4. c#大数加法

    在C#中,我们经常需要表示整数.但是,c#的基本数据类型中,最大的long也只能表示-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807之间的数 ...

  5. Android中使用AlarmManager进程被删除的解决办法

    http://blog.csdn.net/zhouzhiwengang/article/details/13022325 在Android中,AlarmManager提供了不受休眠状态的系统定时功能, ...

  6. ie7中ul不能嵌套div和li平级

    我要讲一个忧伤的故事,本以为清晰的层次结构,ul里不能嵌套div和li平级,不然会乱乱乱! 代码: <ul class="catshow">              ...

  7. 如何用Selenium 向CodeMirror 编辑器输入

    用Selenium 自动填写Jenkins上面一个文本输入框,通过css定位很容易,但是输入文字的时候会报错 ElementNotVisibleException: Message: Element ...

  8. C#-2 wpf 项目编程结构设计

    View:界面布局 EXCEL ViewModel:流程,数据粘合胶水 Model: 1)DB 结构 (数据库结构) 2)绑定的数据(界面交互数据) Service:1)BLL(画流程图)画业务逻辑图 ...

  9. JSON.stringify 在OA差旅中转换为字符串传给后端,(使用from表单的形式)

    $('#bookForm').find('#formData').val(transInfo.fromData).end().submit(); 这里的val()中的transInfo.fromDat ...

  10. 嵌套循环中break、continue的用法

    在循环语句中经常会用到break.continue语句,基本用法如下: 一.break语句为退出当前循环,在嵌套循环中结果如下: var num=0; for(var i=0;i<5;i++){ ...