2007-10-26

架构设计 摘录

关键字: 架构设计,architecture,Architecture

 

高新企业为了生存,因此他们所依靠的软件必须能提供其所需的功能;所需的高质量;所承诺的可用性,和可接受的价格。

架构是在组件,彼此间和与环境间关系,引导设计发展原则中体现的系统的基本结构

Architecture is the fundamental organization of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution. [IEEE 1471]

 

系统是为实现某个(些)特殊作用的组件的集合。专用系统包括个人应用,传统概念上的系统,子系统,系统中的系统,产品线,产品系列,整个企业和其他利益集团。一个系统是为了实现一个或多个任务而存在。[IEEE 1471]

A system is a collection of components organized to accomplish a specific function or set of functions. The term system encompasses individual applications, systems in the traditional sense, subsystems, systems of systems, product lines, product families, whole enterprises, and other aggregations of interest. A system exists to fulfill one or more missions in its environment. [IEEE 1471]

 

环境决定了开发,操作,策略和其他影响系统的设置和条件。[IEEE 1471]

The environment, or context, determines the setting and circumstances of developmental, operational, political, and other influences upon that system. [IEEE 1471]

 

任务是指系统为了实现对对象设置的使用或操作。[IEEE 1471]

A mission is a use or operation for which a system is intended by one or more stakeholders to meet some set of objectives. [IEEE 1471]

 

涉众是对于系统有利益关系或关注的个人,团队或组织。[IEEE 1471]

A stakeholder is an individual, team, or organization (or classes thereof) with interests in, or concerns relative to, a system. [IEEE 1471]

正如我们所见,“组件”贯穿于这些定义。正如有意留下一个模糊的概念来解释,大部分架构定义没有提到“组件”,IEEE 1471也不例外。组件也许是逻辑上的或物理存在的,技术上独立的或特定的,规模大的或规模小的。由于文章的原因,我使用了UML 2.0规范的组件定义;并且我相当宽松的使用这个概念来包含各种所遇到的架构成分,包括了对象,技术组件(例如Enterprise JavaBean),服务,程序模块,遗留系统,包应用程序等。这些是 UML 2.0中对“组件”的定义:

[组件]是包括内容的系统模型部分,且它的显示是可替换的。组件定义了所需接口的行为。例如,组件类似类型(type),它与所需接口行为一致。(包括静态和动态语义)

[A component is] a modular part of a system that encapsulates its contents and whose manifestation is replaceable within its environment. A component defines its behavior in terms of provided and required interfaces. As such, a component serves as a type, whose conformance is defined by these provided and required interfaces (encompassing both their static as well as dynamic semantics).

架构是对软件系统组织、结构部分和系统包含接口的选择,集合部分的特定行为,较大子系统部分的构成架构风格重大决定的设置

An architecture is the set of significant decisions about the organization of a software system, the selection of structural elements and their interfaces by which the system is composed, together with their behavior as specified in the collaborations among those elements, the composition of these elements into progressively larger subsystems, and the architectural style that guides this organization -- these elements and their interfaces, their collaborations, and their composition. [Kruchten]

大部分定义都指出一个架构关注于结构和行为,仅关注于重要决定,可以与架构风格一致,受涉众和环境的影响,体现基于原因的决定。

--架构定义结构

   许多架构的定义不但承认了他们自己的结构元素,而且还有结构元素的组成,关系(任何连接部分都需支持这样的关系),接口。

--架构定义行为

   与定义结构元素一样,架构定义了这些结构元素的相互作用。这些作用可以实现所期望的系统行为。

--架构关注于重要元素

   当一个架构定义了结构和行为,它不会在意所有的结构和行为的定义。它只在意那些被认为是重要的元素。重要的元素是那些有持久影响的,例如结构部分的主要部分,与核心行为相关的元素,和对诸如可靠性和可测量性等重要品质相关的元素。总的来说,架构不关心这些元素的细节。架构的重要性还可以以经济的重要性来表达,因为某些元素的主要驱动者是创建的成本和变更的成本。

--架构可以平衡涉众需求

   架构是为了实现涉众的需要而创造的。但是,一般来说不可能满足所有的需求。不同的涉众之间可能有相互冲突的需求,所以应满足适当的平衡性。所以作折中是构建进程的主要方面,且妥协是架构的重要属性。

--架构基于基本原理体现决策

   An important aspect of an architecture is not just the end result, the architecture itself, but the rationale for why it is the way it is. Thus, an important consideration is to ensure that you document the decisions that have led to this architecture and the rationale for those decisions.

--架构可以符合一个架构样式

   架构风格的例子包括分布式的风格,管道和过滤器风格,数据中心风格,基于规则的风格等。

[架构风格] 按照结构组织的模式定义了系统。更具体的,架构风格定义了组件和连接型的语法,和连接的方法。

[模式] 是对于普遍问题的普遍解决方案。

--架构被其环境所影响

   影响架构的环境的因素包含架构所支持的商务环境,系统涉众群,内部技术限制(例如需要符合组织标准),和外部技术限制(例如对外部系统的接口或遵守外部规则的标准)

--架构影响团队结构

--架构呈现在每一个系统中

--架构拥有一个特定的范围

   我们会遇到诸如企业架构,系统架构,组织架构,信息架构,硬件架构,应用架构,基础设施架构。你会见到其他类型的,每种类型都定义了一个架构的具体范围

 

 参考: http://www.ibm.com/developerworks/cn/rational/rationaledge/content/mar06/eeles/index.html

评论
xiaolin0105 2008-02-04
不同企业,产品不同,架构师职责也不同。做公司旗舰产品开发的和做商业咨询的公司的架构师职责就不一样了。
homesailing 2008-01-18
针对架构这个概念的讨论 ,我觉得关键是前提。只有前提明确了,可能我们理解起来就简单了。这个前提与行业无关 。
我认为,目前存在2类架构师
1 供应商的架构师:
对于生产软件的企业,无论是项目还是产品,如果有架构师,其职责会更加偏重于技术与协调;其面临的挑战就是开发效率(开发速度,人员变更等)与系统各项性能、功能之间的平衡。
2 企业的架构师:
对于作为最终用户的企业来说,其架构师不言而喻应该更偏重IT管理。其架构涉及到企业应用的整个层面。从网络硬件等基础设施,到软件开发/选型,到数据、应用、业务等层面的整合,再到整个IT系统的治理,整个IT的更新、发展等等等各个方面。

我的结论:
不同类企业,架构师职责不同。为何要约束架构师一定要如何??
对于软件企业,能将众多framework整合到一起,让其好好协同工作,提高了开发效率--开发人员爽了,老板爽了。何乐而不为?为何不能称作系统架构师。
况且,如各位所言,随着业务、技术的优化、发展,架构师的职责也会不断发展的。

万事万物都是变化发展的;
javafarseer 2008-01-15
能够把构架师与框架设计师说个明白,我就觉得你够拽啦,

因为大陆的环境是这样,大家都以为构架设计就是把几个frameworks整合一下,说实际点,其实就是把struts1 struts2 webwork (MVC) spring ,hibernate ibatis (ORM) DWR整合一下,

请问大陆那么多公司,那么多头衔为构架师的,有人能够说自己是一个好的框架设计师吗?
我有看springside 与whitesand,我知道springside是大陆最牛的开源框架整合,但是里面有什么是自己独创的?正如whitesand作者在javaworld.tw说的,demo集合而已,而whitesand里反而更多独创性
软体设计,需要注重的是什么?几个成本和几个性能
ozzzzzz 2007-11-12
hyhongyong 写道
ozzzzzz 写道

接着说点题外话,我最近愈来愈对RUP这个体系感到失望和厌恶,以至于对它的反感要大于对cmm的反感。可以这样说cmm即使在实际操作中一无是处,但是其在学术层面和研究的方法层面是给我很多启发,以至于很多东西我都是直接照搬过来的。而RUP则可以说基本上已经都是半成品状态,每一个地方都需要自己加工自己改造,而且你到各个不同的地方去看就会发现大家都声称自己是RUP,但是其实施的过程却差别非常巨大。这当然是由于RUP是一个商业方法框架,强调的是按照需要做裁剪,但是就如同我在前面已经说明了的,这些工作是非常需要小心谨慎而且操作经验的。
而回到题目本身,构架这个概念所带来的混乱,其实就是说明了RUP这种针对环境裁剪,过于活跃的问题。

呵呵,感觉IBM的东西是不是宣传成分比较大,不用IBM的工具实施RUP,是不是太难了呢?
我们项目现在就在探讨怎么使用rup的理论指导,好多地方是摸着石头过河,积累经验教训啊。

一般情况下,能不用RUP就不要用RUP。其实就用简单的UP有多好,何必非加上一个R,搞得又是学习,又是裁剪的。其实就是简简单单的,用例——uml——迭代计划——评审——构造,不就完了吗?
hyhongyong 2007-11-12
ozzzzzz 写道

接着说点题外话,我最近愈来愈对RUP这个体系感到失望和厌恶,以至于对它的反感要大于对cmm的反感。可以这样说cmm即使在实际操作中一无是处,但是其在学术层面和研究的方法层面是给我很多启发,以至于很多东西我都是直接照搬过来的。而RUP则可以说基本上已经都是半成品状态,每一个地方都需要自己加工自己改造,而且你到各个不同的地方去看就会发现大家都声称自己是RUP,但是其实施的过程却差别非常巨大。这当然是由于RUP是一个商业方法框架,强调的是按照需要做裁剪,但是就如同我在前面已经说明了的,这些工作是非常需要小心谨慎而且操作经验的。
而回到题目本身,构架这个概念所带来的混乱,其实就是说明了RUP这种针对环境裁剪,过于活跃的问题。

呵呵,感觉IBM的东西是不是宣传成分比较大,不用IBM的工具实施RUP,是不是太难了呢?
我们项目现在就在探讨怎么使用rup的理论指导,好多地方是摸着石头过河,积累经验教训啊。
ozzzzzz 2007-11-09
hyhongyong 写道
ozzzzzz 写道
你的意思我理解了,你是在一个RUP语境下说的这番话。实际上这也是我上面说了很多话,所想批判的一个倾向。这里我就不展开论述了,我只总结性的给RUP的构架定义做一些批评。
RUP中的构架定义是过于局限在项目范围,而较少考虑企业整体的环境的。特别是其根本就没有考虑到企业不仅仅是需要一个构架,很多时候企业还需要构建自己的产品线,而大型多产品线企业很可能会需要构建多个构架,并且建立统一的核心资产。
另外一个方面RUP的构架概念,也很少涉及其与框架(frarework)的关系,在很多情况下两者的内涵在定义在RUP中是很模糊的。
第三个平时不很重要,但是在构建多用途综合系统时会出现的问题是,RUP的构架究竟该不该设计到语义,以及如何设计语义,最终是何时表达语义都是存在逻辑环节的缺失的。

同时我们必须注意,并非所有企业都使用RUP,而且构架这个概念却使用在几乎所有的组织中。而每一个方法论都来定义一个自己构架的概念,以至于每一个组织都对构架有不同的认识,这显然是一种荒谬的做法。

看出来咱们理解的架构不是一个东西了。
o6z果然是经验丰富,所认识的层次比较深入。受教了!
我所说的架构就是针对一个项目或一个系统说的,说白了是为了开发一个系统而做的。企业产品线的架构问题我也认为不是一个技术职位所能做的事。
我所说的,的确是在RUP的语境下理解出来的东西,但不一定要在rup下才适用。rup只是一个软件开发工程的方法论和指导,就算不用rup,一个系统的建设我认为仍然是需要架构的。
rup和cmmi一样,只是定义了对软件开发过程的管理,应该不会设计到语义问题。语义问题应当是架构设计需要研究的。

你说的很有代表性,同时在你的那个语境下是非常正确的。但是我们应该面对的是现在的实际情况,而非固守于一个方法论系统。
现实的情况是,现在的公司有大有小,大的公司不仅仅存在几个产品线,而且还在更高层次上划分了产品线族,而小的公司往往又仅仅是做点项目,以至于仅仅是负责项目的某个方面。但是现在的项目却并不因为你公司的规模大小而改变,很多时候一个项目会涉及到众多的组织分工协作。这个时候,包装一个统一的涉及环境的语言的概念统一是必要的。
同时我们也必须看明白,人类的认识过程也就是一个概念发展的过程。构架这个概念,不能也不应该仅仅局限在一个方法体系下。至少应该做到的是,知道存在一个广泛概念层次的定义,同时也知道存在一个狭窄场景下的定义,并且在使用中在不加说明的前提下使用广泛层次的定义,使用狭窄层面的定义则需要加以特殊声明。
而另外一个问题在于,RUP的构架按照其定义所暗示的是应该包含语义内容的,而实际上其语义内容的包含又是非常困难以至于按照他们的做法是不可能完满做到的。这里一个核心的问题在于用例这个工具更加类似一个中间体,而不是加工完全的产品。这一点我已经在写的东西有涉及,大概会在3.0上线以后推出,请关注。

接着说点题外话,我最近愈来愈对RUP这个体系感到失望和厌恶,以至于对它的反感要大于对cmm的反感。可以这样说cmm即使在实际操作中一无是处,但是其在学术层面和研究的方法层面是给我很多启发,以至于很多东西我都是直接照搬过来的。而RUP则可以说基本上已经都是半成品状态,每一个地方都需要自己加工自己改造,而且你到各个不同的地方去看就会发现大家都声称自己是RUP,但是其实施的过程却差别非常巨大。这当然是由于RUP是一个商业方法框架,强调的是按照需要做裁剪,但是就如同我在前面已经说明了的,这些工作是非常需要小心谨慎而且操作经验的。
而回到题目本身,构架这个概念所带来的混乱,其实就是说明了RUP这种针对环境裁剪,过于活跃的问题。
hyhongyong 2007-11-09
ozzzzzz 写道
你的意思我理解了,你是在一个RUP语境下说的这番话。实际上这也是我上面说了很多话,所想批判的一个倾向。这里我就不展开论述了,我只总结性的给RUP的构架定义做一些批评。
RUP中的构架定义是过于局限在项目范围,而较少考虑企业整体的环境的。特别是其根本就没有考虑到企业不仅仅是需要一个构架,很多时候企业还需要构建自己的产品线,而大型多产品线企业很可能会需要构建多个构架,并且建立统一的核心资产。
另外一个方面RUP的构架概念,也很少涉及其与框架(frarework)的关系,在很多情况下两者的内涵在定义在RUP中是很模糊的。
第三个平时不很重要,但是在构建多用途综合系统时会出现的问题是,RUP的构架究竟该不该设计到语义,以及如何设计语义,最终是何时表达语义都是存在逻辑环节的缺失的。

同时我们必须注意,并非所有企业都使用RUP,而且构架这个概念却使用在几乎所有的组织中。而每一个方法论都来定义一个自己构架的概念,以至于每一个组织都对构架有不同的认识,这显然是一种荒谬的做法。

看出来咱们理解的架构不是一个东西了。
o6z果然是经验丰富,所认识的层次比较深入。受教了!
我所说的架构就是针对一个项目或一个系统说的,说白了是为了开发一个系统而做的。企业产品线的架构问题我也认为不是一个技术职位所能做的事。
我所说的,的确是在RUP的语境下理解出来的东西,但不一定要在rup下才适用。rup只是一个软件开发工程的方法论和指导,就算不用rup,一个系统的建设我认为仍然是需要架构的。
rup和cmmi一样,只是定义了对软件开发过程的管理,应该不会设计到语义问题。语义问题应当是架构设计需要研究的。
ozzzzzz 2007-11-08
hyhongyong 写道
ozzzzzz 写道

非也,非也。
实际上单个项目是很少需要配置构架师的,这个和单个项目很少需要做一个专门的构架是一个道理。实际上在一个项目中,存在管理、业务分析、技术三个关键角色,而一个除非是大型项目构架师是不会出现并且扮演其中任何一个角色。而即使是大型项目,构架师也是要同时扮演业务分析和技术两个关键角色,并且由于大型项目都是会划分为很多小型项目组织来完成,实际上构架师还是会辅助划分和调配资源,这个时候构架师一样是一个管理为主的角色。
构架师绝对是要有技术根基的,并且要求也很高。但是并且不能因此就说这个职位是一个技术职位,就如同CIO或者CTO一样还是一个管理层的职位,并且其工作也主要是管理方面的,至少管理和财务分析的工作也和技术对构架师来说一样重要。只不过现在很多地方对构架的概念有误导,而很多组织的所谓构架师其实是在做一个总工的事情。


可能是我对于架构的理解和你的理解不同。
我理解架构是开发项目或系统(无论大小)从各个角度抽象出来的意图的说明,是一个系统的灵魂。所谓的4+1视图是架构的常用视点,可以帮助各类人员增加对系统的理解,更有助于指导开发人员进行开发。
当然如果是一个相当大型的项目,是可能分成若干个小型项目的。但是这时构架师可能就不是一个而是一个团队。架构团队仍然是主要从技术角度为主,对项目的技术层面的东西进行指导和评估等等。
架构师在项目中的作用和CIO或者CTO在企业中所起的作用是不一样的。如果有商业利益等相关的变化,首先感受到的应该不是架构师,而是项目的投资人或者项目总工程师或者项目经理。一个项目的管理工作和财务分析工作,仍然是应该由项目经理来主导,架构师只能从技术与管理、财务的关系等方面进行建议。
我认为:即使是一个中小型的单个项目,架构仍然是不可少的。至于有没有专职的架构师,那就是仁者见仁,智者见智了。

你的意思我理解了,你是在一个RUP语境下说的这番话。实际上这也是我上面说了很多话,所想批判的一个倾向。这里我就不展开论述了,我只总结性的给RUP的构架定义做一些批评。
RUP中的构架定义是过于局限在项目范围,而较少考虑企业整体的环境的。特别是其根本就没有考虑到企业不仅仅是需要一个构架,很多时候企业还需要构建自己的产品线,而大型多产品线企业很可能会需要构建多个构架,并且建立统一的核心资产。
另外一个方面RUP的构架概念,也很少涉及其与框架(frarework)的关系,在很多情况下两者的内涵在定义在RUP中是很模糊的。
第三个平时不很重要,但是在构建多用途综合系统时会出现的问题是,RUP的构架究竟该不该设计到语义,以及如何设计语义,最终是何时表达语义都是存在逻辑环节的缺失的。

同时我们必须注意,并非所有企业都使用RUP,而且构架这个概念却使用在几乎所有的组织中。而每一个方法论都来定义一个自己构架的概念,以至于每一个组织都对构架有不同的认识,这显然是一种荒谬的做法。
hyhongyong 2007-11-08
ozzzzzz 写道

非也,非也。
实际上单个项目是很少需要配置构架师的,这个和单个项目很少需要做一个专门的构架是一个道理。实际上在一个项目中,存在管理、业务分析、技术三个关键角色,而一个除非是大型项目构架师是不会出现并且扮演其中任何一个角色。而即使是大型项目,构架师也是要同时扮演业务分析和技术两个关键角色,并且由于大型项目都是会划分为很多小型项目组织来完成,实际上构架师还是会辅助划分和调配资源,这个时候构架师一样是一个管理为主的角色。
构架师绝对是要有技术根基的,并且要求也很高。但是并且不能因此就说这个职位是一个技术职位,就如同CIO或者CTO一样还是一个管理层的职位,并且其工作也主要是管理方面的,至少管理和财务分析的工作也和技术对构架师来说一样重要。只不过现在很多地方对构架的概念有误导,而很多组织的所谓构架师其实是在做一个总工的事情。


可能是我对于架构的理解和你的理解不同。
我理解架构是开发项目或系统(无论大小)从各个角度抽象出来的意图的说明,是一个系统的灵魂。所谓的4+1视图是架构的常用视点,可以帮助各类人员增加对系统的理解,更有助于指导开发人员进行开发。
当然如果是一个相当大型的项目,是可能分成若干个小型项目的。但是这时构架师可能就不是一个而是一个团队。架构团队仍然是主要从技术角度为主,对项目的技术层面的东西进行指导和评估等等。
架构师在项目中的作用和CIO或者CTO在企业中所起的作用是不一样的。如果有商业利益等相关的变化,首先感受到的应该不是架构师,而是项目的投资人或者项目总工程师或者项目经理。一个项目的管理工作和财务分析工作,仍然是应该由项目经理来主导,架构师只能从技术与管理、财务的关系等方面进行建议。
我认为:即使是一个中小型的单个项目,架构仍然是不可少的。至于有没有专职的架构师,那就是仁者见仁,智者见智了。
ozzzzzz 2007-11-07
hyhongyong 写道

架构设计需要对业务的理解,也需要对人员分工的把握,架构师需要多才多艺,但这和架构是一种技术位职位并不矛盾。
一个项目中,项目经理是主要负责管理的,业务分析师是主要负责业务的,架构师就应该是主要负责技术的。

o6z从项目整体考虑,说架构师职位是非技术的,是看重了架构师在其它方面所起的作用。但是技术作用呢?如果架构师对技术(特别是企业系统集成方面)的把握上不能起到主要的作用,架构能是适合业务的吗?

非也,非也。
实际上单个项目是很少需要配置构架师的,这个和单个项目很少需要做一个专门的构架是一个道理。实际上在一个项目中,存在管理、业务分析、技术三个关键角色,而一个除非是大型项目构架师是不会出现并且扮演其中任何一个角色。而即使是大型项目,构架师也是要同时扮演业务分析和技术两个关键角色,并且由于大型项目都是会划分为很多小型项目组织来完成,实际上构架师还是会辅助划分和调配资源,这个时候构架师一样是一个管理为主的角色。
构架师绝对是要有技术根基的,并且要求也很高。但是并且不能因此就说这个职位是一个技术职位,就如同CIO或者CTO一样还是一个管理层的职位,并且其工作也主要是管理方面的,至少管理和财务分析的工作也和技术对构架师来说一样重要。只不过现在很多地方对构架的概念有误导,而很多组织的所谓构架师其实是在做一个总工的事情。
hyhongyong 2007-11-07
imjl 写道
hyhongyong 写道
可不可以这么说:架构体现的是概念整体性、设计约束、技术思路,是从各个角度对产品的业务组成、技术组成的整体描述,在软件开发中具有指导性意思。

我不赞同o6z的关于架构师不是技术性职位的论点,我认为架构师首先是技术的,然后才是其它方面的。如同项目经理,首先是管理的,然后也要懂技术吧。



呵呵,我同意o6z的看法。

你只是片面的从技术人员角度看问题。


架构为谁设计?设计之前需要知道什么信息?
业务。

再完美的架构如何偏离业务,那就不是好架构。

lz说的应该是框架,而lz对此比较模糊。对自己无法把握的不建议用论文形式描述,以免误导他人。


否,lz说的不是框架。框架是形如struts等具体的东西,而架构指的是一个系统的有机构成。
hyhongyong 2007-11-07
架构设计需要对业务的理解,也需要对人员分工的把握,架构师需要多才多艺,但这和架构是一种技术位职位并不矛盾。
一个项目中,项目经理是主要负责管理的,业务分析师是主要负责业务的,架构师就应该是主要负责技术的。

o6z从项目整体考虑,说架构师职位是非技术的,是看重了架构师在其它方面所起的作用。但是技术作用呢?如果架构师对技术(特别是企业系统集成方面)的把握上不能起到主要的作用,架构能是适合业务的吗?
ozzzzzz 2007-11-06
canonical 写道
架构的问题在于一般并没有人去创造一种技术架构,因此大部分问题只在于业务问题如何分解到既定的技术架构上。一般的技术架构也只是现有技术元素的简单组合而已。
我不同意架构师是商业或者管理职位的说法。

哈哈,你说的这些事情主要还是在于对业务的分解与工作的分配。这样的工作不就是商业分析和人员管理吗?
我这里还是要再强调一下,构架师这个角色虽然是商业和管理方面的,但是必须要有技术的深厚背景。因为单纯一个管理专家和业务专家是无法将业务安装技术约束进行细分的,同时也不能在不理解技术的前提下把握进度和难点,更不能很容易的简单评估人员的技术能力和素养以及擅长。
canonical 2007-11-04
架构的问题在于一般并没有人去创造一种技术架构,因此大部分问题只在于业务问题如何分解到既定的技术架构上。一般的技术架构也只是现有技术元素的简单组合而已。
我不同意架构师是商业或者管理职位的说法。
imjl 2007-11-01
hyhongyong 写道
可不可以这么说:架构体现的是概念整体性、设计约束、技术思路,是从各个角度对产品的业务组成、技术组成的整体描述,在软件开发中具有指导性意思。

我不赞同o6z的关于架构师不是技术性职位的论点,我认为架构师首先是技术的,然后才是其它方面的。如同项目经理,首先是管理的,然后也要懂技术吧。



呵呵,我同意o6z的看法。

你只是片面的从技术人员角度看问题。


架构为谁设计?设计之前需要知道什么信息?
业务。

再完美的架构如何偏离业务,那就不是好架构。

lz说的应该是框架,而lz对此比较模糊。对自己无法把握的不建议用论文形式描述,以免误导他人。
hyhongyong 2007-10-30
可不可以这么说:架构体现的是概念整体性、设计约束、技术思路,是从各个角度对产品的业务组成、技术组成的整体描述,在软件开发中具有指导性意思。

我不赞同o6z的关于架构师不是技术性职位的论点,我认为架构师首先是技术的,然后才是其它方面的。如同项目经理,首先是管理的,然后也要懂技术吧。
renavatio 2007-10-30
ozzzzzz 写道
xombat 写道
引用
完美就是不能在减少任何东西。你的设计也是如此。当你面对一个自己不很理解的环境,慢慢熟悉,寻找解决方案的时候,你应该从一个很小的不能被你在减少任何的元素的结构开始。因为只有这个简单而内聚紧密的小的结构,才能更容易的理解。而随着你对于环境的理解深入,自己能力的提高,你会发现更多的面对的是一个更具有相似性的应用簇。这个时候就可以添加一些新的具有针对性的元素,到你的基础结构中。当然因为更加具有针对性,那么应用的范围也更加狭窄,但是也正是因为狭窄你在这个范围的效率也会提升。而为了在范围和效率间取得平衡,是一个需要在业务、管理、市场、技术等诸多层面权衡。到了这个层次,就是你真正掌控构架的时候了。


来来回回读你的这段文字不下10次,总怕自己臆断了你的意思,所以又抛出了一个问题:
引用
“这个时候就可以添加一些新的具有针对性的元素,到你的基础结构中。当然因为更加具有针对性,那么应用的范围也更加狭窄,但是也正是因为狭窄你在这个范围的效率也会提升。”
根据这段话:产品的应用范围是不是应该越来越适度地狭窄,更加专业-----正好和框架相反?

还有,将那段话中的“设计”换成“产品”有没有改变您的原意?

因为设计我感觉有很多层面,比如类的设计,数据库的设计等具体实现上的设计,还有业务功能方面的设计,这段中的设计是不是后一种?
你上面问的问题是很关键的地方,这也就是为什么我在多处强调构架师不是一个技术职位,而是一个管理和商业职位的原因之一。
显然就我前面的论述来说,一个结构骨架究竟是一个框架还是一个构架,实际在其本身并不能加以区分,区别的是环境和你使用的意图。
你说产品的应用范围是不是应该愈来愈被严格的定义,更加专业,而框架则相反。其实实际的操作的时候,也可以相反。而又比如,你经常看到的内容总是会告诉你构架定义了组件,这似乎是在说组件应该是为构架服务,而且也总是先有构架后有组件。然而实际的情况复杂的多。比如java这个构架其实就来自与一个小型的项目,人们最初思考的仅仅是为一个嵌入系统写一个小的环境。而今天的情况你已经看到了,它已经成为了一个涉及多个层面,多个应用领域的,既有平台性、又包括语言和工具,同时又涉及商业等等多个要素的,复杂的系统。而构架师也需要不断的去思考和权衡究竟是整体还是局部的价值更多,发展更远大的问题。而就技术来说,往往在权衡中仅仅能站很小的部分(当然也有很多时候会是大部分,但是绝对不会是全部)。

其实这个东西你现在完全没有必要去理解,只要你按部就班的干活,这些东西就会自然的理解了。所以从这个角度来说,概念的理解其实也是很简单的。

到 所谓的架构层面,需要考虑的就不仅仅是技术了(前提是懂技术),还要考虑资源(时间,人,资金),市场需求,竞争环境。
javavsnet 2007-10-30
什么是架构,什么是构架?没找到定义。
ozzzzzz 2007-10-29
xombat 写道
引用
完美就是不能在减少任何东西。你的设计也是如此。当你面对一个自己不很理解的环境,慢慢熟悉,寻找解决方案的时候,你应该从一个很小的不能被你在减少任何的元素的结构开始。因为只有这个简单而内聚紧密的小的结构,才能更容易的理解。而随着你对于环境的理解深入,自己能力的提高,你会发现更多的面对的是一个更具有相似性的应用簇。这个时候就可以添加一些新的具有针对性的元素,到你的基础结构中。当然因为更加具有针对性,那么应用的范围也更加狭窄,但是也正是因为狭窄你在这个范围的效率也会提升。而为了在范围和效率间取得平衡,是一个需要在业务、管理、市场、技术等诸多层面权衡。到了这个层次,就是你真正掌控构架的时候了。


来来回回读你的这段文字不下10次,总怕自己臆断了你的意思,所以又抛出了一个问题:
引用
“这个时候就可以添加一些新的具有针对性的元素,到你的基础结构中。当然因为更加具有针对性,那么应用的范围也更加狭窄,但是也正是因为狭窄你在这个范围的效率也会提升。”
根据这段话:产品的应用范围是不是应该越来越适度地狭窄,更加专业-----正好和框架相反?

还有,将那段话中的“设计”换成“产品”有没有改变您的原意?

因为设计我感觉有很多层面,比如类的设计,数据库的设计等具体实现上的设计,还有业务功能方面的设计,这段中的设计是不是后一种?
你上面问的问题是很关键的地方,这也就是为什么我在多处强调构架师不是一个技术职位,而是一个管理和商业职位的原因之一。
显然就我前面的论述来说,一个结构骨架究竟是一个框架还是一个构架,实际在其本身并不能加以区分,区别的是环境和你使用的意图。
你说产品的应用范围是不是应该愈来愈被严格的定义,更加专业,而框架则相反。其实实际的操作的时候,也可以相反。而又比如,你经常看到的内容总是会告诉你构架定义了组件,这似乎是在说组件应该是为构架服务,而且也总是先有构架后有组件。然而实际的情况复杂的多。比如java这个构架其实就来自与一个小型的项目,人们最初思考的仅仅是为一个嵌入系统写一个小的环境。而今天的情况你已经看到了,它已经成为了一个涉及多个层面,多个应用领域的,既有平台性、又包括语言和工具,同时又涉及商业等等多个要素的,复杂的系统。而构架师也需要不断的去思考和权衡究竟是整体还是局部的价值更多,发展更远大的问题。而就技术来说,往往在权衡中仅仅能站很小的部分(当然也有很多时候会是大部分,但是绝对不会是全部)。

其实这个东西你现在完全没有必要去理解,只要你按部就班的干活,这些东西就会自然的理解了。所以从这个角度来说,概念的理解其实也是很简单的。
xombat 2007-10-29
引用
完美就是不能在减少任何东西。你的设计也是如此。当你面对一个自己不很理解的环境,慢慢熟悉,寻找解决方案的时候,你应该从一个很小的不能被你在减少任何的元素的结构开始。因为只有这个简单而内聚紧密的小的结构,才能更容易的理解。而随着你对于环境的理解深入,自己能力的提高,你会发现更多的面对的是一个更具有相似性的应用簇。这个时候就可以添加一些新的具有针对性的元素,到你的基础结构中。当然因为更加具有针对性,那么应用的范围也更加狭窄,但是也正是因为狭窄你在这个范围的效率也会提升。而为了在范围和效率间取得平衡,是一个需要在业务、管理、市场、技术等诸多层面权衡。到了这个层次,就是你真正掌控构架的时候了。


来来回回读你的这段文字不下10次,总怕自己臆断了你的意思,所以又抛出了一个问题:
引用
“这个时候就可以添加一些新的具有针对性的元素,到你的基础结构中。当然因为更加具有针对性,那么应用的范围也更加狭窄,但是也正是因为狭窄你在这个范围的效率也会提升。”
根据这段话:产品的应用范围是不是应该越来越适度地狭窄,更加专业-----正好和框架相反?

还有,将那段话中的“设计”换成“产品”有没有改变您的原意?

因为设计我感觉有很多层面,比如类的设计,数据库的设计等具体实现上的设计,还有业务功能方面的设计,这段中的设计是不是后一种?
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

xombat
搜索本博客
存档
最新评论