向架构师进军-->可重用架构资源
如果你对项目管理、系统架构有兴趣,请加微信订阅号“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、架构师的大家庭
向架构师进军-->可重用架构资源的更多相关文章
- 向架构师进军--->系统架构设计基础知识
假设你对项目管理.系统架构有兴趣,请加微信订阅号“softjg”,增加这个PM.架构师的大家庭 在解说系统架构设计之前,有必要补充一下架构相关的概念,因此本博文主要讲述架构.架构师和架构设计等相关的概 ...
- 向架构师进军--->系统架构设计基础知识
如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 在讲解系统架构设计之前,有必要补充一下架构相关的概念,因此本博文主要讲述架构.架构师 ...
- WEB架构师成长之路-架构师都要懂哪些知识 转
Web架构师究竟都要学些什么?具备哪些能力呢?先网上查查架构师的大概的定义,参见架构师修炼之道这篇文章,写的还不错,再查查公司招聘Web架构师的要求. 总结起来大概有下面几点技能要求: 一. 架构师有 ...
- 阿里P8架构师深度概述分布式架构
简介 作为一名架构师,我们要专业,要能看懂代码,及时光着臂膀去机房,也能独挡一面!及时同事搞不定问题,或者撂挑子,你也能给老大一个坚定的眼神:不怕,有我在!还能在会议室上滔滔不绝,如若无人,让不懂技术 ...
- Java程序员如何从码农晋升为架构师,你跟架构师的差别在哪里?
一.如何定义架构师 Java架构师,首先要是一个Java程序员,熟练使用各种框架,并知道它们实现的原理.jvm虚拟机原理.调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,怎么解决并发量. ...
- 最新咕咆+鲁班+图灵+享学+蚂蚁+硅谷+源码 Java架构师资料《Java架构师VIP课程》
最新的Java架构师完整资料,完整视频+源码+文档. 每一套都是一百多个G的资料,无密. JAVA架构师全套课程 咕泡学院互联网架构师第一期 咕泡学院互联网架构师第二期 咕泡学院互联网架构师第三期 博 ...
- 向架构师进军--->如何编写软件架构文档
如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 问:为什么要编写软件架构文档,它的好处是什么? 答: 有文档的架构有助于不同利益相关 ...
- 向架构师进军--->怎样编写软件架构文档
假设你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",增加这个PM.架构师的大家庭 问:为什么要编写软件架构文档,它的优点是什么? 答: 有文档的架构有助于不同利益相关 ...
- 架构师之路--应用架构的选型和dubbo
这个选型主要决定于系统复杂度.先回顾一下. 1>单一应用架构:对于一个流量很小的网站来说,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本.之前在上家公司做过一个微信公众号的开发就是基 ...
随机推荐
- Android Volley gives me 400 error
本文来自:http://stackoverflow.com/questions/21739276/android-volley-gives-me-400-error 本人是根据文中的其中一方法: I ...
- linux bond配置步骤,七种bond模式说明
一.网卡绑定: 第一步:创建一个ifcfg-bondX # vi /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 BONDING_OPT ...
- js或jquery如何获取父级、子级、兄弟元素(包括祖级、孙级等)
原生javascript方法: var a = document.getElementById("dom"); del_space(a); //清理空格 var b = a.chi ...
- 【jq】c#零基础学习之路(1)Hello World!
从今天起我会持续发表,这个就是一个日记型的,学习编程是枯燥的,况且我们还是零基础. 学前准备 1.编译环境 vs2010.vs2012.vs2015...(本人用的是vs2010旗舰版).vs2010 ...
- iOS面试题汇总
摘要:1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承;可以实现多个接口,通 ...
- 获取字符串中img标签的url集合(转载)
/// <summary> /// 获取字符串中img的url集合 /// </summary> /// <param name="content"& ...
- java 线程安全 synchronized
一.线程安全问题: 并发编程的原则:设计并发编程的目的是为了使程序获得更高的执行效率,但绝不能出现数据一致性(数据准确)问题,如果并发程序连最基本的执行结果准确性都无法保证,那并发编程就没有任何意义. ...
- Tencent://Message/协议的实现原理
腾讯官方通过 Tencent://Message/协议可以让QQ用户显示QQ/TM的在线状态发布在互联网上:并且点击 XXX ,不用加好友也可以聊天 官方链接: http://is.qq.com/w ...
- nodejs概要
1.什么是Node Node.js 可能类似jquery.js?当不是. 首先Js包含(ECMAScript 即JS- ES BOM DOM三类),浏览器三种都可以运行,node中只能运行EC ...
- 去掉mac终端里面hostname提示处的bogon
打开终端,如果在命令提示$前面显示的主机名变成了bogon,则可以通过命令行修改: sudo scutil --set hostname 新主机名