軟考系統(tǒng)架構(gòu)師倒計時第2天
-
分片透明性:是指用戶不必關(guān)心數(shù)據(jù)是如何分片的舔株,它們對數(shù)據(jù)的操作在全局關(guān)系上進(jìn)行友驮,即如何分片對用戶是透明的辱魁,因此潭苞,當(dāng)分片改變時應(yīng)用程序可以不變贮缅。分片透明性是最高層次的透明性淘正,如果用戶能在全局關(guān)系一級操作宙彪,則數(shù)據(jù)如何分布蜻势,如何存儲等細(xì)節(jié)自不必關(guān)心,其應(yīng)用程序的編寫與集中式數(shù)據(jù)庫相同屋彪。
復(fù)制透明:用戶不用關(guān)心數(shù)據(jù)庫在網(wǎng)絡(luò)中各個節(jié)點的復(fù)制情況播掷,被復(fù)制的數(shù)據(jù)的更新都由系統(tǒng)自動完成。在分布式數(shù)據(jù)庫系統(tǒng)中撼班,可以把一個場地的數(shù)據(jù)復(fù)制到其他場地存放,應(yīng)用程序可以使用復(fù)制到本地的數(shù)據(jù)在本地完成分布式操作垒酬,避免通過網(wǎng)絡(luò)傳輸數(shù)據(jù)砰嘁,提高了系統(tǒng)的運行和查詢效率。但是對于復(fù)制數(shù)據(jù)的更新操作勘究,就要涉及對所有復(fù)制數(shù)據(jù)的更新矮湘。
位置透明性:是指用戶不必知道所操作的數(shù)據(jù)放在何處,即數(shù)據(jù)分配到哪個或哪些站點存儲對用戶是透明的口糕。因此缅阳,數(shù)據(jù)分片模式的改變,如把數(shù)據(jù)從一個站點轉(zhuǎn)移到另一個站點將不會影響應(yīng)用程序景描,因而應(yīng)用程序不必改寫十办。
局部映像透明性(邏輯透明):是最低層次的透明性,該透明性提供數(shù)據(jù)到局部數(shù)據(jù)庫的映像超棺,即用戶不必關(guān)心局部DBMS支持哪種數(shù)據(jù)模型向族、使用哪種數(shù)據(jù)操縱語言,數(shù)據(jù)模型和操縱語言的轉(zhuǎn)換是由系統(tǒng)完成的棠绘。因此件相,局部映像透明性對異構(gòu)型和同構(gòu)異質(zhì)的分布式數(shù)據(jù)庫系統(tǒng)是非常重要的。
采用微內(nèi)核結(jié)構(gòu)的操作系統(tǒng)與傳統(tǒng)的操作系統(tǒng)相比氧苍,其優(yōu)點是提高了系統(tǒng)的靈活性夜矗、可擴(kuò)充性,增強(qiáng)了系統(tǒng)的可靠性让虐,提供了對分布式系統(tǒng)的支持紊撕。其原因如下:
①靈活性和可擴(kuò)展性:由于微內(nèi)核OS的許多功能是由相對獨立的服務(wù)器軟件來實現(xiàn)的,當(dāng)開發(fā)了新的硬件和軟件時澄干,微內(nèi)核OS只須在相應(yīng)的服務(wù)器中增加新的功能逛揩,或再增加一個專門的服務(wù)器柠傍。與此同時,也必然改善系統(tǒng)的靈活性辩稽,不僅可在操作系統(tǒng)中增加新的功能惧笛,還可修改原有功能,以及刪除已過時的功能逞泄,以形成一個更為精干有效的操作系統(tǒng)患整。
②增強(qiáng)了系統(tǒng)的可靠性和可移植性:由于微內(nèi)核是出于精心設(shè)計和嚴(yán)格測試的,容易保證其正確性;另一方面是它提供了規(guī)范而精簡的應(yīng)用程序接口(API)喷众,為微內(nèi)核外部的程序編制高質(zhì)量的代碼創(chuàng)造了條件各谚。此外,由于所有服務(wù)器都是運行在用戶態(tài)到千,服務(wù)器與服務(wù)器之間采用的是消息傳遞通信機(jī)制昌渤,因此,當(dāng)某個服務(wù)器出現(xiàn)錯誤時憔四,不會影響內(nèi)核膀息,也不會影響其他服務(wù)器。另外了赵,由于在微內(nèi)核結(jié)構(gòu)的操作系統(tǒng)中潜支,所有與特定CPU和IO設(shè)備硬件有關(guān)的代碼,均放在內(nèi)核和內(nèi)核下面的硬件隱藏層中柿汛,而操作系統(tǒng)其他絕大部分(即各種服務(wù)器)均與硬件平臺無關(guān)冗酿,因而,把操作系統(tǒng)移植到另一個計算機(jī)硬件平臺上所需做的修改是比較小的络断。
③提供了對分布式系統(tǒng)的支持:由于在微內(nèi)核OS中裁替,客戶和服務(wù)器之間以及服務(wù)器和服務(wù)器之間的通信,是采用消息傳遞通信機(jī)制進(jìn)行的妓羊,致使微內(nèi)核OS能很好地支持分布式系統(tǒng)和網(wǎng)絡(luò)系統(tǒng)胯究。事實上,只要在分布式系統(tǒng)中賦予所有進(jìn)程和服務(wù)器唯一的標(biāo)識符躁绸,在微內(nèi)核中再配置一張系統(tǒng)映射表(即進(jìn)程和服務(wù)器的標(biāo)識符與它們所駐留的機(jī)器之間的對應(yīng)表)裕循,在進(jìn)行客戶與服務(wù)器通信時,只需在所發(fā)送的消息中標(biāo)上發(fā)送進(jìn)程和接收進(jìn)程的標(biāo)識符净刮,微內(nèi)核便可利用系統(tǒng)映射表剥哑,將消息發(fā)往目標(biāo),而無論目標(biāo)是駐留在哪臺機(jī)器上淹父。系統(tǒng)監(jiān)視的目標(biāo)是為了評估系統(tǒng)性能株婴。要監(jiān)視系統(tǒng)性能,需要收集某個時間段內(nèi)的3種不同類型的性能數(shù)據(jù):
(1)常規(guī)性能數(shù)據(jù)。該信息可幫助識別短期趨勢(如內(nèi)存泄漏)困介。經(jīng)過一兩個月的數(shù)據(jù)收集后大审,可以求出結(jié)果的平均值并用更緊湊的格式保存這些結(jié)果。這種存檔數(shù)據(jù)可幫助人們在業(yè)務(wù)增長時作出容量規(guī)劃座哩,并有助于在日后評估上述規(guī)劃的效果徒扶。
(2)比較基準(zhǔn)的性能數(shù)據(jù)。該信息可幫助人們發(fā)現(xiàn)緩慢根穷、歷經(jīng)長時間才發(fā)生的變化姜骡。通過將系統(tǒng)的當(dāng)前狀態(tài)與歷史記錄數(shù)據(jù)相比較,可以排除系統(tǒng)問題并調(diào)整系統(tǒng)屿良。由于該信息只是定期收集的圈澈,所以不必對其進(jìn)行壓縮存儲。
(3)服務(wù)水平報告數(shù)據(jù)尘惧。該信息可幫助人們確保系統(tǒng)能滿足一定的服務(wù)或性能水平康栈,也可能會將該信息提供給并不是性能分析人員的決策者。收集和維護(hù)該數(shù)據(jù)的頻率取決于特定的業(yè)務(wù)需要喷橙。
進(jìn)行系統(tǒng)監(jiān)視通常有3種方式谅将。
一是通過系統(tǒng)本身提供的命令,如UNIX/Liunx中的 w重慢、ps、last逊躁,Windows中的netstat等似踱,第一空選擇A選項。
二是通過系統(tǒng)記錄文件查閱系統(tǒng)在特定時間內(nèi)的運行狀態(tài);
三是集成命令稽煤、文件記錄和可視化技術(shù)的監(jiān)控工具核芽,提供直觀的界面,操作人員只需要進(jìn)行一些可視化的設(shè)置酵熙,而不需要記憶繁雜的命令行參數(shù)轧简,即可完成監(jiān)視操作,如 Windows的Perfmon應(yīng)用程序匾二。第一空選擇C選項哮独。
Linux的 top是基于命令行的,Linux 的 iptables是基于包過濾的防火墻工具察藐。
目前皮璧,已經(jīng)有些廠商提供專業(yè)化的監(jiān)視平臺,將上面3種方式集成到一個統(tǒng)一的監(jiān)控平臺分飞,進(jìn)行統(tǒng)一監(jiān)控悴务,并提供各類分析數(shù)據(jù)和分析報表,幫助用戶進(jìn)行性能的評估和診斷譬猫。
電子政務(wù)主要3類角色:政府讯檐、企(事)業(yè)單位及居民羡疗。如果有第4類就是公務(wù)員。政府對政府(G2G别洪,Government To Government):政府之間的互動及政府與公務(wù)員之間互動叨恨。包括基礎(chǔ)信息的采集、處理和利用蕉拢,如人口/地理/資源信息等;各級政府決策支持;政府間通信特碳。第一空選擇B選項。
政府對企業(yè)(G2B晕换,Government To Business):政府為企業(yè)提供的政策環(huán)境午乓。包括產(chǎn)業(yè)政策、進(jìn)出口闸准、注冊益愈、納稅、工資夷家、勞保蒸其、社保等各種規(guī)定;政府向企事業(yè)單位頒發(fā)的各種營業(yè)執(zhí)照、許可證库快、合格證摸袁、質(zhì)量認(rèn)證等。第二空選擇A選項义屏。
政府對公民(G2C靠汁,Government To Citizen):政府對公民提供的服務(wù)。包括關(guān)于社區(qū)公安和水闽铐、火蝶怔、天災(zāi)等與公共安全有關(guān)的信息等,還包括戶口兄墅、各種證件的管理等政府提供的各種服務(wù)踢星。第三空選擇D選項。
政府對公務(wù)員(G2E隙咸,Government To Employee):政府與政府公務(wù)員即政府雇員沐悦。包括政府機(jī)構(gòu)通過網(wǎng)絡(luò)技術(shù)實現(xiàn)內(nèi)部電子化管理(例如,OA系統(tǒng)等)的重要形式五督。
企業(yè)對政府(B2G所踊,Business To Government):企業(yè)納稅及企業(yè)為政府提供服務(wù)。包括企業(yè)參加政府各項工程的競/投標(biāo)概荷,向政府供應(yīng)各種商品和服務(wù)秕岛,企業(yè)向政府提建議,申訴。第四空選擇C選項继薛。
公民對政府(C2G修壕,Citizen To Government):個人除了應(yīng)向政府繳納稅費和罰款及按政府要求填報各種信息和表格外,更重要的是開辟居民參政遏考、議政的渠道慈鸠,使政府的各項工作不斷得以改進(jìn)和完善。政府需要利用這個渠道來了解民意灌具,征求群眾意見,以便更好地為人民服務(wù)青团。此外,報警服務(wù)(盜賊咖楣、醫(yī)療督笆、急救、火警等)即在緊急情況下居民需要向政府報告并要求政府提供的服務(wù)诱贿,也屬于這個范圍娃肿。軟件系統(tǒng)的文檔可以分為用戶文檔和系統(tǒng)文檔兩類,它是影響軟件可維護(hù)性的重要因素珠十。
用戶文檔主要描述所交付系統(tǒng)的功能和使用方法料扰,并不關(guān)心這些功能是怎樣實現(xiàn)的。用戶文檔是了解系統(tǒng)的第一步焙蹭,它可以讓用戶獲得對系統(tǒng)準(zhǔn)確的初步印象晒杈。
用戶文檔至少應(yīng)該包括下述5方面的內(nèi)容。
①功能描述:說明系統(tǒng)能做什么孔厉。
②安裝文檔:說明怎樣安裝這個系統(tǒng)以及怎樣使系統(tǒng)適應(yīng)特定的硬件配置桐智。
③使用手冊:簡要說明如何著手使用這個系統(tǒng)(通過豐富的例子說明怎樣使用常用的系統(tǒng)功能,并說明用戶操作錯誤是怎樣恢復(fù)和重新啟動的)烟馅。
④參考手冊:詳盡描述用戶可以使用的所有系統(tǒng)設(shè)施以及它們的使用方法,并解釋系統(tǒng)可能產(chǎn)生的各種出錯信息的含義(對參考手
冊最主要的要求是完整然磷,因此通常使用形式化的描述技術(shù))郑趁。
⑤操作員指南(如果需要有系統(tǒng)操作員的話):說明操作員應(yīng)如何處理使用中出現(xiàn)的各種情況。
系統(tǒng)文檔是從問題定義姿搜、需求說明到驗收測試計劃這樣一系列和系統(tǒng)實現(xiàn)有關(guān)的文檔寡润。描述系統(tǒng)設(shè)計、實現(xiàn)和測試的文檔對于理解程序和維護(hù)程序來說是非常重要的舅柜。軟件生命周期模型又稱軟件開發(fā)模型( software develop model)或軟件過程模型( softwareprocess model)梭纹,它是從某一個特定角度提出的軟件過程的簡化描述。軟件過程模型是軟件開發(fā)實際過程的抽象與概括致份,它應(yīng)該包括構(gòu)成軟件過程的各種活動变抽,也就是對軟件開發(fā)過程各階段之間關(guān)系的一個描述和表示。
軟件過程模型的基本概念:軟件過程是制作軟件產(chǎn)品的一組活動以及結(jié)果,這些活動主要由軟件人員來完成绍载,軟件活動主要有如下一些:
1诡宗、軟件描述。必須定義軟件功能以及使用的限制击儡。第三空選擇C選項塔沃。
2、軟件開發(fā)阳谍。也就是軟件的設(shè)計和實現(xiàn)蛀柴,軟件工程人員制作出能滿足描述的軟件。3矫夯、軟件有效性驗證鸽疾。軟件必須經(jīng)過嚴(yán)格的驗證,以保證能夠滿足客戶的需求茧痒。4肮韧、軟件演化。改進(jìn)軟件以適應(yīng)不斷變化的需求旺订。軟件開發(fā)工具用來輔助開發(fā)人員進(jìn)行軟件開發(fā)活動弄企,對應(yīng)軟件開發(fā)過程的各種活動,軟件開發(fā)工具包括需求分析工具区拳、設(shè)計工具拘领、編碼與排錯工具、測試工具等樱调。
1约素、需求分析工具用以輔助軟件需求分析活動,輔助系統(tǒng)分析員從需求定義出發(fā)笆凌,生成完成的圣猎、清晰的、一致的功能規(guī)范乞而。按描述需求定義的方法可以將需求分析工具分為基于自然語言或圖像描述的工具和基于形式化需求定義語言的工具送悔。
(1)基于自然語言或圖形描述的工具:這類工具采用分解與抽象等基本手段,對用戶問題逐步求精爪模,并在檢測機(jī)制的輔助下欠啤,發(fā)現(xiàn)其中可能存在的問題(如一致性),通過對問題描述的修改屋灌,逐步形成能正確反映用戶需求的功能規(guī)范洁段。比如結(jié)構(gòu)化分析方法采用的數(shù)據(jù)流圖。
(2)基于形式化需求定義語言的工具:基于形式化需求定義語言的工具大多以基于知識的需求智能助手的形式出現(xiàn)共郭,并把人工智能技術(shù)運用于軟件工程祠丝。這類工具通常具有一個知識庫和一個推理機(jī)制疾呻。
(3)其他需求分析工具:可執(zhí)行規(guī)范語言以及原型技術(shù)為需求分析工具提供了另一條實現(xiàn)途徑,這些工具通過運行可執(zhí)行規(guī)范或原型纽疟,將有關(guān)的結(jié)果顯示給用戶和系統(tǒng)分析員罐韩,以便進(jìn)行需求確認(rèn)。
2污朽、設(shè)計工具:設(shè)計工具用以輔助軟件設(shè)計活動散吵,輔助設(shè)計人員從軟件功能規(guī)范出發(fā),得到相應(yīng)的設(shè)計規(guī)范蟆肆。
3矾睦、編碼與排錯工具:編碼工具和排錯工具用以輔助程序員進(jìn)行編碼活動。編碼工具輔助程序員用某種程序語言編制源程序炎功,并對源程序進(jìn)行翻譯枚冗,最終轉(zhuǎn)換成可執(zhí)行的代碼,主要有編輯程序蛇损、匯編程序赁温、編譯程序和生成程序等。排錯工具用來輔助程序員尋找源程序中錯誤的性質(zhì)和原因,并確定其出錯的位置,主要有源代碼排錯程序和排錯程序生成程序兩類淤齐。
4股囊、軟件維護(hù)工具:軟件維護(hù)工具輔助軟件維護(hù)過程中的活動,輔助維護(hù)人員對軟件代碼及其文檔進(jìn)行各種維護(hù)活動更啄。軟件維護(hù)工具主要有版本控制工具稚疹、文檔分析工具、開發(fā)信息庫工具祭务、逆向工程工具和再工程工具等内狗。
5、軟件管理和軟件支持工具:軟件管理過程和軟件支持過程往往要涉及軟件生存周期中的多個活動,軟件管理和軟件支持工具用來輔助管理人員和軟件支持人員的管理活動和支持活動义锥,以確保軟件高質(zhì)高效地完成柳沙。其中常用的工具有項目管理工具、配置管理工具拌倍、軟件評價工具等赂鲤。軟件設(shè)計包括體系結(jié)構(gòu)設(shè)計、接口設(shè)計贰拿、數(shù)據(jù)設(shè)計和過程設(shè)計。結(jié)構(gòu)設(shè)計:定義軟件系統(tǒng)各主要部件之間的關(guān)系熄云。
數(shù)據(jù)設(shè)計:將模型轉(zhuǎn)換成數(shù)據(jù)結(jié)構(gòu)的定義膨更。好的數(shù)據(jù)設(shè)計將改善程序結(jié)構(gòu)和模塊劃分,降低過程復(fù)雜性缴允。
接口設(shè)計(人機(jī)界面設(shè)計):軟件內(nèi)部荚守,軟件和操作系統(tǒng)之間以及軟件和人之間如何通信珍德。
過程設(shè)計:系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述。確定軟件各個組成部分內(nèi)的算法及內(nèi)部數(shù)據(jù)結(jié)構(gòu)矗漾,并選定某種過程的表達(dá)形式來描述各種算法锈候。信息隱藏是提高可修改性的典型設(shè)計策略,又因為信息隱藏可以有一定保密作用敞贡,所以也可以提高安全性泵琳。不過信息隱蔽從一定程度上說可以提升安全性,但是相對提升可修改性、可測試性和可移植性來說沒有那么顯著誊役,這里第二空選擇可移植性會更合適获列。信息隱蔽是開發(fā)整體程序結(jié)構(gòu)時使用的法則,即將每個程序的成分隱蔽或封裝在一個單一的設(shè)計模塊中蛔垢,并且盡可能少地暴露其內(nèi)部的處理過程击孩。通常會將困難的決策、可能修改的決策鹏漆、數(shù)據(jù)結(jié)構(gòu)的內(nèi)部連接巩梢,以及對它們所做的操作細(xì)節(jié)、內(nèi)部特征碼艺玲、與計算機(jī)硬件有關(guān)的細(xì)節(jié)等隱蔽起來括蝠。通過信息隱蔽可以提高軟件的可修改性、可測試性和可移植性板驳,它也是現(xiàn)代軟件設(shè)計的一個關(guān)鍵性原則又跛。
常考質(zhì)量屬性及相應(yīng)設(shè)計策略如下:
1若治、性能
性能( performance)是指系統(tǒng)的響應(yīng)能力慨蓝,即要經(jīng)過多長時間才能對某個事件做出響應(yīng),或者在某段時間內(nèi)系統(tǒng)所能處理的事件的個數(shù)端幼。
代表參數(shù):響應(yīng)時間礼烈、吞吐量設(shè)計策略:優(yōu)先級隊列、資源調(diào)度
2婆跑、可用性
可用性(availability)是系統(tǒng)能夠正常運行的時間比例此熬。經(jīng)常用兩次故障之間的時間長度或在出現(xiàn)故障時系統(tǒng)能夠恢復(fù)正常的速度來表示。
代表參數(shù):故障間隔時間設(shè)計策略:冗余滑进、心跳線3犀忱、安全性
安全性(security)是指系統(tǒng)在向合法用戶提供服務(wù)的同時能夠阻止非授權(quán)用戶使用的企圖或拒絕服務(wù)的能力。安全性又可劃分為機(jī)密性扶关、完整性阴汇、不可否認(rèn)性及可控性等特性。
設(shè)計策略:追蹤審計
4节槐、可修改性
可修改性(modifiability)是指能夠快速地以較高的性能價格比對系統(tǒng)進(jìn)行變更的能力搀庶。通常以某些具體的變更為基準(zhǔn)拐纱,通過考察這些變更的代價衡量可修改性。
主要策略:信息隱藏
5哥倔、可靠性
可靠性(reliability)是軟件系統(tǒng)在應(yīng)用或系統(tǒng)錯誤面前秸架,在意外或錯誤使用的情況下維持軟件系統(tǒng)的功能特性的基本能力。主要考慮兩個方面:容錯咆蒿、健壯性东抹。
代表參數(shù):MTTF、MTBF設(shè)計策略:冗余蜡秽、心跳線
可用性(availability)是系統(tǒng)能夠正常運行的時間比例府阀。經(jīng)常用兩次故障之間的時間長度或在出現(xiàn)故障時系統(tǒng)能夠恢復(fù)正常的速度來表示。
代表參數(shù):故障間隔時間設(shè)計策略:冗余芽突、心跳線3试浙、安全性
安全性(security)是指系統(tǒng)在向合法用戶提供服務(wù)的同時能夠阻止非授權(quán)用戶使用的企圖或拒絕服務(wù)的能力。安全性又可劃分為機(jī)密性寞蚌、完整性田巴、不可否認(rèn)性及可控性等特性。
設(shè)計策略:追蹤審計
4挟秤、可修改性
可修改性(modifiability)是指能夠快速地以較高的性能價格比對系統(tǒng)進(jìn)行變更的能力壹哺。通常以某些具體的變更為基準(zhǔn),通過考察這些變更的代價衡量可修改性艘刚。
主要策略:信息隱藏
5管宵、可靠性
可靠性(reliability)是軟件系統(tǒng)在應(yīng)用或系統(tǒng)錯誤面前,在意外或錯誤使用的情況下維持軟件系統(tǒng)的功能特性的基本能力攀甚。主要考慮兩個方面:容錯箩朴、健壯性。
代表參數(shù):MTTF秋度、MTBF設(shè)計策略:冗余炸庞、心跳線中間件是一種獨立的系統(tǒng)軟件或服務(wù)程序,可以幫助分布式應(yīng)用軟件在不同的技術(shù)之間共享資源。中間件可以:
1荚斯、負(fù)責(zé)客戶機(jī)與服務(wù)器之間的連接和通信埠居,以及客戶機(jī)與應(yīng)用層之間的高效率通信機(jī)制。
2事期、提供應(yīng)用的負(fù)載均衡和高可用性滥壕、安全機(jī)制與管理功能,以及交易管理機(jī)制兽泣,保證交易的一致性绎橘。
3、提供應(yīng)用層不同服務(wù)之間的互操作機(jī)制撞叨,以及應(yīng)用層與數(shù)據(jù)庫之間的連接和控制機(jī)制金踪。
4牵敷、提供多層架構(gòu)的應(yīng)用開發(fā)和運行的平臺,以及應(yīng)用開發(fā)框架枷餐,支持模塊化的應(yīng)用開發(fā)。
5毛肋、屏蔽硬件、操作系統(tǒng)诗眨、網(wǎng)絡(luò)和數(shù)據(jù)庫的差異。
6匠楚、提供一組通用的服務(wù)去執(zhí)行不同的功能,避免重復(fù)的工作和使應(yīng)用之間可以協(xié)作厂财。瀑布模型可以說是最早使用的軟件生存周期模型之一芋簿。由于這個模型描述了軟件生存的一些基本過程活動,所以它被稱為軟件生存周期模型璃饱。這些活動從一個階段到另一個階段逐次下降与斤,形式上很像瀑布。瀑布模型的特點是因果關(guān)系緊密相連荚恶,前一個階段工作的結(jié)果是后一個階段工作的輸入撩穿。本題與瀑布模型無關(guān)。
螺旋模型是在快速原型的基礎(chǔ)上擴(kuò)展而成的裆甩。這個模型把整個軟件開發(fā)流程分成多個階段冗锁,每個階段都由4部分組成,它們是:①目標(biāo)設(shè)定嗤栓。為該項目進(jìn)行需求分析冻河,定義和確定這一個階段的專門目標(biāo),指定對過程和產(chǎn)品的約束茉帅,并且制定詳細(xì)的管理計劃叨叙。②風(fēng)險分析。對可選方案進(jìn)行風(fēng)險識別和詳細(xì)分析堪澎,制定解決辦法擂错,采取有效的措施避免這些風(fēng)險。③開發(fā)和有效性驗證樱蛤。風(fēng)險評估后钮呀,可以為系統(tǒng)選擇開發(fā)模型剑鞍,并且進(jìn)行原型開發(fā),即開發(fā)軟件產(chǎn)品爽醋。④評審蚁署。對項目進(jìn)行評審,以確定是否需要進(jìn)入螺旋線的下一次回路蚂四,如果決定繼續(xù)光戈,就要制定下一階段計劃。第一題答案為B選項遂赠。
構(gòu)件組裝模型通過重用來提高軟件的可靠性和易維護(hù)性,程序在進(jìn)行修改時產(chǎn)生較少的副作用久妆。一般開發(fā)過程為:設(shè)計構(gòu)件組裝>建立構(gòu)件庫->構(gòu)建應(yīng)用軟件->測試與發(fā)布筷弦。構(gòu)件組裝模型的優(yōu)點如下:(1)構(gòu)件的自包容性讓系統(tǒng)的擴(kuò)展變得更加容易奸笤。(2)設(shè)計良好的構(gòu)件更容易被重用哼鬓,降低軟件開發(fā)成本。(3)構(gòu)件的粒度較整個系統(tǒng)更小健盒,因此安排開發(fā)任務(wù)更加靈活扣癣,可以將開發(fā)團(tuán)隊分成若干組父虑,并行地獨立開發(fā)構(gòu)件士嚎。瀑布模型可以說是最早使用的軟件生存周期模型之一莱衩。由于這個模型描述了軟件生存的一些基本過程活動笨蚁,所以它被稱為軟件生存周期模型括细。這些活動從一個階段到另一個階段逐次下降奋单,形式上很像瀑布辱匿。瀑布模型的特點是因果關(guān)系緊密相連匾七,前一個階段工作的結(jié)果是后一個階段工作的輸入昨忆。本題與瀑布模型無關(guān)邑贴。
螺旋模型是在快速原型的基礎(chǔ)上擴(kuò)展而成的。這個模型把整個軟件開發(fā)流程分成多個階段改基,每個階段都由4部分組成秕狰,它們是:①目標(biāo)設(shè)定鸣哀。為該項目進(jìn)行需求分析叹放,定義和確定這一個階段的專門目標(biāo)许昨,指定對過程和產(chǎn)品的約束糕档,并且制定詳細(xì)的管理計劃速那。②風(fēng)險分析端仰。對可選方案進(jìn)行風(fēng)險識別和詳細(xì)分析荔烧,制定解決辦法鹤竭,采取有效的措施避免這些風(fēng)險臀稚。③開發(fā)和有效性驗證吧寺。風(fēng)險評估后稚机,可以為系統(tǒng)選擇開發(fā)模型赖条,并且進(jìn)行原型開發(fā)谋币,即開發(fā)軟件產(chǎn)品蕾额。④評審。對項目進(jìn)行評審退个,以確定是否需要進(jìn)入螺旋線的下一次回路语盈,如果決定繼續(xù)刀荒,就要制定下一階段計劃缠借。第一題答案為B選項泼返。
構(gòu)件組裝模型通過重用來提高軟件的可靠性和易維護(hù)性,程序在進(jìn)行修改時產(chǎn)生較少的副作用绅喉。一般開發(fā)過程為:設(shè)計構(gòu)件組裝>建立構(gòu)件庫->構(gòu)建應(yīng)用軟件->測試與發(fā)布柴罐。構(gòu)件組裝模型的優(yōu)點如下:(1)構(gòu)件的自包容性讓系統(tǒng)的擴(kuò)展變得更加容易丽蝎。(2)設(shè)計良好的構(gòu)件更容易被重用屠阻,降低軟件開發(fā)成本国觉。(3)構(gòu)件的粒度較整個系統(tǒng)更小麻诀,因此安排開發(fā)任務(wù)更加靈活蝇闭,可以將開發(fā)團(tuán)隊分成若干組呻引,并行地獨立開發(fā)構(gòu)件逻悠。自動化測試工具主要使用腳本技術(shù)來生成測試用例,測試腳本不僅可以在功能測試上模擬用戶的操作童谒,比較分析饥伊,而且可以用在性能測試撵渡、負(fù)載測試上粒氧。虛擬用戶可以同時進(jìn)行相同的节腐、不同的操作翼雀,給被測軟件施加足夠的數(shù)據(jù)和操作狼渊,檢查系統(tǒng)的響應(yīng)速度和數(shù)據(jù)吞吐能力。
線性腳本城须,是錄制手工執(zhí)行的測試用例得到的腳本糕伐,這種腳本包含所有的擊鍵良瞧、移動、輸入數(shù)據(jù)等况增,所有錄制的測試用例都可以得到完整的回放巡通。
結(jié)構(gòu)化腳本誊锭,類似于結(jié)構(gòu)化程序設(shè)計丧靡,具有各種邏輯結(jié)構(gòu)温治、函數(shù)調(diào)用功能。
共享腳本舟山,共享腳本是指可以被多個測試用例使用的腳本,也允許其他腳本調(diào)用若债。共享腳本可以在不同主機(jī)蠢琳、不同系統(tǒng)之間共享傲须,也可以在同一主機(jī)躏碳、同一系統(tǒng)之間共享。
數(shù)據(jù)驅(qū)動腳本镇眷,將測試輸入存儲在獨立的(數(shù)據(jù))文件中翎嫡,而不是存儲在腳本中具伍∪搜浚可以針對不同數(shù)據(jù)輸入實現(xiàn)多個測試用例萤厅。
關(guān)鍵字驅(qū)動腳本惕味,關(guān)鍵字驅(qū)動腳本是數(shù)據(jù)驅(qū)動腳本的邏輯擴(kuò)展名挥。它將數(shù)據(jù)文件變成測試用例的描述疟羹,采用一些關(guān)鍵字指定要執(zhí)行的任務(wù)。當(dāng)考慮架構(gòu)時躺同,重要的是從不同的視角(perspective)來檢查阁猜,這促使設(shè)計師考慮具體架構(gòu)的不同屬性。例如:展示功能組織的靜態(tài)視角能判斷質(zhì)量特性蹋艺,展示并發(fā)行為的動態(tài)視角能判斷系統(tǒng)行為特性剃袍。在ABSD(基于架構(gòu)的軟件設(shè)計)方法中,使用不同的視角來觀察設(shè)計元素捎谨,一個子系統(tǒng)并不總是一個靜態(tài)的架構(gòu)元素民效,而是可以從動態(tài)和靜態(tài)視角觀察的架構(gòu)元素舒萎。將選擇的特定視角或視圖與Kruchten 提出的類似摊灭,也就是邏輯視圖煤杀、進(jìn)程視圖、實現(xiàn)視圖和配置視圖嫌拣。使用邏輯視圖來記錄設(shè)計元素的功能和概念接口,設(shè)計元素的功能定義了它本身在系統(tǒng)中的角色酝润,這些角色包括功能性能等疏咐。進(jìn)程視圖也稱為并發(fā)視圖,使用并發(fā)視圖來檢查系統(tǒng)多用戶的并發(fā)行為卵牍。使用“并發(fā)”來代替“進(jìn)程”,是為了強(qiáng)調(diào)沒有對進(jìn)程或線程進(jìn)行任何操作,一旦這些執(zhí)行操作,則并發(fā)視圖就演化為進(jìn)程視圖袁梗。使用的最后一個視圖是配置視圖锯梁,配置視圖代表了計算機(jī)網(wǎng)絡(luò)中的節(jié)點合敦,也就是系統(tǒng)的物理結(jié)構(gòu)。
CIS架構(gòu)是基于資源不對等爪膊,且為實現(xiàn)共享而提出來的耘成,是20世紀(jì)90年代成熟起來的技術(shù)诵肛,C/S結(jié)構(gòu)將應(yīng)用一分為二溜歪,服務(wù)器(后臺)負(fù)責(zé)數(shù)據(jù)管理膊爪,客戶機(jī)(前臺)完成與用戶的交互任務(wù)。
CS 軟件架構(gòu)具有強(qiáng)大的數(shù)據(jù)操作和事務(wù)處理能力,模型思想簡單芍锦,易于人們理解和接受。但隨著企業(yè)規(guī)模的日益擴(kuò)大炼鞠,軟件的復(fù)雜程度不斷提高,傳統(tǒng)的二層CIS結(jié)構(gòu)存在以下幾個局限:
1.二層CIS結(jié)構(gòu)為單一服務(wù)器且以局域網(wǎng)為中心,所以難以擴(kuò)展至大型企業(yè)廣域網(wǎng)或Internet;
2.軟、硬件的組合及集成能力有限;
3.服務(wù)器的負(fù)荷太重,難以管理大量的客戶機(jī),系統(tǒng)的性能容易變壞;
4.數(shù)據(jù)安全性不好颜价。因為客戶端程序可以直接訪問數(shù)據(jù)庫服務(wù)器,那么速侈,在客戶端計算機(jī)上的其他程序也可想辦法訪問數(shù)據(jù)庫服務(wù)器,從而使數(shù)據(jù)庫的安全性受到威脅盆犁。
正是因為二層C/S有這么多缺點,因此,三層CIS結(jié)構(gòu)應(yīng)運而生坯临。三層CIS結(jié)構(gòu)是將應(yīng)用功能分成表示層空幻、功能層和數(shù)據(jù)層三個部分。
表示層是應(yīng)用的用戶接口部分容客,它擔(dān)負(fù)著用戶與應(yīng)用間的對話功能秕铛。它用于檢查用戶從鍵盤等輸入的數(shù)據(jù),并顯示應(yīng)用輸出的數(shù)據(jù)缩挑。在變更用戶接口時但两,只需改寫顯示控制和數(shù)據(jù)檢查程序,而不影響其他兩層供置。檢查的內(nèi)容也只限于數(shù)據(jù)的形式和取值的范圍谨湘,不包括有關(guān)業(yè)務(wù)本身的處理邏輯。
功能層相當(dāng)于應(yīng)用的本體芥丧,它是將具體的業(yè)務(wù)處理邏輯編入程序中紧阔。而處理所需的數(shù)據(jù)則要從表示層或數(shù)據(jù)層取得。表示層和功能層之間的數(shù)據(jù)交往要盡可能簡潔续担。
數(shù)據(jù)層就是數(shù)據(jù)庫管理系統(tǒng)擅耽,負(fù)責(zé)管理對數(shù)據(jù)庫數(shù)據(jù)的讀寫。數(shù)據(jù)庫管理系統(tǒng)必須能迅速執(zhí)行大量數(shù)據(jù)的更新和檢索物遇。因此乖仇,一般從功能層傳送到數(shù)據(jù)層的要求大都使用SQL語言。設(shè)計模式是一套可以被反復(fù)使用的询兴、多數(shù)人知曉的乃沙、經(jīng)過分類編目的、代碼設(shè)計經(jīng)驗的總結(jié)诗舰,使用設(shè)計模式是為了可重用代碼崔涂、讓代碼更容易被他人理解并且提高代碼的可靠性。
設(shè)計模式的分類:
(1)根據(jù)目的分類:
創(chuàng)建型主要用于創(chuàng)建對象始衅。有工廠方法模式(Factory Method)冷蚂、抽象工廠模式(AbstractFactory)、建造者模式(Builder)汛闸、原型模式(Prototype)蝙茶、單例模式(Singleton)共5種。
結(jié)構(gòu)型主要用于處理類和對象的組合诸老。有適配器模式(Adapter)隆夯、橋接模式(Bridge)、組合模式(Composite)、裝飾模式(Decorator)蹄衷、外觀模式(Facade)忧额、享元模式(Flyweight)、代理模式(Proxy)共7種愧口。
行為型主要用于描述類或?qū)ο笤趺礃咏换ズ驮鯓臃峙渎氊?zé)睦番。有職責(zé)鏈模式(Chain ofResponsibility)、命令模式(Command)耍属、解釋器模式(Interpreter)托嚣、迭代器模式(Iterator)、中介者模式(Mediator)厚骗、備忘錄模式(Memento)示启、觀察者模式(Observer)、狀態(tài)模式(State)领舰、策略模式(Stratege)夫嗓、模板方法模式(Template Method)、訪問者模式(Visitor)共11種冲秽。第一題選擇A選項舍咖。
(2)根據(jù)作用范圍分類:可分為類模式和對象模式。
類模式用于處理類和子類的關(guān)系劳跃,這種關(guān)系通過繼承建立谎仲,在編譯時就確定了,是一種靜態(tài)關(guān)系刨仑。
對象模式處理對象間的關(guān)系郑诺,具有動態(tài)關(guān)系。Prototype(原型模式):用原型實例指定創(chuàng)建對象的類型杉武,并且通過拷貝這個原型來創(chuàng)建新的對象辙诞。允許對象在不了解創(chuàng)建對象的確切類以及如何創(chuàng)建細(xì)節(jié)的情況下創(chuàng)建自定義對象。
Abstract Factory (抽象工廠模式):提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口轻抱,而無需指定它們具體的類飞涂。
Builder(構(gòu)建器模式):將一個復(fù)雜類的表示與其構(gòu)造相分離,使得相同的構(gòu)建過程能夠得出不同的表示祈搜。
Singleton(單例模式):保證一個類只有一個實例较店,并提供一個訪問它的全局訪問點。所以第一題答案選B抽象工廠模式容燕,第二題答案選C構(gòu)建器模式梁呈,第三題答案選A原型模式。SYN Flood攻擊利用TCP三次握手的一個漏洞向目標(biāo)計算機(jī)發(fā)動攻擊蘸秘。攻擊者向目標(biāo)計算機(jī)發(fā)送TCP 連接請求(SYN報文)官卡,然后對于目標(biāo)返回的SYN-ACK報文不作回應(yīng)蝗茁。目標(biāo)計算機(jī)如果沒有收到攻擊者的ACK回應(yīng),就會一直等待寻咒,形成半連接哮翘,直到連接超時才釋放。攻擊者利用這種方式發(fā)送大量TCP SYN報文毛秘,讓目標(biāo)計算機(jī)上生成大量的半連接,迫使其大量資源浪費在這些半連接上饭寺。目標(biāo)計算機(jī)一旦資源耗盡,就會出現(xiàn)速度極慢熔脂、正常的用戶不能接入等情況佩研。攻擊者還可以偽造SYN報文柑肴,其源地址是偽造的或者不存在的地址霞揉,向目標(biāo)計算機(jī)發(fā)起攻擊。SYN Flooding攻擊與TCP報文的處理過程沒有很大的關(guān)系晰骑。