Java-Android-jwebee
          Java-Android-jwebee
          對IT人來說,要成為一個優(yōu)秀的技術(shù)型管理者,除了需要具備扎實的技術(shù)基礎(chǔ)之外,還應(yīng)該培養(yǎng)良好的人際關(guān)系能力、談判與溝通技能、客戶關(guān)系與咨詢技能、商業(yè)頭腦和財務(wù)技能以及創(chuàng)新意識,此外還要有巧妙的激勵技巧和化解沖突與解決突發(fā)問題的能力.

          ???? 軟件架構(gòu) ( software architecture )是一系列相關(guān)的抽象 模式 ,用于指導(dǎo)大型 軟件系統(tǒng) 各個方面的設(shè)計。? 軟件 架構(gòu) 是一個系統(tǒng)的草圖。軟件架構(gòu)描述的 對象 是直接構(gòu)成系統(tǒng)的抽象 組件 。各個組件之間的連接則明確和相對細(xì)致地描述組件之間的通訊。在實現(xiàn)階段,這些抽象組件被細(xì)化為實際的組件,比如具體某個類 或者對象。在 面向?qū)ο?領(lǐng)域中,組件之間的連接通常用接口_( 計算機(jī) 科學(xué))來實現(xiàn)。

          ???? 軟件體系結(jié)構(gòu)是構(gòu)建計算機(jī)軟件實踐的基礎(chǔ)。與建筑師設(shè)定建筑項目的設(shè)計原則和目標(biāo),作為繪圖員畫圖的基礎(chǔ)一樣,一個軟件架構(gòu)師或者系統(tǒng)架構(gòu)師陳述軟件構(gòu)架以作為滿足不同客戶需求的實際系統(tǒng)設(shè)計方案的基礎(chǔ)。

          ????? 軟件構(gòu)架是一個容易理解的概念,多數(shù)工程師(尤其是經(jīng)驗不多的工程師)會從直覺上來認(rèn)識它,但要給出精確的定義很困難。特別是,很難明確地區(qū)分設(shè)計和構(gòu)架:構(gòu)架屬于設(shè)計的一方面,它集中于某些具體的特征。

          ????? 軟件構(gòu)架簡介 中, David Garlan Mary Shaw 認(rèn)為軟件構(gòu)架是有關(guān)如下問題的設(shè)計層次: 在計算的算法和數(shù)據(jù)結(jié)構(gòu)之外,設(shè)計并確定系統(tǒng)整體結(jié)構(gòu)成為了新的問題。結(jié)構(gòu)問題包括總體組織結(jié)構(gòu)和全局控制結(jié)構(gòu);通信、同步和數(shù)據(jù)訪問的協(xié)議;設(shè)計元素的功能分配;物理分布;設(shè)計元素的組成;定標(biāo)與性能;備選設(shè)計的選擇。 ”[GS93]

          ?????? 但構(gòu)架不僅是結(jié)構(gòu); IEEE Working Group on Architecture 把其定義為 系統(tǒng)在其環(huán)境中的最高層概念 ”[IEEE98] 。構(gòu)架還包括 符合 系統(tǒng)完整性、經(jīng)濟(jì)約束條件、審美需求和樣式。它并不僅注重對內(nèi)部的考慮,而且還在系統(tǒng)的用戶環(huán)境和開發(fā)環(huán)境中對系統(tǒng)進(jìn)行整體考慮,即同時注重對外部的考慮。

          ????? Rational Unified Process 中,軟件系統(tǒng)的構(gòu)架(在某一給定點)是指系統(tǒng)重要構(gòu)件的組織或結(jié)構(gòu),這些重要構(gòu)件通過接口與不斷減小的構(gòu)件與接口所組成的構(gòu)件進(jìn)行交互。

          ???? 從和目的、主題、材料和結(jié)構(gòu)的聯(lián)系上來說,軟件架構(gòu)可以和建筑物的架構(gòu)相比擬。一個軟件架構(gòu)師需要有廣泛的軟件理論知識和相應(yīng)的經(jīng)驗來事實和管理軟件產(chǎn)品的高級設(shè)計。軟件架構(gòu)師定義和設(shè)計軟件的模塊化,模塊之間的交互,用戶界面風(fēng)格,對外接口方法,創(chuàng)新的設(shè)計特性,以及高層事物的對象操作、邏輯和流程。

            是一般而言,軟件系統(tǒng)的架構(gòu)(Architecture)有兩個要素:

            ·它是一個軟件系統(tǒng)從整體到部分的最高層次的劃分。

            一個系統(tǒng)通常是由元件組成的,而這些元件如何形成、相互之間如何發(fā)生作用,則是關(guān)于這個系統(tǒng)本身結(jié)構(gòu)的重要信息。

            詳細(xì)地說,就是要包括架構(gòu)元件(Architecture Component)、聯(lián)結(jié)器(Connector)、任務(wù)流(Task-flow)。所謂架構(gòu)元素,也就是組成系統(tǒng)的核心"磚瓦",而聯(lián)結(jié)器則描述這些元件之間通訊的路徑、通訊的機(jī)制、通訊的預(yù)期結(jié)果,任務(wù)流則描述系統(tǒng)如何使用這些元件和聯(lián)結(jié)器完成某一項需求。

            ·建造一個系統(tǒng)所作出的最高層次的、以后難以更改的,商業(yè)的和技術(shù)的決定。

            在建造一個系統(tǒng)之前會有很多的重要決定需要事先作出,而一旦系統(tǒng)開始進(jìn)行詳細(xì)設(shè)計甚至建造,這些決定就很難更改甚至無法更改。顯然,這樣的決定必定是有關(guān)系統(tǒng)設(shè)計成敗的最重要決定,必須經(jīng)過非常慎重的研究和考察。

          歷史
          ????? 早在1960年代,諸如E·W·戴克斯特拉就已經(jīng)涉及軟件架構(gòu)這個概念了。自1990年代以來,部分由于在 Rational Software Corporation Microsoft內(nèi)部的相關(guān)活動,軟件架構(gòu)這個概念開始越來越流行起來。

          ????? 卡內(nèi)基梅隆大學(xué)和加州大學(xué)埃爾文分校在這個領(lǐng)域作了很多研究。卡內(nèi)基·梅隆大學(xué)的Mary ShawDavid Garlan1996年寫了一本叫做 Software Architecture perspective on an emerging discipline的書,提出了軟件架構(gòu)中的很多概念,例如軟件組件、連接器、風(fēng)格等等。加州大學(xué)埃爾文分校的軟件研究院所做的工作則主要集中于架構(gòu)風(fēng)格、架構(gòu)描述語言以及動態(tài)架構(gòu)。

            計算機(jī)軟件的歷史開始于五十年代,歷史非常短暫,而相比之下建筑工程則從石器時代就開始了,人類在幾千年的建筑設(shè)計實踐中積累了大量的經(jīng)驗和教訓(xùn)。建筑設(shè)計基本上包含兩點,一是建筑風(fēng)格,二是建筑模式。獨特的建筑風(fēng)格和恰當(dāng)選擇的建筑模式,可以使一個獨一無二。

          架構(gòu)的目標(biāo)是什么

            正如同軟件本身有其要達(dá)到的目標(biāo)一樣,架構(gòu)設(shè)計要達(dá)到的目標(biāo)是什么呢?一般而言,軟件架構(gòu)設(shè)計要達(dá)到如下的目標(biāo):

            ·可靠性(Reliable)。軟件系統(tǒng)對于用戶的商業(yè)經(jīng)營和管理來說極為重要,因此軟件系統(tǒng)必須非常可靠。

            ·安全行(Secure)。軟件系統(tǒng)所承擔(dān)的交易的商業(yè)價值極高,系統(tǒng)的安全性非常重要。

            ·可擴(kuò)展性(Scalable)。軟件必須能夠在用戶的使用率、用戶的數(shù)目增加很快的情況下,保持合理的性能。只有這樣,才能適應(yīng)用戶的市場擴(kuò)展得可能性。

            ·可定制化(Customizable)。同樣的一套軟件,可以根據(jù)客戶群的不同和市場需求的變化進(jìn)行調(diào)整。

            ·可擴(kuò)展性(Extensible)。在新技術(shù)出現(xiàn)的時候,一個軟件系統(tǒng)應(yīng)當(dāng)允許導(dǎo)入新技術(shù),從而對現(xiàn)有系統(tǒng)進(jìn)行功能和性能的擴(kuò)展

            ·可維護(hù)性(Maintainable)。軟件系統(tǒng)的維護(hù)包括兩方面,一是排除現(xiàn)有的錯誤,二是將新的軟件需求反映到現(xiàn)有系統(tǒng)中去。一個易于維護(hù)的系統(tǒng)可以有效地降低技術(shù)支持的花費

            ·客戶體驗(Customer Experience)。軟件系統(tǒng)必須易于使用。

            ·市場時機(jī)(Time to Market)。軟件用戶要面臨同業(yè)競爭,軟件提供商也要面臨同業(yè)競爭。以最快的速度爭奪市場先機(jī)非常重要。

          架構(gòu)的種類

            根據(jù)我們關(guān)注的角度不同,可以將架構(gòu)分成三種:

            ·邏輯架構(gòu)、軟件系統(tǒng)中元件之間的關(guān)系,比如用戶界面,數(shù)據(jù)庫,外部系統(tǒng)接口,商業(yè)邏輯元件,等等。
          ????·
          物理架構(gòu)、軟件元件是怎樣放到硬件上的。
          ????·
          系統(tǒng)架構(gòu)、系統(tǒng)的非功能性特征,如可擴(kuò)展性、可靠性、強壯性、靈活性、性能等。

          架構(gòu)師

            軟體設(shè)計師中有一些技術(shù)水平較高、經(jīng)驗較為豐富的人,他們需要承擔(dān)軟件系統(tǒng)的架構(gòu)設(shè)計,也就是需要設(shè)計系統(tǒng)的元件如何劃分、元件之間如何發(fā)生相互作用,以及系統(tǒng)中邏輯的、物理的、系統(tǒng)的重要決定的作出。

            這樣的人就是所謂的架構(gòu)師(Architect)。在很多公司中,架構(gòu)師不是一個專門的和正式的職務(wù)。通常在一個開發(fā)小組中,最有經(jīng)驗的程序員會負(fù)責(zé)一些架構(gòu)方面的工作。在一個部門中,最有經(jīng)驗的項目經(jīng)理會負(fù)責(zé)一些架構(gòu)方面的工作。

            但是,越來越多的公司體認(rèn)到架構(gòu)工作的重要性,并且在不同的組織層次上設(shè)置專門的架構(gòu)師位置,由他們負(fù)責(zé)不同層次上的邏輯架構(gòu)、物理架構(gòu)、系統(tǒng)架構(gòu)的設(shè)計、配置、維護(hù)等工作。

          ?



          jwebee

          我的個人網(wǎng)站
          posted on 2006-11-08 13:32 周行 閱讀(166) 評論(0)  編輯  收藏 所屬分類: IT技術(shù)
          Java-Android-jwebee
          主站蜘蛛池模板: 木兰县| 长垣县| 游戏| 南宫市| 新竹市| 东乡县| 右玉县| 泌阳县| 邹城市| 调兵山市| 和龙市| 延庆县| 湟中县| 莱西市| 永吉县| 徐闻县| 新干县| 基隆市| 莱阳市| 开远市| 大宁县| 岐山县| 莱芜市| 云阳县| 毕节市| 宜兰市| 南康市| 武宁县| 桂林市| 遂平县| 云南省| 泾源县| 玉门市| 盐池县| 大厂| 潼南县| 怀宁县| 巍山| 玉门市| 大渡口区| 于都县|