天天看點

記錄督促自己學習曆程5

第十章

第十章就要到了第二部分,第二部分引言叫可依賴性和資訊安全性,目前所面臨的軟體工程最為嚴重的挑戰是確定能信任這些系統,必須保證在需要用時是可以用的,并且能夠按照預期的那樣運作,必須是 安全的,計算機或者資料不會受到軟體威脅,意味着系統的可以來下和資訊安全性問題比系統的功能希捷更為重要。

關于第十章的話主要涵蓋社會技術系統,很多資訊安全性和可依賴型失敗來源是人和機構。第十章叫做社會技術系統,主要是介紹社會技術系統的概念,另外需要從系統角度考慮資訊安全性和可靠性。還介紹系統整體特性的概念,比如,可靠性、性能、安全性和資訊安全性,并且需要了解,軟體可靠性和資訊安全性不能孤立考慮的原因以及如何受到系統因素的影響。

在計算機系統中,軟體硬體互相依賴,這就是系統的基本特性就是系統,系統的一些特性 隻有在各部分內建并在一起運作時才能展現出來,是以軟體工程不是一個孤立的活動,而是一個一般系統工程過程中的固有組成部分,下面舉例一個氣象站的說明,需要關注社會技術系統棧包括:1裝置層、作業系統層、應用層、業務過程層、機構層和社會層。原則上大多數互動時在相鄰的層進行的,每一層對上一層隐藏下一層的細節,實際并不總是這樣,有時也存在層次之間的意外互動,需要注意的是:顧全整個系統,而不是簡單地孤立的軟體角度來看,這對于考慮軟體的資訊安全性和可靠性是非常必要的。是以當設計一個對資訊安全性和可靠性有要求的軟體時,必須從系統的全局觀察,真正的問題往往是系統的問題,而不是軟體失敗,需要檢查軟體和直接環境的互動方式來確定1軟體失敗盡可能包含在系統棧的封閉層中,不會對相鄰層的操作産生影響,軟體失敗不應該導緻系統失敗,2了解系統棧的非軟體層錯誤和失敗是如何影響軟體的同時考慮怎樣将監測點置入軟體中,進而協助檢測失敗,以及如何提供對失敗恢複的支援。下面舉了兩個例子很有代表性,能幫助了解,我已經做了重點記号。

系統在一定程度上,系統抄書了對它各個部分的堆砌,這就是所謂的複雜系統,我是這麼了解的。

對于抽象系統,有一個定義:系統是一組互相關聯、不同種類、為實作目标協同工作的元件集合,這個一般性的定義适合絕大部分系統,所有複雜系統都有一個特征,系統元件的屬性和行為會不可避免的交織在一起,另外,複雜系統通常具有層次結構并且包含其他系統,被包含的系統稱為子系統,包含軟體的系統可以分文兩類,1基于計算機的純技術兇,2社會技術系統,關于社會技術系統的定義不是特别能夠了解目前,是以着重要看一下這個内容并做下重點記号,保證下一次看書能看到,社會技術系統包括一個或多個技術系統,但關鍵是,系統本身還包括了解系統目的人員,社會技術系統把操作流程和人員定義在系統内的一部分,受制于機構的政策和規則,而且受到外部限制的影響,這些外部因素例如國家法律和調節政策。下面舉了一個社會技術出版系統。但是,就在我完成這個筆記的時候,我依然對于社會技術系統本身的概念有一定的模糊。

影響開發社會技術系統的系統環境機構因素包括,1過程變更2工作變更3機構變更,另外社會技術系統有三個十分重要的特性1系統整體特性,資訊安全和可靠性屬于整體特性,2系統的非确定性,3系統支援機構目标的程度和範圍不僅僅依賴于系統本身,還依賴于這些目标的穩定性,機構目标之間的關系和沖突,以及機構中人員是如何解釋這些目标的。

系統中元件之間的複雜關系意味着系統不隻是它的各部分的簡單的綜合,它還産生一些系統的整體特性,這些總體特性不能歸于任何一個專門的元件部分,隻有從系統整體上看時這些特性才浮現出來。總體特性有兩種類型1功能特性2非功能特性,例如可靠性、性能、安全性和資訊安全。

值得注意的是,我目前關于上一章的非功能性還不是特别熟悉,這裡又提到一個概念,需要重複記憶,打一個着重符号。這個地方很關鍵,不能有概念搞混淆了。

在一個社會技術系統中,要從1硬體可靠性2軟體可靠性3操作員可靠性來考慮可靠性。

确定性系統是一種完全可預測的系統,如果忽略時序問題,一個在完全可靠硬體上運作的軟體系統,對于一串輸入序列,總會産生相同的輸出序列,不可能存在完全可靠的硬體,但是硬體通常足夠可靠,可以認為它是确定的。這裡需要注意是,我不明白這裡講的時序是什麼意思,打一個問号,我了解為時間順序,這個和硬體記憶體條所描述的時序的不是一個東西,需要注意一下。

在另一方面。人員是不确定的,社會技術系統是非确定的,一方面因為它包含人的因素,另一方面在這些系統硬體軟體和資料變更頻率太高。

通常,開發複雜社會技術系統是來解決一些“極複雜問題”,指這類問題很複雜,具有非常多的關聯實體,并且無法給出問題的确切描述,不同資訊持有者會從不同的角度來看待這個問題,沒有人對此有全面的認識,隻有當解決辦法有了之後,這裡問題的本質才暴露出來。定義系統成功的标準很難,對于是否成功的判斷一般不是參照采購和開發系統的最初理由的,而是看是否在部署時是有效,由于業務環節變化很快,業務目标也會在系統開發過程中發生重大變化,資訊安全性和可靠性的屬性本質有時使得确定系統是否成功變得更加困難。

系統工程包括采購、描述、設計、實作、有效性驗證、部署、運作和維護社會技術系統系列活動,系統工程師不進要關心系統的軟體,還要注意硬體以及系統與使用者和周圍環境的互動,這裡又提到社會技術性系統,我在查閱了一些網路課件後了解,社會技術性系統基本上是添加了參與人員的一種計算機系統。系統工程的最初階段是系統采購,這裡面影響采購的要素主要是1機構中其他系統的情況2遵守外部規則的需要3外部競争4業務重組5可用的預算,社會技術系統中的軟體和硬體通常由另外一些機構開發,而非采購系統的機構本身開發,這裡涉及到之前章節談到了購買現成系統。采購定制系統的決定意味着要為了解和明确資訊安全性和可靠性需求花費很大的精力。

系統開發過程的目标是開發或獲得系統的所有元件并将其內建在一起進而形成最終的系統,在系統工程中使用計劃驅動過程的原因是系統的不同部分在同時開發,系統開發中有幾個基本活動1需求開發2系統設計3子系統過程4系統內建5系統測試6系統部署,這裡又出現了螺旋圖,對于螺旋圖我目前還不是很了解,需要加深印象。螺旋過程反應了需求影響設計決策,反過來設計也會作用于需求,不同的子系統通常是并行開發的。

這裡又一句話:随着越來越多的子系統是由內建COTS硬體和軟體元件來構成,實作和內建之間的差別越來越模糊,這裡的COTS 需要記憶一下概念,“COTS即Commercial Off-The-Shelf 翻譯為“商用現成品或技術”或者“商用貨架産品”,指可以采購到的具有開放式标準定義的接口的軟體或硬體産品,可以節省成本和時間。”

系統運作,我們要講運作過程設計得靈活且可調整,新系統和現有系統共同工作可能會存在問題,主要有1人為錯誤,認為錯誤應該以系統的方法,通過改進系統規避風險,這裡舉例非常形象,注意着重符号!2系統進化,大型和複雜的系統都會有一個非常長的生存期,必須改進原先系統需求中的錯誤進而滿足出現的新需求,系統為使用環境變化而做出的進化是系統運作過程的一環,系統進化包括重新進入開發流程做出改變,系統軟硬體的擴充以及運作過程。

下面有一個重點,這裡提到軟體進化和系統進化,之前我差點搞混淆這兩個概念,這裡需要着重記憶和區分,切記!,系統進化是很昂貴的主要是1必須從業務和技術的角度對提議的變更做仔細的分析,2因為子系統都不是孤立存在的,對一個子系統的變更可能造成其他子系統的性能或行為的負面影響,3最初設計決策的理由市場未被記錄,4擋系統運作相當長時間後,其結構被修改得複雜而淩亂。

從可靠性和資訊安全性的角度來說,系統的變更通常會導緻問題和缺陷。另外每一章節的要點和課後習題是精華,但是也是最難的,需要重複看!!

十一章

這一章主要是講了軟體的可依賴性和資訊安全性,但是這裡我有一個問題,就是可靠性和可依賴性有什麼差別,這個看後面學習能不能解答。留作問題,打個記号。另外,還需要了解為什麼一個軟體系統中可以倆下和資訊安全性通常比功能性更重要,了解可依賴性的四個方面分别是可用性、可靠性、安全性和資訊安全性,了解資訊安全性和可依賴性問題時用到的專門術語,了解想要得到一個保密可靠的軟甲你需要在軟體開發階段避免錯誤,在系統使用中檢測和排除錯誤,還要限制由于系統失敗造成的損失。

因為軟體密集型系統對于政府公司和個人都很重要,是以光法能使用的軟體必須是可信賴的,需要其可用并沒有副作用,可依賴性,這裡給出了答案,可依賴性是保羅了可用性和可靠性以及安全性和資訊安全性,交織在一起,意思就是可依賴性是包含可靠性的,随着學習的深入,很多問題可以在之後的學習之後得到解決同時可以提高自信心,可依賴性比功能更重要主要是因為1系統失敗影響到的人數衆多,2如果系統是不可靠的不安全的或者是不保密的,那使用者會拒絕使用它,3系統失敗的代價可能是巨大的,4靠不住的系統導緻資訊六十,當設計一個可依賴性系統的時候需要考慮1硬體失敗,2軟體失敗3操作失敗,這些失敗可能是互相關聯的,硬體元件的失敗可能需要 系統操作是不得不處理不可預料的情況,因而增加了額外的負擔,對于可靠的軟體募集惡性系統的設計者來說尤其重要的是要有系統觀,不能隻注意系統的某個局部。

計算機系統的可依賴性是衡量其可信賴度的性能名額,可信賴度表現為使用者 對系統的信任程度,可信賴和有用不是一回事,可依賴性包含一些性質1可維修性2可維護性3生存能力4容錯,需要注意是容錯主要說系統不斷疊代,而維修指的是處理系統失敗,為開發一個可靠軟體,需要做到1避免在軟體描述和開發過程中引入意外的錯誤,2設計檢驗和有效性驗證過程,使之能夠有效地發現影響系統可靠性的參與錯誤,3設計保護機制防範能夠損壞系統的可用性和資訊安全性的外部攻擊4正确地配置部署的系統和它的支援軟體,以提供良好的運作環境。

容錯的需求意味着可靠的系統必須包含備援代碼用以監視系統本身,探測錯誤狀态,并且在失敗發生之前從錯誤中恢複,但是因為額外的設計、實作和有效性驗證成本,加強系統可依賴性會大大增加開發成本。

系統的可用性和可靠性是兩個關系緊密的可依賴性名額,這兩個屬性都可以用機率來表達,系統可用性是系統在請求發生時響應并提供這些服務給客戶的可能性,可靠性和可用性是緊密聯系的但是有時候一個比另外一個更重要,這裡舉例的例子很形象,可以做着重關注一下,畫一個重點符号。

可靠性是系統在一特定時間特定環境中為一專門目的而做的無失敗操作的可能性,可用性是系統在一個時刻是可操作性的和能執行請求服務的可能性,另外可靠性的度量因具體系統來分析,可靠性的嚴格定義是與系統描述的實作相關的,如果系統的行為是與描述中定義的嚴格一緻,則認為系統行為是可靠的,這個很重要,定義特别重要!!!

可用性和可靠性是有聯系的,因為系統失敗可能導緻系統的損壞,系統的可靠性和可用性很大程度上是由系統失敗引起的,這些失敗具體的錯誤的後果或恰相關項目系統的失敗。下面舉例的映射圖示需要重點看一下,下次一定得看。

軟體的缺陷不總是導緻系統錯誤,并且系統錯誤不會必然導緻系統失敗,主要是因為1不是程式中所有的代碼都會被執行,包含缺陷的代碼可能因軟體的使用方式等原因永遠不會被執行2錯誤是短暫的,一個狀态變量可能由于缺陷代碼的執行産生一個不正确的值然而在這個變量被通路并導緻系統直白之前,其他的系統輸入可能已經被處理,而此事件會重置這個狀态變量為一個有效值3系統可能擁有缺陷探測和保護機制,系統可靠性改善有三個方法1缺陷避免2缺陷檢測和删除3容錯。

安全運作對于安全要求極高的系統是至關重要的,也就是說系統永遠不可能傷害人或者損害系統環境,安全要求極高的系統中的硬體控制相對于軟體控制來說較為容易實作和分析,主要分為兩類1首要的安全要求極高的軟體,這種軟體是嵌入在系統控制器中的軟體,該類軟體錯誤地執行會導緻硬體誤操作2次要的安全要求極高的軟體此類軟體可以間接引起人員傷害,此類軟體的例子是計算機輔助過程設計系統。系統可依賴性和系統安全性是相關的,但是可依賴的系統也許是不安全的,為什麼可依賴性軟體系統不一定是安全系統主要因為1我們不能百分百确信軟體系統是無缺陷的和能容錯的,違背發現的缺陷可能潛伏很長一段時間,軟體失敗也許會發生在多年的可信賴運作之後,2需求描述是不完備的,因為它可能沒有描述在一些關鍵時刻的必要系統行為。3硬體誤動作會引起系統無法與揣測的行為,使軟體所處的環境無法預測,4系統操作員會産生單獨看起來是正确的輸入 ,但是在某些情形下它是可能導緻系統誤操作的。

確定安全性的關鍵在于要麼意外不會發生要麼不嚴重,通過幾種手段達到1危險避免2危險檢測和去除3限制損失。軟體控制系統能提供複雜的安全互鎖機制,這是相比于硬體控制,最重要的一點是了解系統安全的程度,系統不可能百分百安全。

資訊安全性是一個反映系統保護自己免受外部意外或者故意攻擊的能力的一個系統屬性,這些問題主要是因為病毒,系統未經許可使用,系統資料維京許可更改,如果是保密系統最好不要連接配接網際網路,這個讓我想到公司内網,可依賴性方面有一個跟資訊安全性相關的專門術語,這個羅列了出來,需要專門去記憶!!!!!

對于任何一個聯網系統,有三個主要類型的資訊安全性威脅1對系統的保密性以及它的資料的威脅2對系統和資料的完整性的威脅3對系統的有用性和系統資料的可用性的威脅,這些威脅是互相依賴的,大多數社會技術系統的脆弱性就是由人的失敗而不是技術原因造成的,增強系統的資訊安全性主要是1脆弱性避免2攻擊檢測和壓制3暴露限制和恢複。

這一章我認為最重要是那幾個術語!一定要重複記憶,目前還沒有記全。每一章末尾要點和問題是精華!

繼續閱讀