IT名企面試步驟一般為四面:一面:技術(shù)面,考核技能水平;二面:綜合面:考核綜合素質(zhì);三面:HR面,職業(yè)規(guī)劃,優(yōu)勢與劣勢,期望工資與工作地點;四面:老總面,后決定命運。
一、 通用面試例題分析
1. 在學校里你學習了哪些課程,成績?nèi)绾危?BR> 答:首先看看計算機專業(yè)的課程:系統(tǒng)原理、微機原理、匯編語言、網(wǎng)絡(luò)基礎(chǔ)、Visual Basic編程、SQL、HTML語言、高等數(shù)學……基本上以對計算機科學結(jié)構(gòu)性、設(shè)計性的課程為主。然后是自動化專業(yè),這張課表上少了匯編語言等系統(tǒng)基礎(chǔ)的課程,增加了POWER BUILDER、NT Sever等網(wǎng)絡(luò)方面的內(nèi)容,畢竟現(xiàn)在的自動化與網(wǎng)絡(luò)密不可分。而信息管理工程專業(yè)的課程就顯然偏重應(yīng)用的色彩。除VB、VC編程語言的課程外,Windows、Photoshop、Flash/Firework/Dreamweaver網(wǎng)頁制作工具等課程也赫然在目。
2. 想著手編寫一個程序,在整個開發(fā)過程中,其中包含了大量細節(jié),并推薦了許多步驟和文檔,那么,時刻提醒自己注意的是什么問題?整個過程是什么?
答:時刻提醒自己注意的問題是:
(1) 對象是什么?(怎樣將自己的項目分割成一系列單獨的組件?)
(2) 它們的接口是什么?(需要將什么消息發(fā)給每一個對象?)
整個過程可劃分為四個階段,階段0剛剛開始采用某些形式的結(jié)構(gòu)。
階段0:擬出一個計劃
第一步是決定在后面的過程中采取哪些步驟。
在這個階段,可能要決定一些必要的附加處理結(jié)構(gòu)。在整個過程中設(shè)置幾個標志,或者“路標”,將更有益于你集中注意力。經(jīng)過了一個接一個的路標以后,可對自己的進度有清晰的把握。
階段1:要制作什么?
在上一代程序設(shè)計中(即“過程化或程序化設(shè)計”),這個階段稱為“建立需求分析和系統(tǒng)規(guī)格”。應(yīng)盡可能總結(jié)出自己系統(tǒng)的一套完整的“使用條件”或者“應(yīng)用場合”。
階段2:如何構(gòu)建?
在這一階段,必須拿出一套設(shè)計方案,并解釋其中包含的各類對象在外觀上是什么樣子,以及相互間是如何溝通的。
階段3:開始創(chuàng)建
全面的思考、周密的準備、良好的構(gòu)造不僅使程序更易構(gòu)建與調(diào)試,也使其更易理解和維護,而那正是一套軟件贏利的必要條件。
構(gòu)建好系統(tǒng),并令其運行起來后,必須進行實際檢驗,以前做的那些需求分析和系統(tǒng)規(guī)格便可派上用場了。全面地考察自己的程序,確定提出的所有要求均已滿足?,F(xiàn)在一切似乎都該結(jié)束了?
階段4:校訂
第做的東西并不完善,所以需為自己留下一個深入學習、認知的空間,再回過頭去作一些改變”。對于要解決的問題,隨著對它的學習和了解愈加深入,可能需要作出大量改動。進行這些工作的一個動力是隨著不斷的改革優(yōu)化,終于能夠從自己的努力中得到回報,無論這需要經(jīng)歷一個較短還是較長的時期,達到理想的狀態(tài)。
3. 什么是UML?
答:是一種能夠描述問題、描述解決方案、起溝通作用的語言。這就是UML。
UML(Unified Modeling Language 統(tǒng)一建模語言)是由Rational公司發(fā)明,目前由OMG(標準化對象管理機構(gòu))維護。作為一種建模語言,UML的定義包括UML語義和UML表示法兩個部分:
UML語義
描述基于UML的精確元模型定義。元模型為UML的所有元素在語法和語義上提供了簡單、一致、通用的定義性說明,使開發(fā)者能在語義上取得一致,消除了因人而異的佳表達方法所造成的影響。此外UML還支持對元模型的擴展定義。
UML表示法
定義UML符號的表示法,為開發(fā)者或開發(fā)工具使用這些圖形符號和文本語法為系統(tǒng)建模提供了標準。這些圖形符號和文字所表達的是應(yīng)用級的模型,在語義上它是UML元模型的實例。標準建模語言UML的重要內(nèi)容可以由下列五類圖(共9種圖形)來定義:用例圖、靜態(tài)圖、行為圖、交互圖、實現(xiàn)圖。
從應(yīng)用的角度看,當采用面向?qū)ο蠹夹g(shù)設(shè)計系統(tǒng)時,首先是描述需求;其次根據(jù)需求建立系統(tǒng)的靜態(tài)模型,以構(gòu)造系統(tǒng)的結(jié)構(gòu);第三步是描述系統(tǒng)的行為。其中在第一步與第二步中所建立的模型都是靜態(tài)的,包括用例圖、類圖(包含包)、對象圖、組件圖和配置圖等五個圖形,是標準建模語言UML的靜態(tài)建模機制。其中第三步中所建立的模型或者可以執(zhí)行,或者表示執(zhí)行時的時序狀態(tài)或交互關(guān)系。它包括狀態(tài)圖、活動圖、順序圖和合作圖等四個圖形,是標準建模語言UML的動態(tài)建模機制。因此,標準建模語言UML的主要內(nèi)容也可以歸納為靜態(tài)建模機制和動態(tài)建模機制兩大類。
4. 什么是軟件重用?
答:軟件重用(Reuse)是軟件工程中重要的思想之一,只有軟件重用,才能降低軟件成本,提高軟件的質(zhì)量。你在對一個軟件進行分析的時候,找出可以重用的對象,有助于你開發(fā)高效的軟件系統(tǒng)。正如前面所說的,你不必把軟件分析的過分細致,你只需從中找出關(guān)鍵性的、能夠重用的對象就足夠了。剩下的事情,就是對這些對象分配屬性和方法,并充分的使用這些對象就好了。
1) 編寫項目視圖和范圍文檔
系統(tǒng)的需求包括四個不同的層次:業(yè)務(wù)需求、用戶需求和功能需求、非功能性需求。
2) 用戶群分類
用戶分成不同的用戶類。與UML中Usecase的Actor概念一樣,用戶類不一定都指人,也可以包括其他應(yīng)用系統(tǒng)、接口或者硬件,這樣做使得與系統(tǒng)邊界外的接口也成為系統(tǒng)需求。
3) 選擇用戶代表
4) 建立核心隊伍
5) 確定使用實例
6) 召開聯(lián)合會議
7) 分析用戶工作流程
8) 確定質(zhì)量屬性
9) 檢查問題報告
10) 需求重用
5. 談?wù)凜MMI的起源
答:隨著人們對CMM研究的不斷深入,其他學科也結(jié)合本系統(tǒng)的特點,陸續(xù)推出了自己的CMM模型。例如,人力資源能力成熟度模型、系統(tǒng)工程能力成熟度模型等等:
(1) SW-CMM (Software CMM) 軟件CMM
(2) SE-CMM (System Engineering CMM) 系統(tǒng)工程CMM
(3) SA-CMM (Software Acquisition CMM) 軟件采購CMM
(4) IPT-CMM (Integrated Product Team CMM) 集成產(chǎn)品群組CMM
(5) P-CMM (People CMM) 人力資源能力成熟度模型
為了以示區(qū)別,國內(nèi)外很多資料把CMM叫做SW-CMM。
6. ERP是個什么概念?
答:本世紀90年代初,美國的IT分析公司Gartner Group Inc根據(jù)當時計算機信息處理技術(shù)IT(Information Technology)的發(fā)展和企業(yè)對供應(yīng)鏈管理的需要,對信息時代以后制造業(yè)管理信息系統(tǒng)的發(fā)展趨勢和即將發(fā)生的變革作了預(yù)測,提出了企業(yè)資源計劃ERP(Enterprise Resources Planning)這個概念。
7. ERP系統(tǒng)與MRP-Ⅱ的區(qū)別是什么?
答:ERP是在MRP-Ⅱ基礎(chǔ)上進一步發(fā)展起來的企業(yè)管理信息系統(tǒng),為了進一步理解ERP系統(tǒng)的概念及其主要功能,需要弄清ERP與MRP-Ⅱ之間的區(qū)別。
1) 在資源管理范圍方面的差別
MRP-Ⅱ主要側(cè)重對企業(yè)內(nèi)部人、財、物等資源的管理,ERP系統(tǒng)提出了供應(yīng)鏈(Supply Chain)的概念,即把客戶需求和企業(yè)內(nèi)部的制造活動以及供應(yīng)商的制造資源整合在一起,并對供應(yīng)鏈上的所有環(huán)節(jié)進行有效管理,這些五一節(jié)包括訂單、采購、庫存、計劃、生產(chǎn)制造、質(zhì)量控制、運輸、分銷、服務(wù)與維護、財務(wù)管理、人事管理、實驗室管理、項目管理、配方管理等。
2) 在生產(chǎn)方式管理方面的差別
MRP-Ⅱ系統(tǒng)把企業(yè)歸類為幾種典型的生產(chǎn)方式來進行管理,如重復(fù)制造、批量生產(chǎn)、按訂單生產(chǎn)、按訂單裝配、按庫存生產(chǎn)等,針對每一種類型都有一套管理標準。而在80年代末、90年代初期,企業(yè)為了緊跟市場的變化,多品種、小批量生產(chǎn)以及看板式生產(chǎn)成為企業(yè)主要采用的生產(chǎn)方式,而ERP則能很好地支持和管理這種混合型制造環(huán)境,滿足了企業(yè)多元化經(jīng)營需求。
3) 在管理功能方面的差別
ERP除了MRP-Ⅱ系統(tǒng)的制造、分銷、財務(wù)管理功能外,還增加了支持整各個環(huán)節(jié)之間的運輸管理和倉庫管理;支持生產(chǎn)保障體系的質(zhì)量管理、實驗室管理、設(shè)備維修和備品備件管理;支持對工作流(業(yè)務(wù)處理流程)的管理。
4) 在事務(wù)處理控制方面的差別
MRP-Ⅱ是通過計劃的及時滾動來控制整個生產(chǎn)過程,它的實時性較差,一般只有實現(xiàn)事中控制。而ERP系統(tǒng)支持在線分析處理OLAP(Online Analytical Processing)、售后服務(wù)及質(zhì)量反饋,強調(diào)企業(yè)的事前控制能力,它可以將設(shè)計、制造、銷售、運輸?shù)韧ㄟ^集成來并行地進行各種相關(guān)的作業(yè),為企業(yè)提供了對質(zhì)量、適應(yīng)變化、客戶滿意、效績等關(guān)鍵問題的實時分析能力。
此外,在MRP-Ⅱ中,財務(wù)系統(tǒng)只是一個信息的歸結(jié)者,它的功能是將供、產(chǎn)、銷中的數(shù)量信息轉(zhuǎn)變?yōu)閮r值信息,是物流的價值反映。而ERP系統(tǒng)則將財務(wù)計劃功能和價值控制功能集成到整個供應(yīng)鏈上,如在生產(chǎn)計劃系統(tǒng)中,除了保留原有的主生產(chǎn)計劃、物料需求計劃和能力計劃外還擴展了銷售執(zhí)行計劃SOP和利潤計劃。
5) 在跨國(或地區(qū))經(jīng)營事務(wù)處理方面的差別
現(xiàn)代企業(yè)的發(fā)展,使得企業(yè)內(nèi)部各個組織單元之間、企業(yè)與外部的業(yè)務(wù)單元之間的協(xié)調(diào)變得越來越多和越來越重要,ERP系統(tǒng)運用完善的組織架構(gòu),從而可以支持跨國經(jīng)營的多國家地區(qū)、多工廠、多語種、多幣制應(yīng)用需求。
6) 在計算機信息處理技術(shù)方面的差別
隨著IT技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)通信技術(shù)的應(yīng)用,使得ERP系統(tǒng)的以實現(xiàn)對整個供應(yīng)鏈信息進行集成管理。ERP系統(tǒng)應(yīng)用客戶/服務(wù)器(C/S)體系結(jié)構(gòu)和分布式數(shù)據(jù)處理技術(shù),支持Internet/Intranet/Extranet、電子商務(wù)(E-busincss,E-commerce)、電子數(shù)據(jù)交換EDI,此外,還能實現(xiàn)在不同平臺上的互操作。我們就討論了“路標”的概念,當你的第一個路標達成之后,剩下的應(yīng)該都是屬于校訂的事了。通過和用戶的交互,確定新的“路標”,不斷的改進系統(tǒng)功能,優(yōu)化系統(tǒng)結(jié)構(gòu),修正系統(tǒng)Bug。
通過使用WWF,你可以創(chuàng)建基于處理器流的工作流并且把它們部署在任何類型的.NET應(yīng)用程序中。此外,本文還討論了ASP.NET開發(fā)者面對的一些特有的問題-這些問題可能通過使用工作流得到解決,如維持狀態(tài)和頁面導航等。
8. WWF,Windows工作流基礎(chǔ)是什么?
答:在2005年9月,微軟在它的一年兩次的專業(yè)開發(fā)者會議上公開了Windows Workflow Foundation(WWF,Windows工作流基礎(chǔ))。作為WinFX API的支柱之一,WWF提供給開發(fā)者一個普通框架-在其上開發(fā)過程驅(qū)動的和以工作流為中心的應(yīng)用程序。
當前,有些組織力圖把整個商業(yè)過程自動化;他們的標準答案就是集合一隊開發(fā)者來開發(fā)相應(yīng)的代碼。盡管這種方式對于這些組織帶來良好的作用,然而也有一些固有的問題。為了深入理解這一問題,你需要理解一個工作流的基本特征。
一個工作流本質(zhì)是一種方法-用來歸檔包含在完成一個單元的工作中的活動。典型地,在處理過程中,工作"流"流過一項或更多活動。這些活動可以通過機器或人工來實現(xiàn),并且有可能象在一個互聯(lián)網(wǎng)應(yīng)用程序定義頁面順序一樣得簡單,也有可能象管理必須為任何數(shù)目的人都要看到、更改并同意的文件或產(chǎn)品一樣得復(fù)雜。
因為如此多的工作流程必須考慮到人工參預(yù),所以可能需要花費很長工期才能完成,時間可能為幾小時到數(shù)月或更長。例如,參預(yù)在該過程中的人可能無法找到,不在本地或忙于另外的任務(wù);因此,工作流必須在所有非活動期間能夠把自身持續(xù)性存儲。而且,通過編碼獨立實現(xiàn)的過程可能對非技術(shù)人員難于理解而對開發(fā)者卻難于更改。這一點和其它一些因素正是例如Windows WF等通用工作流框架的目標-其目的就在于使創(chuàng)建、改變和管理工作流更容易-這是通過向它們提供一個可視化接口或通過定義一組普通API來實現(xiàn)的。
你可以把WWF工作流放置在任何類型的.NET應(yīng)用程序中-包括Windows表單程序,控制臺應(yīng)用程序,Windows服務(wù)和ASP.NET Web應(yīng)用程序。每種類型都需要專門的考慮。盡管一些現(xiàn)有示例已經(jīng)足夠說明如何把工作流宿主到Windows表單程序和控制臺應(yīng)用程序中,但是本文將集中于討論ASP.NET開發(fā)者的問題-他們希望把工作流集成到自己的應(yīng)用程序中。
Windows WF和MVC模式:在開發(fā)一個ASP.NET應(yīng)用程序時,你可能使用WWF的一個普通的方法是實現(xiàn)一種模型-視圖-控制器(MVC)方法。實質(zhì)上,MVC的目標是把描述層、應(yīng)用程序邏輯和應(yīng)用程序流邏輯分離開來。
搞清楚這個將十分有益于一個ASP.NET應(yīng)用程序的開發(fā),請考慮一個幫助桌面票工作流的場所。假定有一個商業(yè)用戶通過填寫一個ASP.NET Web表單并點擊一個提交按鈕來啟動該工作流。接下來,服務(wù)器就會通知一個使用Windows表單應(yīng)用程序和幫助桌面的雇員—“有新票可用了”。該幫助桌面雇員然后將在這一問題上工作,并在后關(guān)閉該票。如果使用Windows WF來開發(fā)這個工作流情形,那么所有的處理邏輯和流程可以被包含在工作流本身,而該ASP.NET應(yīng)用程序?qū)⑼耆恍枰私膺@一邏輯。
這種場所提供了一些穩(wěn)固的證據(jù)-把描述與邏輯相分離是一件好事情。因為這個處理幫助桌面請求的過程是非常普通的,如果使用C#或VB.NET代碼在若干不同的.NET應(yīng)用程序中實現(xiàn)這一邏輯,那么你將會冒著重復(fù)編碼的危險甚至更壞的情形--用完全不同的代碼導致同樣的商業(yè)處理過程的不同實現(xiàn)。但是如果你使用WWF來實現(xiàn)這一過程,那么需要這一過程的應(yīng)用程序開發(fā)者將僅需在一處修改這些步驟-工作流本身-而不必擔心這樣會改變應(yīng)用程序邏輯。代碼復(fù)制和在哪里實現(xiàn)該過程可以通過Windows WF的使用來加以緩和。
當使用Windows WF在ASP.NET中實現(xiàn)MVC架構(gòu)時,開發(fā)者應(yīng)該嘗試構(gòu)建獨立于應(yīng)用程序的工作流-而該工作流仍然宿主于該應(yīng)用程序中。這將有助于保持邏輯獨立于描述并且保持在該Web應(yīng)用程序中的工作步驟順序和頁面流之間的高度獨立性。
一個WWF開發(fā)新手可能試圖用一固定數(shù)目的活動以某種順序去開發(fā)一個工作流,然后開發(fā)一組ASP.NET Web表單--這些表單以與之相同的順序從一個表單流向另一個表單。很遺憾,盡管這看上去挺符合邏輯,但是實際上這是非常不具有生產(chǎn)效率的,因為你將會再次實現(xiàn)這個工作流邏輯。Web頁面X不需要知道是否它需要轉(zhuǎn)到頁面Y或頁面Z來正確地實現(xiàn)該工作流步驟。代之的是,該工作流(模型)應(yīng)該告訴ASP.NET(控制器)下一步該干什么;然后ASP.NET應(yīng)該決定要顯示哪個頁面。這樣,每個頁面幾乎不需要了解整個過程;它僅需要知道怎樣完成一個不同的活動并且讓該工作流來關(guān)心頁面是如何從一處流向另一處的。這種分離在開發(fā)者處理頁面流時帶來了一種極大的靈活性。例如,如果你決定改變該頁面顯示順序,那么你可以從工作流中容易地實現(xiàn)這一點,而不需要改變該ASP.NET應(yīng)用程序中的一行代碼。
9. 陳述一下軟件架構(gòu)的概念
答:軟件架構(gòu)(software architecture)是一系列相關(guān)的抽象模式,用于指導大型軟件系統(tǒng)各個方面的設(shè)計。 軟件架構(gòu)是一個系統(tǒng)的草圖。軟件架構(gòu)描述的對象是直接構(gòu)成系統(tǒng)的抽象組件。各個組件之間的連接則明確和相對細致地描述組件之間的通訊。在實現(xiàn)階段,這些抽象組件被細化為實際的組件,比如具體某個類或者對象。在面向?qū)ο箢I(lǐng)域中,組件之間的連接通常用接口_(計算機科學)來實現(xiàn)。
軟件體系結(jié)構(gòu)是構(gòu)建計算機軟件實踐的基礎(chǔ)。與建筑師設(shè)定建筑項目的設(shè)計原則和目標,作為繪圖員畫圖的基礎(chǔ)一樣,一個軟件架構(gòu)師或者系統(tǒng)架構(gòu)師陳述軟件構(gòu)架以作為滿足不同客戶需求的實際系統(tǒng)設(shè)計方案的基礎(chǔ)。
軟件構(gòu)架是一個容易理解的概念,多數(shù)工程師(尤其是經(jīng)驗不多的工程師)會從直覺上來認識它,但要給出精確的定義很困難。特別是,很難明確地區(qū)分設(shè)計和構(gòu)架:構(gòu)架屬于設(shè)計的一方面,它集中于某些具體的特征。
在“軟件構(gòu)架簡介”中,David GArlan 和 Mary Shaw 認為軟件構(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è)計元素的組成;定標與性能;備選設(shè)計的選擇?!盵GS93]
但構(gòu)架不僅是結(jié)構(gòu);IEEE Working Group on Architecture 把其定義為“系統(tǒng)在其環(huán)境中的高層概念”[IEEE98]。構(gòu)架還包括“符合”系統(tǒng)完整性、經(jīng)濟約束條件、審美需求和樣式。它并不僅注重對內(nèi)部的考慮,而且還在系統(tǒng)的用戶環(huán)境和開發(fā)環(huán)境中對系統(tǒng)進行整體考慮,即同時注重對外部的考慮。
在 Rational Unified ProcESs 中,軟件系統(tǒng)的構(gòu)架(在某一給定點)是指系統(tǒng)重要構(gòu)件的組織或結(jié)構(gòu),這些重要構(gòu)件通過接口與不斷減小的構(gòu)件與接口所組成的構(gòu)件進行交互。
從和目的、主題、材料和結(jié)構(gòu)的聯(lián)系上來說,軟件架構(gòu)可以和建筑物的架構(gòu)相比擬。一個軟件架構(gòu)師需要有廣泛的軟件理論知識和相應(yīng)的經(jīng)驗來事實和管理軟件產(chǎn)品的高級設(shè)計。軟件架構(gòu)師定義和設(shè)計軟件的模塊化,模塊之間的交互,用戶界面風格,對外接口方法,創(chuàng)新的設(shè)計特性,以及高層事物的對象操作、邏輯和流程。
10. 軟件系統(tǒng)的架構(gòu)(ArchitECture)有兩個要素是什么?
答:
1) 它是一個軟件系統(tǒng)從整體到部分的高層次的劃分。
一個系統(tǒng)通常是由元件組成的,而這些元件如何形成、相互之間如何發(fā)生作用,則是關(guān)于這個系統(tǒng)本身結(jié)構(gòu)的重要信息。
詳細地說,就是要包括架構(gòu)元件(Architecture Component)、聯(lián)結(jié)器(Connector)、任務(wù)流(TASk-flow)。所謂架構(gòu)元素,也就是組成系統(tǒng)的核心"磚瓦",而聯(lián)結(jié)器則描述這些元件之間通訊的路徑、通訊的機制、通訊的預(yù)期結(jié)果,任務(wù)流則描述系統(tǒng)如何使用這些元件和聯(lián)結(jié)器完成某一項需求。
2) 建造一個系統(tǒng)所作出的高層次的、以后難以更改的,商業(yè)的和技術(shù)的決定。
在建造一個系統(tǒng)之前會有很多的重要決定需要事先作出,而一旦系統(tǒng)開始進行詳細設(shè)計甚至建造,這些決定就很難更改甚至無法更改。顯然,這樣的決定必定是有關(guān)系統(tǒng)設(shè)計成敗的重要決定,必須經(jīng)過非常慎重的研究和考察。
卡內(nèi)基梅隆大學和加州大學埃爾文分校在這個領(lǐng)域作了很多研究。卡內(nèi)基·梅隆大學的Mary Shaw和David Garlan于1996年寫了一本叫做 Software Architecture perspective on an emerging DIscipline的書,提出了軟件架構(gòu)中的很多概念,例如軟件組件、連接器、風格等等。 加州大學埃爾文分校的軟件研究院所做的工作則主要集中于架構(gòu)風格、架構(gòu)描述語言以及動態(tài)架構(gòu)。
5. 談?wù)凜MMI的起源
答:隨著人們對CMM研究的不斷深入,其他學科也結(jié)合本系統(tǒng)的特點,陸續(xù)推出了自己的CMM模型。例如,人力資源能力成熟度模型、系統(tǒng)工程能力成熟度模型等等:
(1) SW-CMM (Software CMM) 軟件CMM
(2) SE-CMM (System Engineering CMM) 系統(tǒng)工程CMM
(3) SA-CMM (Software Acquisition CMM) 軟件采購CMM
(4) IPT-CMM (Integrated Product Team CMM) 集成產(chǎn)品群組CMM
(5) P-CMM (People CMM) 人力資源能力成熟度模型
為了以示區(qū)別,國內(nèi)外很多資料把CMM叫做SW-CMM。
6. ERP是個什么概念?
答:本世紀90年代初,美國的IT分析公司Gartner Group Inc根據(jù)當時計算機信息處理技術(shù)IT(Information Technology)的發(fā)展和企業(yè)對供應(yīng)鏈管理的需要,對信息時代以后制造業(yè)管理信息系統(tǒng)的發(fā)展趨勢和即將發(fā)生的變革作了預(yù)測,提出了企業(yè)資源計劃ERP(Enterprise Resources Planning)這個概念。
7. ERP系統(tǒng)與MRP-Ⅱ的區(qū)別是什么?
答:ERP是在MRP-Ⅱ基礎(chǔ)上進一步發(fā)展起來的企業(yè)管理信息系統(tǒng),為了進一步理解ERP系統(tǒng)的概念及其主要功能,需要弄清ERP與MRP-Ⅱ之間的區(qū)別。
1) 在資源管理范圍方面的差別
MRP-Ⅱ主要側(cè)重對企業(yè)內(nèi)部人、財、物等資源的管理,ERP系統(tǒng)提出了供應(yīng)鏈(Supply Chain)的概念,即把客戶需求和企業(yè)內(nèi)部的制造活動以及供應(yīng)商的制造資源整合在一起,并對供應(yīng)鏈上的所有環(huán)節(jié)進行有效管理,這些五一節(jié)包括訂單、采購、庫存、計劃、生產(chǎn)制造、質(zhì)量控制、運輸、分銷、服務(wù)與維護、財務(wù)管理、人事管理、實驗室管理、項目管理、配方管理等。
2) 在生產(chǎn)方式管理方面的差別
MRP-Ⅱ系統(tǒng)把企業(yè)歸類為幾種典型的生產(chǎn)方式來進行管理,如重復(fù)制造、批量生產(chǎn)、按訂單生產(chǎn)、按訂單裝配、按庫存生產(chǎn)等,針對每一種類型都有一套管理標準。而在80年代末、90年代初期,企業(yè)為了緊跟市場的變化,多品種、小批量生產(chǎn)以及看板式生產(chǎn)成為企業(yè)主要采用的生產(chǎn)方式,而ERP則能很好地支持和管理這種混合型制造環(huán)境,滿足了企業(yè)多元化經(jīng)營需求。
3) 在管理功能方面的差別
ERP除了MRP-Ⅱ系統(tǒng)的制造、分銷、財務(wù)管理功能外,還增加了支持整各個環(huán)節(jié)之間的運輸管理和倉庫管理;支持生產(chǎn)保障體系的質(zhì)量管理、實驗室管理、設(shè)備維修和備品備件管理;支持對工作流(業(yè)務(wù)處理流程)的管理。
4) 在事務(wù)處理控制方面的差別
MRP-Ⅱ是通過計劃的及時滾動來控制整個生產(chǎn)過程,它的實時性較差,一般只有實現(xiàn)事中控制。而ERP系統(tǒng)支持在線分析處理OLAP(Online Analytical Processing)、售后服務(wù)及質(zhì)量反饋,強調(diào)企業(yè)的事前控制能力,它可以將設(shè)計、制造、銷售、運輸?shù)韧ㄟ^集成來并行地進行各種相關(guān)的作業(yè),為企業(yè)提供了對質(zhì)量、適應(yīng)變化、客戶滿意、效績等關(guān)鍵問題的實時分析能力。
此外,在MRP-Ⅱ中,財務(wù)系統(tǒng)只是一個信息的歸結(jié)者,它的功能是將供、產(chǎn)、銷中的數(shù)量信息轉(zhuǎn)變?yōu)閮r值信息,是物流的價值反映。而ERP系統(tǒng)則將財務(wù)計劃功能和價值控制功能集成到整個供應(yīng)鏈上,如在生產(chǎn)計劃系統(tǒng)中,除了保留原有的主生產(chǎn)計劃、物料需求計劃和能力計劃外還擴展了銷售執(zhí)行計劃SOP和利潤計劃。
5) 在跨國(或地區(qū))經(jīng)營事務(wù)處理方面的差別
現(xiàn)代企業(yè)的發(fā)展,使得企業(yè)內(nèi)部各個組織單元之間、企業(yè)與外部的業(yè)務(wù)單元之間的協(xié)調(diào)變得越來越多和越來越重要,ERP系統(tǒng)運用完善的組織架構(gòu),從而可以支持跨國經(jīng)營的多國家地區(qū)、多工廠、多語種、多幣制應(yīng)用需求。
6) 在計算機信息處理技術(shù)方面的差別
隨著IT技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)通信技術(shù)的應(yīng)用,使得ERP系統(tǒng)的以實現(xiàn)對整個供應(yīng)鏈信息進行集成管理。ERP系統(tǒng)應(yīng)用客戶/服務(wù)器(C/S)體系結(jié)構(gòu)和分布式數(shù)據(jù)處理技術(shù),支持Internet/Intranet/Extranet、電子商務(wù)(E-busincss,E-commerce)、電子數(shù)據(jù)交換EDI,此外,還能實現(xiàn)在不同平臺上的互操作。我們就討論了“路標”的概念,當你的第一個路標達成之后,剩下的應(yīng)該都是屬于校訂的事了。通過和用戶的交互,確定新的“路標”,不斷的改進系統(tǒng)功能,優(yōu)化系統(tǒng)結(jié)構(gòu),修正系統(tǒng)Bug。
通過使用WWF,你可以創(chuàng)建基于處理器流的工作流并且把它們部署在任何類型的.NET應(yīng)用程序中。此外,本文還討論了ASP.NET開發(fā)者面對的一些特有的問題-這些問題可能通過使用工作流得到解決,如維持狀態(tài)和頁面導航等。
8. WWF,Windows工作流基礎(chǔ)是什么?
答:在2005年9月,微軟在它的一年兩次的專業(yè)開發(fā)者會議上公開了Windows Workflow Foundation(WWF,Windows工作流基礎(chǔ))。作為WinFX API的支柱之一,WWF提供給開發(fā)者一個普通框架-在其上開發(fā)過程驅(qū)動的和以工作流為中心的應(yīng)用程序。
當前,有些組織力圖把整個商業(yè)過程自動化;他們的標準答案就是集合一隊開發(fā)者來開發(fā)相應(yīng)的代碼。盡管這種方式對于這些組織帶來良好的作用,然而也有一些固有的問題。為了深入理解這一問題,你需要理解一個工作流的基本特征。
一個工作流本質(zhì)是一種方法-用來歸檔包含在完成一個單元的工作中的活動。典型地,在處理過程中,工作"流"流過一項或更多活動。這些活動可以通過機器或人工來實現(xiàn),并且有可能象在一個互聯(lián)網(wǎng)應(yīng)用程序定義頁面順序一樣得簡單,也有可能象管理必須為任何數(shù)目的人都要看到、更改并同意的文件或產(chǎn)品一樣得復(fù)雜。
因為如此多的工作流程必須考慮到人工參預(yù),所以可能需要花費很長工期才能完成,時間可能為幾小時到數(shù)月或更長。例如,參預(yù)在該過程中的人可能無法找到,不在本地或忙于另外的任務(wù);因此,工作流必須在所有非活動期間能夠把自身持續(xù)性存儲。而且,通過編碼獨立實現(xiàn)的過程可能對非技術(shù)人員難于理解而對開發(fā)者卻難于更改。這一點和其它一些因素正是例如Windows WF等通用工作流框架的目標-其目的就在于使創(chuàng)建、改變和管理工作流更容易-這是通過向它們提供一個可視化接口或通過定義一組普通API來實現(xiàn)的。
你可以把WWF工作流放置在任何類型的.NET應(yīng)用程序中-包括Windows表單程序,控制臺應(yīng)用程序,Windows服務(wù)和ASP.NET Web應(yīng)用程序。每種類型都需要專門的考慮。盡管一些現(xiàn)有示例已經(jīng)足夠說明如何把工作流宿主到Windows表單程序和控制臺應(yīng)用程序中,但是本文將集中于討論ASP.NET開發(fā)者的問題-他們希望把工作流集成到自己的應(yīng)用程序中。
Windows WF和MVC模式:在開發(fā)一個ASP.NET應(yīng)用程序時,你可能使用WWF的一個普通的方法是實現(xiàn)一種模型-視圖-控制器(MVC)方法。實質(zhì)上,MVC的目標是把描述層、應(yīng)用程序邏輯和應(yīng)用程序流邏輯分離開來。
搞清楚這個將十分有益于一個ASP.NET應(yīng)用程序的開發(fā),請考慮一個幫助桌面票工作流的場所。假定有一個商業(yè)用戶通過填寫一個ASP.NET Web表單并點擊一個提交按鈕來啟動該工作流。接下來,服務(wù)器就會通知一個使用Windows表單應(yīng)用程序和幫助桌面的雇員—“有新票可用了”。該幫助桌面雇員然后將在這一問題上工作,并在后關(guān)閉該票。如果使用Windows WF來開發(fā)這個工作流情形,那么所有的處理邏輯和流程可以被包含在工作流本身,而該ASP.NET應(yīng)用程序?qū)⑼耆恍枰私膺@一邏輯。
這種場所提供了一些穩(wěn)固的證據(jù)-把描述與邏輯相分離是一件好事情。因為這個處理幫助桌面請求的過程是非常普通的,如果使用C#或VB.NET代碼在若干不同的.NET應(yīng)用程序中實現(xiàn)這一邏輯,那么你將會冒著重復(fù)編碼的危險甚至更壞的情形--用完全不同的代碼導致同樣的商業(yè)處理過程的不同實現(xiàn)。但是如果你使用WWF來實現(xiàn)這一過程,那么需要這一過程的應(yīng)用程序開發(fā)者將僅需在一處修改這些步驟-工作流本身-而不必擔心這樣會改變應(yīng)用程序邏輯。代碼復(fù)制和在哪里實現(xiàn)該過程可以通過Windows WF的使用來加以緩和。
當使用Windows WF在ASP.NET中實現(xiàn)MVC架構(gòu)時,開發(fā)者應(yīng)該嘗試構(gòu)建獨立于應(yīng)用程序的工作流-而該工作流仍然宿主于該應(yīng)用程序中。這將有助于保持邏輯獨立于描述并且保持在該Web應(yīng)用程序中的工作步驟順序和頁面流之間的高度獨立性。
一個WWF開發(fā)新手可能試圖用一固定數(shù)目的活動以某種順序去開發(fā)一個工作流,然后開發(fā)一組ASP.NET Web表單--這些表單以與之相同的順序從一個表單流向另一個表單。很遺憾,盡管這看上去挺符合邏輯,但是實際上這是非常不具有生產(chǎn)效率的,因為你將會再次實現(xiàn)這個工作流邏輯。Web頁面X不需要知道是否它需要轉(zhuǎn)到頁面Y或頁面Z來正確地實現(xiàn)該工作流步驟。代之的是,該工作流(模型)應(yīng)該告訴ASP.NET(控制器)下一步該干什么;然后ASP.NET應(yīng)該決定要顯示哪個頁面。這樣,每個頁面幾乎不需要了解整個過程;它僅需要知道怎樣完成一個不同的活動并且讓該工作流來關(guān)心頁面是如何從一處流向另一處的。這種分離在開發(fā)者處理頁面流時帶來了一種極大的靈活性。例如,如果你決定改變該頁面顯示順序,那么你可以從工作流中容易地實現(xiàn)這一點,而不需要改變該ASP.NET應(yīng)用程序中的一行代碼。
9. 陳述一下軟件架構(gòu)的概念
答:軟件架構(gòu)(software architecture)是一系列相關(guān)的抽象模式,用于指導大型軟件系統(tǒng)各個方面的設(shè)計。 軟件架構(gòu)是一個系統(tǒng)的草圖。軟件架構(gòu)描述的對象是直接構(gòu)成系統(tǒng)的抽象組件。各個組件之間的連接則明確和相對細致地描述組件之間的通訊。在實現(xiàn)階段,這些抽象組件被細化為實際的組件,比如具體某個類或者對象。在面向?qū)ο箢I(lǐng)域中,組件之間的連接通常用接口_(計算機科學)來實現(xiàn)。
軟件體系結(jié)構(gòu)是構(gòu)建計算機軟件實踐的基礎(chǔ)。與建筑師設(shè)定建筑項目的設(shè)計原則和目標,作為繪圖員畫圖的基礎(chǔ)一樣,一個軟件架構(gòu)師或者系統(tǒng)架構(gòu)師陳述軟件構(gòu)架以作為滿足不同客戶需求的實際系統(tǒng)設(shè)計方案的基礎(chǔ)。
軟件構(gòu)架是一個容易理解的概念,多數(shù)工程師(尤其是經(jīng)驗不多的工程師)會從直覺上來認識它,但要給出精確的定義很困難。特別是,很難明確地區(qū)分設(shè)計和構(gòu)架:構(gòu)架屬于設(shè)計的一方面,它集中于某些具體的特征。
在“軟件構(gòu)架簡介”中,David GArlan 和 Mary Shaw 認為軟件構(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è)計元素的組成;定標與性能;備選設(shè)計的選擇?!盵GS93]
但構(gòu)架不僅是結(jié)構(gòu);IEEE Working Group on Architecture 把其定義為“系統(tǒng)在其環(huán)境中的高層概念”[IEEE98]。構(gòu)架還包括“符合”系統(tǒng)完整性、經(jīng)濟約束條件、審美需求和樣式。它并不僅注重對內(nèi)部的考慮,而且還在系統(tǒng)的用戶環(huán)境和開發(fā)環(huán)境中對系統(tǒng)進行整體考慮,即同時注重對外部的考慮。
在 Rational Unified ProcESs 中,軟件系統(tǒng)的構(gòu)架(在某一給定點)是指系統(tǒng)重要構(gòu)件的組織或結(jié)構(gòu),這些重要構(gòu)件通過接口與不斷減小的構(gòu)件與接口所組成的構(gòu)件進行交互。
從和目的、主題、材料和結(jié)構(gòu)的聯(lián)系上來說,軟件架構(gòu)可以和建筑物的架構(gòu)相比擬。一個軟件架構(gòu)師需要有廣泛的軟件理論知識和相應(yīng)的經(jīng)驗來事實和管理軟件產(chǎn)品的高級設(shè)計。軟件架構(gòu)師定義和設(shè)計軟件的模塊化,模塊之間的交互,用戶界面風格,對外接口方法,創(chuàng)新的設(shè)計特性,以及高層事物的對象操作、邏輯和流程。
10. 軟件系統(tǒng)的架構(gòu)(ArchitECture)有兩個要素是什么?
答:
1) 它是一個軟件系統(tǒng)從整體到部分的高層次的劃分。
一個系統(tǒng)通常是由元件組成的,而這些元件如何形成、相互之間如何發(fā)生作用,則是關(guān)于這個系統(tǒng)本身結(jié)構(gòu)的重要信息。
詳細地說,就是要包括架構(gòu)元件(Architecture Component)、聯(lián)結(jié)器(Connector)、任務(wù)流(TASk-flow)。所謂架構(gòu)元素,也就是組成系統(tǒng)的核心"磚瓦",而聯(lián)結(jié)器則描述這些元件之間通訊的路徑、通訊的機制、通訊的預(yù)期結(jié)果,任務(wù)流則描述系統(tǒng)如何使用這些元件和聯(lián)結(jié)器完成某一項需求。
2) 建造一個系統(tǒng)所作出的高層次的、以后難以更改的,商業(yè)的和技術(shù)的決定。
在建造一個系統(tǒng)之前會有很多的重要決定需要事先作出,而一旦系統(tǒng)開始進行詳細設(shè)計甚至建造,這些決定就很難更改甚至無法更改。顯然,這樣的決定必定是有關(guān)系統(tǒng)設(shè)計成敗的重要決定,必須經(jīng)過非常慎重的研究和考察。
卡內(nèi)基梅隆大學和加州大學埃爾文分校在這個領(lǐng)域作了很多研究。卡內(nèi)基·梅隆大學的Mary Shaw和David Garlan于1996年寫了一本叫做 Software Architecture perspective on an emerging DIscipline的書,提出了軟件架構(gòu)中的很多概念,例如軟件組件、連接器、風格等等。 加州大學埃爾文分校的軟件研究院所做的工作則主要集中于架構(gòu)風格、架構(gòu)描述語言以及動態(tài)架構(gòu)。
11. 架構(gòu)的目標是什么
答:要達到如下的目標:
·可靠性(Reliable)。軟件系統(tǒng)對于用戶的商業(yè)經(jīng)營和管理來說極為重要,因此軟件系統(tǒng)必須非常可靠。
·安全行(Secure)。軟件系統(tǒng)所承擔的交易的商業(yè)價值極高,系統(tǒng)的安全性非常重要。
·可擴展性(SCAlable)。軟件必須能夠在用戶的使用率、用戶的數(shù)目增加很快的情況下,保持合理的性能。只有這樣,才能適應(yīng)用戶的市場擴展得可能性。
·可定制化(CuSTomizable)。同樣的一套軟件,可以根據(jù)客戶群的不同和市場需求的變化進行調(diào)整。
·可擴展性(Extensible)。在新技術(shù)出現(xiàn)的時候,一個軟件系統(tǒng)應(yīng)當允許導入新技術(shù),從而對現(xiàn)有系統(tǒng)進行功能和性能的擴展
·可維護性(MAIntainable)。軟件系統(tǒng)的維護包括兩方面,一是排除現(xiàn)有的錯誤,二是將新的軟件需求反映到現(xiàn)有系統(tǒng)中去。一個易于維護的系統(tǒng)可以有效地降低技術(shù)支持的花費
·客戶體驗(Customer Experience)。軟件系統(tǒng)必須易于使用。
·市場時機(Time to Market)。軟件用戶要面臨同業(yè)競爭,軟件提供商也要面臨同業(yè)競爭。以快的速度爭奪市場先機非常重要。
12. 什么是構(gòu)架風格
答:軟件構(gòu)架(或僅是構(gòu)架視圖)可以具有名為構(gòu)架風格的屬性,該屬性減少了可選的形式,并使構(gòu)架具有一定程度的一致性。樣式可以通過一組模式或通過選擇特定構(gòu)件或連接器作為基本構(gòu)件來定義。對給定系統(tǒng),某些樣式可作為構(gòu)架描述的一部分記錄在構(gòu)架風格指南(Rational Unified Process 中設(shè)計指南文檔的一部分)中。樣式在構(gòu)架的可理解性與完整性方面起著主要的作用。
13. 什么是構(gòu)架設(shè)計圖 ?有哪些組成?
答:構(gòu)架視圖的圖形描述稱為構(gòu)架設(shè)計圖。對于以上描述的各種視圖,設(shè)計圖由以下統(tǒng)一建模語言圖組成 [UML99]:
邏輯視圖:類圖、狀態(tài)機和對象圖。
進程視圖:類圖與對象圖(包括任務(wù) - 進程與線程)。
實施視圖:構(gòu)件圖。
部署視圖:配置圖。
用例視圖:用例圖描述用例、主角和普通設(shè)計類;順序圖描述設(shè)計對象及其協(xié)作關(guān)系。
14. 談?wù)剺?gòu)架設(shè)計流程。
答:在 Rational Unified Process 中,構(gòu)架主要是分析設(shè)計工作流程的結(jié)果。當項目再次進行此工作流程時,構(gòu)架將在又迭代中不斷演化、改進、精煉。由于每次迭代都包括集成和測試,所以在交付產(chǎn)品時,構(gòu)架就相當強壯了。構(gòu)架是精化階段各次迭代的重點,構(gòu)架的基線通常會在此階段結(jié)束時確定。
作者:宏威職業(yè)顧問首席咨詢師 郭策
一、 通用面試例題分析
1. 在學校里你學習了哪些課程,成績?nèi)绾危?BR> 答:首先看看計算機專業(yè)的課程:系統(tǒng)原理、微機原理、匯編語言、網(wǎng)絡(luò)基礎(chǔ)、Visual Basic編程、SQL、HTML語言、高等數(shù)學……基本上以對計算機科學結(jié)構(gòu)性、設(shè)計性的課程為主。然后是自動化專業(yè),這張課表上少了匯編語言等系統(tǒng)基礎(chǔ)的課程,增加了POWER BUILDER、NT Sever等網(wǎng)絡(luò)方面的內(nèi)容,畢竟現(xiàn)在的自動化與網(wǎng)絡(luò)密不可分。而信息管理工程專業(yè)的課程就顯然偏重應(yīng)用的色彩。除VB、VC編程語言的課程外,Windows、Photoshop、Flash/Firework/Dreamweaver網(wǎng)頁制作工具等課程也赫然在目。
2. 想著手編寫一個程序,在整個開發(fā)過程中,其中包含了大量細節(jié),并推薦了許多步驟和文檔,那么,時刻提醒自己注意的是什么問題?整個過程是什么?
答:時刻提醒自己注意的問題是:
(1) 對象是什么?(怎樣將自己的項目分割成一系列單獨的組件?)
(2) 它們的接口是什么?(需要將什么消息發(fā)給每一個對象?)
整個過程可劃分為四個階段,階段0剛剛開始采用某些形式的結(jié)構(gòu)。
階段0:擬出一個計劃
第一步是決定在后面的過程中采取哪些步驟。
在這個階段,可能要決定一些必要的附加處理結(jié)構(gòu)。在整個過程中設(shè)置幾個標志,或者“路標”,將更有益于你集中注意力。經(jīng)過了一個接一個的路標以后,可對自己的進度有清晰的把握。
階段1:要制作什么?
在上一代程序設(shè)計中(即“過程化或程序化設(shè)計”),這個階段稱為“建立需求分析和系統(tǒng)規(guī)格”。應(yīng)盡可能總結(jié)出自己系統(tǒng)的一套完整的“使用條件”或者“應(yīng)用場合”。
階段2:如何構(gòu)建?
在這一階段,必須拿出一套設(shè)計方案,并解釋其中包含的各類對象在外觀上是什么樣子,以及相互間是如何溝通的。
階段3:開始創(chuàng)建
全面的思考、周密的準備、良好的構(gòu)造不僅使程序更易構(gòu)建與調(diào)試,也使其更易理解和維護,而那正是一套軟件贏利的必要條件。
構(gòu)建好系統(tǒng),并令其運行起來后,必須進行實際檢驗,以前做的那些需求分析和系統(tǒng)規(guī)格便可派上用場了。全面地考察自己的程序,確定提出的所有要求均已滿足?,F(xiàn)在一切似乎都該結(jié)束了?
階段4:校訂
第做的東西并不完善,所以需為自己留下一個深入學習、認知的空間,再回過頭去作一些改變”。對于要解決的問題,隨著對它的學習和了解愈加深入,可能需要作出大量改動。進行這些工作的一個動力是隨著不斷的改革優(yōu)化,終于能夠從自己的努力中得到回報,無論這需要經(jīng)歷一個較短還是較長的時期,達到理想的狀態(tài)。
3. 什么是UML?
答:是一種能夠描述問題、描述解決方案、起溝通作用的語言。這就是UML。
UML(Unified Modeling Language 統(tǒng)一建模語言)是由Rational公司發(fā)明,目前由OMG(標準化對象管理機構(gòu))維護。作為一種建模語言,UML的定義包括UML語義和UML表示法兩個部分:
UML語義
描述基于UML的精確元模型定義。元模型為UML的所有元素在語法和語義上提供了簡單、一致、通用的定義性說明,使開發(fā)者能在語義上取得一致,消除了因人而異的佳表達方法所造成的影響。此外UML還支持對元模型的擴展定義。
UML表示法
定義UML符號的表示法,為開發(fā)者或開發(fā)工具使用這些圖形符號和文本語法為系統(tǒng)建模提供了標準。這些圖形符號和文字所表達的是應(yīng)用級的模型,在語義上它是UML元模型的實例。標準建模語言UML的重要內(nèi)容可以由下列五類圖(共9種圖形)來定義:用例圖、靜態(tài)圖、行為圖、交互圖、實現(xiàn)圖。
從應(yīng)用的角度看,當采用面向?qū)ο蠹夹g(shù)設(shè)計系統(tǒng)時,首先是描述需求;其次根據(jù)需求建立系統(tǒng)的靜態(tài)模型,以構(gòu)造系統(tǒng)的結(jié)構(gòu);第三步是描述系統(tǒng)的行為。其中在第一步與第二步中所建立的模型都是靜態(tài)的,包括用例圖、類圖(包含包)、對象圖、組件圖和配置圖等五個圖形,是標準建模語言UML的靜態(tài)建模機制。其中第三步中所建立的模型或者可以執(zhí)行,或者表示執(zhí)行時的時序狀態(tài)或交互關(guān)系。它包括狀態(tài)圖、活動圖、順序圖和合作圖等四個圖形,是標準建模語言UML的動態(tài)建模機制。因此,標準建模語言UML的主要內(nèi)容也可以歸納為靜態(tài)建模機制和動態(tài)建模機制兩大類。
4. 什么是軟件重用?
答:軟件重用(Reuse)是軟件工程中重要的思想之一,只有軟件重用,才能降低軟件成本,提高軟件的質(zhì)量。你在對一個軟件進行分析的時候,找出可以重用的對象,有助于你開發(fā)高效的軟件系統(tǒng)。正如前面所說的,你不必把軟件分析的過分細致,你只需從中找出關(guān)鍵性的、能夠重用的對象就足夠了。剩下的事情,就是對這些對象分配屬性和方法,并充分的使用這些對象就好了。
1) 編寫項目視圖和范圍文檔
系統(tǒng)的需求包括四個不同的層次:業(yè)務(wù)需求、用戶需求和功能需求、非功能性需求。
2) 用戶群分類
用戶分成不同的用戶類。與UML中Usecase的Actor概念一樣,用戶類不一定都指人,也可以包括其他應(yīng)用系統(tǒng)、接口或者硬件,這樣做使得與系統(tǒng)邊界外的接口也成為系統(tǒng)需求。
3) 選擇用戶代表
4) 建立核心隊伍
5) 確定使用實例
6) 召開聯(lián)合會議
7) 分析用戶工作流程
8) 確定質(zhì)量屬性
9) 檢查問題報告
10) 需求重用
5. 談?wù)凜MMI的起源
答:隨著人們對CMM研究的不斷深入,其他學科也結(jié)合本系統(tǒng)的特點,陸續(xù)推出了自己的CMM模型。例如,人力資源能力成熟度模型、系統(tǒng)工程能力成熟度模型等等:
(1) SW-CMM (Software CMM) 軟件CMM
(2) SE-CMM (System Engineering CMM) 系統(tǒng)工程CMM
(3) SA-CMM (Software Acquisition CMM) 軟件采購CMM
(4) IPT-CMM (Integrated Product Team CMM) 集成產(chǎn)品群組CMM
(5) P-CMM (People CMM) 人力資源能力成熟度模型
為了以示區(qū)別,國內(nèi)外很多資料把CMM叫做SW-CMM。
6. ERP是個什么概念?
答:本世紀90年代初,美國的IT分析公司Gartner Group Inc根據(jù)當時計算機信息處理技術(shù)IT(Information Technology)的發(fā)展和企業(yè)對供應(yīng)鏈管理的需要,對信息時代以后制造業(yè)管理信息系統(tǒng)的發(fā)展趨勢和即將發(fā)生的變革作了預(yù)測,提出了企業(yè)資源計劃ERP(Enterprise Resources Planning)這個概念。
7. ERP系統(tǒng)與MRP-Ⅱ的區(qū)別是什么?
答:ERP是在MRP-Ⅱ基礎(chǔ)上進一步發(fā)展起來的企業(yè)管理信息系統(tǒng),為了進一步理解ERP系統(tǒng)的概念及其主要功能,需要弄清ERP與MRP-Ⅱ之間的區(qū)別。
1) 在資源管理范圍方面的差別
MRP-Ⅱ主要側(cè)重對企業(yè)內(nèi)部人、財、物等資源的管理,ERP系統(tǒng)提出了供應(yīng)鏈(Supply Chain)的概念,即把客戶需求和企業(yè)內(nèi)部的制造活動以及供應(yīng)商的制造資源整合在一起,并對供應(yīng)鏈上的所有環(huán)節(jié)進行有效管理,這些五一節(jié)包括訂單、采購、庫存、計劃、生產(chǎn)制造、質(zhì)量控制、運輸、分銷、服務(wù)與維護、財務(wù)管理、人事管理、實驗室管理、項目管理、配方管理等。
2) 在生產(chǎn)方式管理方面的差別
MRP-Ⅱ系統(tǒng)把企業(yè)歸類為幾種典型的生產(chǎn)方式來進行管理,如重復(fù)制造、批量生產(chǎn)、按訂單生產(chǎn)、按訂單裝配、按庫存生產(chǎn)等,針對每一種類型都有一套管理標準。而在80年代末、90年代初期,企業(yè)為了緊跟市場的變化,多品種、小批量生產(chǎn)以及看板式生產(chǎn)成為企業(yè)主要采用的生產(chǎn)方式,而ERP則能很好地支持和管理這種混合型制造環(huán)境,滿足了企業(yè)多元化經(jīng)營需求。
3) 在管理功能方面的差別
ERP除了MRP-Ⅱ系統(tǒng)的制造、分銷、財務(wù)管理功能外,還增加了支持整各個環(huán)節(jié)之間的運輸管理和倉庫管理;支持生產(chǎn)保障體系的質(zhì)量管理、實驗室管理、設(shè)備維修和備品備件管理;支持對工作流(業(yè)務(wù)處理流程)的管理。
4) 在事務(wù)處理控制方面的差別
MRP-Ⅱ是通過計劃的及時滾動來控制整個生產(chǎn)過程,它的實時性較差,一般只有實現(xiàn)事中控制。而ERP系統(tǒng)支持在線分析處理OLAP(Online Analytical Processing)、售后服務(wù)及質(zhì)量反饋,強調(diào)企業(yè)的事前控制能力,它可以將設(shè)計、制造、銷售、運輸?shù)韧ㄟ^集成來并行地進行各種相關(guān)的作業(yè),為企業(yè)提供了對質(zhì)量、適應(yīng)變化、客戶滿意、效績等關(guān)鍵問題的實時分析能力。
此外,在MRP-Ⅱ中,財務(wù)系統(tǒng)只是一個信息的歸結(jié)者,它的功能是將供、產(chǎn)、銷中的數(shù)量信息轉(zhuǎn)變?yōu)閮r值信息,是物流的價值反映。而ERP系統(tǒng)則將財務(wù)計劃功能和價值控制功能集成到整個供應(yīng)鏈上,如在生產(chǎn)計劃系統(tǒng)中,除了保留原有的主生產(chǎn)計劃、物料需求計劃和能力計劃外還擴展了銷售執(zhí)行計劃SOP和利潤計劃。
5) 在跨國(或地區(qū))經(jīng)營事務(wù)處理方面的差別
現(xiàn)代企業(yè)的發(fā)展,使得企業(yè)內(nèi)部各個組織單元之間、企業(yè)與外部的業(yè)務(wù)單元之間的協(xié)調(diào)變得越來越多和越來越重要,ERP系統(tǒng)運用完善的組織架構(gòu),從而可以支持跨國經(jīng)營的多國家地區(qū)、多工廠、多語種、多幣制應(yīng)用需求。
6) 在計算機信息處理技術(shù)方面的差別
隨著IT技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)通信技術(shù)的應(yīng)用,使得ERP系統(tǒng)的以實現(xiàn)對整個供應(yīng)鏈信息進行集成管理。ERP系統(tǒng)應(yīng)用客戶/服務(wù)器(C/S)體系結(jié)構(gòu)和分布式數(shù)據(jù)處理技術(shù),支持Internet/Intranet/Extranet、電子商務(wù)(E-busincss,E-commerce)、電子數(shù)據(jù)交換EDI,此外,還能實現(xiàn)在不同平臺上的互操作。我們就討論了“路標”的概念,當你的第一個路標達成之后,剩下的應(yīng)該都是屬于校訂的事了。通過和用戶的交互,確定新的“路標”,不斷的改進系統(tǒng)功能,優(yōu)化系統(tǒng)結(jié)構(gòu),修正系統(tǒng)Bug。
通過使用WWF,你可以創(chuàng)建基于處理器流的工作流并且把它們部署在任何類型的.NET應(yīng)用程序中。此外,本文還討論了ASP.NET開發(fā)者面對的一些特有的問題-這些問題可能通過使用工作流得到解決,如維持狀態(tài)和頁面導航等。
8. WWF,Windows工作流基礎(chǔ)是什么?
答:在2005年9月,微軟在它的一年兩次的專業(yè)開發(fā)者會議上公開了Windows Workflow Foundation(WWF,Windows工作流基礎(chǔ))。作為WinFX API的支柱之一,WWF提供給開發(fā)者一個普通框架-在其上開發(fā)過程驅(qū)動的和以工作流為中心的應(yīng)用程序。
當前,有些組織力圖把整個商業(yè)過程自動化;他們的標準答案就是集合一隊開發(fā)者來開發(fā)相應(yīng)的代碼。盡管這種方式對于這些組織帶來良好的作用,然而也有一些固有的問題。為了深入理解這一問題,你需要理解一個工作流的基本特征。
一個工作流本質(zhì)是一種方法-用來歸檔包含在完成一個單元的工作中的活動。典型地,在處理過程中,工作"流"流過一項或更多活動。這些活動可以通過機器或人工來實現(xiàn),并且有可能象在一個互聯(lián)網(wǎng)應(yīng)用程序定義頁面順序一樣得簡單,也有可能象管理必須為任何數(shù)目的人都要看到、更改并同意的文件或產(chǎn)品一樣得復(fù)雜。
因為如此多的工作流程必須考慮到人工參預(yù),所以可能需要花費很長工期才能完成,時間可能為幾小時到數(shù)月或更長。例如,參預(yù)在該過程中的人可能無法找到,不在本地或忙于另外的任務(wù);因此,工作流必須在所有非活動期間能夠把自身持續(xù)性存儲。而且,通過編碼獨立實現(xiàn)的過程可能對非技術(shù)人員難于理解而對開發(fā)者卻難于更改。這一點和其它一些因素正是例如Windows WF等通用工作流框架的目標-其目的就在于使創(chuàng)建、改變和管理工作流更容易-這是通過向它們提供一個可視化接口或通過定義一組普通API來實現(xiàn)的。
你可以把WWF工作流放置在任何類型的.NET應(yīng)用程序中-包括Windows表單程序,控制臺應(yīng)用程序,Windows服務(wù)和ASP.NET Web應(yīng)用程序。每種類型都需要專門的考慮。盡管一些現(xiàn)有示例已經(jīng)足夠說明如何把工作流宿主到Windows表單程序和控制臺應(yīng)用程序中,但是本文將集中于討論ASP.NET開發(fā)者的問題-他們希望把工作流集成到自己的應(yīng)用程序中。
Windows WF和MVC模式:在開發(fā)一個ASP.NET應(yīng)用程序時,你可能使用WWF的一個普通的方法是實現(xiàn)一種模型-視圖-控制器(MVC)方法。實質(zhì)上,MVC的目標是把描述層、應(yīng)用程序邏輯和應(yīng)用程序流邏輯分離開來。
搞清楚這個將十分有益于一個ASP.NET應(yīng)用程序的開發(fā),請考慮一個幫助桌面票工作流的場所。假定有一個商業(yè)用戶通過填寫一個ASP.NET Web表單并點擊一個提交按鈕來啟動該工作流。接下來,服務(wù)器就會通知一個使用Windows表單應(yīng)用程序和幫助桌面的雇員—“有新票可用了”。該幫助桌面雇員然后將在這一問題上工作,并在后關(guān)閉該票。如果使用Windows WF來開發(fā)這個工作流情形,那么所有的處理邏輯和流程可以被包含在工作流本身,而該ASP.NET應(yīng)用程序?qū)⑼耆恍枰私膺@一邏輯。
這種場所提供了一些穩(wěn)固的證據(jù)-把描述與邏輯相分離是一件好事情。因為這個處理幫助桌面請求的過程是非常普通的,如果使用C#或VB.NET代碼在若干不同的.NET應(yīng)用程序中實現(xiàn)這一邏輯,那么你將會冒著重復(fù)編碼的危險甚至更壞的情形--用完全不同的代碼導致同樣的商業(yè)處理過程的不同實現(xiàn)。但是如果你使用WWF來實現(xiàn)這一過程,那么需要這一過程的應(yīng)用程序開發(fā)者將僅需在一處修改這些步驟-工作流本身-而不必擔心這樣會改變應(yīng)用程序邏輯。代碼復(fù)制和在哪里實現(xiàn)該過程可以通過Windows WF的使用來加以緩和。
當使用Windows WF在ASP.NET中實現(xiàn)MVC架構(gòu)時,開發(fā)者應(yīng)該嘗試構(gòu)建獨立于應(yīng)用程序的工作流-而該工作流仍然宿主于該應(yīng)用程序中。這將有助于保持邏輯獨立于描述并且保持在該Web應(yīng)用程序中的工作步驟順序和頁面流之間的高度獨立性。
一個WWF開發(fā)新手可能試圖用一固定數(shù)目的活動以某種順序去開發(fā)一個工作流,然后開發(fā)一組ASP.NET Web表單--這些表單以與之相同的順序從一個表單流向另一個表單。很遺憾,盡管這看上去挺符合邏輯,但是實際上這是非常不具有生產(chǎn)效率的,因為你將會再次實現(xiàn)這個工作流邏輯。Web頁面X不需要知道是否它需要轉(zhuǎn)到頁面Y或頁面Z來正確地實現(xiàn)該工作流步驟。代之的是,該工作流(模型)應(yīng)該告訴ASP.NET(控制器)下一步該干什么;然后ASP.NET應(yīng)該決定要顯示哪個頁面。這樣,每個頁面幾乎不需要了解整個過程;它僅需要知道怎樣完成一個不同的活動并且讓該工作流來關(guān)心頁面是如何從一處流向另一處的。這種分離在開發(fā)者處理頁面流時帶來了一種極大的靈活性。例如,如果你決定改變該頁面顯示順序,那么你可以從工作流中容易地實現(xiàn)這一點,而不需要改變該ASP.NET應(yīng)用程序中的一行代碼。
9. 陳述一下軟件架構(gòu)的概念
答:軟件架構(gòu)(software architecture)是一系列相關(guān)的抽象模式,用于指導大型軟件系統(tǒng)各個方面的設(shè)計。 軟件架構(gòu)是一個系統(tǒng)的草圖。軟件架構(gòu)描述的對象是直接構(gòu)成系統(tǒng)的抽象組件。各個組件之間的連接則明確和相對細致地描述組件之間的通訊。在實現(xiàn)階段,這些抽象組件被細化為實際的組件,比如具體某個類或者對象。在面向?qū)ο箢I(lǐng)域中,組件之間的連接通常用接口_(計算機科學)來實現(xiàn)。
軟件體系結(jié)構(gòu)是構(gòu)建計算機軟件實踐的基礎(chǔ)。與建筑師設(shè)定建筑項目的設(shè)計原則和目標,作為繪圖員畫圖的基礎(chǔ)一樣,一個軟件架構(gòu)師或者系統(tǒng)架構(gòu)師陳述軟件構(gòu)架以作為滿足不同客戶需求的實際系統(tǒng)設(shè)計方案的基礎(chǔ)。
軟件構(gòu)架是一個容易理解的概念,多數(shù)工程師(尤其是經(jīng)驗不多的工程師)會從直覺上來認識它,但要給出精確的定義很困難。特別是,很難明確地區(qū)分設(shè)計和構(gòu)架:構(gòu)架屬于設(shè)計的一方面,它集中于某些具體的特征。
在“軟件構(gòu)架簡介”中,David GArlan 和 Mary Shaw 認為軟件構(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è)計元素的組成;定標與性能;備選設(shè)計的選擇?!盵GS93]
但構(gòu)架不僅是結(jié)構(gòu);IEEE Working Group on Architecture 把其定義為“系統(tǒng)在其環(huán)境中的高層概念”[IEEE98]。構(gòu)架還包括“符合”系統(tǒng)完整性、經(jīng)濟約束條件、審美需求和樣式。它并不僅注重對內(nèi)部的考慮,而且還在系統(tǒng)的用戶環(huán)境和開發(fā)環(huán)境中對系統(tǒng)進行整體考慮,即同時注重對外部的考慮。
在 Rational Unified ProcESs 中,軟件系統(tǒng)的構(gòu)架(在某一給定點)是指系統(tǒng)重要構(gòu)件的組織或結(jié)構(gòu),這些重要構(gòu)件通過接口與不斷減小的構(gòu)件與接口所組成的構(gòu)件進行交互。
從和目的、主題、材料和結(jié)構(gòu)的聯(lián)系上來說,軟件架構(gòu)可以和建筑物的架構(gòu)相比擬。一個軟件架構(gòu)師需要有廣泛的軟件理論知識和相應(yīng)的經(jīng)驗來事實和管理軟件產(chǎn)品的高級設(shè)計。軟件架構(gòu)師定義和設(shè)計軟件的模塊化,模塊之間的交互,用戶界面風格,對外接口方法,創(chuàng)新的設(shè)計特性,以及高層事物的對象操作、邏輯和流程。
10. 軟件系統(tǒng)的架構(gòu)(ArchitECture)有兩個要素是什么?
答:
1) 它是一個軟件系統(tǒng)從整體到部分的高層次的劃分。
一個系統(tǒng)通常是由元件組成的,而這些元件如何形成、相互之間如何發(fā)生作用,則是關(guān)于這個系統(tǒng)本身結(jié)構(gòu)的重要信息。
詳細地說,就是要包括架構(gòu)元件(Architecture Component)、聯(lián)結(jié)器(Connector)、任務(wù)流(TASk-flow)。所謂架構(gòu)元素,也就是組成系統(tǒng)的核心"磚瓦",而聯(lián)結(jié)器則描述這些元件之間通訊的路徑、通訊的機制、通訊的預(yù)期結(jié)果,任務(wù)流則描述系統(tǒng)如何使用這些元件和聯(lián)結(jié)器完成某一項需求。
2) 建造一個系統(tǒng)所作出的高層次的、以后難以更改的,商業(yè)的和技術(shù)的決定。
在建造一個系統(tǒng)之前會有很多的重要決定需要事先作出,而一旦系統(tǒng)開始進行詳細設(shè)計甚至建造,這些決定就很難更改甚至無法更改。顯然,這樣的決定必定是有關(guān)系統(tǒng)設(shè)計成敗的重要決定,必須經(jīng)過非常慎重的研究和考察。
卡內(nèi)基梅隆大學和加州大學埃爾文分校在這個領(lǐng)域作了很多研究。卡內(nèi)基·梅隆大學的Mary Shaw和David Garlan于1996年寫了一本叫做 Software Architecture perspective on an emerging DIscipline的書,提出了軟件架構(gòu)中的很多概念,例如軟件組件、連接器、風格等等。 加州大學埃爾文分校的軟件研究院所做的工作則主要集中于架構(gòu)風格、架構(gòu)描述語言以及動態(tài)架構(gòu)。
5. 談?wù)凜MMI的起源
答:隨著人們對CMM研究的不斷深入,其他學科也結(jié)合本系統(tǒng)的特點,陸續(xù)推出了自己的CMM模型。例如,人力資源能力成熟度模型、系統(tǒng)工程能力成熟度模型等等:
(1) SW-CMM (Software CMM) 軟件CMM
(2) SE-CMM (System Engineering CMM) 系統(tǒng)工程CMM
(3) SA-CMM (Software Acquisition CMM) 軟件采購CMM
(4) IPT-CMM (Integrated Product Team CMM) 集成產(chǎn)品群組CMM
(5) P-CMM (People CMM) 人力資源能力成熟度模型
為了以示區(qū)別,國內(nèi)外很多資料把CMM叫做SW-CMM。
6. ERP是個什么概念?
答:本世紀90年代初,美國的IT分析公司Gartner Group Inc根據(jù)當時計算機信息處理技術(shù)IT(Information Technology)的發(fā)展和企業(yè)對供應(yīng)鏈管理的需要,對信息時代以后制造業(yè)管理信息系統(tǒng)的發(fā)展趨勢和即將發(fā)生的變革作了預(yù)測,提出了企業(yè)資源計劃ERP(Enterprise Resources Planning)這個概念。
7. ERP系統(tǒng)與MRP-Ⅱ的區(qū)別是什么?
答:ERP是在MRP-Ⅱ基礎(chǔ)上進一步發(fā)展起來的企業(yè)管理信息系統(tǒng),為了進一步理解ERP系統(tǒng)的概念及其主要功能,需要弄清ERP與MRP-Ⅱ之間的區(qū)別。
1) 在資源管理范圍方面的差別
MRP-Ⅱ主要側(cè)重對企業(yè)內(nèi)部人、財、物等資源的管理,ERP系統(tǒng)提出了供應(yīng)鏈(Supply Chain)的概念,即把客戶需求和企業(yè)內(nèi)部的制造活動以及供應(yīng)商的制造資源整合在一起,并對供應(yīng)鏈上的所有環(huán)節(jié)進行有效管理,這些五一節(jié)包括訂單、采購、庫存、計劃、生產(chǎn)制造、質(zhì)量控制、運輸、分銷、服務(wù)與維護、財務(wù)管理、人事管理、實驗室管理、項目管理、配方管理等。
2) 在生產(chǎn)方式管理方面的差別
MRP-Ⅱ系統(tǒng)把企業(yè)歸類為幾種典型的生產(chǎn)方式來進行管理,如重復(fù)制造、批量生產(chǎn)、按訂單生產(chǎn)、按訂單裝配、按庫存生產(chǎn)等,針對每一種類型都有一套管理標準。而在80年代末、90年代初期,企業(yè)為了緊跟市場的變化,多品種、小批量生產(chǎn)以及看板式生產(chǎn)成為企業(yè)主要采用的生產(chǎn)方式,而ERP則能很好地支持和管理這種混合型制造環(huán)境,滿足了企業(yè)多元化經(jīng)營需求。
3) 在管理功能方面的差別
ERP除了MRP-Ⅱ系統(tǒng)的制造、分銷、財務(wù)管理功能外,還增加了支持整各個環(huán)節(jié)之間的運輸管理和倉庫管理;支持生產(chǎn)保障體系的質(zhì)量管理、實驗室管理、設(shè)備維修和備品備件管理;支持對工作流(業(yè)務(wù)處理流程)的管理。
4) 在事務(wù)處理控制方面的差別
MRP-Ⅱ是通過計劃的及時滾動來控制整個生產(chǎn)過程,它的實時性較差,一般只有實現(xiàn)事中控制。而ERP系統(tǒng)支持在線分析處理OLAP(Online Analytical Processing)、售后服務(wù)及質(zhì)量反饋,強調(diào)企業(yè)的事前控制能力,它可以將設(shè)計、制造、銷售、運輸?shù)韧ㄟ^集成來并行地進行各種相關(guān)的作業(yè),為企業(yè)提供了對質(zhì)量、適應(yīng)變化、客戶滿意、效績等關(guān)鍵問題的實時分析能力。
此外,在MRP-Ⅱ中,財務(wù)系統(tǒng)只是一個信息的歸結(jié)者,它的功能是將供、產(chǎn)、銷中的數(shù)量信息轉(zhuǎn)變?yōu)閮r值信息,是物流的價值反映。而ERP系統(tǒng)則將財務(wù)計劃功能和價值控制功能集成到整個供應(yīng)鏈上,如在生產(chǎn)計劃系統(tǒng)中,除了保留原有的主生產(chǎn)計劃、物料需求計劃和能力計劃外還擴展了銷售執(zhí)行計劃SOP和利潤計劃。
5) 在跨國(或地區(qū))經(jīng)營事務(wù)處理方面的差別
現(xiàn)代企業(yè)的發(fā)展,使得企業(yè)內(nèi)部各個組織單元之間、企業(yè)與外部的業(yè)務(wù)單元之間的協(xié)調(diào)變得越來越多和越來越重要,ERP系統(tǒng)運用完善的組織架構(gòu),從而可以支持跨國經(jīng)營的多國家地區(qū)、多工廠、多語種、多幣制應(yīng)用需求。
6) 在計算機信息處理技術(shù)方面的差別
隨著IT技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)通信技術(shù)的應(yīng)用,使得ERP系統(tǒng)的以實現(xiàn)對整個供應(yīng)鏈信息進行集成管理。ERP系統(tǒng)應(yīng)用客戶/服務(wù)器(C/S)體系結(jié)構(gòu)和分布式數(shù)據(jù)處理技術(shù),支持Internet/Intranet/Extranet、電子商務(wù)(E-busincss,E-commerce)、電子數(shù)據(jù)交換EDI,此外,還能實現(xiàn)在不同平臺上的互操作。我們就討論了“路標”的概念,當你的第一個路標達成之后,剩下的應(yīng)該都是屬于校訂的事了。通過和用戶的交互,確定新的“路標”,不斷的改進系統(tǒng)功能,優(yōu)化系統(tǒng)結(jié)構(gòu),修正系統(tǒng)Bug。
通過使用WWF,你可以創(chuàng)建基于處理器流的工作流并且把它們部署在任何類型的.NET應(yīng)用程序中。此外,本文還討論了ASP.NET開發(fā)者面對的一些特有的問題-這些問題可能通過使用工作流得到解決,如維持狀態(tài)和頁面導航等。
8. WWF,Windows工作流基礎(chǔ)是什么?
答:在2005年9月,微軟在它的一年兩次的專業(yè)開發(fā)者會議上公開了Windows Workflow Foundation(WWF,Windows工作流基礎(chǔ))。作為WinFX API的支柱之一,WWF提供給開發(fā)者一個普通框架-在其上開發(fā)過程驅(qū)動的和以工作流為中心的應(yīng)用程序。
當前,有些組織力圖把整個商業(yè)過程自動化;他們的標準答案就是集合一隊開發(fā)者來開發(fā)相應(yīng)的代碼。盡管這種方式對于這些組織帶來良好的作用,然而也有一些固有的問題。為了深入理解這一問題,你需要理解一個工作流的基本特征。
一個工作流本質(zhì)是一種方法-用來歸檔包含在完成一個單元的工作中的活動。典型地,在處理過程中,工作"流"流過一項或更多活動。這些活動可以通過機器或人工來實現(xiàn),并且有可能象在一個互聯(lián)網(wǎng)應(yīng)用程序定義頁面順序一樣得簡單,也有可能象管理必須為任何數(shù)目的人都要看到、更改并同意的文件或產(chǎn)品一樣得復(fù)雜。
因為如此多的工作流程必須考慮到人工參預(yù),所以可能需要花費很長工期才能完成,時間可能為幾小時到數(shù)月或更長。例如,參預(yù)在該過程中的人可能無法找到,不在本地或忙于另外的任務(wù);因此,工作流必須在所有非活動期間能夠把自身持續(xù)性存儲。而且,通過編碼獨立實現(xiàn)的過程可能對非技術(shù)人員難于理解而對開發(fā)者卻難于更改。這一點和其它一些因素正是例如Windows WF等通用工作流框架的目標-其目的就在于使創(chuàng)建、改變和管理工作流更容易-這是通過向它們提供一個可視化接口或通過定義一組普通API來實現(xiàn)的。
你可以把WWF工作流放置在任何類型的.NET應(yīng)用程序中-包括Windows表單程序,控制臺應(yīng)用程序,Windows服務(wù)和ASP.NET Web應(yīng)用程序。每種類型都需要專門的考慮。盡管一些現(xiàn)有示例已經(jīng)足夠說明如何把工作流宿主到Windows表單程序和控制臺應(yīng)用程序中,但是本文將集中于討論ASP.NET開發(fā)者的問題-他們希望把工作流集成到自己的應(yīng)用程序中。
Windows WF和MVC模式:在開發(fā)一個ASP.NET應(yīng)用程序時,你可能使用WWF的一個普通的方法是實現(xiàn)一種模型-視圖-控制器(MVC)方法。實質(zhì)上,MVC的目標是把描述層、應(yīng)用程序邏輯和應(yīng)用程序流邏輯分離開來。
搞清楚這個將十分有益于一個ASP.NET應(yīng)用程序的開發(fā),請考慮一個幫助桌面票工作流的場所。假定有一個商業(yè)用戶通過填寫一個ASP.NET Web表單并點擊一個提交按鈕來啟動該工作流。接下來,服務(wù)器就會通知一個使用Windows表單應(yīng)用程序和幫助桌面的雇員—“有新票可用了”。該幫助桌面雇員然后將在這一問題上工作,并在后關(guān)閉該票。如果使用Windows WF來開發(fā)這個工作流情形,那么所有的處理邏輯和流程可以被包含在工作流本身,而該ASP.NET應(yīng)用程序?qū)⑼耆恍枰私膺@一邏輯。
這種場所提供了一些穩(wěn)固的證據(jù)-把描述與邏輯相分離是一件好事情。因為這個處理幫助桌面請求的過程是非常普通的,如果使用C#或VB.NET代碼在若干不同的.NET應(yīng)用程序中實現(xiàn)這一邏輯,那么你將會冒著重復(fù)編碼的危險甚至更壞的情形--用完全不同的代碼導致同樣的商業(yè)處理過程的不同實現(xiàn)。但是如果你使用WWF來實現(xiàn)這一過程,那么需要這一過程的應(yīng)用程序開發(fā)者將僅需在一處修改這些步驟-工作流本身-而不必擔心這樣會改變應(yīng)用程序邏輯。代碼復(fù)制和在哪里實現(xiàn)該過程可以通過Windows WF的使用來加以緩和。
當使用Windows WF在ASP.NET中實現(xiàn)MVC架構(gòu)時,開發(fā)者應(yīng)該嘗試構(gòu)建獨立于應(yīng)用程序的工作流-而該工作流仍然宿主于該應(yīng)用程序中。這將有助于保持邏輯獨立于描述并且保持在該Web應(yīng)用程序中的工作步驟順序和頁面流之間的高度獨立性。
一個WWF開發(fā)新手可能試圖用一固定數(shù)目的活動以某種順序去開發(fā)一個工作流,然后開發(fā)一組ASP.NET Web表單--這些表單以與之相同的順序從一個表單流向另一個表單。很遺憾,盡管這看上去挺符合邏輯,但是實際上這是非常不具有生產(chǎn)效率的,因為你將會再次實現(xiàn)這個工作流邏輯。Web頁面X不需要知道是否它需要轉(zhuǎn)到頁面Y或頁面Z來正確地實現(xiàn)該工作流步驟。代之的是,該工作流(模型)應(yīng)該告訴ASP.NET(控制器)下一步該干什么;然后ASP.NET應(yīng)該決定要顯示哪個頁面。這樣,每個頁面幾乎不需要了解整個過程;它僅需要知道怎樣完成一個不同的活動并且讓該工作流來關(guān)心頁面是如何從一處流向另一處的。這種分離在開發(fā)者處理頁面流時帶來了一種極大的靈活性。例如,如果你決定改變該頁面顯示順序,那么你可以從工作流中容易地實現(xiàn)這一點,而不需要改變該ASP.NET應(yīng)用程序中的一行代碼。
9. 陳述一下軟件架構(gòu)的概念
答:軟件架構(gòu)(software architecture)是一系列相關(guān)的抽象模式,用于指導大型軟件系統(tǒng)各個方面的設(shè)計。 軟件架構(gòu)是一個系統(tǒng)的草圖。軟件架構(gòu)描述的對象是直接構(gòu)成系統(tǒng)的抽象組件。各個組件之間的連接則明確和相對細致地描述組件之間的通訊。在實現(xiàn)階段,這些抽象組件被細化為實際的組件,比如具體某個類或者對象。在面向?qū)ο箢I(lǐng)域中,組件之間的連接通常用接口_(計算機科學)來實現(xiàn)。
軟件體系結(jié)構(gòu)是構(gòu)建計算機軟件實踐的基礎(chǔ)。與建筑師設(shè)定建筑項目的設(shè)計原則和目標,作為繪圖員畫圖的基礎(chǔ)一樣,一個軟件架構(gòu)師或者系統(tǒng)架構(gòu)師陳述軟件構(gòu)架以作為滿足不同客戶需求的實際系統(tǒng)設(shè)計方案的基礎(chǔ)。
軟件構(gòu)架是一個容易理解的概念,多數(shù)工程師(尤其是經(jīng)驗不多的工程師)會從直覺上來認識它,但要給出精確的定義很困難。特別是,很難明確地區(qū)分設(shè)計和構(gòu)架:構(gòu)架屬于設(shè)計的一方面,它集中于某些具體的特征。
在“軟件構(gòu)架簡介”中,David GArlan 和 Mary Shaw 認為軟件構(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è)計元素的組成;定標與性能;備選設(shè)計的選擇?!盵GS93]
但構(gòu)架不僅是結(jié)構(gòu);IEEE Working Group on Architecture 把其定義為“系統(tǒng)在其環(huán)境中的高層概念”[IEEE98]。構(gòu)架還包括“符合”系統(tǒng)完整性、經(jīng)濟約束條件、審美需求和樣式。它并不僅注重對內(nèi)部的考慮,而且還在系統(tǒng)的用戶環(huán)境和開發(fā)環(huán)境中對系統(tǒng)進行整體考慮,即同時注重對外部的考慮。
在 Rational Unified ProcESs 中,軟件系統(tǒng)的構(gòu)架(在某一給定點)是指系統(tǒng)重要構(gòu)件的組織或結(jié)構(gòu),這些重要構(gòu)件通過接口與不斷減小的構(gòu)件與接口所組成的構(gòu)件進行交互。
從和目的、主題、材料和結(jié)構(gòu)的聯(lián)系上來說,軟件架構(gòu)可以和建筑物的架構(gòu)相比擬。一個軟件架構(gòu)師需要有廣泛的軟件理論知識和相應(yīng)的經(jīng)驗來事實和管理軟件產(chǎn)品的高級設(shè)計。軟件架構(gòu)師定義和設(shè)計軟件的模塊化,模塊之間的交互,用戶界面風格,對外接口方法,創(chuàng)新的設(shè)計特性,以及高層事物的對象操作、邏輯和流程。
10. 軟件系統(tǒng)的架構(gòu)(ArchitECture)有兩個要素是什么?
答:
1) 它是一個軟件系統(tǒng)從整體到部分的高層次的劃分。
一個系統(tǒng)通常是由元件組成的,而這些元件如何形成、相互之間如何發(fā)生作用,則是關(guān)于這個系統(tǒng)本身結(jié)構(gòu)的重要信息。
詳細地說,就是要包括架構(gòu)元件(Architecture Component)、聯(lián)結(jié)器(Connector)、任務(wù)流(TASk-flow)。所謂架構(gòu)元素,也就是組成系統(tǒng)的核心"磚瓦",而聯(lián)結(jié)器則描述這些元件之間通訊的路徑、通訊的機制、通訊的預(yù)期結(jié)果,任務(wù)流則描述系統(tǒng)如何使用這些元件和聯(lián)結(jié)器完成某一項需求。
2) 建造一個系統(tǒng)所作出的高層次的、以后難以更改的,商業(yè)的和技術(shù)的決定。
在建造一個系統(tǒng)之前會有很多的重要決定需要事先作出,而一旦系統(tǒng)開始進行詳細設(shè)計甚至建造,這些決定就很難更改甚至無法更改。顯然,這樣的決定必定是有關(guān)系統(tǒng)設(shè)計成敗的重要決定,必須經(jīng)過非常慎重的研究和考察。
卡內(nèi)基梅隆大學和加州大學埃爾文分校在這個領(lǐng)域作了很多研究。卡內(nèi)基·梅隆大學的Mary Shaw和David Garlan于1996年寫了一本叫做 Software Architecture perspective on an emerging DIscipline的書,提出了軟件架構(gòu)中的很多概念,例如軟件組件、連接器、風格等等。 加州大學埃爾文分校的軟件研究院所做的工作則主要集中于架構(gòu)風格、架構(gòu)描述語言以及動態(tài)架構(gòu)。
11. 架構(gòu)的目標是什么
答:要達到如下的目標:
·可靠性(Reliable)。軟件系統(tǒng)對于用戶的商業(yè)經(jīng)營和管理來說極為重要,因此軟件系統(tǒng)必須非常可靠。
·安全行(Secure)。軟件系統(tǒng)所承擔的交易的商業(yè)價值極高,系統(tǒng)的安全性非常重要。
·可擴展性(SCAlable)。軟件必須能夠在用戶的使用率、用戶的數(shù)目增加很快的情況下,保持合理的性能。只有這樣,才能適應(yīng)用戶的市場擴展得可能性。
·可定制化(CuSTomizable)。同樣的一套軟件,可以根據(jù)客戶群的不同和市場需求的變化進行調(diào)整。
·可擴展性(Extensible)。在新技術(shù)出現(xiàn)的時候,一個軟件系統(tǒng)應(yīng)當允許導入新技術(shù),從而對現(xiàn)有系統(tǒng)進行功能和性能的擴展
·可維護性(MAIntainable)。軟件系統(tǒng)的維護包括兩方面,一是排除現(xiàn)有的錯誤,二是將新的軟件需求反映到現(xiàn)有系統(tǒng)中去。一個易于維護的系統(tǒng)可以有效地降低技術(shù)支持的花費
·客戶體驗(Customer Experience)。軟件系統(tǒng)必須易于使用。
·市場時機(Time to Market)。軟件用戶要面臨同業(yè)競爭,軟件提供商也要面臨同業(yè)競爭。以快的速度爭奪市場先機非常重要。
12. 什么是構(gòu)架風格
答:軟件構(gòu)架(或僅是構(gòu)架視圖)可以具有名為構(gòu)架風格的屬性,該屬性減少了可選的形式,并使構(gòu)架具有一定程度的一致性。樣式可以通過一組模式或通過選擇特定構(gòu)件或連接器作為基本構(gòu)件來定義。對給定系統(tǒng),某些樣式可作為構(gòu)架描述的一部分記錄在構(gòu)架風格指南(Rational Unified Process 中設(shè)計指南文檔的一部分)中。樣式在構(gòu)架的可理解性與完整性方面起著主要的作用。
13. 什么是構(gòu)架設(shè)計圖 ?有哪些組成?
答:構(gòu)架視圖的圖形描述稱為構(gòu)架設(shè)計圖。對于以上描述的各種視圖,設(shè)計圖由以下統(tǒng)一建模語言圖組成 [UML99]:
邏輯視圖:類圖、狀態(tài)機和對象圖。
進程視圖:類圖與對象圖(包括任務(wù) - 進程與線程)。
實施視圖:構(gòu)件圖。
部署視圖:配置圖。
用例視圖:用例圖描述用例、主角和普通設(shè)計類;順序圖描述設(shè)計對象及其協(xié)作關(guān)系。
14. 談?wù)剺?gòu)架設(shè)計流程。
答:在 Rational Unified Process 中,構(gòu)架主要是分析設(shè)計工作流程的結(jié)果。當項目再次進行此工作流程時,構(gòu)架將在又迭代中不斷演化、改進、精煉。由于每次迭代都包括集成和測試,所以在交付產(chǎn)品時,構(gòu)架就相當強壯了。構(gòu)架是精化階段各次迭代的重點,構(gòu)架的基線通常會在此階段結(jié)束時確定。
作者:宏威職業(yè)顧問首席咨詢師 郭策