IT知名企業常見面試題實例與詳解

IT名企面試步驟一般爲四面:一面:技術面,考覈技能水平;二面:綜合面:考覈綜合素質;三面:HR面,職業規劃,優勢與劣勢,期望工資與工作地點;四面:老總面,最後決定命運。

 

一、 通用面試例題分析

1. 在學校裏你學習了哪些課程,成績如何?

答:首先看看計算機專業的課程:系統原理、微機原理、彙編語言、網絡基礎、VisualBasic編程、SQL、HTML語言、高等數學……基本上以對計算機科學結構性、設計性的課程爲主。然後是自動化專業,這張課表上少了彙編語言等系統基礎的課程,增加了POWER BUILDER、NTSever等網絡方面的內容,畢竟現在的自動化與網絡密不可分。而信息管理工程專業的課程就顯然偏重應用的色彩。除VB、VC編程語言的課程外,Windows、Photoshop、Flash/Firework/Dreamweaver網頁製作工具等課程也赫然在目。

2. 想着手編寫一個程序,在整個開發過程中,其中包含了大量細節,並推薦了許多步驟和文檔,那麼,時刻提醒自己注意的是什麼問題?整個過程是什麼?

答:時刻提醒自己注意的問題是:

(1) 對象是什麼?(怎樣將自己的項目分割成一系列單獨的組件?)

(2) 它們的接口是什麼?(需要將什麼消息發給每一個對象?)

整個過程可劃分爲四個階段,階段0剛剛開始採用某些形式的結構。

階段0:擬出一個計劃

第一步是決定在後面的過程中採取哪些步驟。

在這個階段,可能要決定一些必要的附加處理結構。在整個過程中設置幾個標誌,或者“路標”,將更有益於你集中注意力。經過了一個接一個的路標以後,可對自己的進度有清晰的把握。

階段1:要製作什麼?

在上一代程序設計中(即“過程化或程序化設計”),這個階段稱爲“建立需求分析和系統規格”。應儘可能總結出自己系統的一套完整的“使用條件”或者“應用場合”。

階段2:如何構建?

在這一階段,必須拿出一套設計方案,並解釋其中包含的各類對象在外觀上是什麼樣子,以及相互間是如何溝通的。

階段3:開始創建

全面的思考、周密的準備、良好的構造不僅使程序更易構建與調試,也使其更易理解和維護,而那正是一套軟件贏利的必要條件。

構建好系統,並令其運行起來後,必須進行實際檢驗,以前做的那些需求分析和系統規格便可派上用場了。全面地考察自己的程序,確定提出的所有要求均已滿足。現在一切似乎都該結束了?

階段4:校訂

第一次做的東西並不完善,所以需爲自己留下一個深入學習、認知的空間,再回過頭去作一些改變”。對於要解決的問題,隨着對它的學習和了解愈加深入,可能需要作出大量改動。進行這些工作的一個動力是隨着不斷的改革優化,終於能夠從自己的努力中得到回報,無論這需要經歷一個較短還是較長的時期,達到理想的狀態。

3. 什麼是UML?

答:是一種能夠描述問題、描述解決方案、起溝通作用的語言。這就是UML。

UML(Unified Modeling Language 統一建模語言)是由Rational公司發明,目前由OMG(標準化對象管理機構)維護。作爲一種建模語言,UML的定義包括UML語義和UML表示法兩個部分:

UML語義

描述基於UML的精確元模型定義。元模型爲UML的所有元素在語法和語義上提供了簡單、一致、通用的定義性說明,使開發者能在語義上取得一致,消除了因人而異的最佳表達方法所造成的影響。此外UML還支持對元模型的擴展定義。

UML表示法

定義UML符號的表示法,爲開發者或開發工具使用這些圖形符號和文本語法爲系統建模提供了標準。這些圖形符號和文字所表達的是應用級的模型,在語義上它是UML元模型的實例。標準建模語言UML的重要內容可以由下列五類圖(共9種圖形)來定義:用例圖、靜態圖、行爲圖、交互圖、實現圖。

從應用的角度看,當採用面向對象技術設計系統時,首先是描述需求;其次根據需求建立系統的靜態模型,以構造系統的結構;第三步是描述系統的行爲。其中在第一步與第二步中所建立的模型都是靜態的,包括用例圖、類圖(包含包)、對象圖、組件圖和配置圖等五個圖形,是標準建模語言UML的靜態建模機制。其中第三步中所建立的模型或者可以執行,或者表示執行時的時序狀態或交互關係。它包括狀態圖、活動圖、順序圖和合作圖等四個圖形,是標準建模語言UML的動態建模機制。因此,標準建模語言UML的主要內容也可以歸納爲靜態建模機制和動態建模機制兩大類。

4. 什麼是軟件重用?

答:軟件重用(Reuse)是軟件工程中最重要的思想之一,只有軟件重用,才能降低軟件成本,提高軟件的質量。你在對一個軟件進行分析的時候,找出可以重用的對象,有助於你開發高效的軟件系統。正如前面所說的,你不必把軟件分析的過分細緻,你只需從中找出關鍵性的、能夠重用的對象就足夠了。剩下的事情,就是對這些對象分配屬性和方法,並充分的使用這些對象就好了。

1) 編寫項目視圖和範圍文檔

系統的需求包括四個不同的層次:業務需求、用戶需求和功能需求、非功能性需求。

2) 用戶羣分類

用戶分成不同的用戶類。與UML中Usecase的Actor概念一樣,用戶類不一定都指人,也可以包括其他應用系統、接口或者硬件,這樣做使得與系統邊界外的接口也成爲系統需求。

3) 選擇用戶代表

4) 建立核心隊伍

5) 確定使用實例

6) 召開聯合會議

7) 分析用戶工作流程

8) 確定質量屬性

9) 檢查問題報告

10) 需求重用
5. 談談CMMI的起源

答:隨着人們對CMM研究的不斷深入,其他學科也結合本系統的特點,陸續推出了自己的CMM模型。例如,人力資源能力成熟度模型、系統工程能力成熟度模型等等:

(1) SW-CMM (Software CMM) 軟件CMM

(2) SE-CMM (System Engineering CMM) 系統工程CMM

(3) SA-CMM (Software Acquisition CMM) 軟件採購CMM

(4) IPT-CMM (Integrated Product Team CMM) 集成產品羣組CMM

(5) P-CMM (People CMM) 人力資源能力成熟度模型

爲了以示區別,國內外很多資料把CMM叫做SW-CMM。

6. ERP是個什麼概念?

答:本世紀90年代初,美國著名的IT分析公司Gartner Group Inc根據當時計算機信息處理技術IT(InformationTechnology)的發展和企業對供應鏈管理的需要,對信息時代以後製造業管理信息系統的發展趨勢和即將發生的變革作了預測,提出了企業資源計劃ERP(Enterprise Resources Planning)這個概念。

7. ERP系統與MRP-Ⅱ的區別是什麼?

答:ERP是在MRP-Ⅱ基礎上進一步發展起來的企業管理信息系統,爲了進一步理解ERP系統的概念及其主要功能,需要弄清ERP與MRP-Ⅱ之間的區別。

1) 在資源管理範圍方面的差別

MRP-Ⅱ主要側重對企業內部人、財、物等資源的管理,ERP系統提出了供應鏈(SupplyChain)的概念,即把客戶需求和企業內部的製造活動以及供應商的製造資源整合在一起,並對供應鏈上的所有環節進行有效管理,這些五一節包括訂單、採購、庫存、計劃、生產製造、質量控制、運輸、分銷、服務與維護、財務管理、人事管理、實驗室管理、項目管理、配方管理等。

2) 在生產方式管理方面的差別

MRP-Ⅱ系統把企業歸類爲幾種典型的生產方式來進行管理,如重複製造、批量生產、按訂單生產、按訂單裝配、按庫存生產等,針對每一種類型都有一套管理標準。而在80年代末、90年代初期,企業爲了緊跟市場的變化,多品種、小批量生產以及看板式生產成爲企業主要採用的生產方式,而ERP則能很好地支持和管理這種混合型製造環境,滿足了企業多元化經營需求。

3) 在管理功能方面的差別

ERP除了MRP-Ⅱ系統的製造、分銷、財務管理功能外,還增加了支持整各個環節之間的運輸管理和倉庫管理;支持生產保障體系的質量管理、實驗室管理、設備維修和備品備件管理;支持對工作流(業務處理流程)的管理。

4) 在事務處理控制方面的差別

MRP-Ⅱ是通過計劃的及時滾動來控制整個生產過程,它的實時性較差,一般只有實現事中控制。而ERP系統支持在線分析處理OLAP(OnlineAnalyticalProcessing)、售後服務及質量反饋,強調企業的事前控制能力,它可以將設計、製造、銷售、運輸等通過集成來並行地進行各種相關的作業,爲企業提供了對質量、適應變化、客戶滿意、效績等關鍵問題的實時分析能力。

此外,在MRP-Ⅱ中,財務系統只是一個信息的歸結者,它的功能是將供、產、銷中的數量信息轉變爲價值信息,是物流的價值反映。而ERP系統則將財務計劃功能和價值控制功能集成到整個供應鏈上,如在生產計劃系統中,除了保留原有的主生產計劃、物料需求計劃和能力計劃外還擴展了銷售執行計劃SOP和利潤計劃。

5) 在跨國(或地區)經營事務處理方面的差別

現代企業的發展,使得企業內部各個組織單元之間、企業與外部的業務單元之間的協調變得越來越多和越來越重要,ERP系統運用完善的組織架構,從而可以支持跨國經營的多國家地區、多工廠、多語種、多幣制應用需求。

6) 在計算機信息處理技術方面的差別

隨着IT技術的飛速發展,網絡通信技術的應用,使得ERP系統的以實現對整個供應鏈信息進行集成管理。ERP系統應用客戶/服務器(C/S)體系結構和分佈式數據處理技術,支持Internet/Intranet/Extranet、電子商務(E-busincss,E-commerce)、電子數據交換EDI,此外,還能實現在不同平臺上的互操作。我們就討論了“路標”的概念,當你的第一個路標達成之後,剩下的應該都是屬於校訂的事了。通過和用戶的交互,確定新的“路標”,不斷的改進系統功能,優化系統結構,修正系統Bug。

通過使用WWF,你可以創建基於處理器流的工作流並且把它們部署在任何類型的.NET應用程序中。此外,本文還討論了ASP.NET開發者面對的一些特有的問題-這些問題可能通過使用工作流得到解決,如維持狀態和頁面導航等。

8. WWF,Windows工作流基礎是什麼?

答:在2005年9月,微軟在它的一年兩次的專業開發者會議上公開了Windows WorkflowFoundation(WWF,Windows工作流基礎)。作爲WinFXAPI的支柱之一,WWF提供給開發者一個普通框架-在其上開發過程驅動的和以工作流爲中心的應用程序。

當前,有些組織力圖把整個商業過程自動化;他們的標準答案就是集合一隊開發者來開發相應的代碼。儘管這種方式對於這些組織帶來良好的作用,然而也有一些固有的問題。爲了深入理解這一問題,你需要理解一個工作流的基本特徵。

一個工作流本質是一種方法-用來歸檔包含在完成一個單元的工作中的活動。典型地,在處理過程中,工作"流"流過一項或更多活動。這些活動可以通過機器或人工來實現,並且有可能象在一個互聯網應用程序定義頁面順序一樣得簡單,也有可能象管理必須爲任何數目的人都要看到、更改並同意的文件或產品一樣得複雜。

因爲如此多的工作流程必須考慮到人工參預,所以可能需要花費很長工期才能完成,時間可能爲幾小時到數月或更長。例如,參預在該過程中的人可能無法找到,不在本地或忙於另外的任務;因此,工作流必須在所有非活動期間能夠把自身持續性存儲。而且,通過編碼獨立實現的過程可能對非技術人員難於理解而對開發者卻難於更改。這一點和其它一些因素正是例如WindowsWF等通用工作流框架的目標-其目的就在於使創建、改變和管理工作流更容易-這是通過向它們提供一個可視化接口或通過定義一組普通API來實現的。

你可以把WWF工作流放置在任何類型的.NET應用程序中-包括Windows表單程序,控制檯應用程序,Windows服務和ASP.NETWeb應用程序。每種類型都需要專門的考慮。儘管一些現有示例已經足夠說明如何把工作流宿主到Windows表單程序和控制檯應用程序中,但是本文將集中於討論ASP.NET開發者的問題-他們希望把工作流集成到自己的應用程序中。

Windows WF和MVC模式:在開發一個ASP.NET應用程序時,你可能使用WWF的一個普通的方法是實現一種模型-視圖-控制器(MVC)方法。實質上,MVC的目標是把描述層、應用程序邏輯和應用程序流邏輯分離開來。

搞清楚這個將十分有益於一個ASP.NET應用程序的開發,請考慮一個幫助桌面票工作流的場所。假定有一個商業用戶通過填寫一個ASP.NETWeb表單並點擊一個提交按鈕來啓動該工作流。接下來,服務器就會通知一個使用Windows表單應用程序和幫助桌面的僱員—“有新票可用了”。該幫助桌面僱員然後將在這一問題上工作,並在最後關閉該票。如果使用WindowsWF來開發這個工作流情形,那麼所有的處理邏輯和流程可以被包含在工作流本身,而該ASP.NET應用程序將完全不需要了解這一邏輯。

這種場所提供了一些穩固的證據-把描述與邏輯相分離是一件好事情。因爲這個處理幫助桌面請求的過程是非常普通的,如果使用C#或VB.NET代碼在若干不同的.NET應用程序中實現這一邏輯,那麼你將會冒着重複編碼的危險甚至更壞的情形--用完全不同的代碼導致同樣的商業處理過程的不同實現。但是如果你使用WWF來實現這一過程,那麼需要這一過程的應用程序開發者將僅需在一處修改這些步驟-工作流本身-而不必擔心這樣會改變應用程序邏輯。代碼複製和在哪裏實現該過程可以通過Windows WF的使用來加以緩和。

當使用Windows WF在ASP.NET中實現MVC架構時,開發者應該嘗試構建獨立於應用程序的工作流-而該工作流仍然宿主於該應用程序中。這將有助於保持邏輯獨立於描述並且保持在該Web應用程序中的工作步驟順序和頁面流之間的高度獨立性。

一個WWF開發新手可能試圖用一固定數目的活動以某種順序去開發一個工作流,然後開發一組ASP.NETWeb表單--這些表單以與之相同的順序從一個表單流向另一個表單。很遺憾,儘管這看上去挺符合邏輯,但是實際上這是非常不具有生產效率的,因爲你將會再次實現這個工作流邏輯。Web頁面X不需要知道是否它需要轉到頁面Y或頁面Z來正確地實現該工作流步驟。代之的是,該工作流(模型)應該告訴ASP.NET(控制器)下一步該幹什麼;然後ASP.NET應該決定要顯示哪個頁面。這樣,每個頁面幾乎不需要了解整個過程;它僅需要知道怎樣完成一個不同的活動並且讓該工作流來關心頁面是如何從一處流向另一處的。這種分離在開發者處理頁面流時帶來了一種極大的靈活性。例如,如果你決定改變該頁面顯示順序,那麼你可以從工作流中容易地實現這一點,而不需要改變該ASP.NET應用程序中的一行代碼。

9. 陳述一下軟件架構的概念

答:軟件架構(software architecture)是一系列相關的抽象模式,用於指導大型軟件系統各個方面的設計。軟件架構是一個系統的草圖。軟件架構描述的對象是直接構成系統的抽象組件。各個組件之間的連接則明確和相對細緻地描述組件之間的通訊。在實現階段,這些抽象組件被細化爲實際的組件,比如具體某個類或者對象。在面向對象領域中,組件之間的連接通常用接口_(計算機科學)來實現。

軟件體系結構是構建計算機軟件實踐的基礎。與建築師設定建築項目的設計原則和目標,作爲繪圖員畫圖的基礎一樣,一個軟件架構師或者系統架構師陳述軟件構架以作爲滿足不同客戶需求的實際系統設計方案的基礎。

軟件構架是一個容易理解的概念,多數工程師(尤其是經驗不多的工程師)會從直覺上來認識它,但要給出精確的定義很困難。特別是,很難明確地區分設計和構架:構架屬於設計的一方面,它集中於某些具體的特徵。

在“軟件構架簡介”中,David GArlan 和 Mary Shaw認爲軟件構架是有關如下問題的設計層次:“在計算的算法和數據結構之外,設計並確定系統整體結構成爲了新的問題。結構問題包括總體組織結構和全局控制結構;通信、同步和數據訪問的協議;設計元素的功能分配;物理分佈;設計元素的組成;定標與性能;備選設計的選擇。”[GS93]

但構架不僅是結構;IEEE Working Group on Architecture把其定義爲“系統在其環境中的最高層概念”[IEEE98]。構架還包括“符合”系統完整性、經濟約束條件、審美需求和樣式。它並不僅注重對內部的考慮,而且還在系統的用戶環境和開發環境中對系統進行整體考慮,即同時注重對外部的考慮。

在 Rational Unified ProcESs 中,軟件系統的構架(在某一給定點)是指系統重要構件的組織或結構,這些重要構件通過接口與不斷減小的構件與接口所組成的構件進行交互。

從和目的、主題、材料和結構的聯繫上來說,軟件架構可以和建築物的架構相比擬。一個軟件架構師需要有廣泛的軟件理論知識和相應的經驗來事實和管理軟件產品的高級設計。軟件架構師定義和設計軟件的模塊化,模塊之間的交互,用戶界面風格,對外接口方法,創新的設計特性,以及高層事物的對象操作、邏輯和流程。

10. 軟件系統的架構(ArchitECture)有兩個要素是什麼?

答:

1) 它是一個軟件系統從整體到部分的最高層次的劃分。

一個系統通常是由元件組成的,而這些元件如何形成、相互之間如何發生作用,則是關於這個系統本身結構的重要信息。

詳細地說,就是要包括架構元件(ArchitectureComponent)、聯結器(Connector)、任務流(TASk-flow)。所謂架構元素,也就是組成系統的核心"磚瓦",而聯結器則描述這些元件之間通訊的路徑、通訊的機制、通訊的預期結果,任務流則描述系統如何使用這些元件和聯結器完成某一項需求。

2) 建造一個系統所作出的最高層次的、以後難以更改的,商業的和技術的決定。

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

卡內基梅隆大學和加州大學埃爾文分校在這個領域作了很多研究。卡內基·梅隆大學的Mary Shaw和DavidGarlan於1996年寫了一本叫做 Software Architecture perspective on an emergingDIscipline的書,提出了軟件架構中的很多概念,例如軟件組件、連接器、風格等等。加州大學埃爾文分校的軟件研究院所做的工作則主要集中於架構風格、架構描述語言以及動態架構。
5. 談談CMMI的起源

答:隨着人們對CMM研究的不斷深入,其他學科也結合本系統的特點,陸續推出了自己的CMM模型。例如,人力資源能力成熟度模型、系統工程能力成熟度模型等等:

(1) SW-CMM (Software CMM) 軟件CMM

(2) SE-CMM (System Engineering CMM) 系統工程CMM

(3) SA-CMM (Software Acquisition CMM) 軟件採購CMM

(4) IPT-CMM (Integrated Product Team CMM) 集成產品羣組CMM

(5) P-CMM (People CMM) 人力資源能力成熟度模型

爲了以示區別,國內外很多資料把CMM叫做SW-CMM。

6. ERP是個什麼概念?

答:本世紀90年代初,美國著名的IT分析公司Gartner Group Inc根據當時計算機信息處理技術IT(InformationTechnology)的發展和企業對供應鏈管理的需要,對信息時代以後製造業管理信息系統的發展趨勢和即將發生的變革作了預測,提出了企業資源計劃ERP(Enterprise Resources Planning)這個概念。

7. ERP系統與MRP-Ⅱ的區別是什麼?

答:ERP是在MRP-Ⅱ基礎上進一步發展起來的企業管理信息系統,爲了進一步理解ERP系統的概念及其主要功能,需要弄清ERP與MRP-Ⅱ之間的區別。

1) 在資源管理範圍方面的差別

MRP-Ⅱ主要側重對企業內部人、財、物等資源的管理,ERP系統提出了供應鏈(SupplyChain)的概念,即把客戶需求和企業內部的製造活動以及供應商的製造資源整合在一起,並對供應鏈上的所有環節進行有效管理,這些五一節包括訂單、採購、庫存、計劃、生產製造、質量控制、運輸、分銷、服務與維護、財務管理、人事管理、實驗室管理、項目管理、配方管理等。

2) 在生產方式管理方面的差別

MRP-Ⅱ系統把企業歸類爲幾種典型的生產方式來進行管理,如重複製造、批量生產、按訂單生產、按訂單裝配、按庫存生產等,針對每一種類型都有一套管理標準。而在80年代末、90年代初期,企業爲了緊跟市場的變化,多品種、小批量生產以及看板式生產成爲企業主要採用的生產方式,而ERP則能很好地支持和管理這種混合型製造環境,滿足了企業多元化經營需求。

3) 在管理功能方面的差別

ERP除了MRP-Ⅱ系統的製造、分銷、財務管理功能外,還增加了支持整各個環節之間的運輸管理和倉庫管理;支持生產保障體系的質量管理、實驗室管理、設備維修和備品備件管理;支持對工作流(業務處理流程)的管理。

4) 在事務處理控制方面的差別

MRP-Ⅱ是通過計劃的及時滾動來控制整個生產過程,它的實時性較差,一般只有實現事中控制。而ERP系統支持在線分析處理OLAP(OnlineAnalyticalProcessing)、售後服務及質量反饋,強調企業的事前控制能力,它可以將設計、製造、銷售、運輸等通過集成來並行地進行各種相關的作業,爲企業提供了對質量、適應變化、客戶滿意、效績等關鍵問題的實時分析能力。

此外,在MRP-Ⅱ中,財務系統只是一個信息的歸結者,它的功能是將供、產、銷中的數量信息轉變爲價值信息,是物流的價值反映。而ERP系統則將財務計劃功能和價值控制功能集成到整個供應鏈上,如在生產計劃系統中,除了保留原有的主生產計劃、物料需求計劃和能力計劃外還擴展了銷售執行計劃SOP和利潤計劃。

5) 在跨國(或地區)經營事務處理方面的差別

現代企業的發展,使得企業內部各個組織單元之間、企業與外部的業務單元之間的協調變得越來越多和越來越重要,ERP系統運用完善的組織架構,從而可以支持跨國經營的多國家地區、多工廠、多語種、多幣制應用需求。

6) 在計算機信息處理技術方面的差別

隨着IT技術的飛速發展,網絡通信技術的應用,使得ERP系統的以實現對整個供應鏈信息進行集成管理。ERP系統應用客戶/服務器(C/S)體系結構和分佈式數據處理技術,支持Internet/Intranet/Extranet、電子商務(E-busincss,E-commerce)、電子數據交換EDI,此外,還能實現在不同平臺上的互操作。我們就討論了“路標”的概念,當你的第一個路標達成之後,剩下的應該都是屬於校訂的事了。通過和用戶的交互,確定新的“路標”,不斷的改進系統功能,優化系統結構,修正系統Bug。

通過使用WWF,你可以創建基於處理器流的工作流並且把它們部署在任何類型的.NET應用程序中。此外,本文還討論了ASP.NET開發者面對的一些特有的問題-這些問題可能通過使用工作流得到解決,如維持狀態和頁面導航等。

8. WWF,Windows工作流基礎是什麼?

答:在2005年9月,微軟在它的一年兩次的專業開發者會議上公開了Windows WorkflowFoundation(WWF,Windows工作流基礎)。作爲WinFXAPI的支柱之一,WWF提供給開發者一個普通框架-在其上開發過程驅動的和以工作流爲中心的應用程序。

當前,有些組織力圖把整個商業過程自動化;他們的標準答案就是集合一隊開發者來開發相應的代碼。儘管這種方式對於這些組織帶來良好的作用,然而也有一些固有的問題。爲了深入理解這一問題,你需要理解一個工作流的基本特徵。

一個工作流本質是一種方法-用來歸檔包含在完成一個單元的工作中的活動。典型地,在處理過程中,工作"流"流過一項或更多活動。這些活動可以通過機器或人工來實現,並且有可能象在一個互聯網應用程序定義頁面順序一樣得簡單,也有可能象管理必須爲任何數目的人都要看到、更改並同意的文件或產品一樣得複雜。

因爲如此多的工作流程必須考慮到人工參預,所以可能需要花費很長工期才能完成,時間可能爲幾小時到數月或更長。例如,參預在該過程中的人可能無法找到,不在本地或忙於另外的任務;因此,工作流必須在所有非活動期間能夠把自身持續性存儲。而且,通過編碼獨立實現的過程可能對非技術人員難於理解而對開發者卻難於更改。這一點和其它一些因素正是例如WindowsWF等通用工作流框架的目標-其目的就在於使創建、改變和管理工作流更容易-這是通過向它們提供一個可視化接口或通過定義一組普通API來實現的。

你可以把WWF工作流放置在任何類型的.NET應用程序中-包括Windows表單程序,控制檯應用程序,Windows服務和ASP.NETWeb應用程序。每種類型都需要專門的考慮。儘管一些現有示例已經足夠說明如何把工作流宿主到Windows表單程序和控制檯應用程序中,但是本文將集中於討論ASP.NET開發者的問題-他們希望把工作流集成到自己的應用程序中。

Windows WF和MVC模式:在開發一個ASP.NET應用程序時,你可能使用WWF的一個普通的方法是實現一種模型-視圖-控制器(MVC)方法。實質上,MVC的目標是把描述層、應用程序邏輯和應用程序流邏輯分離開來。

搞清楚這個將十分有益於一個ASP.NET應用程序的開發,請考慮一個幫助桌面票工作流的場所。假定有一個商業用戶通過填寫一個ASP.NETWeb表單並點擊一個提交按鈕來啓動該工作流。接下來,服務器就會通知一個使用Windows表單應用程序和幫助桌面的僱員—“有新票可用了”。該幫助桌面僱員然後將在這一問題上工作,並在最後關閉該票。如果使用WindowsWF來開發這個工作流情形,那麼所有的處理邏輯和流程可以被包含在工作流本身,而該ASP.NET應用程序將完全不需要了解這一邏輯。

這種場所提供了一些穩固的證據-把描述與邏輯相分離是一件好事情。因爲這個處理幫助桌面請求的過程是非常普通的,如果使用C#或VB.NET代碼在若干不同的.NET應用程序中實現這一邏輯,那麼你將會冒着重複編碼的危險甚至更壞的情形--用完全不同的代碼導致同樣的商業處理過程的不同實現。但是如果你使用WWF來實現這一過程,那麼需要這一過程的應用程序開發者將僅需在一處修改這些步驟-工作流本身-而不必擔心這樣會改變應用程序邏輯。代碼複製和在哪裏實現該過程可以通過Windows WF的使用來加以緩和。

當使用Windows WF在ASP.NET中實現MVC架構時,開發者應該嘗試構建獨立於應用程序的工作流-而該工作流仍然宿主於該應用程序中。這將有助於保持邏輯獨立於描述並且保持在該Web應用程序中的工作步驟順序和頁面流之間的高度獨立性。

一個WWF開發新手可能試圖用一固定數目的活動以某種順序去開發一個工作流,然後開發一組ASP.NETWeb表單--這些表單以與之相同的順序從一個表單流向另一個表單。很遺憾,儘管這看上去挺符合邏輯,但是實際上這是非常不具有生產效率的,因爲你將會再次實現這個工作流邏輯。Web頁面X不需要知道是否它需要轉到頁面Y或頁面Z來正確地實現該工作流步驟。代之的是,該工作流(模型)應該告訴ASP.NET(控制器)下一步該幹什麼;然後ASP.NET應該決定要顯示哪個頁面。這樣,每個頁面幾乎不需要了解整個過程;它僅需要知道怎樣完成一個不同的活動並且讓該工作流來關心頁面是如何從一處流向另一處的。這種分離在開發者處理頁面流時帶來了一種極大的靈活性。例如,如果你決定改變該頁面顯示順序,那麼你可以從工作流中容易地實現這一點,而不需要改變該ASP.NET應用程序中的一行代碼。

9. 陳述一下軟件架構的概念

答:軟件架構(software architecture)是一系列相關的抽象模式,用於指導大型軟件系統各個方面的設計。軟件架構是一個系統的草圖。軟件架構描述的對象是直接構成系統的抽象組件。各個組件之間的連接則明確和相對細緻地描述組件之間的通訊。在實現階段,這些抽象組件被細化爲實際的組件,比如具體某個類或者對象。在面向對象領域中,組件之間的連接通常用接口_(計算機科學)來實現。

軟件體系結構是構建計算機軟件實踐的基礎。與建築師設定建築項目的設計原則和目標,作爲繪圖員畫圖的基礎一樣,一個軟件架構師或者系統架構師陳述軟件構架以作爲滿足不同客戶需求的實際系統設計方案的基礎。

軟件構架是一個容易理解的概念,多數工程師(尤其是經驗不多的工程師)會從直覺上來認識它,但要給出精確的定義很困難。特別是,很難明確地區分設計和構架:構架屬於設計的一方面,它集中於某些具體的特徵。

在“軟件構架簡介”中,David GArlan 和 Mary Shaw認爲軟件構架是有關如下問題的設計層次:“在計算的算法和數據結構之外,設計並確定系統整體結構成爲了新的問題。結構問題包括總體組織結構和全局控制結構;通信、同步和數據訪問的協議;設計元素的功能分配;物理分佈;設計元素的組成;定標與性能;備選設計的選擇。”[GS93]

但構架不僅是結構;IEEE Working Group on Architecture把其定義爲“系統在其環境中的最高層概念”[IEEE98]。構架還包括“符合”系統完整性、經濟約束條件、審美需求和樣式。它並不僅注重對內部的考慮,而且還在系統的用戶環境和開發環境中對系統進行整體考慮,即同時注重對外部的考慮。

在 Rational Unified ProcESs 中,軟件系統的構架(在某一給定點)是指系統重要構件的組織或結構,這些重要構件通過接口與不斷減小的構件與接口所組成的構件進行交互。

從和目的、主題、材料和結構的聯繫上來說,軟件架構可以和建築物的架構相比擬。一個軟件架構師需要有廣泛的軟件理論知識和相應的經驗來事實和管理軟件產品的高級設計。軟件架構師定義和設計軟件的模塊化,模塊之間的交互,用戶界面風格,對外接口方法,創新的設計特性,以及高層事物的對象操作、邏輯和流程。

10. 軟件系統的架構(ArchitECture)有兩個要素是什麼?

答:

1) 它是一個軟件系統從整體到部分的最高層次的劃分。

一個系統通常是由元件組成的,而這些元件如何形成、相互之間如何發生作用,則是關於這個系統本身結構的重要信息。

詳細地說,就是要包括架構元件(ArchitectureComponent)、聯結器(Connector)、任務流(TASk-flow)。所謂架構元素,也就是組成系統的核心"磚瓦",而聯結器則描述這些元件之間通訊的路徑、通訊的機制、通訊的預期結果,任務流則描述系統如何使用這些元件和聯結器完成某一項需求。

2) 建造一個系統所作出的最高層次的、以後難以更改的,商業的和技術的決定。

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

卡內基梅隆大學和加州大學埃爾文分校在這個領域作了很多研究。卡內基·梅隆大學的Mary Shaw和DavidGarlan於1996年寫了一本叫做 Software Architecture perspective on an emergingDIscipline的書,提出了軟件架構中的很多概念,例如軟件組件、連接器、風格等等。加州大學埃爾文分校的軟件研究院所做的工作則主要集中於架構風格、架構描述語言以及動態架構。

11. 架構的目標是什麼

答:要達到如下的目標:

·可靠性(Reliable)。軟件系統對於用戶的商業經營和管理來說極爲重要,因此軟件系統必須非常可靠。

·安全行(Secure)。軟件系統所承擔的交易的商業價值極高,系統的安全性非常重要。

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

·可定製化(CuSTomizable)。同樣的一套軟件,可以根據客戶羣的不同和市場需求的變化進行調整。

·可擴展性(Extensible)。在新技術出現的時候,一個軟件系統應當允許導入新技術,從而對現有系統進行功能和性能的擴展

·可維護性(MAIntainable)。軟件系統的維護包括兩方面,一是排除現有的錯誤,二是將新的軟件需求反映到現有系統中去。一個易於維護的系統可以有效地降低技術支持的花費

·客戶體驗(Customer Experience)。軟件系統必須易於使用。

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

12. 什麼是構架風格

答:軟件構架(或僅是構架視圖)可以具有名爲構架風格的屬性,該屬性減少了可選的形式,並使構架具有一定程度的一致性。樣式可以通過一組模式或通過選擇特定構件或連接器作爲基本構件來定義。對給定系統,某些樣式可作爲構架描述的一部分記錄在構架風格指南(Rational UnifiedProcess 中設計指南文檔的一部分)中。樣式在構架的可理解性與完整性方面起着主要的作用。

13. 什麼是構架設計圖 ?有哪些組成?

答:構架視圖的圖形描述稱爲構架設計圖。對於以上描述的各種視圖,設計圖由以下統一建模語言圖組成 [UML99]:

邏輯視圖:類圖、狀態機和對象圖。

進程視圖:類圖與對象圖(包括任務 - 進程與線程)。

實施視圖:構件圖。

部署視圖:配置圖。

用例視圖:用例圖描述用例、主角和普通設計類;順序圖描述設計對象及其協作關係。

14. 談談構架設計流程。

答:在 Rational Unified Process中,構架主要是分析設計工作流程的結果。當項目再次進行此工作流程時,構架將在一次又一次迭代中不斷演化、改進、精煉。由於每次迭代都包括集成和測試,所以在交付產品時,構架就相當強壯了。構架是精化階段各次迭代的重點,構架的基線通常會在此階段結束時確定。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章