【高级软件工程课后作业】
第一次作業(yè)
1.簡述研究生階段如何提高自己的學習能力。
①通過閱讀大量的學術論文、文獻資料以及國內外期刊,培養(yǎng)自己專業(yè)學術論文的寫作能力
②通過學習過程中的小組合作,提高自身的團隊協(xié)作能力,提高與人溝通的能力,強化團隊思維與整體意識
③通過學習專業(yè)英語,提升自己在研究領域的英語讀寫水平
④通過參與相關的實驗項目,提高自己與學科相關的實踐能力
⑤通過閱讀學術論文與國內外期刊,培養(yǎng)對知識的抽象與概括能力
⑥緊密關注計算機與軟件相關領域的前沿科技,開闊思維
2.查閱資料試舉曾經發(fā)生過的軟件危機的案例;簡述造成危機的主要原因,現(xiàn)有條件下可以采取的應對策略。
(1)經典案例—美國銀行信托軟件系統(tǒng)開發(fā)案:美國銀行1982年進入信托領域,規(guī)劃發(fā)展了信托軟件系統(tǒng)。項目原訂預算2千萬美元,開發(fā)時間9個月,預計于1984年12月31日前完成,后來直至1987年3月都未能完成該系統(tǒng),期間已投入6千萬美元。美國銀行最終因系統(tǒng)不穩(wěn)定而放棄,并將340億美元的信托賬戶轉移出去,造成損失高達6億美元。(對軟開的進度估計不準確)
(2)軟件危機成因:
①用戶需求不明確
②與軟件本身特點有關
③缺乏正確的理論指導
④軟件開發(fā)規(guī)模越來越大
⑤軟件開發(fā)復雜度越來越大
(3)應對策略:既要有技術措施,也要有組織管理措施
①使用好的軟件開發(fā)技術和方法
②使用好的軟件開發(fā)工具,以提高生產率
③有良好的組織、嚴密的管理,各方面人員相互配合共同完成工作
3.簡述軟件工程課程研究的主要內容。
軟件工程是指導計算機軟件開發(fā)和維護的一門工程學科。采用工程的概念、原理、技術和方法來開發(fā)和維護軟件,把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經濟地開發(fā)出高質量的軟件并有效地維它。
(1)軟件工程相關概念及概述。簡單來講,就是一些的概念和理論。對我來講,我難以集中注意力去理解一堆的概念和理論。但同時我也認為,如果對于一個真正想從事編程相關工作的人,偏于實踐,理論只要了解就好,不需要深究。
(2)個人及團隊在項目開發(fā)中地位以及作用的概述。這一部分是決定項目好壞的判斷條件。沒有一個好的隊伍,即便一個人多有才,他的思維是被禁錮的,單方面的,而一個團隊的集思廣益能夠帶來意料之外的結果。因此我也從中深刻意識到團隊的重要性。雖然我認為大部分的當代大學生也包括我自己,團隊合作意識是相當差的,或者說根本沒有。一個人如何參與到一個項目中去,又如何發(fā)揮自己的項目開發(fā)中的作用,這個應該是每一個要做編程開發(fā)工作的人都要思考的事情。一個團隊應該如何分擔工作,這是一個非常有深意的問題。所以團隊之間的溝通配合是做項目過程中所需的。
(3)從項目的需求分析到項目最終構建的流程概述。這是項目開發(fā)最重要的部分,我以為一個項目要想有條不紊的進行開發(fā),團隊成員必須對項目的流程以及自己的工作了如指掌。并且要在項目過程中保持好個人的思維條理性,不能因為隊友提出的建議,自亂陣腳,最后什么都做不好。
第二次作業(yè)
1、介紹目前主流軟件開發(fā)過程模型及其各自的特點。
(1)瀑布模型:將軟件生存周期的各項活動規(guī)定為按照固定順序而連接的若干階段工作,形如瀑布,最終得到軟件產品。
特點:可以強迫開發(fā)人員采用規(guī)范的方法,嚴格規(guī)定了每個階段必須提交的文檔,要求每個階段交出的產品必須經過質量保證小組的仔細驗證;但正因為是文檔驅動,用戶只能通過文檔來了解產品,具有一定的局限性,不適于經常變化的項目。
(2)快速原型模型:在軟件開發(fā)早期,快速開發(fā)出一個目標軟件系統(tǒng)的原型,讓用戶對其進行評價并提出意見,然后開發(fā)人員根據用戶的意見對原型進行改進。
特點:克服了瀑布模型的缺點,減少了由于需求不明確帶來的開發(fā)風險;但因為所選的開發(fā)技術和工具不一定符合主流的發(fā)展,快速建立起來的系統(tǒng)結構加上連續(xù)修改可能導致產品質量低下,且一定程度上不利于開發(fā)人員創(chuàng)新。
(3)增量模型:把待開發(fā)的軟件系統(tǒng)模塊化,將每個模塊作為一個增量組件,從而分批次地分析、設計、編碼和測試這些增量組件。
特點:人員分配靈活,剛開始不用投入大量的人力資源,可在較短時間內向用戶提交能完成部分工作的產品;但是該模型變化能力較大,容易退化為邊做邊改模型,從而使軟件過程的控制失去整體性。
(4)螺旋模型:它將瀑布模型和快速原型模型結合起來,強調了其他模型所忽視的風險分析,支持需求不明確,特別是大型軟件系統(tǒng)的開發(fā),并支持面向規(guī)格說明、面向過程、面向對象等多種軟件開發(fā)方法,是一種具有廣闊前景的模型。
特點:靈活性,可在項目各個階段進行變更,客戶可參與每個階段的開發(fā),保證了項目不偏離方向及項目的可控性;但因為是風險驅動,在風險較大的項目中,如未及時標識風險,勢必造成重大損失,會增加開發(fā)成本,延遲提交時間。
(5)噴泉模型:是一種以用戶需求為動力,以對象為驅動的模型,主要用于描述面向對象的軟件開發(fā)過程。該模型認為軟件開發(fā)過程自下而上周期的各階段是相互迭代和無間隙的。
特點:將功能需求、功能模塊間的關系、數(shù)據流等描述清楚,提升需求、設計準確性,最終提升軟件質量;但也因為各個階段有重疊,不利于項目的管理,開發(fā)耗時。
(6)敏捷開發(fā):是一種以人為核心、迭代、循序漸進的開發(fā)方法。在敏捷開發(fā)中,軟件項目的構建被切分為多個子項目,各個子項目的成果都經過測試,具備集成和可運行的特征。
特點:首要任務是盡早地、持續(xù)地交付可評價的軟件,以使客戶滿意,樂于接受需求變更,即使在開發(fā)后期也是如此,敏捷軟件開發(fā)能夠駕馭需求的變化,從 而為客戶贏得競爭優(yōu)勢。
(7)微軟過程:將軟件生命周期分成5個階段里程碑式的重要階段(規(guī)劃階段、設計階段、開發(fā)階段、穩(wěn)定階段和發(fā)布階段),各階段之間有緩沖時間,但不進行單獨的產品維護。
特點:綜合了Rational統(tǒng)一過程和敏捷過程的許多優(yōu)點,是對眾多成功項目的開發(fā)經驗的總結;但也存在不足,如對方法。工具和產品等方面的論述不如RUP和敏捷過程全面。
2、簡述RUP軟件過程模型的特點。
①優(yōu)點:提高了團隊生產力,在迭代的開發(fā)過程中、需求管理、驗證軟件質量等方面,針對所有關鍵活動為每個開發(fā)人員提供了必要的準則、模版和工具指導,確保全體成員共享相同的知識基礎,為軟件開發(fā)提供了較大的通用性。
②缺點:RUP只是一個開發(fā)過程,并沒有覆蓋軟件過程的全部內容,沒有支持多項目的開發(fā)結構,在一定程度上降低了實現(xiàn)重用的可能性。
3、簡述可行性研究報告的任務、過程、介紹可能使用到的工具和方法。
(1)可行性研究的目的不是解決問題,而是確定問題是否值得去解決。
(2)可行性研究過程有下述8個步驟:
①復查系統(tǒng)規(guī)模和目標:分析員訪問關鍵人員,仔細閱讀和分析有關的材料,以便對問題定義階段書寫的關于規(guī)模和目標的報告書進一步復查確認,改正含糊或不確切的敘述,清晰地描述對目標系統(tǒng)的一切限制和約束。這個步驟的工作,實質上是為了確保分析員正在解決的問題確實是要求他解決的問題。
②研究目前正在使用的系統(tǒng) :分析員訪問關鍵人員,仔細閱讀和分析有關的材料,以便對問題定義階段書寫的關于規(guī)模和目標的報告書進一步復查確認,改正含糊或不確切的敘述,清晰地描述對目標系統(tǒng)的一切限制和約束。這個步驟的工作,實質上是為了確保分析員正在解決的問題確實是要求他解決的問題。
③導出新系統(tǒng)的高層邏輯模型 :優(yōu)秀的設計過程通常是從現(xiàn)有的物理系統(tǒng)出發(fā),導出現(xiàn)有系統(tǒng)的邏輯模型,再參考現(xiàn)有系統(tǒng)的邏輯模型,設想目標系統(tǒng)的邏輯模型,最后根據目標系統(tǒng)的邏輯模型建造新的物理系統(tǒng)。
④進一步定義問題 :可行性研究的前4個步驟實質上構成一個循環(huán)。分析員定義問題,分析這個問題,導出一個試探性的解;在此基礎上再次定義問題,再一次分析這個問題,修改這個解;繼續(xù)這個循環(huán)過程,直到提出的邏輯模型完全符合系統(tǒng)目標。
⑤導出和評價供選擇的解法: 分析員應該從他建議的系統(tǒng)邏輯模型出發(fā),導出若干個較高層次的物理解法供比較和選擇。其次可以考慮操作方面的可行性。分析員應該根據使用部門處理事務的原則和習慣檢查技術上可行的那些方案,去掉其中從操作方式或操作過程的角度看用戶不能接受的方案。接下來應該考慮經濟方面的可行性。分析員應該估計余下的每個可能的系統(tǒng)的開發(fā)成本和運行費用,并且估計相對于現(xiàn)有的系統(tǒng)而言這個系統(tǒng)可以節(jié)省的開支或可以增加的收入。最后為每個在技術、操作和經濟等方面都可行的系統(tǒng)制定實現(xiàn)進度表,這個進度表不需要制定得很詳細,通常只需要估計生命周期每個階段的工作量。
⑥導出和評價供選擇的解法 :根據可行性研究結果應該決定的一個關鍵性問題是:是否繼續(xù)進行這項開發(fā)工程?分析員必須清楚地表明他對這個關鍵性決定的建議。如果分析員認為值得繼續(xù)進行這項開發(fā)工程,那么他應該選擇一種最好的解法,并且說明選擇這個解決方案的理由。通常客戶主要根據經濟上是否劃算決定是否投資于一項開發(fā)工程,因此分析員對于所推薦的系統(tǒng)必須進行比較仔細的成本/效益分析。
⑦草擬開發(fā)計劃 :分析員應該為所推薦的方案草擬一份開發(fā)計劃,除了制定工程進度表之外還應該估計對各類開發(fā)人員和各種資源的需要情況,應該指明什么時候使用以及使用多長時間。此外還應該估計系統(tǒng)生命周期每個階段的成本。最后應該給出下一個階段(需求分析)的詳細進度表和成本估計。
⑧書寫文檔提交審查 :應該把上述可行性研究各個步驟的工作結果寫成清晰的文檔,請用戶、客戶組織的負責人及評審組審查,以決定是否繼續(xù)這項工程及是否接受分析員推薦的方案。
(3)可能用到的工具和方法:
①系統(tǒng)流程圖:系統(tǒng)流程圖是概括地描繪物理系統(tǒng)的傳統(tǒng)工具。系統(tǒng)流程圖表達的是數(shù)據在系統(tǒng)各部件之間流動的情況,而不是對數(shù)據進行加工處理的控制過程,因此盡管系統(tǒng)流程圖的某些符號和程序流程圖的符號形式相同,但是它卻是物理數(shù)據流圖而不是程序流程圖。
②數(shù)據流圖:是結構化分析方法中使用的工具,它以圖形的方式描繪數(shù)據在系統(tǒng)中流動和處理的過程,由于它只反映系統(tǒng)必須完成的邏輯功能,所以它是一種功能模型。在結構化開發(fā)方法中,數(shù)據流圖是需求分析階段產生的結果。
③數(shù)據字典:數(shù)據字典是指對數(shù)據的數(shù)據項、數(shù)據結構、數(shù)據流、數(shù)據存儲、處理邏輯等進行定義和描述,其目的是對數(shù)據流圖中的各個元素做出詳細的說明,使用數(shù)據字典為簡單的建模項目。簡而言之,數(shù)據字典是描述數(shù)據的信息集合,是對系統(tǒng)中使用的所有數(shù)據元素的定義的集合。
第三次作業(yè)
1、簡述需求獲取的方法、工具和要注意到的問題。
(1)方法:
①訪談:訪談是最早開始使用的獲取用戶需求的技術,也是目前最廣泛的需求獲取技術。訪談包括兩種形式,正式和非正式的訪談。前者是有系統(tǒng)分析員提出一些事先準備好的具體問題。后者則是有分析員提出一些用戶可以自由回答的開放性問題。
②需求專題討論會:需求專題討論會是一種需求獲取很有力的技術。項目主要風險承擔人在短暫而緊湊的時間段內集中在一起,一般為一天或兩天,與會者可以在需求上達成共識、對操作過程盡快取得統(tǒng)一意見。參加會議的人員包括主持人、用戶、技術人員、項目組人員。
③問卷調查:可用于確認假設和收集統(tǒng)計傾向數(shù)據,問卷需要快速問答,允許匿名方式。在完成最初的面談和分析后,問卷調查可作為一項協(xié)作技術收到良好的效果。
④快速建立軟件原型:快速建立軟件原型是最準確、最有效、最強大的需求分析技術。構建原型的要點是,它應該是實現(xiàn)用戶看得見的功能,省略目標系統(tǒng)的“隱含”功能
(2)工具:
①實體—聯(lián)系圖(ER圖):數(shù)據模型中包含3種互相關聯(lián)的信息:數(shù)據對象、數(shù)據對象的屬性及數(shù)據對象彼此間相互連接的關系。人們通常是用實體、聯(lián)系和屬性這3個概念來理解現(xiàn)實問題的,因此,ER模型比較接近人的習慣思維。另外,ER模型使用簡單的圖形符號表達系統(tǒng)分析員對問題域的理解,不熟悉計算機技術的用戶也能理解它,因此,ER模型可以作為用戶與分析員之間有效的交流工具。
②狀態(tài)轉換圖:通過描繪系統(tǒng)的狀態(tài)及引起系統(tǒng)狀態(tài)轉換的事件,來表示系統(tǒng)的行為。此外狀態(tài)圖還指明了作為特定事件的結果系統(tǒng)將做哪些動作。
③層次方框圖:層次方框圖用樹形結構的一系列多層次的矩形框描繪數(shù)據的層次結構。
④Warnier圖:和層次方框圖類似,Warnier圖也用樹形結構描繪信息,但是這種圖形工具比層次方框圖提供了更豐富的描繪手段。
(3)驗證軟件需求:
1.驗證需求的一致性
2.驗證需求的現(xiàn)實性
3.驗證需求的完整性和有效性
2、簡述數(shù)據流圖概念、繪制數(shù)據流圖要注意的事項。
(1)概念:數(shù)據流圖(Data Flow Diagram)簡稱DFD,是一種圖形化技術,它描繪了信息流和數(shù)據從輸入移動到輸出的過程中所經受的變換。
(2)繪制DFD注意事項:
①名字應代表整個數(shù)據流的內容,而不是僅僅反映它的某些成分
②不要使用空洞的、缺乏具體含義的名字
③在為某個數(shù)據流起名字時遇到了困難,可能是對數(shù)據流圖分解不 恰當造成的,應該試試重新分解
④每個加工必須既有輸入數(shù)據流,又有輸出數(shù)據流
⑤外部實體之間不應該存在數(shù)據流
⑥所有數(shù)據流必須從一個外部實體開始,并以一個外部實體結束
3、簡述數(shù)據規(guī)范化的概念,舉例說明一范式、二范式、三范式。
(1)概念:軟件系統(tǒng)經常使用各種長期保存的信息,這些信息通常以一定方式組織并存儲在數(shù)據庫或文件中,為減少數(shù)據冗余,避免出現(xiàn)插入異常或刪除異常,簡化修改數(shù)據的過程,通常需要把數(shù)據結構規(guī)范化。
(2)第一范式:每個屬性值必須都是原子值,即僅僅是一個簡單值而不含內部結構。
(3)第二范式:滿足第一范式條件,而且每個非關鍵字屬性都由整個關鍵字決定。
(4)第三范式:符合第二范式的條件,每個非關鍵字屬性都僅由關鍵字決定,而且一個非關鍵字屬性不能僅僅是對另一個非關鍵字屬性的進一步描述。
第四次作業(yè)
1、需求工程是包括創(chuàng)建和維護需求文檔所必需的一切活動過程,可分為需求開發(fā)和需求管理兩大工作。簡述需求開發(fā)和需求管理的工作內容。
(1)需求開發(fā):
需求開發(fā)是采用系統(tǒng)工程化方法,與客戶的業(yè)務和技術骨干進行溝通、交流,獲取客戶的信息化建設需求,然后理解、梳理、分析和挖掘不同部門、不同角色提出的信息化建設原始需求,再對用戶需求進行條目化、規(guī)范化、系統(tǒng)化處理,形成《系統(tǒng)規(guī)格說明書》,最后由客戶組織內外部專家對《系統(tǒng)規(guī)格說明書》進行評審、確認。經客戶和需求開發(fā)工程師雙方確認的《系統(tǒng)規(guī)格說明書》為信息化系統(tǒng)設計、開發(fā)、測試和交付提供明確、清晰、完整的建設需求。
(2)需求管理:
①挖掘用戶需求:明確用戶是誰,搞清楚用戶需求的使用場景在哪里,來解決什么問題。
②將用戶故事描述為產品需求:將用戶需求轉化為產品需求,有效連接產品團隊、研發(fā)團隊以及測試團隊。
③梳理產品需求并驗證:將產品需求梳理規(guī)劃成具體的產品功能,然后從其中篩選出來用以測試的MVP(最小可行化產品),進行再次驗證。
④. 搭建工作流,可視化管理需求:可視化和結構化地管理需求,及時同步需求池,公示整體排期計劃,減少因信息不對稱引起的變更。一旦發(fā)現(xiàn)有變更風險,要及時地應對,避免風險堆積。
2、軟件需求就是描述系統(tǒng)必須完成的事,以及軟件必備的品質,簡述軟件需求的分類。
(1)一種視角(開發(fā)人員)下可以分為兩個類型:功能需求和非功能需求
功能需求:
①業(yè)務需求:描述為什么開發(fā)系統(tǒng)(Why)(最重要!!!)
②用戶需求:描述系統(tǒng)能夠幫助用戶作什么(What)
③系統(tǒng)需求:描述用戶要求的具體流程(How)(不是指需求怎么實現(xiàn),需求怎樣實現(xiàn)是在設計階段完成的)
非功能性需求:
①性能需求:主要包括用戶在軟件響應速度、精度、容量、負載、系統(tǒng)吞吐量、運行時耗費資源等屬性要求。
② 質量屬性:系統(tǒng)完成工作的質量,如軟件的靈活性、高效性、可靠性、可維護性、健壯性、可用性等。
③對外接口:系統(tǒng)與環(huán)境中其他系統(tǒng)之間需要建立的接口,包括硬件接口、軟件接口、數(shù)據庫接口等。
對系統(tǒng)之間的軟硬件接口需要說明以下內容:接口數(shù)據格式;接口命令格式;接口標準;接口I/O;接口用途。
④約束:構建系統(tǒng)時需要遵循的約束,如編程語言和硬件設施等,約束不受系統(tǒng)功能需求影響。
(2)另一種視角(用戶)下可以分為三個類型:常規(guī)需求、期望需求和意外需求
常規(guī)需求:用戶認為系統(tǒng)應該做到的功能或性能,實現(xiàn)越多用戶會越滿意。
期望需求:用戶想當然認為系統(tǒng)應具備的功能或性能,但并不能正確描述自己想要得到的這些功能或性能需求。如果期望需求沒有得到實現(xiàn),會讓用戶感到不滿意。
意外需求:意外需求也稱為興奮需求,是用戶要求范圍外的功能或性能(但通常是軟件開發(fā)人員很樂意賦予系統(tǒng)的技術特性),實現(xiàn)這些需求用戶會更高興,但不實現(xiàn)也不影響其購買的決策。意外需求是控制在開發(fā)人員手中的,開發(fā)人員可以選擇實現(xiàn)更多的意外需求,以便得到高滿意、高忠誠度的用戶,也可以(出于成本或項目周期的考慮)選擇不實現(xiàn)任何意外需求。
3、軟件需求分析的方法,主要有結構化分析方法、面向對象的分析方法、面向問題域的分析方法,簡述他們的特點和適用場景。
(1)結構化分析方法:
結構化分析方法首先關心的是功能,強調以模塊(即過程)為中心,采用模塊化、自頂向下、逐步求精設計過程,系統(tǒng)是實現(xiàn)模塊功能的函數(shù)和過程的集合,結構清晰、可讀性好,是提高軟件開發(fā)質量的一種有效手段。
結構化分析方法從系統(tǒng)的功能入手,按照工程的標準和嚴格的規(guī)范將系統(tǒng)分解為若干功能模塊。然而,由于用戶的需求和軟、硬件技術的不斷發(fā)展變化,作為系統(tǒng)基本成分的功能模塊很容易受到影響,局部修改甚至會引起系統(tǒng)的根本性變化。因此,開發(fā)過程前期入手快而后期頻繁改動的現(xiàn)象比較常見。
(2)面向對象的分析方法:
面向對象的分析方法就是指通過建立一些類以及它們之間的關系來解決實際問題,這就需要對問題域中的對象作整體分析,類和類間關系的設計要求較高,否則設計出的并不是真正意義上的面向對象的軟件系統(tǒng),而只是一些類的堆砌而已,不能體現(xiàn)出面向對象方法的優(yōu)勢之處。
面向對象分析方法從所處理的數(shù)據入手,以數(shù)據為中心來描述系統(tǒng),數(shù)據相對于功能而言,具有更強的穩(wěn)定性,這樣設計出的系統(tǒng)模型往往能較好地映射問題域模型。對象、類、繼承性、多態(tài)性、動態(tài)定連概念和設施的引入使用,顯然令面向對象的分析方法具有一定的優(yōu)勢,可以為生產可重用的軟件構件和解決軟件的復雜性問題提供一條有效的途徑。
(3)面向問題域的分析方法:
將關注的重點定位在問題及其相關的問題域上,通過對問題及其問題域進行合理的分類,為分析人員提供解決具體問題的相關指南,同時從問題域的角度除法,使用戶能參與整個需求工程,有利于更直觀和真實的反映問題域的信息和用戶的需求法、面向問題域的分析方法,簡述他們的特點和適用場景。
第五次作業(yè)
1.簡述企業(yè)信息化的主要工作內容。
①產品設計信息化:產品設計信息化指產品設計,工藝設計方面的信息化。信息技術的應用使企業(yè)新產品設計能力明顯增強,開發(fā)和生產周期顯著縮短。
②企業(yè)生產過程信息化 企業(yè)生產過程的信息化是自動化技術在生產過程中的應用,即通過應用現(xiàn)代電子信息技術(如CAD、CAM等)解決加工過程中的復雜問題.提高生產的質量.精度和規(guī)模制造水平。
③企業(yè)管理信息化 企業(yè)管理信息化是指通過信息管理系統(tǒng)把企業(yè)的設計,采購、生產.制造、財務.營銷.經營、管理等各個環(huán)節(jié)集成起來,共享信息和資源,同時利用現(xiàn)代的技術手段來尋找自己的潛在客戶。
④市場經營信息化 市場經營信息化主要指企業(yè)通過實施電子商務.大大節(jié)約經營成本.提高產品的市場競爭能力,提高經濟效益。
⑤企業(yè)決策科學化、透明化、理性化 企業(yè)信息化給企業(yè)決策帶來的影響是顯而易見的。以往企業(yè)決策主要靠少數(shù)人的經驗累積和思維能力,主觀性強.透明度弱,而現(xiàn)在企業(yè)決策運用互聯(lián)網和應用軟件.增強了決策的科學性和對全局的控制力。
2.簡述企業(yè)信息系統(tǒng)建設(開發(fā))方法。
①生命周期法:該方法的主要思想就是:將系統(tǒng)的開發(fā)過程分為六個正式的階段, 這六個階段必須按順序的完成, 所以使用者與信息系統(tǒng)開發(fā)人員之間要有明確的分工。
②原型法:原型法的主要思想就是: 首先很快地、低成本地開 發(fā)出一 個試驗性的系統(tǒng), 讓最終使用者通過使用這個實驗性的系統(tǒng)以弄清該系統(tǒng)還有哪些方面不能滿足用戶的需要,然后對這 個系統(tǒng)有針對地進行改進; 然后再讓使用者使用, 再改進, 如此反復,直到完全滿足使用者的需求為止。
③應用軟件包法:使用應用軟件包建設企業(yè)的信息系統(tǒng)的確是一種省時且見效快的方法。 最終使用者開發(fā)方法 最終使用者開發(fā)方法指的是由企業(yè)中信息系統(tǒng)的使用人員,在完全獨立或在 信息技術人員的幫助下,根據自己工作的需要, 使用第四代計算機軟件工具為企業(yè)開發(fā)各種應用型的信息系統(tǒng)。
④外包法:將企業(yè)計算機中心的運行、通訊網絡的建設及應用程序的開發(fā)等工作完全包 給開發(fā)商去完成。
3.簡述企業(yè)信息系統(tǒng)的集成方面的主流技術。
①基于SOA架構的集成技術
基于SOA的實現(xiàn)主要是在全局統(tǒng)一的服務接口規(guī)劃后,充分利用服務接口設計原則,在SOA的理論架構的輔導下實現(xiàn)服務接口的開發(fā)工作。OA通過應用組件和傳輸協(xié)議的松散耦合,服務的即時綁定,從而實現(xiàn)業(yè)務組件的虛擬化,造就一個虛擬的集成架構或者集成平臺服務總線,這樣使得服務集成不受任何限制.最終達到敏捷的、不受限制的服務集成目標,從而使IT能夠隨著業(yè)務需求的變化而自由調整。
②基于中間件的集成技術
中間件是基礎軟件的一大類,屬于可復用軟件的范疇。中間件處在操作系統(tǒng)、網絡和數(shù)據庫之上,應用軟件的下層,也有人認為它應該屬于操作系統(tǒng)中的一部分。過在中間層提供一個統(tǒng)一的數(shù)據邏輯視圖來隱藏底層 的數(shù)據細節(jié),使得用戶可以把集成數(shù)據源看為一個統(tǒng)一的整體。這種模型下的關鍵問題是如何構造這個邏輯視圖并使得不同數(shù)據源之間能映射到這個中間層。
4.簡述企業(yè)信息系統(tǒng)持續(xù)開發(fā)與持續(xù)集成相關主流技術(DI/ CI)。
①CI:持續(xù)集成是指不斷整合項目更改并進行相應的測試,通常每天至少進行一次,是在源代碼變更后自動檢測、拉取、構建和進行單元測試的過程。持續(xù)集成是一種軟件開發(fā)實踐,即團隊開發(fā)成員經常集成他們的工作,通過每個成員每天至少集成一次,也就意味著每天可能會發(fā)生多次集成。每次集成都通過自動化的構建(包括編譯,發(fā)布,自動化測試)來驗證,從而盡早地發(fā)現(xiàn)集成錯誤。
②DI:持續(xù)部署是指當交付的代碼通過評審之后,自動部署到生產環(huán)境中。持續(xù)部署是持續(xù)交付的最高階段。是持續(xù)交付的下一步,指的是代碼通過評審以后,自動部署到生產環(huán)境。目標是,代碼在任何時刻都是可部署的,可以進入生產階段。其前提是能自動化完成測試、構建、部署等步驟。
第六次作業(yè)
1、簡述《國家信息化發(fā)展戰(zhàn)略綱要》。
《國家信息化發(fā)展戰(zhàn)略綱要》是為了以信息化驅動現(xiàn)代化,建設網絡強國而制定的法規(guī)。
①國家信息化發(fā)展的基本形勢
當今世界,信息技術創(chuàng)新日新月異,以數(shù)字化、網絡化、智能化為特征的信息化浪潮蓬勃興起。全球信息化進入全面滲透、跨界融合、加速創(chuàng)新、引領發(fā)展的新階段。誰在信息化上占據制高點,誰就能夠掌握先機、贏得優(yōu)勢、贏得安全、贏得未來。
②指導思想
要圍繞“五位一體”總體布局和“四個全面”戰(zhàn)略布局,牢固樹立創(chuàng)新、協(xié)調、綠色、開放、共享的發(fā)展理念,貫徹以人民為中心的發(fā)展思想,以信息化驅動現(xiàn)代化為主線,以建設網絡強國為目標,著力增強國家信息化發(fā)展能力,著力提高信息化應用水平,著力優(yōu)化信息化發(fā)展環(huán)境,讓信息化造福社會、造福人民,為實現(xiàn)中華民族偉大復興的中國夢奠定堅實基礎。
到2020年,核心關鍵技術部分領域達到國際先進水平,信息產業(yè)國際競爭力大幅提升,信息化成為驅動現(xiàn)代化建設的先導力量;到2025年,建成國際領先的移動通信網絡,根本改變核心關鍵技術受制于人的局面,實現(xiàn)技術先進、產業(yè)發(fā)達、應用領先、網絡安全堅不可摧的戰(zhàn)略目標,涌現(xiàn)一批具有強大國際競爭力的大型跨國網信企業(yè);到本世紀中葉,信息化全面支撐富強民主文明和諧的社會主義現(xiàn)代化國家建設,網絡強國地位日益鞏固,在引領全球信息化發(fā)展方面有更大作為。
《綱要》強調,必須堅持中央網絡安全和信息化領導小組對國家信息化發(fā)展的集中統(tǒng)一領導,信息化領域重大政策和事項須經領導小組審定。要求各地區(qū)各部門強化組織領導、健全工作機制、完善配套政策、加強督促落實,將各項戰(zhàn)略任務落到實處,確保戰(zhàn)略目標如期實現(xiàn)。
2、簡述軟件工程、軟件開發(fā)方法、軟件開發(fā)工具相關概念及之間的關系。
(1)軟件工程:是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟件的學科.
(2)軟件開發(fā)方法:
①結構化開發(fā)方法:它的特點是按照功能分解的原則;自頂向下,逐步求精。
②面向對象的軟件開發(fā)方法:以用例驅動的、以體系結構為中心的、迭代的和漸增式的開發(fā)過程,主要包括需求分析、系統(tǒng)分析、系統(tǒng)設計和系統(tǒng)實現(xiàn)四個階段。
③問題分析法、可視化開發(fā)方法等等。
(3)軟件開發(fā)工具:用于輔助軟件生命周期過程的基于計算機的工具。通常可以設計并實現(xiàn)工具來支持特定的軟件工程方法,減少手工方式管理的負擔。與軟件工程方法一樣,他們試圖讓軟件工程更加系統(tǒng)化。
(4)關系:軟件開發(fā)工具用來支持實現(xiàn)軟件開發(fā)方法,而軟件開發(fā)方法來軟件工程來解決軟件危機。
3、簡述十四五規(guī)劃數(shù)字中國的概念,就讀軟件工程專業(yè)的重要意義。
《規(guī)劃》明確堅持“創(chuàng)新引領、融合發(fā)展,應用牽引、數(shù)據賦能,公平競爭、安全有序,系統(tǒng)推進、協(xié)同高效”的原則。到2025年,數(shù)字中國建設取得決定性進展,信息化發(fā)展水平大幅躍升。數(shù)字經濟核心產業(yè)增加值占國內生產總值比重達到10%,數(shù)據要素市場體系初步建立,產業(yè)數(shù)字化轉型邁上新臺階,數(shù)字產業(yè)化水平顯著提升,數(shù)字化公共服務更加普惠均等,數(shù)字經濟治理體系更加完善。展望2035年,力爭形成統(tǒng)一公平、競爭有序、成熟完備的數(shù)字經濟現(xiàn)代市場體系,數(shù)字經濟發(fā)展水平位居世界前列。
在我們的生活中,我們隨處可見的都是信息化,在我國各行各業(yè)都離不開計算機軟件的支持,軟件為企業(yè)的管理帶來了極大的幫助,提高了企業(yè)的收益,減少了人力、物力、財力的消耗,軟件也為人們的生活增添了樂趣,在現(xiàn)代人們生活中,隨處可見的軟件的使用,科學技術的普及使得軟件工程融入到現(xiàn)代電子產品中,例如微信、QQ、手機中的各種APP,這些軟件的出現(xiàn)極大地豐富了人們的日常生活,我們可以通過微信或者手機QQ就可以實現(xiàn)面對面的視頻聊天,這樣就不會受到時間和地域的要求,我們隨時隨地就可以與朋友或親人面對面的交流。有了這樣的軟件,我們人與人之間的溝通就會越來越多,這樣的軟件也可以幫助我們建立良好的人脈關系,這樣就可以使我們的生活水平大大的提高了。隨著軟件工程的飛速發(fā)展,各種信息化時代的軟件數(shù)不勝數(shù),商家可以通過多媒體方式,如視頻展示的方式來展示商品信息,利用多種信息技術來對產品做以修飾,如視頻讓人切身感受、3D技術讓人進入虛擬世界,人機互動讓人感受多樣全面,各式各樣的現(xiàn)代化信息技術,很大程度上的提升了人們的生活樂趣,使人們切身的感受到信息化時代的巨大魅力。
第七次作業(yè)
1.一個負責起草系統(tǒng)需求規(guī)格說明書的工程師,應當如何記錄功能性需求和非功能性需求。
(1)需求分類:
在一般使用中,需求按照功能性(行為的)和非功能性(其它所有的行為)來分類。
功能性需求是說有具體的完成內容的需求。
例如:比如客戶登錄、郵箱網站的收發(fā)收發(fā)郵件、論壇網站的發(fā)帖留言等。
非功能性需求是指軟件產品為滿足用戶業(yè)務需求而必須具有且除功能需求以外的特性,包括系統(tǒng)的性能、可靠性、可維護性、可擴充性和對技術和對業(yè)務的適應性等。
例如:性能要求:要求系統(tǒng)能滿足100個人同時使用,頁面反應時間不能超過6秒;
可靠性: 系統(tǒng)能7×24小時連續(xù)運行,年非計劃宕機時間不能高于8小時。要求能快速的部署,特別是在系統(tǒng)出現(xiàn)故障時,能夠快速的切換到備用機。
(2)軟件需求說明書(SRS):是指在研究用戶要求的基礎上,完成可行性分析和投資效益分析以后,由軟件工程師或分析員編寫的說明書。它詳細定義了信息流和界面,功能需求,設計要求和限制,測試準則和質量保證要求。它的作用是作為用戶和軟件開發(fā)人員達成的技術協(xié)議書,作為著手進行設計工作的基礎和依據,系統(tǒng)開發(fā)完成以后,為產品的驗收提供了依據。
①方法:軟件需求說明書應該完整、一致、精確、無二義性,同時又要簡明、易懂、易修改。由于軟件需求說明書最終要得到開發(fā)者和用戶雙方的認可,所以用戶要能看得懂,并且還能發(fā)現(xiàn)和指出其中的錯誤,這對于保證軟件系統(tǒng)的質量有很大的作用。這就要求需求說明書盡可能少用或不用計算機領域的概念和術語。
②內容:
a.概述
·說明開發(fā)軟件系統(tǒng)的目的、意義和背景
·說明用戶的特點、約束
b.需求說明
·功能說明,逐項列出各功能需求的序號、名稱和簡要說明
·性能說明,說明處理速度、響應時間、精度等
·輸入輸出要求·數(shù)據管理要求·故障處理要求
c.數(shù)據描述
·數(shù)據流圖·數(shù)據字典·接口說明
d.運行環(huán)境規(guī)定
·說明軟件運行所需的硬件設備
·說明軟件運行所需的系統(tǒng)軟件和軟件工具
e.限制
·說明軟件開發(fā)在成本、進度、設計和實現(xiàn)方面的限制。
2.簡述需求評審的目的、主要內容、主要參加人員。
(1)目的:
①了解需求的動機、目標、方案、排期等,為開發(fā)設計、測試設計做準備;
②降低需求設計本身的不完整、不一致、不準確等出現(xiàn)的可能性
③通過評審盡可能降低團隊成員理解的不一致性
④提早考慮排期風險、實現(xiàn)風險
(2)主要內容:
需求評審通常是由產品經理主持,通過講解產品需求文檔,讓相關人員了解具體需求,并提出疑問,進行溝通的過程。統(tǒng)一大家對產品需求的理解,為后續(xù)“如何做”打好基礎。
評審會開場前的準備工作:1、確認需求、原型、文檔都完成了嗎?2、提前找核心人員小范圍溝通、消滅掉大問題3、與參會者確定可出席的時間4、至少提前兩天發(fā)出會議邀請、定好會議室5、邀請時附上需求文檔和原型交互設計稿6、提前到會議室、提前演練一遍評審會現(xiàn)場5、約下一次的評審
(3)主要參加人員:
產品經理,技術開發(fā)者,需求評審人員主要由開發(fā)人員組成,一般不包括用戶。
3.需求是軟件項目成功的核心所在。簡述在軟件需求工程中,需求管理的主要任務、活動、工作內容。
●明確需求并達成共識;
●建立關聯(lián);
●根據不同需求設計相應解決辦法;
●進行系統(tǒng)優(yōu)化;
●提出設計方案;
●監(jiān)控和解決可能出現(xiàn)的問題以及需要做出的改變;
●控制不同開發(fā)任務的開展;
●對最終產品做出評測;
●監(jiān)控可能出現(xiàn)的重復開發(fā);
●提出項目實施時間表;
●確定最終用戶界面。
4.結合國民經濟信息化或自己比較感興趣的領域,提出一個信息化或數(shù)字化解決方案(開放交流話題)。
數(shù)字化校園:
學生在任何時間都可以通過網絡學習;老師可以在任何時間、任何地點接受培訓;學校管理者可以自動分配教學任務;整個學校變成以學生為中心的學習環(huán)境;在固定空間之內,是一個個的學習中心、交互中心、分組教室、安靜的區(qū)域;突破空間界限,人們可以通過交互式或基于WEB的交流平臺,在任何時間、任何地點進入校園網,進行學習和交流,整個校園已經無線覆蓋,課桌椅等設施可以靈活布置。
由于融合網絡,應用源源不斷的完善,可以為每個學生開展個性化的教育,形成以學生為中心的教學系統(tǒng)。教室、宿舍、禮堂、圖書館都智能化、網絡化了,學生和教職員工可以在生活、工作的任何地方獲得教學資源。
①可視化、交互式教學
教師可以開展可視化教學,也可以通過交互、協(xié)作的資源引導學生互動式學習。學生能夠以自己喜歡的方式學習,有豐富的課件,可以對信息進行搜和分析,學生很容易聯(lián)系到老師甚至全球的專家。接受繼續(xù)教育的學生,可以得到很好的在線職業(yè)培訓。
②新型學習工具
通過多種新型的學習工具隨時隨地進行學習;通過網絡遠程學習;通過仿真、虛擬的學習環(huán)境,使學習者感同身受。
創(chuàng)建沒有圍墻的校園,將是一個終身的、沒有圍墻的校園,學生不會因為“畢業(yè)”而離開“學校”。學生和校友通過繼續(xù)教育和成人教育課程與學校保持聯(lián)系,隨著他們職業(yè)生涯的發(fā)展不斷獲取知識和技能,實現(xiàn)終身技能訓練。學生和教職員工可以通過桌面電腦獲得超級計算能力,開展協(xié)作的、跨學科研究。
第八次作業(yè)
1、介紹說明UML2.0視圖的主要內容。
(1)類圖(Class Diagram)。
類圖描述一組類、 接口、協(xié)作和它們之間的關系。在00系統(tǒng)的建模中,最常見的圖就是類圖。類圖給出了系統(tǒng)的靜態(tài)設計視圖,活動類的類圖給出了系統(tǒng)的靜態(tài)進程視圖。
(2)對象圖(Object Diagram)。
對象圖描述一組對象 及它們之間的關系。對象圖描述了在類圖中所建立的事物實例的靜態(tài)快照。和類圖一樣,這些圖給出系統(tǒng)的靜態(tài)設計視圖或靜態(tài)進程視圖,但它們是從真實案例或原型案例的角度建立的。
(3)構件圖(Component Diagram)。
構件圖描述一個封裝的類和它的接口、端口,以及由內嵌的構件和連接件構成的內部結構。構件圖用于表示系統(tǒng)的靜態(tài)設計實現(xiàn)視圖。對于由小的部件構建大的系統(tǒng)來說,構件圖是很重要的。構件圖是類圖的變體。
(4)組合結構圖(Composite Structure Diagram)。
組合結構圖描述結構化類(如構件或類)的內部結構,包括結構化類與系統(tǒng)其余部分的交互點。組合結構圖用于畫出結構化類的內部內容。
(5)用例圖(Use Case Diagram)。
用例圖描述組用例、參與者及它們之間的關系。用例圖給出系統(tǒng)的靜態(tài)用例視圖。這些圖在對系統(tǒng)的行為進行組織和建模時是非常重要的。
(6)順序圖( Sequence Diagram,序列圖)。
順序圖是一種交互圖( Interaction Diagram),交互圖展現(xiàn)了一種交互,由一組對象或參與者以及它們之間可能發(fā)送的消息構成。交互圖專注于系統(tǒng)的動態(tài)視圖。順序圖是強調消息的時間次序的交互圖。
(7)通信圖(Communication Diagram)。
通信圖也是一種交互圖,強調收發(fā)消息的對象或參與者的結構組織。該圖反映了對象之間的消息交互,與順序圖相似,但與順序圖不同的是,協(xié)作圖不但描述了對象之間的交互還描述了交互的對象之間的鏈接關系,即通信圖同時反映了系統(tǒng)的動態(tài)和靜態(tài)特征。在UML 1.X版本中,通信圖稱為協(xié)作圖(Collaboration Diagram)。
(8)定時圖(Timing; Dagamn, 計時圖)。
定時圖也是一種交互圖,強調消息跨越不同對象或參與者的實際時間,而不僅僅只是關心消息的相對順序。
(9)狀態(tài)圖(State Diagram)。
狀態(tài)圖描述一個狀態(tài)機,由狀態(tài)、轉移、事件和活動組成。狀態(tài)圖給出了對象的動態(tài)視圖。它對于對于校口、類或協(xié)作的行為建模尤為重要,而且它強調事件導致的對象行為,有助于對反應式系統(tǒng)建模。
(10)活動圖(Activity Diagram)。
活動圖將進程或其他計算結構展示為計算機內部一步步的控制流和數(shù)據流。活動圖專注于系統(tǒng)的動態(tài)視圖。它對系統(tǒng)的功能建模和業(yè)務流程建模特別重要,并強調對象間的控制流程。
(11)部署圖(Deployment Diagram)。
部署圖描述對運行時的的處理結點及在其中生存的構件的配望。部署圖給出架構的靜態(tài)部署視圖,通常個結點包含一個或多個部 署圖。
(12)制品圖(Arifiet Digm)。
制品圖描述計算機中一個系統(tǒng)的物理結構。制品包括文件、數(shù)據庫和類似的物理比特集合。制品圖通常與部署圖一起使用。 制品也給出了它們實現(xiàn)的類和構件。
(13)包圖(Package Diagam)。
包圖描述由模型本身分解而成的組織單元,以及它們之間的依賴關系。
(14)交互概覽圖(Interaction Overview Diagram)。
交互概覽圖是活動圖和順序圖的混合物。
結構性視圖包括:對象圖、包圖、組合結構圖、構件圖、、部署圖和制品圖
行為性視圖包括:例圖、順序圖、通信圖、定時圖、狀態(tài)圖、活動圖、交互圖概覽圖
交互圖:順序圖、通信圖、定時圖和交互概覽圖
2、“4+1”視圖模型是軟件開發(fā)者從五個不同視角描述軟件的體系結構的一組視圖模型,簡述它的五個組成部分和相應UML視圖模型。
Kruchten 提出了一個"4+1"視圖模型,從 5 個不同的視角包括包括邏輯試圖、進程視圖、物理 視圖、開發(fā)視圖、場景視圖來描述軟件體系結構。每一個視圖只關心系統(tǒng)的一個側面,5 個視圖結合在一起才能反映系統(tǒng)的軟件體系結構的全部內容。
①邏輯視圖(Logic View )
邏輯試圖主要是用來 描述系統(tǒng)的功能需求,即系統(tǒng)提供給最終用戶的服務. 在邏輯視圖中, 系統(tǒng)分解成一系列的功能抽象、功能分解與功能分析,這些主要來自問題領域(Problem Definition)。 在面向對象技術中,通過抽象、封裝、繼承,可以用對象模型來代表邏輯視圖,可以用類圖(Class Diagram)來描述邏輯視圖。
②開發(fā)視圖(Development/Module View)
開發(fā)視圖主要用來描述軟件模塊的組織與管理(通過程序庫或子系統(tǒng))。服務于軟件 編程人員,方便后續(xù)的設計與實現(xiàn)。它通過系統(tǒng)輸入輸出關系的模型圖和子系統(tǒng)圖來描述。要考慮軟件的內部需求:開發(fā)的難易程度、重用的可能性,通用性,局限性等等。開發(fā)視圖的風格通常是 層次結構,層次越低,通用性越好(底層庫:Java SDK,圖像處理軟件包)。
③進程視圖
進程試圖側重系統(tǒng)的運行特性,關注非功能性的需求(性能,可用性。服務于系統(tǒng)集成人員,方便后續(xù)性能測試。強調并發(fā)性、分布性、集成性、魯棒性(容錯)、可擴充性、吞吐量等。定義邏輯視圖中的各個類的具體操作是在哪一個線程(Thread)中被執(zhí)行。
④物理視圖
物理試圖主要描述硬件配置。服務于 系統(tǒng)工程人員,解決系統(tǒng)的拓撲結構、系統(tǒng)安裝、通信等問題。主要考慮如何把軟件映射到硬件上,也要考慮系統(tǒng)性能、規(guī)模、可靠性等。可以與進程視圖一起映射。
⑤場景(Scenarios)
場景用于刻畫構件之間的相互關系,將四個視圖有機地聯(lián)系起來。可以描述一個特定的視圖內的構件關系,也可以描述不同視圖間的構件關系。文本、圖形表示皆可。
3、簡述用例圖、類圖的概念、用途,舉例說明使用方法,及需要注意事項。
(1)用例圖(Use Case Diagram)是用戶與系統(tǒng)交互的最簡表示形式,展現(xiàn)了用戶和與他相關的用例之間的關系。通過用例圖,人們可以獲知系統(tǒng)不同種類的用戶和用例。用例圖也經常和其他圖表配合使用。
(2)類圖(Class Diagram)顯示了系統(tǒng)的靜態(tài)結構,而系統(tǒng)的靜態(tài)結構構成了系統(tǒng)的概念基礎。類圖從抽象角度描述系統(tǒng)的靜態(tài)結構,特別時模型中存在的類、類的內部結構以及它們與其它類之間的相互關系。類圖就是用于對系統(tǒng)中的各種概念進行建模,并描繪出它們之間關系的圖。
(3)注意事項:
①軟件分析與設計是編碼前的兩個階段,其中分析僅與業(yè)務有關,而與技術無關。設計以分析為基礎,主要與具體技術有關。
②分析階段由分析師繪制領域UML類圖,設計階段由設計師繪制實現(xiàn)UML類圖。
③領域UML類圖表示系統(tǒng)的靜態(tài)領域結構,其中的類不與最終程序中的類對應;設計UML類圖表示系統(tǒng)的技術架構,是程序員的編碼依據,其中的類與系統(tǒng)中的類對應。
④領域UML類圖中類的屬性與操作僅關注與業(yè)務相關的部分,實現(xiàn)UML類圖中的屬性與操作要包括最終需要實現(xiàn)的全部方法與操作。
4、活動圖、狀態(tài)圖、順序圖、通信圖是較為常用的行為圖,舉例說明用法和特點。
①機房收費系統(tǒng)活動圖
1、強調每個角色做了什么事情,這些事情的先后順序。
2、適合表達各種特殊流程。
②圖書館借書系統(tǒng)狀態(tài)圖
1、事情圍繞某東西開展。
2、該東西有不同的狀態(tài),狀態(tài)會因為發(fā)生了一些事情而變化。
③ATM取款順序圖
1、強調角色之間的交互,信息傳遞很明確。
2、強調按時間順序分別發(fā)生了什么事情。
3、不太適合表達復雜的特殊流程。
④ATM取款通信圖
1、通信圖的消息必須有編號。
2、通信圖連接的線條是關聯(lián)關系。
3、通信圖消息流程不是至上而下的。
第九次作業(yè)
1、簡述體系結構的5個核心模型元素組成及其內容。
體系結構的核心模型由5中元素組成:構件(artifacts)、連接件(Connecting piece)、配置(configuration)、端口(port)、角色(role)。其中構件、連接件、配置是最基本的元素。
(1)構件:具有某種功能的可重用的軟件模板單元,表示系統(tǒng)中主要的計算元素和數(shù)據存儲。
(2)連接件:表示構件之間的交互,如:管道、過程調用、事件廣播、客戶-服務器通信協(xié)議、數(shù)據庫和應用之間的SQL連接等。
(3)配置:表示構件和連接件的拓撲邏輯和約束。
(4)端口:構件的接口由一組端口組成,每個端口表示構件和外部環(huán)境的交互點。
(5)角色:連接件的接口由一組角色組成,每一個角色定義了該連接件表示的交互的參與者。
2、簡述(DSSA)領域分析與設計過程。
領域分析是對特定的領域進行需求工程的活動。它覆蓋了對領域需求的獲取、分析、規(guī)約和檢驗的整個過程。領域分析通過捕獲領域內系統(tǒng)擁有的共性和特性,提升領域內軟件開發(fā)、升級和維護的效率,支持系統(tǒng)級和大規(guī)模的軟件重用。
(1)領域分析過程中的步驟為:
①定義待研究的領域
②對從領域中提取的項進行分類
③收集領域中有代表性的應用系統(tǒng)樣本
④分析樣本中的每個應用,并且定義分析類
⑤為這些類開發(fā)需求模型
(2)領域設計階段的目標是獲得DSSA。DSSA描述在領域模型中表示的需求的解決方案,它不是單個系統(tǒng)的表示,而是能夠適應領域中多個系統(tǒng)的需求的一個高層次的設計。建立了領域模型之后,就可以派生出滿足這些被建模的領域需求的DSSA,由于領域模型中的領域需求具有一定的變化性,DSSA也要相應地具有變化性。它可以通過表示多選一的、可選的解決方案等來做到這一點。模型和DSSA來組織的,因此在這個階段通過獲得DSSA,也就同時形成了重用基礎設施的規(guī)約。
3、當描述一個系統(tǒng)時,必須要在得到完整的需求規(guī)格說明之前就開始系統(tǒng)體系結構的設計,簡述軟件體系結構設計的重要性。
軟件體系結構的重要性在于它決定了一個系統(tǒng)的主體結構、宏觀特性和具有的基本功能以及特性。軟件體系結構是整個軟件設計成功的基礎和關鍵所在,其作用可以延伸到軟件設計開發(fā)的各個階段。
①在項目規(guī)劃階段:概略的體系結構是進行項目可行性分析、工程復雜性分析、工程進展、投資規(guī)模分析和風險預測等活動的重要依據。
②在需求分析階段:通過對概要體系結構進行更加深入和細致分析從而建立更深入的體系結構描述及需求體系結構。
③在設計階段:需要從實現(xiàn)的角度,從多個維度對軟件系統(tǒng)結構再次進行深入的分解和描述,并產生設計型軟件體系結構。
④在實施階段:可以根據體系結構的層次和構件粒度大小建立項目、開發(fā)人員的組織、分工和進度表,協(xié)調開發(fā)人員關系。
⑤在項目評審階段:體系結構是性能測試和評價的依據。
⑥在項目維護階段,對軟件任何擴展和修改都需要在體系結構的指導下進行,以維持整個設計的合理性和正確性,并為維護升級的正確性和開銷分析提供依據。
4、簡述單體式架構、SOA、微服務、無服務架構的概念及其應用特點。
(1)單體架構:功能集中、代碼和數(shù)據中心化、一個發(fā)布包、部署后運行在同一進程的應用程序,稱之為單體架構應用,也叫單塊架構應用。
優(yōu)點:開發(fā)、調試、部署、橫向擴展比較簡單。
缺點:
①維護困難,開發(fā)人員很難整體理解整個系統(tǒng)
②容錯性差,因為整個系統(tǒng)是一個進程,如果系統(tǒng)報錯,整個系統(tǒng)容易宕機
③資源不能進行合理利用,一個系統(tǒng)中不同的功能被被調用的頻率不同,如果是單體應用的話,需要將整個應用水平擴展,造成了資源的浪費。
④不利于技術的擴展,傳統(tǒng)的單體架構如果要更新某個技術,就需要重新開發(fā)整個系統(tǒng)
⑤難以擴展,不能按需擴展,而要擴展整個系統(tǒng)。代碼庫比較復雜,進行修改維護容易影響到別的功能
(2)SOA架構:是一種在計算機環(huán)境中設計、開發(fā)、部署和管理離散模型的方法。SOA不是一種新鮮事物,它是在企業(yè)內部IT系統(tǒng)重復構建以及效率低下的背景下提出的。
優(yōu)點:
①能夠提高開發(fā)效率,可以將整個系統(tǒng)分為幾個不同的子系統(tǒng),不同團隊負責不同的系統(tǒng),從而提高開發(fā)效率。
②解耦,降低了系統(tǒng)之間的耦合
③易于擴展,業(yè)務邏輯改變時只需要修改單個服務,減少了對使用者的影響
缺點:抽取的粒度比較大。耦合度較高
(3)微服務架構:是通過將系統(tǒng)根據功能劃分為細粒度的服務,每一個服務都是一個獨立的應用,根據這種思想創(chuàng)建的軟件服務實體就是微服務。
優(yōu)點:
①解耦,根據功能將系統(tǒng)分為不同的獨立運行的服務,將原來的復雜的系統(tǒng)簡單化,每個服務交付給不同的團隊去負責,提高了開發(fā)效率。開發(fā)人員可以只關注自己的業(yè)務功能
②容錯性高,將錯誤隔離在單個服務內。
③技術選型靈活,不同的服務可以根據自己的需求選擇不同的技術。
④易于擴展,可以按需擴展服務,避免資源的浪費
⑤獨立部署,每個服務獨立部署,當其中一個服務有需求變更時,可以只編譯部署單個應用,減少了對用戶的影響
缺點:
①開發(fā)人員需要面對分布式系統(tǒng)的復雜性。測試更加困難,需要保證服務之間的通信;需要團隊之間的協(xié)調;當用例涉及到多個服務的時候,需要實現(xiàn)分布式事務管理。
②部署比較復雜
③增加內存開銷,微服務系統(tǒng)用多個服務實例取代了傳統(tǒng)垂直架構的單個服務實例。有多少服務實例,就會有多少在內存運行的開銷。
(4)無服務架構:是服務端邏輯運行在無狀態(tài)的容器中,由事件觸發(fā),被第三方管理,業(yè)務層面的狀態(tài)則被開發(fā)者使用的數(shù)據庫和存儲資源所記錄。Serverless 是云原生技術發(fā)展的高級階段,使開發(fā)者更聚焦在業(yè)務邏輯,而減少對基礎架構的關注。
特點:
①低運營成本:在傳統(tǒng)應用系統(tǒng)的部署實施中,必須按業(yè)務峰值需求來構建業(yè)務系統(tǒng),但在大部分時間里該業(yè)務系統(tǒng)是空閑的,這就導致了嚴重的資源浪費和成本上升。在 Serverless 架構下,不同用戶能夠通過共享網絡、硬盤、CPU 資源,峰谷時按需自動縮容,按調用次數(shù)收費,不調用不收費,有效節(jié)約企業(yè)成本支出。
②簡化設備運維:在 Serverless 架構中,開發(fā)人員面對的將是自定義或者第三方開發(fā)的 API 和 URL,云廠商部署好底層基礎設施與運維設施,讓開發(fā)人員專注于核心代碼和應用的開發(fā)。
③提升可維護性:目前,一些公有云服務中提供了大量的服務,如登錄、鑒權服務,云數(shù)據庫服務等第三方服務,它們在安全性、可用性、性能方面都進行了大量優(yōu)化,在 Serverless 架構下,第三方公司集成了各類服務,運維服務的有效性得到很大的提升,降低成本。
④開發(fā)速度更快:由于開發(fā)人員僅需專注于業(yè)務邏輯功能的開發(fā),無需關心應用系統(tǒng)部署、調度、流量分發(fā)、彈性伸縮等功能的研發(fā),軟件架構和軟件功能實現(xiàn)都大大簡化,不僅節(jié)省開發(fā)時間,更可提升開發(fā)效率,降低開發(fā)難度。
第十次作業(yè)
1、簡述軟件過程框架、軟件工程過程普適性活動的主要內容。
(1)軟件過程框架定義了若干個框架活動,為實現(xiàn)完整的軟件工程過程建立了基礎。這些活動可廣泛應用于所有軟件開發(fā)項目,無論項目的規(guī)模和復雜性如何。此外,過程框架還包含一些適用于整個軟件過程的普適性活動。一個通用的軟件工程過程框架通常包含以下5個活動。
①溝通。在技術工作開始之前,和客戶的溝通與協(xié)作是極其重要的,其目的是理解利益相關者的項目目標,并收集需求以定義軟件特性和功能。
②策劃。如果有地圖,任何復雜的旅程都可以變得簡單。軟件項目好比是一個復雜的旅程,策劃活動就是創(chuàng)建一個“地圖”,以指導團隊的項目旅程,這個地圖稱為軟件項目計劃,它定義和描述了軟件工程工作,包括需要執(zhí)行的技術任務、可能的風險、資源需求、工作產品和工作進度計劃。
③建模。無論你是庭園設計師、橋梁建造者、航空工程師、木匠還是建筑師,你每天的工作都離不開模型。你會畫一張草圖來輔助理解整個項目大的構想——體系結構、不同的構件如何結合,以及其他一些特性。如果需要,可以把草圖不斷細化,以便更好地理解問題并找到解決方案。軟件工程師也是如此,需要利用模型來更好地理解軟件需求,并完成符合這些需求的軟件設計。
④構建。必須要對所做的設計進行構建,包括編碼和測試,后者用于發(fā)現(xiàn)編碼中的錯誤。
⑤部署。軟件交付給用戶,用戶對其進行評測并給出反饋意見。
(2)軟件工程過程框架活動由很多普適性活動來補充實現(xiàn)。通常,這些普適性活動貫穿軟件項目始終,以幫助軟件團隊管理和控制項目進度、質量、變更和風險。典型的普適性活動包括如下活動。
?
①軟件項目跟蹤和控制——項目組根據計劃來評估項目進度,并且采取必要的措施保證項目按進度計劃進行。
②風險管理——對可能影響項目成果或者產品質量的風險進行評估。
?
?
③軟件質量保證——確定和執(zhí)行保證軟件質量的活動。
④技術評審——評估軟件工程產品,盡量在錯誤傳播到下一個活動之前發(fā)現(xiàn)并清除錯誤。
⑤測量——定義和收集過程、項目以及產品的度量,以幫助團隊在發(fā)布軟件時滿足利益相關者的要求。同時,測量還可與其他框架活動和普適性活動配合使用。
⑥軟件配置管理——在整個軟件過程中管理變更所帶來的影響。
⑦可復用管理——定義工作產品復用的標準(包括軟件構件),并且建立構件復用機制。
⑧工作產品的準備和生產——包括生成產品(如建模、文檔、日志、表格和列表等)所必需的活動。
?
2、簡述軟件工程實踐原則。
·存在價值
軟件系統(tǒng)因能給客戶提供價值而有存在的價值,所有的決定都要基于這個思想。
·保持簡潔
所有的設計都應該盡可能簡潔,但不是簡化。
·維護視圖
清晰的視圖是軟件項目成功的基礎。
·生產者要讓消費者理解
軟件系統(tǒng)必定由開發(fā)者以外的人員使用、維護和編制文檔,這就必須要讓別人理解你的系統(tǒng)。因此,已完成了說明、設計、實現(xiàn),別人必須要弄懂你在做什么。
·面向未來
生命期持久的系統(tǒng)擁有更多的價值。真正具有工業(yè)實力的軟件系統(tǒng)必須持久耐用。永遠不要把自己的設計局限于一隅。構建系統(tǒng)過程中準備所有可能方案以解決普遍問題,而不是僅著眼于某個特定問題的一個方案,這會為將來整個系統(tǒng)的利用提供可能。
·計劃復用
高水平的復用系統(tǒng)是開發(fā)軟件系統(tǒng)過程中很難實現(xiàn)的一個目標,代碼和設計復用是面向對象技術帶來的重要好處。在復用前先策劃可以降低成本,并增加可復用構件以及構件化系統(tǒng)的價值。
·認真思考
在行動之前清晰、完整的思考通常能產生更好的結果。
3:簡述瀑布模型、增量模型、原型模型過程管理的特點及需要注意的事項。
瀑布模型:
(1) 階段間具有順序性和依賴性
①必須等前一階段的工作完成之后,才能開始后一階段的工作;②前一階段的輸出文檔就是后一階段的輸入文檔。
(2) 推遲實現(xiàn)的觀點
實踐表明,對于規(guī)模較大的軟件項目來說,往往編碼開始得越早最終完成開發(fā)工作所需要的時間反而越長。
(3) 質量保證的觀點
①每個階段都必須完成規(guī)定的文檔,沒有交出合格的文檔就是沒有完成該階段的任務。②每個階段結束前都要對所完成的文檔進行評審,以便盡早發(fā)現(xiàn)問題,改正錯誤。
優(yōu)點: (1) 可強迫開發(fā)人員采用規(guī)范的方法 (2) 嚴格地規(guī)定了每個階段必須提交的文檔 (3) 要求每個階段交出的所有產品都必須經過質量保證小組的仔細驗證
缺點: (1) “瀑布模型是由文檔驅動的”,在可運行的軟件產品交付給用戶之前,用戶只能通過文檔來了解產品是什么樣的。很可能導致最終開發(fā)出的軟件產品不能真正滿足用戶的需求
增量模型:
與瀑布模型和快速原型模型的不同: 采用瀑布模型或快速原型模型開發(fā)軟件時,目標都是一次就把一個滿足用戶需求的產品提交給用戶。增量模型則與之相反,它分批地逐步向用戶提交產品,每次提交一個滿足用戶需求子集的可運行的產品。
優(yōu)點: (1) 能在較短時間內向用戶提交可完成一些有用的工作的產品 (2) 逐步增加產品功能可以使用戶有較充裕的時間學習和適應新產品,從而減少一個全新的軟件可能給客戶組織帶來的沖擊。
缺點: 增量模型本身是自相矛盾的。它一方面要求開發(fā)人員把軟件看做一個整體,另一方面又要求開發(fā)人員把軟件看做構件序列,每個構件本質上都獨立于另一個構件。除非開發(fā)人員有足夠的技術能力協(xié)調好這一明顯的矛盾,否則用增量模型開發(fā)出的產品可能并不令人滿意
原型模型:
原型模型是先借用已有系統(tǒng)作為原型模型,通過“樣品”不斷改進,使得最后的產品就是用戶所需要的。主要是通過向用戶提供原型獲取用戶的反饋,使開發(fā)出的軟件能夠真正反映用戶的需求。同時,原型模型采用逐步求精的方法完善原型,使得原型能夠“快速”開發(fā),避免了像瀑布模型一樣在冗長的開發(fā)過程中難以對用戶的反饋作出快速的響應。相對瀑布模型而言,原型模型更符合人們開發(fā)軟件的習慣,是目前較流行的一種實用軟件生存期模型
優(yōu)點:
1)開發(fā)人員和用戶在“原型”上達成一致。這樣一來,可以減少設計中的錯誤和開發(fā)中的風險,也減少了對用戶培訓的時間,而提高了系統(tǒng)的實用、正確性以及用戶的滿意程度。 2)縮短了開發(fā)周期,加快了工程進度。 3)降低成本。
缺點:
1)當告訴用戶,還必須重新生產該產品時,用戶是很難接受的。這往往給工程繼續(xù)開展帶來不利因素。 2)開發(fā)者為了使一個原型快速運行起來,往往在實現(xiàn)過程中采用這種手段。 3) 不宜利用原型系統(tǒng)作為最終產品。采用原型模型開發(fā)系統(tǒng),用戶和開發(fā)者必須達成一致:原型被建造僅僅是用戶用來定義需求,之后便部分或全部拋棄,最終的軟件是要充分考慮了質量和可維護性等方面之后才被開發(fā)。
4:基于構件的開發(fā)模型、形式化方法模型過程管理的特點和注意事項。
(1)基于構件的開發(fā)模型
(Component-Based Software Development, CBSD,有時也稱為基于構件的軟件工程 CBSE)是一種基于分布對象技術、強調通過可復用構件設計與構造軟件系統(tǒng)的軟件復用途徑。基于構件的軟件系統(tǒng)中的構件可以是 COTS(Commercial-Off-the-Shelf)構件,也可以是通過其它途徑獲得的構件(如自行開發(fā))。CBSD體現(xiàn)了“購買而不是重新構造”的哲學,將軟件開發(fā)的重點從程序編寫轉移到了基于已有構件的組裝,以更快地 構造系統(tǒng),減輕用來支持和升級大型系統(tǒng)所需要的維護負擔 ,從而降低軟件開發(fā)的費用。
開發(fā)基于構件的軟件系統(tǒng)受到以下幾方面因素的影響:1)COTS構件質量的提高和種類的增加;2)要求降低系統(tǒng)開發(fā)和維護成本的經濟壓力;3)構件集成技術的出現(xiàn);4)軟件開發(fā)組織內可以用于新系統(tǒng)開發(fā)的已有軟件制品的數(shù)量增加。
(2)形式化方法模型:
形式化方法是建立在嚴格數(shù)學基礎上的一種軟件開發(fā)方法,其主要活動是生成計算機軟件形式化的數(shù)學規(guī)格說明。
形式化方法用嚴格的數(shù)學語言和語義描述功能規(guī)約和設計規(guī)約,通過數(shù)學的分析和推導,易于發(fā)現(xiàn)需求的歧義性、不完整性和不一致性,易于對分析模型、設計模型和程序進行驗證。通過數(shù)學的演算,使得從形式化功能規(guī)約到形式化設計規(guī)約,以及從形式化設計規(guī)約到程序代碼的轉換成為可能。這種方法的一個變形是凈室軟件工程。
第十一次作業(yè)
1.簡述信息安全的基本屬性內容及其相關應用技術。
(1)信息安全的基本屬性主要表現(xiàn)在以下5個方面:
①保密性(Confidentiality)
即保證信息為授權者享用而不泄漏給未經授權者。
②完整性(Integrity)
即保證信息從真實的發(fā)信者傳送到真實的收信者手中,傳送過程中沒有被非法用戶添加、刪除、替換等。
③可用性(Availability)
即保證信息和信息系統(tǒng)隨時為授權者提供服務,保證合法用戶對信息和資源的使用不會被不合理的拒絕。
④可控性(Controllability)
即出于國家和機構的利益和社會管理的需要,保證管理者能夠對信息實施必要的控制管理,以對抗社會犯罪和外敵侵犯。
⑤不可否認性(Non-Repudiation)
即人們要為自己的信息行為負責,提供保證社會依法管理需要的公證、仲裁信息證據。
(2)信息安全相關技術應用
①病毒檢測與清除技術主要包括病毒的查找及清理。
②安全防護技術包含網絡防護技術(防火墻、入侵檢測防御等);應用防護技術(如應用程序接口安全技術等);系統(tǒng)防護技術(如防篡改、系統(tǒng)備份與恢復技術等),防止外部網絡用戶以非法手段進入內部網絡,訪問內部資源,保護內部網絡操作環(huán)境的相關技術。
③安全審計技術包含日志審計和行為審計,通過日志審計協(xié)助管理員在受到攻擊后察看網絡日志,從而評估網絡配置的合理性、安全策略的有效性,追溯分析安全攻擊軌跡,并能為實時防御提供手段。通過對員工或用戶的網絡行為審計,確認行為的合規(guī)性,確保信息及網絡使用的合規(guī)性。
④安全檢測與監(jiān)控技術對信息系統(tǒng)中的流量以及應用內容進行二至七層的檢測并適度監(jiān)管和控制,避免網絡流量的濫用、垃圾信息和有害信息的傳播。
⑤解密、加密技術在信息系統(tǒng)的傳輸過程或存儲過程中進行信息數(shù)據的加密和解密。
⑥身份認證技術用來確定訪問或介入信息系統(tǒng)用戶或者設備身份的合法性的技術,典型的手段有用戶名口令、身份識別、PKI 證書和生物認證等。
2.簡述信息系統(tǒng)安全設計要考慮的幾個層面,每個層面可能存在的安全威脅及其應對措施。
①物理層(防火、防盜、防雷、防水、空調、供電)
②網絡層(防火墻、入侵檢查設備、VPN)
③系統(tǒng)層(操作系統(tǒng)、數(shù)據庫系統(tǒng)、應用開發(fā)平臺、中間件)
④應用層(認證系統(tǒng)、文件系統(tǒng)、應用系統(tǒng)、事務系統(tǒng)、管理系統(tǒng))
⑤軟件架構安全(體系結構、及其五要素)
⑥管理層(組織架構、三員{系統(tǒng)管理員、安全員、審計員}、開發(fā)團隊、維護團隊、應用培訓、風險評估、應急預案)
⑦崗位職責與管理制度
⑧工作日志
3.簡述可信計算基 (Trusted Computing Base) 的基本概念和內容。
(1)基本概念:是指為實現(xiàn)計算機系統(tǒng)安全保護的所有安全保護機制的集合,機制可以硬件、固件和軟件的形式出現(xiàn)。一旦可信計算機基的某個構件出現(xiàn)程序錯誤或者安全隱患,就對整個系統(tǒng)的安全造成危害。 與之相反,如果除可信計算基之外的系統(tǒng)的其他部分出現(xiàn)問題,也只是泄漏了系統(tǒng)安全策略賦予它們的相關權限而已,這些權限一般都是比較低的。
(2)內容:通常,TCB由一個操作系統(tǒng)及其所有內置的安全控制、單獨的系統(tǒng)硬件、網絡硬件和軟件、已檢測的安全過程和協(xié)議,以及系統(tǒng)本身的實際物理位置組成。
4.簡述計算機系統(tǒng)安全保護能力的五個等級的主要內容。
(1)用戶自主保護級。普通內聯(lián)網用戶。
(2)系統(tǒng)審計保護級。適用于內聯(lián)網或國際網進行商務活動,需要保密的非重要單位。
(3)安全標記保護級。適用于地方各級國家機關、金融單位機構、郵電通信、能源與水源供給部門、交通、大型工商與信息技術企業(yè)、重點工程建設等單位。
(4)結構化保護級。適用于中央級國家機關、廣播電視部門、重點物資存儲單位、社會應急服務部門、尖端科技企業(yè)集團、國家重點科研單位機構和國防建設等部門。
(5)訪問驗證保護級。適用于國家關鍵部門和依法需要對計算機信息系統(tǒng)實施特殊隔離的單位。
第十二次作業(yè)
1、軟件復用的優(yōu)點,舉例描述支持軟件復用的方法和內容
(1)優(yōu)點:
①開發(fā)加速:將一個系統(tǒng)盡早推向市場經常比總體開發(fā)成本更重要。復用軟件可以加速系統(tǒng)生產,因為開發(fā)和確認所需的時間都可以減少
②降低開發(fā)成本:開發(fā)成本與所開發(fā)的軟件的規(guī)模成正比。復用軟件意味著需要編寫的代碼行更少
③質量更有保障符合標準:有些標準,例如用戶界面標準,可以被實現(xiàn)為一組可復用構件。例如,如果一個用戶界面中的菜單使用可復用構件實現(xiàn),那么所有應用都會向用戶呈現(xiàn)出同樣的菜單格式。使用標準的用戶界面可以提高可依賴性,因為用戶在面對一個熟悉的界面時會更少犯錯誤
④有效的專家利用:應用專家不再需要一次又一次做同樣的工作,而是開發(fā)封裝了他們的知識的可復用軟件
⑤提高可依賴性;被復用的軟件在工作的系統(tǒng)中進行了嘗試和測試,因此應該比新軟件具有更好的可依賴性。它的設計和實現(xiàn)故障應該已經被發(fā)現(xiàn)和修復了
⑥降低過程風險:已有軟件的成本是已知的,而開發(fā)成本總是需要判斷,這是一個很重要的項降低過程風險目管理因素,因為復用軟件降低了項目成本估算中的邊際誤差,特別是當復用大規(guī)模軟件構件(例如子系統(tǒng))時尤其如此
(2)方法和內容
算法的復用,數(shù)據結構的復用,代碼的復用
設計模式的復用:這種復用有三種途徑,第一種途徑是從現(xiàn)有系統(tǒng)的設計結果中提取一些可復用的設計構件,并把這些構件應用于新系統(tǒng)的設計;第二種途徑是把一個現(xiàn)有系統(tǒng)的全部設計文檔在新的軟硬件平臺上重新實現(xiàn),也就是把一個設計運用于多個具體的實現(xiàn);第三種途徑是獨立于任何具體的應用,有計劃地開發(fā)一些可復用的設計構件
分析的復用:途徑也有三種,即從現(xiàn)有系統(tǒng)的分析結果中提取可復用構件用于新系統(tǒng)的分析;用一份完整的分析文檔作輸入產生針對不同軟硬件平臺和其它實現(xiàn)條件的多項設計;獨立于具體應用,專門開發(fā)一些可復用的分析構件。
2、軟件復用規(guī)劃時要考慮到的因素。
①軟件的開發(fā)進度。如果軟件必須要快速開發(fā),應當盡量復用完整的系統(tǒng)而不是單個構件。雖然可復用的完整系統(tǒng)對于需求的符合度可能并不完美,但是這種方法可以讓所需要的開發(fā)量最小化。
②所期望的軟件生命周期。如果開發(fā)一個長生命周期的系統(tǒng),應當關注系統(tǒng)的可維護性。不應當只考慮復用的短期收益,而是要考慮長期的影響。在整個生命周期中,你將不得不為了實現(xiàn)新需求而對系統(tǒng)進行適應性調整,這意味著要對系統(tǒng)各個部分進行修改。如果你無法訪問可復用構件的源代碼,你可能會傾向于避免使用來自外部供應商的成品構件以及系統(tǒng),因為這些供應商可能無法為所復用的軟件提供持續(xù)的支持。你可能會決定復用開源系統(tǒng)和構件更安全一些,因為這意味著你可以訪問源代碼并持有代碼拷貝。
③開發(fā)團隊的背景、技能和經驗。所有的復用技術都相當復雜,需要相當多的時間來有效地理解和使用它們。因此,應當將復用的注意力放在開發(fā)團隊具有經驗和專業(yè)能力的領域。
④軟件的關鍵性及其非功能性需求。對于一個必須要由外部監(jiān)管者進行認證的關鍵性系統(tǒng)而言,可能不得不為該系統(tǒng)創(chuàng)建一個安全或信息安全用況。如果你無法訪問軟件的源代碼,那么這個可能很難做到。如果你的軟件有著嚴格的性能需求,那么使用模型驅動的工程,這樣的策略可能就不太現(xiàn)實了。模型驅動的工程依賴于從系統(tǒng)的一個可復用的特定領域模型生成代碼。
⑤應用領域。在許多應用領域(例如制造和醫(yī)療信息系統(tǒng))中,存在一些通用產品,它們可以通過面向本地環(huán)境的配置進行復用。這是最有效的復用方法之一,購買一個系統(tǒng)總是要比重新構建一個新系統(tǒng)要便宜(針對特定領域開發(fā)通用產品)
⑥系統(tǒng)在其上運行的平臺。一些構件模型特定于某個平臺,例如 .NET特定于微軟平臺。與之相似,通用的應用系統(tǒng)也可能是平臺相關的,只能在同樣的平臺上對它們進行復用。(可復用軟件,盡量考慮可移植性)
總結
以上是生活随笔為你收集整理的【高级软件工程课后作业】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [ICCV 2019] Few-Shot
- 下一篇: 【人工智能】机器学习:岭回归与LASSO