国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

解析SOA反模式(1)

2019-11-17 04:55:22
字體:
供稿:網(wǎng)友
了解不同的面向服務(wù)的體系結(jié)構(gòu) (SOA) 反模式,這些反模式對(duì)通常出現(xiàn)的會(huì)產(chǎn)生確定性負(fù)面結(jié)果的情形或解決方案進(jìn)行了描述。隨著越來越多的企業(yè)開始大舉從 Web 服務(wù)轉(zhuǎn)向 SOA,引入、采用和成功實(shí)現(xiàn) SOA 方面的各種障礙變得越來越明顯。其中一些障礙與導(dǎo)致過去的要害活動(dòng)失敗的因素類似;而其他障礙則是 SOA 特有的。對(duì)這些障礙和最差實(shí)踐進(jìn)行記錄,將幫助顧問、架構(gòu)師和專業(yè)人員不再犯同樣的錯(cuò)誤,并學(xué)習(xí)如何避免這些問題的發(fā)生。此處匯集和說明的反模式是由作者通過作為 IBM 架構(gòu)師的個(gè)人經(jīng)驗(yàn)、研究過去和當(dāng)前的 SOA 應(yīng)用案例以及通過分析那些參與客戶 SOA 應(yīng)用的技術(shù)先驅(qū)提供的信息而得到的。 模式與反模式“示例不是另一種學(xué)習(xí)的方法,而是學(xué)習(xí)的唯一方法。”——阿爾貝特•愛因斯坦模式和模式語言捕捉并正式地將良好設(shè)計(jì)和基于經(jīng)驗(yàn)的最佳實(shí)踐系統(tǒng)化,以供其他人員對(duì)其進(jìn)行重用。它們成功而清楚地表述了常見問題及其解決方案。總的來說,常見概念、描述這些概念的詞匯以及將其聯(lián)系在一起的語言是所有采用這些設(shè)計(jì)和實(shí)踐的學(xué)科和領(lǐng)域的基礎(chǔ)。Christopher Alexander 關(guān)于建筑物和城市設(shè)計(jì)的研究通常被認(rèn)為是基于模式的思維最早的成果(請(qǐng)參閱參考資料)。他提出了術(shù)語“模式語言”,以此代表他認(rèn)為人類進(jìn)行設(shè)計(jì)的能力和使用語言的能力都是天生的這一信念。很多學(xué)科都在使用模式和模式語言的概念,包括從生理學(xué)和流程到項(xiàng)目治理和軟件工程等領(lǐng)域。在 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides(經(jīng)常將他們稱為 Gang of Four)的“Design Patterns: Elements of Reusable Object-Oriented Software”一書出版后,軟件設(shè)計(jì)模式得到了廣泛的認(rèn)可和使用。軟件社區(qū)目前正使用模式來解決在軟件生命周期中碰到的不斷重復(fù)的問題,包括軟件體系結(jié)構(gòu)和設(shè)計(jì),以及近來的軟件開發(fā)流程和拓?fù)洹_@些模式全面捕捉了一個(gè)知識(shí)體系,以標(biāo)識(shí)我們對(duì)可以實(shí)現(xiàn)設(shè)計(jì)良好的軟件解決方案的結(jié)構(gòu)和機(jī)制的理解。模式經(jīng)常被定義為“泛型化的、命名的問題到解決方案的映射”。它捕捉在特定環(huán)境中重復(fù)出現(xiàn)的問題的成功解決方案。通常使用與表 1“模式模板”中描述的模板類似的模板來記錄軟件模式。表 1. 模式模板內(nèi)容說明名稱:用于進(jìn)行標(biāo)識(shí)的名稱問題:在領(lǐng)域中重復(fù)出現(xiàn)的問題解決方案:該問題的最佳實(shí)踐解決方案結(jié)果:所建議的解決方案的優(yōu)點(diǎn)和缺點(diǎn)示例一些已經(jīng)應(yīng)用了所建議的解決方案的示例軟件模式提供了一個(gè)在架構(gòu)師和設(shè)計(jì)人員中捕捉知識(shí)和經(jīng)驗(yàn)的機(jī)制。它們提供了一種公共語言,可促進(jìn)對(duì)其他地方成功應(yīng)用的方法的重用,從而為軟件項(xiàng)目帶來以下方面的好處:風(fēng)險(xiǎn)更低、質(zhì)量更好且交付時(shí)間更短。而在另一方面,反模式則記錄出現(xiàn)錯(cuò)誤的情況。對(duì)數(shù)百個(gè)軟件開發(fā)項(xiàng)目的各種調(diào)查勿庸置疑地證實(shí)了軟件開發(fā)會(huì)出現(xiàn)錯(cuò)誤(實(shí)際上經(jīng)常是這樣)。研究表明每六個(gè)項(xiàng)目中就有五個(gè)會(huì)不成功:交付遠(yuǎn)遠(yuǎn)超過預(yù)期預(yù)算、嚴(yán)重滯后或被取消。這就表明可能(至少)值得投入精力研究一下老是失敗而很少成功的原因(注重 Bitter java 的作者 BrUCe Tate 在他的 developerWorks 文章中說明了為什么反模式是設(shè)計(jì)模式的必要和互補(bǔ)的同伴——有關(guān)更多信息,請(qǐng)參閱參考資料)。應(yīng)該對(duì)這些重復(fù)失敗的軟件開發(fā)項(xiàng)目或“反解決方案”加以研究,以收集關(guān)于出現(xiàn)了什么問題以及為什么會(huì)這樣的有用知識(shí)。很顯然,只對(duì)錯(cuò)誤的原因進(jìn)行分類并不一定非常有用,而還應(yīng)研究如何加以避免以及出現(xiàn)時(shí)如何恢復(fù)。系統(tǒng)化后,這個(gè)知識(shí)集合可以提供軟件模型的有價(jià)值的擴(kuò)展(歸類為反模式)。反模式 使用非常頻繁,但主要是問題的無效解決方案。這個(gè)術(shù)語最初是用于指示設(shè)計(jì)模式出現(xiàn)了錯(cuò)誤。與模式類似,反模式的使用也擴(kuò)展到了軟件開發(fā)的各個(gè)階段,并深入到了其他領(lǐng)域中。反模式記錄常見的對(duì)效率有負(fù)面影響的重復(fù)解決方案。它們通常捕捉重構(gòu)解決方案描述,說明如何更改反模式,以得到更為穩(wěn)定的解決方案。反模式通常使用模板進(jìn)行描述,在其中標(biāo)識(shí)癥狀、結(jié)果、根本原因和可能的解決方案。盡管與模式相比,反模式的研究并不很廣泛,相關(guān)文檔也不多,但軟件領(lǐng)域?qū)ζ渲幸恍┚哂幸瞬毮康姆茨J?如分析停頓、Blob、意大利面條式代碼和“煙囪”系統(tǒng))已耳熟能詳。表 2 提供了一些這些示例的概述,這些示例均摘自 Brown 等的關(guān)于反模式的書中(有關(guān)更多信息,請(qǐng)參閱參考資料部分)。表 2. 已知反模式的示例
錯(cuò)誤類別反模式描述設(shè)計(jì)Blob一個(gè)大型類具有太多的屬性,且是系統(tǒng)的“核心”所在設(shè)計(jì)Poltergeists非必要類且抽象過多結(jié)構(gòu)意大利面條式代碼程序代碼沒有結(jié)構(gòu)(很多 goto 語句)結(jié)構(gòu)“煙囪”系統(tǒng)應(yīng)用程序是唯一的也是孤立的技術(shù)Wolf ticket聲明具有開放性的技術(shù)并與標(biāo)準(zhǔn)測(cè)試不相符技術(shù)不斷退化模式試圖使用最新的版本重用剪切與粘貼軟件錯(cuò)誤被復(fù)制重用Golden hammer強(qiáng)制所有內(nèi)容適應(yīng)一個(gè)選定的工具
反模式為什么重要?反模式是用于防止問題的工具,可在問題出現(xiàn)之前對(duì)其進(jìn)行標(biāo)識(shí),并能提供關(guān)于如何防止其發(fā)生的知識(shí)。通過將錯(cuò)誤原因正式地系統(tǒng)化,我們可以更輕易對(duì)其加以理解。一旦出現(xiàn)問題,反模式可以提供幫助,能說明如何從其進(jìn)行恢復(fù)。
簡(jiǎn)要總結(jié)一下,反模式包括以下元素:
  • 關(guān)于不能工作的方案的記錄
  • 常見術(shù)語表
  • 具體的修復(fù)方法
  • 環(huán)境的描述和備選解決方案
  • 可能成為將來的反模式的熱門解決方案
圖 1 說明了模式和反模式之間的區(qū)別。模式從試圖解決的問題開始,記錄針對(duì)此問題的可重復(fù)成功解決方案。此解決方案可帶來一些好處、相應(yīng)的結(jié)果以及可能會(huì)有一些問題。反模式說明對(duì)效率具有負(fù)面影響的常用的問題解決方案。它描述導(dǎo)致出現(xiàn)問題的原因,并說明如何防止或?qū)鉀Q方案進(jìn)行修正。解析SOA反模式(1)圖 1. 模式與反模式(摘自 Brown 等的“Antipatterns: Refactoring Software, Architectures, and PRojects in Crisis”) QQread.com 推出各大專業(yè)服務(wù)器評(píng)測(cè) linux服務(wù)器的安全性能 SUN服務(wù)器 HP服務(wù)器 DELL服務(wù)器 IBM服務(wù)器 聯(lián)想服務(wù)器 浪潮服務(wù)器 曙光服務(wù)器 同方服務(wù)器 華碩服務(wù)器 寶德服務(wù)器 了解不同的面向服務(wù)的體系結(jié)構(gòu) (SOA) 反模式,這些反模式對(duì)通常出現(xiàn)的會(huì)產(chǎn)生確定性負(fù)面結(jié)果的情形或解決方案進(jìn)行了描述。隨著越來越多的企業(yè)開始大舉從 Web 服務(wù)轉(zhuǎn)向 SOA,引入、采用和成功實(shí)現(xiàn) SOA 方面的各種障礙變得越來越明顯。其中一些障礙與導(dǎo)致過去的要害活動(dòng)失敗的因素類似;而其他障礙則是 SOA 特有的。對(duì)這些障礙和最差實(shí)踐進(jìn)行記錄,將幫助顧問、架構(gòu)師和專業(yè)人員不再犯同樣的錯(cuò)誤,并學(xué)習(xí)如何避免這些問題的發(fā)生。此處匯集和說明的反模式是由作者通過作為 IBM 架構(gòu)師的個(gè)人經(jīng)驗(yàn)、研究過去和當(dāng)前的 SOA 應(yīng)用案例以及通過分析那些參與客戶 SOA 應(yīng)用的技術(shù)先驅(qū)提供的信息而得到的。 模式與反模式“示例不是另一種學(xué)習(xí)的方法,而是學(xué)習(xí)的唯一方法。”——阿爾貝特•愛因斯坦模式和模式語言捕捉并正式地將良好設(shè)計(jì)和基于經(jīng)驗(yàn)的最佳實(shí)踐系統(tǒng)化,以供其他人員對(duì)其進(jìn)行重用。它們成功而清楚地表述了常見問題及其解決方案。總的來說,常見概念、描述這些概念的詞匯以及將其聯(lián)系在一起的語言是所有采用這些設(shè)計(jì)和實(shí)踐的學(xué)科和領(lǐng)域的基礎(chǔ)。Christopher Alexander 關(guān)于建筑物和城市設(shè)計(jì)的研究通常被認(rèn)為是基于模式的思維最早的成果(請(qǐng)參閱參考資料)。他提出了術(shù)語“模式語言”,以此代表他認(rèn)為人類進(jìn)行設(shè)計(jì)的能力和使用語言的能力都是天生的這一信念。很多學(xué)科都在使用模式和模式語言的概念,包括從生理學(xué)和流程到項(xiàng)目治理和軟件工程等領(lǐng)域。在 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides(經(jīng)常將他們稱為 Gang of Four)的“Design Patterns: Elements of Reusable Object-Oriented Software”一書出版后,軟件設(shè)計(jì)模式得到了廣泛的認(rèn)可和使用。軟件社區(qū)目前正使用模式來解決在軟件生命周期中碰到的不斷重復(fù)的問題,包括軟件體系結(jié)構(gòu)和設(shè)計(jì),以及近來的軟件開發(fā)流程和拓?fù)洹_@些模式全面捕捉了一個(gè)知識(shí)體系,以標(biāo)識(shí)我們對(duì)可以實(shí)現(xiàn)設(shè)計(jì)良好的軟件解決方案的結(jié)構(gòu)和機(jī)制的理解。模式經(jīng)常被定義為“泛型化的、命名的問題到解決方案的映射”。它捕捉在特定環(huán)境中重復(fù)出現(xiàn)的問題的成功解決方案。通常使用與表 1“模式模板”中描述的模板類似的模板來記錄軟件模式。表 1. 模式模板內(nèi)容說明名稱:用于進(jìn)行標(biāo)識(shí)的名稱問題:在領(lǐng)域中重復(fù)出現(xiàn)的問題解決方案:該問題的最佳實(shí)踐解決方案結(jié)果:所建議的解決方案的優(yōu)點(diǎn)和缺點(diǎn)示例一些已經(jīng)應(yīng)用了所建議的解決方案的示例軟件模式提供了一個(gè)在架構(gòu)師和設(shè)計(jì)人員中捕捉知識(shí)和經(jīng)驗(yàn)的機(jī)制。它們提供了一種公共語言,可促進(jìn)對(duì)其他地方成功應(yīng)用的方法的重用,從而為軟件項(xiàng)目帶來以下方面的好處:風(fēng)險(xiǎn)更低、質(zhì)量更好且交付時(shí)間更短。而在另一方面,反模式則記錄出現(xiàn)錯(cuò)誤的情況。對(duì)數(shù)百個(gè)軟件開發(fā)項(xiàng)目的各種調(diào)查勿庸置疑地證實(shí)了軟件開發(fā)會(huì)出現(xiàn)錯(cuò)誤(實(shí)際上經(jīng)常是這樣)。研究表明每六個(gè)項(xiàng)目中就有五個(gè)會(huì)不成功:交付遠(yuǎn)遠(yuǎn)超過預(yù)期預(yù)算、嚴(yán)重滯后或被取消。這就表明可能(至少)值得投入精力研究一下老是失敗而很少成功的原因(注重 Bitter Java 的作者 Bruce Tate 在他的 developerWorks 文章中說明了為什么反模式是設(shè)計(jì)模式的必要和互補(bǔ)的同伴——有關(guān)更多信息,請(qǐng)參閱參考資料)。
應(yīng)該對(duì)這些重復(fù)失敗的軟件開發(fā)項(xiàng)目或“反解決方案”加以研究,以收集關(guān)于出現(xiàn)了什么問題以及為什么會(huì)這樣的有用知識(shí)。很顯然,只對(duì)錯(cuò)誤的原因進(jìn)行分類并不一定非常有用,而還應(yīng)研究如何加以避免以及出現(xiàn)時(shí)如何恢復(fù)。系統(tǒng)化后,這個(gè)知識(shí)集合可以提供軟件模型的有價(jià)值的擴(kuò)展(歸類為反模式)。反模式 使用非常頻繁,但主要是問題的無效解決方案。這個(gè)術(shù)語最初是用于指示設(shè)計(jì)模式出現(xiàn)了錯(cuò)誤。與模式類似,反模式的使用也擴(kuò)展到了軟件開發(fā)的各個(gè)階段,并深入到了其他領(lǐng)域中。反模式記錄常見的對(duì)效率有負(fù)面影響的重復(fù)解決方案。它們通常捕捉重構(gòu)解決方案描述,說明如何更改反模式,以得到更為穩(wěn)定的解決方案。反模式通常使用模板進(jìn)行描述,在其中標(biāo)識(shí)癥狀、結(jié)果、根本原因和可能的解決方案。盡管與模式相比,反模式的研究并不很廣泛,相關(guān)文檔也不多,但軟件領(lǐng)域?qū)ζ渲幸恍┚哂幸瞬毮康姆茨J?如分析停頓、Blob、意大利面條式代碼和“煙囪”系統(tǒng))已耳熟能詳。表 2 提供了一些這些示例的概述,這些示例均摘自 Brown 等的關(guān)于反模式的書中(有關(guān)更多信息,請(qǐng)參閱參考資料部分)。表 2. 已知反模式的示例
錯(cuò)誤類別反模式描述設(shè)計(jì)Blob一個(gè)大型類具有太多的屬性,且是系統(tǒng)的“核心”所在設(shè)計(jì)Poltergeists非必要類且抽象過多結(jié)構(gòu)意大利面條式代碼程序代碼沒有結(jié)構(gòu)(很多 goto 語句)結(jié)構(gòu)“煙囪”系統(tǒng)應(yīng)用程序是唯一的也是孤立的技術(shù)Wolf ticket聲明具有開放性的技術(shù)并與標(biāo)準(zhǔn)測(cè)試不相符技術(shù)不斷退化模式試圖使用最新的版本重用剪切與粘貼軟件錯(cuò)誤被復(fù)制重用Golden hammer強(qiáng)制所有內(nèi)容適應(yīng)一個(gè)選定的工具
反模式為什么重要?反模式是用于防止問題的工具,可在問題出現(xiàn)之前對(duì)其進(jìn)行標(biāo)識(shí),并能提供關(guān)于如何防止其發(fā)生的知識(shí)。通過將錯(cuò)誤原因正式地系統(tǒng)化,我們可以更輕易對(duì)其加以理解。一旦出現(xiàn)問題,反模式可以提供幫助,能說明如何從其進(jìn)行恢復(fù)。 簡(jiǎn)要總結(jié)一下,反模式包括以下元素:
  • 關(guān)于不能工作的方案的記錄
  • 常見術(shù)語表
  • 具體的修復(fù)方法
  • 環(huán)境的描述和備選解決方案
  • 可能成為將來的反模式的熱門解決方案
圖 1 說明了模式和反模式之間的區(qū)別。模式從試圖解決的問題開始,記錄針對(duì)此問題的可重復(fù)成功解決方案。此解決方案可帶來一些好處、相應(yīng)的結(jié)果以及可能會(huì)有一些問題。反模式說明對(duì)效率具有負(fù)面影響的常用的問題解決方案。它描述導(dǎo)致出現(xiàn)問題的原因,并說明如何防止或?qū)鉀Q方案進(jìn)行修正。解析SOA反模式(1)圖 1. 模式與反模式(摘自 Brown 等的“AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis”)了解不同的面向服務(wù)的體系結(jié)構(gòu) (SOA) 反模式,這些反模式對(duì)通常出現(xiàn)的會(huì)產(chǎn)生確定性負(fù)面結(jié)果的情形或解決方案進(jìn)行了描述。隨著越來越多的企業(yè)開始大舉從 Web 服務(wù)轉(zhuǎn)向 SOA,引入、采用和成功實(shí)現(xiàn) SOA 方面的各種障礙變得越來越明顯。其中一些障礙與導(dǎo)致過去的要害活動(dòng)失敗的因素類似;而其他障礙則是 SOA 特有的。對(duì)這些障礙和最差實(shí)踐進(jìn)行記錄,將幫助顧問、架構(gòu)師和專業(yè)人員不再犯同樣的錯(cuò)誤,并學(xué)習(xí)如何避免這些問題的發(fā)生。此處匯集和說明的反模式是由作者通過作為 IBM 架構(gòu)師的個(gè)人經(jīng)驗(yàn)、研究過去和當(dāng)前的 SOA 應(yīng)用案例以及通過分析那些參與客戶 SOA 應(yīng)用的技術(shù)先驅(qū)提供的信息而得到的。 模式與反模式“示例不是另一種學(xué)習(xí)的方法,而是學(xué)習(xí)的唯一方法。”——阿爾貝特•愛因斯坦模式和模式語言捕捉并正式地將良好設(shè)計(jì)和基于經(jīng)驗(yàn)的最佳實(shí)踐系統(tǒng)化,以供其他人員對(duì)其進(jìn)行重用。它們成功而清楚地表述了常見問題及其解決方案。總的來說,常見概念、描述這些概念的詞匯以及將其聯(lián)系在一起的語言是所有采用這些設(shè)計(jì)和實(shí)踐的學(xué)科和領(lǐng)域的基礎(chǔ)。Christopher Alexander 關(guān)于建筑物和城市設(shè)計(jì)的研究通常被認(rèn)為是基于模式的思維最早的成果(請(qǐng)參閱參考資料)。他提出了術(shù)語“模式語言”,以此代表他認(rèn)為人類進(jìn)行設(shè)計(jì)的能力和使用語言的能力都是天生的這一信念。很多學(xué)科都在使用模式和模式語言的概念,包括從生理學(xué)和流程到項(xiàng)目治理和軟件工程等領(lǐng)域。在 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides(經(jīng)常將他們稱為 Gang of Four)的“Design Patterns: Elements of Reusable Object-Oriented Software”一書出版后,軟件設(shè)計(jì)模式得到了廣泛的認(rèn)可和使用。軟件社區(qū)目前正使用模式來解決在軟件生命周期中碰到的不斷重復(fù)的問題,包括軟件體系結(jié)構(gòu)和設(shè)計(jì),以及近來的軟件開發(fā)流程和拓?fù)洹_@些模式全面捕捉了一個(gè)知識(shí)體系,以標(biāo)識(shí)我們對(duì)可以實(shí)現(xiàn)設(shè)計(jì)良好的軟件解決方案的結(jié)構(gòu)和機(jī)制的理解。模式經(jīng)常被定義為“泛型化的、命名的問題到解決方案的映射”。它捕捉在特定環(huán)境中重復(fù)出現(xiàn)的問題的成功解決方案。通常使用與表 1“模式模板”中描述的模板類似的模板來記錄軟件模式。表 1. 模式模板內(nèi)容說明名稱:用于進(jìn)行標(biāo)識(shí)的名稱問題:在領(lǐng)域中重復(fù)出現(xiàn)的問題解決方案:該問題的最佳實(shí)踐解決方案結(jié)果:所建議的解決方案的優(yōu)點(diǎn)和缺點(diǎn)示例一些已經(jīng)應(yīng)用了所建議的解決方案的示例軟件模式提供了一個(gè)在架構(gòu)師和設(shè)計(jì)人員中捕捉知識(shí)和經(jīng)驗(yàn)的機(jī)制。它們提供了一種公共語言,可促進(jìn)對(duì)其他地方成功應(yīng)用的方法的重用,從而為軟件項(xiàng)目帶來以下方面的好處:風(fēng)險(xiǎn)更低、質(zhì)量更好且交付時(shí)間更短。而在另一方面,反模式則記錄出現(xiàn)錯(cuò)誤的情況。對(duì)數(shù)百個(gè)軟件開發(fā)項(xiàng)目的各種調(diào)查勿庸置疑地證實(shí)了軟件開發(fā)會(huì)出現(xiàn)錯(cuò)誤(實(shí)際上經(jīng)常是這樣)。研究表明每六個(gè)項(xiàng)目中就有五個(gè)會(huì)不成功:交付遠(yuǎn)遠(yuǎn)超過預(yù)期預(yù)算、嚴(yán)重滯后或被取消。這就表明可能(至少)值得投入精力研究一下老是失敗而很少成功的原因(注重 Bitter Java 的作者 Bruce Tate 在他的 developerWorks 文章中說明了為什么反模式是設(shè)計(jì)模式的必要和互補(bǔ)的同伴——有關(guān)更多信息,請(qǐng)參閱參考資料)。
應(yīng)該對(duì)這些重復(fù)失敗的軟件開發(fā)項(xiàng)目或“反解決方案”加以研究,以收集關(guān)于出現(xiàn)了什么問題以及為什么會(huì)這樣的有用知識(shí)。很顯然,只對(duì)錯(cuò)誤的原因進(jìn)行分類并不一定非常有用,而還應(yīng)研究如何加以避免以及出現(xiàn)時(shí)如何恢復(fù)。系統(tǒng)化后,這個(gè)知識(shí)集合可以提供軟件模型的有價(jià)值的擴(kuò)展(歸類為反模式)。反模式 使用非常頻繁,但主要是問題的無效解決方案。這個(gè)術(shù)語最初是用于指示設(shè)計(jì)模式出現(xiàn)了錯(cuò)誤。與模式類似,反模式的使用也擴(kuò)展到了軟件開發(fā)的各個(gè)階段,并深入到了其他領(lǐng)域中。反模式記錄常見的對(duì)效率有負(fù)面影響的重復(fù)解決方案。它們通常捕捉重構(gòu)解決方案描述,說明如何更改反模式,以得到更為穩(wěn)定的解決方案。反模式通常使用模板進(jìn)行描述,在其中標(biāo)識(shí)癥狀、結(jié)果、根本原因和可能的解決方案。盡管與模式相比,反模式的研究并不很廣泛,相關(guān)文檔也不多,但軟件領(lǐng)域?qū)ζ渲幸恍┚哂幸瞬毮康姆茨J?如分析停頓、Blob、意大利面條式代碼和“煙囪”系統(tǒng))已耳熟能詳。表 2 提供了一些這些示例的概述,這些示例均摘自 Brown 等的關(guān)于反模式的書中(有關(guān)更多信息,請(qǐng)參閱參考資料部分)。表 2. 已知反模式的示例
錯(cuò)誤類別反模式描述設(shè)計(jì)Blob一個(gè)大型類具有太多的屬性,且是系統(tǒng)的“核心”所在設(shè)計(jì)Poltergeists非必要類且抽象過多結(jié)構(gòu)意大利面條式代碼程序代碼沒有結(jié)構(gòu)(很多 goto 語句)結(jié)構(gòu)“煙囪”系統(tǒng)應(yīng)用程序是唯一的也是孤立的技術(shù)Wolf ticket聲明具有開放性的技術(shù)并與標(biāo)準(zhǔn)測(cè)試不相符技術(shù)不斷退化模式試圖使用最新的版本重用剪切與粘貼軟件錯(cuò)誤被復(fù)制重用Golden hammer強(qiáng)制所有內(nèi)容適應(yīng)一個(gè)選定的工具
反模式為什么重要?反模式是用于防止問題的工具,可在問題出現(xiàn)之前對(duì)其進(jìn)行標(biāo)識(shí),并能提供關(guān)于如何防止其發(fā)生的知識(shí)。通過將錯(cuò)誤原因正式地系統(tǒng)化,我們可以更輕易對(duì)其加以理解。一旦出現(xiàn)問題,反模式可以提供幫助,能說明如何從其進(jìn)行恢復(fù)。 簡(jiǎn)要總結(jié)一下,反模式包括以下元素:
  • 關(guān)于不能工作的方案的記錄
  • 常見術(shù)語表
  • 具體的修復(fù)方法
  • 環(huán)境的描述和備選解決方案
  • 可能成為將來的反模式的熱門解決方案
圖 1 說明了模式和反模式之間的區(qū)別。模式從試圖解決的問題開始,記錄針對(duì)此問題的可重復(fù)成功解決方案。此解決方案可帶來一些好處、相應(yīng)的結(jié)果以及可能會(huì)有一些問題。反模式說明對(duì)效率具有負(fù)面影響的常用的問題解決方案。它描述導(dǎo)致出現(xiàn)問題的原因,并說明如何防止或?qū)鉀Q方案進(jìn)行修正。解析SOA反模式(1)圖 1. 模式與反模式(摘自 Brown 等的“AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis”) QQread.com 推出各大專業(yè)服務(wù)器評(píng)測(cè) Linux服務(wù)器的安全性能 SUN服務(wù)器 HP服務(wù)器 DELL服務(wù)器 IBM服務(wù)器 聯(lián)想服務(wù)器 浪潮服務(wù)器 曙光服務(wù)器 同方服務(wù)器 華碩服務(wù)器 寶德服務(wù)器 了解不同的面向服務(wù)的體系結(jié)構(gòu) (SOA) 反模式,這些反模式對(duì)通常出現(xiàn)的會(huì)產(chǎn)生確定性負(fù)面結(jié)果的情形或解決方案進(jìn)行了描述。隨著越來越多的企業(yè)開始大舉從 Web 服務(wù)轉(zhuǎn)向 SOA,引入、采用和成功實(shí)現(xiàn) SOA 方面的各種障礙變得越來越明顯。其中一些障礙與導(dǎo)致過去的要害活動(dòng)失敗的因素類似;而其他障礙則是 SOA 特有的。對(duì)這些障礙和最差實(shí)踐進(jìn)行記錄,將幫助顧問、架構(gòu)師和專業(yè)人員不再犯同樣的錯(cuò)誤,并學(xué)習(xí)如何避免這些問題的發(fā)生。此處匯集和說明的反模式是由作者通過作為 IBM 架構(gòu)師的個(gè)人經(jīng)驗(yàn)、研究過去和當(dāng)前的 SOA 應(yīng)用案例以及通過分析那些參與客戶 SOA 應(yīng)用的技術(shù)先驅(qū)提供的信息而得到的。 模式與反模式“示例不是另一種學(xué)習(xí)的方法,而是學(xué)習(xí)的唯一方法。”——阿爾貝特•愛因斯坦模式和模式語言捕捉并正式地將良好設(shè)計(jì)和基于經(jīng)驗(yàn)的最佳實(shí)踐系統(tǒng)化,以供其他人員對(duì)其進(jìn)行重用。它們成功而清楚地表述了常見問題及其解決方案。總的來說,常見概念、描述這些概念的詞匯以及將其聯(lián)系在一起的語言是所有采用這些設(shè)計(jì)和實(shí)踐的學(xué)科和領(lǐng)域的基礎(chǔ)。Christopher Alexander 關(guān)于建筑物和城市設(shè)計(jì)的研究通常被認(rèn)為是基于模式的思維最早的成果(請(qǐng)參閱參考資料)。他提出了術(shù)語“模式語言”,以此代表他認(rèn)為人類進(jìn)行設(shè)計(jì)的能力和使用語言的能力都是天生的這一信念。很多學(xué)科都在使用模式和模式語言的概念,包括從生理學(xué)和流程到項(xiàng)目治理和軟件工程等領(lǐng)域。在 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides(經(jīng)常將他們稱為 Gang of Four)的“Design Patterns: Elements of Reusable Object-Oriented Software”一書出版后,軟件設(shè)計(jì)模式得到了廣泛的認(rèn)可和使用。軟件社區(qū)目前正使用模式來解決在軟件生命周期中碰到的不斷重復(fù)的問題,包括軟件體系結(jié)構(gòu)和設(shè)計(jì),以及近來的軟件開發(fā)流程和拓?fù)洹_@些模式全面捕捉了一個(gè)知識(shí)體系,以標(biāo)識(shí)我們對(duì)可以實(shí)現(xiàn)設(shè)計(jì)良好的軟件解決方案的結(jié)構(gòu)和機(jī)制的理解。模式經(jīng)常被定義為“泛型化的、命名的問題到解決方案的映射”。它捕捉在特定環(huán)境中重復(fù)出現(xiàn)的問題的成功解決方案。通常使用與表 1“模式模板”中描述的模板類似的模板來記錄軟件模式。表 1. 模式模板內(nèi)容說明名稱:用于進(jìn)行標(biāo)識(shí)的名稱問題:在領(lǐng)域中重復(fù)出現(xiàn)的問題解決方案:該問題的最佳實(shí)踐解決方案結(jié)果:所建議的解決方案的優(yōu)點(diǎn)和缺點(diǎn)示例一些已經(jīng)應(yīng)用了所建議的解決方案的示例
軟件模式提供了一個(gè)在架構(gòu)師和設(shè)計(jì)人員中捕捉知識(shí)和經(jīng)驗(yàn)的機(jī)制。它們提供了一種公共語言,可促進(jìn)對(duì)其他地方成功應(yīng)用的方法的重用,從而為軟件項(xiàng)目帶來以下方面的好處:風(fēng)險(xiǎn)更低、質(zhì)量更好且交付時(shí)間更短。而在另一方面,反模式則記錄出現(xiàn)錯(cuò)誤的情況。對(duì)數(shù)百個(gè)軟件開發(fā)項(xiàng)目的各種調(diào)查勿庸置疑地證實(shí)了軟件開發(fā)會(huì)出現(xiàn)錯(cuò)誤(實(shí)際上經(jīng)常是這樣)。研究表明每六個(gè)項(xiàng)目中就有五個(gè)會(huì)不成功:交付遠(yuǎn)遠(yuǎn)超過預(yù)期預(yù)算、嚴(yán)重滯后或被取消。這就表明可能(至少)值得投入精力研究一下老是失敗而很少成功的原因(注重 Bitter Java 的作者 Bruce Tate 在他的 developerWorks 文章中說明了為什么反模式是設(shè)計(jì)模式的必要和互補(bǔ)的同伴——有關(guān)更多信息,請(qǐng)參閱參考資料)。應(yīng)該對(duì)這些重復(fù)失敗的軟件開發(fā)項(xiàng)目或“反解決方案”加以研究,以收集關(guān)于出現(xiàn)了什么問題以及為什么會(huì)這樣的有用知識(shí)。很顯然,只對(duì)錯(cuò)誤的原因進(jìn)行分類并不一定非常有用,而還應(yīng)研究如何加以避免以及出現(xiàn)時(shí)如何恢復(fù)。系統(tǒng)化后,這個(gè)知識(shí)集合可以提供軟件模型的有價(jià)值的擴(kuò)展(歸類為反模式)。反模式 使用非常頻繁,但主要是問題的無效解決方案。這個(gè)術(shù)語最初是用于指示設(shè)計(jì)模式出現(xiàn)了錯(cuò)誤。與模式類似,反模式的使用也擴(kuò)展到了軟件開發(fā)的各個(gè)階段,并深入到了其他領(lǐng)域中。反模式記錄常見的對(duì)效率有負(fù)面影響的重復(fù)解決方案。它們通常捕捉重構(gòu)解決方案描述,說明如何更改反模式,以得到更為穩(wěn)定的解決方案。反模式通常使用模板進(jìn)行描述,在其中標(biāo)識(shí)癥狀、結(jié)果、根本原因和可能的解決方案。盡管與模式相比,反模式的研究并不很廣泛,相關(guān)文檔也不多,但軟件領(lǐng)域?qū)ζ渲幸恍┚哂幸瞬毮康姆茨J?如分析停頓、Blob、意大利面條式代碼和“煙囪”系統(tǒng))已耳熟能詳。表 2 提供了一些這些示例的概述,這些示例均摘自 Brown 等的關(guān)于反模式的書中(有關(guān)更多信息,請(qǐng)參閱參考資料部分)。表 2. 已知反模式的示例
錯(cuò)誤類別反模式描述設(shè)計(jì)Blob一個(gè)大型類具有太多的屬性,且是系統(tǒng)的“核心”所在設(shè)計(jì)Poltergeists非必要類且抽象過多結(jié)構(gòu)意大利面條式代碼程序代碼沒有結(jié)構(gòu)(很多 goto 語句)結(jié)構(gòu)“煙囪”系統(tǒng)應(yīng)用程序是唯一的也是孤立的技術(shù)Wolf ticket聲明具有開放性的技術(shù)并與標(biāo)準(zhǔn)測(cè)試不相符技術(shù)不斷退化模式試圖使用最新的版本重用剪切與粘貼軟件錯(cuò)誤被復(fù)制重用Golden hammer強(qiáng)制所有內(nèi)容適應(yīng)一個(gè)選定的工具
反模式為什么重要?反模式是用于防止問題的工具,可在問題出現(xiàn)之前對(duì)其進(jìn)行標(biāo)識(shí),并能提供關(guān)于如何防止其發(fā)生的知識(shí)。通過將錯(cuò)誤原因正式地系統(tǒng)化,我們可以更輕易對(duì)其加以理解。一旦出現(xiàn)問題,反模式可以提供幫助,能說明如何從其進(jìn)行恢復(fù)。 簡(jiǎn)要總結(jié)一下,反模式包括以下元素:
  • 關(guān)于不能工作的方案的記錄
  • 常見術(shù)語表
  • 具體的修復(fù)方法
  • 環(huán)境的描述和備選解決方案
  • 可能成為將來的反模式的熱門解決方案
圖 1 說明了模式和反模式之間的區(qū)別。模式從試圖解決的問題開始,記錄針對(duì)此問題的可重復(fù)成功解決方案。此解決方案可帶來一些好處、相應(yīng)的結(jié)果以及可能會(huì)有一些問題。反模式說明對(duì)效率具有負(fù)面影響的常用的問題解決方案。它描述導(dǎo)致出現(xiàn)問題的原因,并說明如何防止或?qū)鉀Q方案進(jìn)行修正。解析SOA反模式(1)圖 1. 模式與反模式(摘自 Brown 等的“AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis”)

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 淳安县| 玉林市| 通城县| 卢氏县| 金溪县| 登封市| 安顺市| 邹平县| 武山县| 宁陵县| 苍梧县| 涡阳县| 常德市| 雷波县| 榆中县| 凤山县| 张家界市| 小金县| 梁平县| 周宁县| 枣强县| 桑植县| 高邑县| 那曲县| 孟州市| 黄大仙区| 都江堰市| 视频| 长沙县| 宣威市| 阿图什市| 邢台县| 宁海县| 福泉市| 左云县| 竹山县| 怀集县| 壶关县| 唐海县| 绥滨县| 罗山县|