刚开始接触软件工程的时候,知道其中一个步骤叫做“总体设计”,做这项工作的人就叫“软件设计师”。当时觉得这个名称比软件开发工程师酷多了。到了现在,又开始流行“架构师”(Architect)
刚开始接触软件工程的时候,知道其中一个步骤叫做“总体设计”,做这项工作的人就叫“软件设计师”。当时觉得这个名称比软件开发工程师酷多了。到了现在,又开始流行“架构师”(Architect)
,这个名称
听起来比软件设计师又酷了几分。
如今,如果你偶尔遇到一个年轻人,也就是二十出头、三十不到的样子,却客客气气地给你递上一张注明“数据仓库资深架构师”的名片。这个时候,你千万不要诧异。说来也不奇怪, BI在国内刚
发展起来没几年,在这个领域干个四五年就足以混个资深的名头了。
不过,话说回来,拿着“资深架构师”的名头去忽悠是一回事,但架构师究竟该干什么,架构设计究竟怎么进行,如何架构一个BI系统?的确是需要认真研究一番的!
第一截:模块
BI系统(或者说数据仓库系统)也同样需要架构,它作为一种软件系统,是符合一般架构原则的。首先,我们来看看架构设计中包括那些内容。 架构的重点是描述系统的结构,以及它们之间的
关联、交互接口。
BI系统可以划分成业务模型、元数据、数据质量、接口平台、报表集市、指标库等若干模块。可以看出,在这里,这些模块的命名都是静态的名词,而不是动词(例如业务建模、数据质量管理等)
。之所以如此,是因为这是在描述系统的结构而非功能。
具体来讲,业务模型是存放业务数据的结构,可以再往下细分,并有不同的分层方法。例如可以分成ODS、EDW、DM等层,也有的会根据业务复杂度或数据量考虑,舍弃ODS层。业务模型是支撑
业务分析需求的,例如报表、仪表盘、OLAP、专题应用等。
元数据为整个系统数据的形态和数据流动的过程起到支撑作用,也就是说,数据从源头开始,到最终用户眼前,其来龙去脉,每个环节的状态都需要掌握。还有人将它比喻成模块之间的粘合
剂,但我更愿意将它称作是“数据”之间的粘合剂,因为模块之间自有它们的交互接口规格来粘合。数据质量模块为衡量数据源质量、ETL 过程处理质量提供支撑。
接口平台是处于源系统和数据仓库系统之间的玩意儿,作用在于可以更方便地明确界定双方职责。当然,通常有很多系统似乎并不大愿意将职责搞得过于明确了倒宁愿糊涂一些。糊涂一些的
好处在于一开始省了好多事,但在以后扯皮的事情就少不了了。此外,报表集市为报表应用提供支持,指标库为绩效管理需求提供支持。其实,这两者还可以归入业务模型一类,因为它们都是
服务于分析需求的。
第二截:需求
之所以分成若干模块,是为了让架构清晰,降低这些模块之间的耦合,这符合“分离变化”的原则。那么,这一结构到底是否合理呢?还得看这个架构面临的需求到底是什么。做好这一步,就需
要把系统的用户分为两大类角色:一是系统运营角色,他们对系统的正常运行、维护负责;二是业务分析角色,他们需要从这个系统得到数据分析的功能。
显然,第二种角色的分析数据来源都将来自业务模型模块,而第一种角色将从剩余模块中满足自己的需要,而不直接和业务模型这个模块打交道。在架构设计中,重点应该放在如何满足系统
管理用户的需求上面。当然,只是"重点",而非舍弃业务分析角色,毕竟在业务模型模块中,还需要根据业务、数据量、分析应用等方面的特点,来进一步细化。
就笔者个人经验认为,架构设计应该是与具体业务关系不大的,这种架构应该是半通用的。之所以是半通用,是因为在系统功能上面,BI项目大同小异,而在业务需求上面,架构只需要对客户
的业务、分析需求分成几个大类,例如按行业为业务模型分类,按OLAP、报表来为分析应用分类,不需要太过细致。
下面,让我们来看看系统运营角色的需求。
首先,我们可以把这类角色再细分成两类:一是开发设计及实施者。之所以将开发者作为系统的用户,是因为数据仓库项目应该看作一个过程,而不是产品,因此在开发阶段,其实其架构最
重要的用户就是开发者,当然要为之提供便利。二是系统管理员。系统交付之后,如何监控系统运行、发现数据质量问题、应付新的分析需求等,当然都是系统管理员的分内之事。
那么,对于开发实施人员,他需要进行系统部署、ETL的开发调试、质量的稽核;对于设计人员,则需要进行模型的变更、系统调优、系统一致性分析等;而系统管理员则需要监控ETL过程、监
控系统运行、响应系统警报、接口数据管理等。这些都可以看作是用例。
这些用例就是架构设计的"需求",如何满足他们,并且保持良好的体系和清晰的结构,能够易于维护且能够满足日后肯定会增加的业务需求等等,这些都是架构师们仔细斟酌的事情。
最后,看一下分析人员的需求。举个例子来讲,某销售总监说:“我需要了解近半年来东区和西区的销售量、收入、成本对比”,这可以算是一个用例。对这个需求,架构师该如何做呢?正确做法
是,在架构中不能考虑东区、西区这些业务概念,那样就太过于细致,而是应当将这种需求抽象成一种分析应用,例如 “即席查询”。如此,架构师所着重考虑的事情就是如何满足这一类需求,
而非这一个需求。
链接:
架构设计四项原则:
1、架构设计主要面向系统用户为主;
2、架构设计的内容主要包括:系统功能需求、分析需求分类;支持这两者的后台结构,对结构进行粗略划分,以让其内部能够保持简单的交互方式;
3、架构设计中不要包含过于细致的业务术语(除非为了说明方便),要尽可能保持架构的复用;
4、如果架构设计确实包含不能被其他项目复用的地方,将这部分独立出去。(网界网-CCW)
分享到:
相关推荐
华为出品-安全架构设计方法指南,讲解安全架构设计的来源、软件系统架构与安全架构的定义,常见的系统架构表现形式,安全架构视图,安全架构设计的基本步骤和参考,基于八维度设计框架的安全架构设计方法,维度安全...
在不同的架构设计方法中出现的软件架构视图种类很多,本文介绍最常用的两种架构视图——逻辑架构视图和物理架构视图,并通过具体案例的分析说明如何运用它们进行架构设计。当观察和描述事物大局的时候,逻辑架构和...
架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计架构设计...
目的:软件架构设计,可以帮我们直观的熟悉整个架构的设计和拓展实现。 本文档作为产品的架构设计说明书,对系统整体进行了架构设计,指导后续的设计与开发。并为网站后续版本的架构参考。 本文内容面向产品经理,...
软考系统架构设计师(高级)学习笔记汇总 系统架构设计师考试大纲 系统架构设计师考试大纲和复习指南 系统架构设计师课程大纲 系统架构设计师:浅谈架构 系统架构设计师:软件架构师之路 系统架构设计师复习笔记 系统...
【软考】架构设计师论文案例分享【软考】架构设计师论文案例分享【软考】架构设计师论文案例分享【软考】架构设计师论文案例分享【软考】架构设计师论文案例分享【软考】架构设计师论文案例分享【软考】架构设计师...
课程采用《系统架构设计师教程第四版》教程,对涉及考试的考点进行讲解,主要内容包括:软件架构设计、软件工程、项目管理等课程内容。 【内容介绍】 系统架构设计师,软件架构设计、软件工程、项目管理课程内容的...
系统架构设计师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。 系统架构设计师考试合格人员能够根据系统需求规格说明书,结合应用领域和技术发展...
比较全面的阐述嵌入式系统软件架构设计的资料,pdf版本,文字版,完整无广告。 本课程是针对嵌入式软件开发的特点,讨论架构设计的思路和方法。试图给大家提供一种思想,启发大家的思维。框架,自动化代码生成和...
2009年下半年 系统架构设计师 案例分析.docx 2009年下半年 系统架构设计师 综合知识.docx 2009年下半年 系统架构设计师 论文 .docx 2010年下半年 系统架构设计师 案例分析.docx 2010年下半年 系统架构设计师 综合...
“系统架构设计师,属于计算机技术与软件(高级)专业技术资格。考试合格人员能够根据系统需求规格说明书,结合应用领域和技术发展的实际情况,考虑有关约束条件,设计正确、合理的软件架构,确保系统架构具有良好的...
智慧图书馆系统架构设计以及系统应用功能研究.pdf智慧图书馆系统架构设计以及系统应用功能研究.pdf智慧图书馆系统架构设计以及系统应用功能研究.pdf智慧图书馆系统架构设计以及系统应用功能研究.pdf智慧图书馆系统...
系统架构设计师与信息系统项目管理师有哪些不同?.pdf系统架构设计师与信息系统项目管理师有哪些不同?.pdf系统架构设计师与信息系统项目管理师有哪些不同?.pdf系统架构设计师与信息系统项目管理师有哪些不同?.pdf...
App研发录—架构设计,Crash分析和竞品技术分析App研发录—架构设计,Crash分析和竞品技术分析App研发录—架构设计,Crash分析和竞品技术分析App研发录—架构设计,Crash分析和竞品技术分析App研发录—架构设计,Crash...
本系统采用四层架构设计 - 2 - 一、展现层 - 2 - Web前端 - 2 - 二、通讯层 - 2 - 三、服务层 - 3 - 四、数据层 - 4 - 其他系统: - 4 - 1、认证系统: - 4 - 2、日志系统: - 7 - 3、会话治理 - 8 - 4、DNS劫持处理...
系统架构设计师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。 系统架构设计师考试合格人员能够根据系统需求规格说明书,结合应用领域和技术发展...
《大型分布式网站架构设计与实践》主要介绍了大型分布式网站架构所涉及的一些技术细节,包括SOA架构的实现、互联网安全架构、构建分布式网站所依赖的基础设施、系统稳定性保障和海量数据分析等内容;深入地讲述了...
系统架构设计师教程 系统架构设计师教程 系统架构设计师教程 系统架构设计师教程 系统架构设计师教程 系统架构设计师教程
本书通过.NET的架构来剖析架构设计,既具有代表性,也具有实用性。 2.上一版是同类书中的畅销品,累计印刷9553,译者陈黎夫在微软技术圈中具有一定知名度。 3.本书全面修订更新,涵盖了软件架构师的核心实践,...
这篇论文定义了一个框架,致力于通过架构风格来理解软件架构,并且展示如何使用风格来指导基于网络的应用的架构设计。本文使用了一个对基于网络的应用的架构风格的调查,根据不同的风格在分布式超媒体的架构中所导致...