一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

有效進行軟件重用的小提示

  英文原文:Tips for Effective Software Reuse

  作者:Vijay Narayanan 譯者:王麗娟 發(fā)布于 2009年12月30日

  構(gòu)建軟件的每個人都會告訴你,實現(xiàn)軟件重用極具挑戰(zhàn)性。大規(guī)模、系統(tǒng)級的重用更是如此。開發(fā)人員要在最后期限內(nèi)滿足需求、交付功能,同時還要優(yōu)先保證重用就非常難了。如果你是團隊領(lǐng)導(dǎo),這個處境只會變本加厲——你必須滿足贊助商的需求,在預(yù)算內(nèi)按時交付功能,還要管理開發(fā)團隊。重用,重用什么?

  我參與了幾個項目,團隊的生產(chǎn)率都非常高,我認(rèn)識到軟件重用是可行的。這并不是說勉強做到重用很容易、有方法可循。抑制重用的一個關(guān)鍵因素是,從組織的政治、文化背景來說缺乏領(lǐng)導(dǎo)力和遠見,而且沒有與業(yè)務(wù)贊助商需要的內(nèi)容相結(jié)合。有些重用的嘗試以失敗而告終,是因為他們太過雄心勃勃了,為了設(shè)計完美的內(nèi)容而花費大量精力去做大規(guī)模的先行設(shè)計。還有其它一些失敗的原因,比如缺乏靈活的設(shè)計、規(guī)劃不充分,或是資金問題。溝通效率和對現(xiàn)有可重用軟件資產(chǎn)的了解也是一個關(guān)鍵因素。

  本文將根據(jù)我從幾個項目中總結(jié)的經(jīng)驗,介紹一些成功進行系統(tǒng)級重用的小提示。這些提示并非盡善盡美,我只是想讓開發(fā)人員和團隊領(lǐng)導(dǎo)能對各種策略(技術(shù)和非技術(shù)的)有所理解,從而成功地進行系統(tǒng)級重用。

  提示1——關(guān)注領(lǐng)域特定的軟件資產(chǎn)

  業(yè)務(wù)資產(chǎn)能讓你的應(yīng)用或產(chǎn)品線獨樹一幟,讓你的組織與眾不同,最終讓你從競爭對手中脫穎而出。開發(fā)、發(fā)布、迭代改進領(lǐng)域相關(guān)軟件資產(chǎn)的速度越快,你就越能迅速地滿足不斷變化的業(yè)務(wù)需求、讓客戶滿意。如果你只關(guān)注于構(gòu)建可重用的業(yè)務(wù)資產(chǎn),那這不僅對業(yè)務(wù)交付有好處,同時還能在未來的項目中進行重用。

  開發(fā)人員往往滿懷熱情地編寫技術(shù)方案,專注于可重用組件和服務(wù)的構(gòu)建,而解決的問題卻在公司內(nèi)部或開源社區(qū)有解決方案。既然你非要這么做,那你就必須盡量避免為已有的解決方案編寫新的代碼。這不正是軟件重用嗎?

  提示2——正確命名軟件資產(chǎn)

  無論你是給方法、類、組件、庫命名,還是給服務(wù)命名,要想取個好名字,首先得想清楚軟件的目的和功能。合適的名字可以幫助我們找到已有的可重用軟件資產(chǎn)。另外,在重構(gòu)已有軟件資產(chǎn)、使其更容易被重用時,這一點也卓有成效。

  當(dāng)你發(fā)現(xiàn)doEverything()這樣的方法或類似于SendDataToXYZSystemService的服務(wù)時,花點兒時間給它們重新命名。評估應(yīng)用的現(xiàn)有功能時,不好的名字常常會花費你更多的時間。如果名字太過愚蠢,你可能就識別不出已有的功能,而去創(chuàng)建一個重復(fù)的。

  除了繼續(xù)遵守一般的準(zhǔn)則外,好名字還應(yīng)該與問題領(lǐng)域聯(lián)系在一起——基于業(yè)務(wù)功能給軟件資產(chǎn)命名是個不錯的主意。如果你要將更新的訂單內(nèi)容發(fā)布到另一個系統(tǒng)去,那為什么不用PublishOrderUpdates替代SendDataToABCSystem這個名字呢?資產(chǎn)名稱全都簡單、清晰、準(zhǔn)確時,你會驚奇地發(fā)現(xiàn)這很有利于你重用這些資產(chǎn)。

  提示3——不確定它們是否可重用?那就晚點兒再動手

  領(lǐng)域中真正有趣的問題是需要經(jīng)過深思熟慮的,需要與項目利益相關(guān)者協(xié)作,還需要多次迭代和最終用戶的反饋。這一要求對充分進行系統(tǒng)級重用來說是非常寶貴的。如果僅僅因為看起來可重用,那它實際上也許并不可重用……至少目前還不是。考慮一下這些問題:

  • 功能在當(dāng)前項目之外是否真正可重用?
  • 將某些內(nèi)容變?yōu)榭芍赜玫模欠駮o現(xiàn)有的設(shè)計帶來重大變化?
  • 是否理解了功能相關(guān)的問題域?
  • 隨著時間的推移,這個功能會怎樣演進?

  當(dāng)你對潛在可重用資產(chǎn)的疑問多于答案時,不要急著概括、增加抽象層次或產(chǎn)品差異性。相反,著眼于那些只針對當(dāng)前迭代或發(fā)布的業(yè)務(wù)需求和實現(xiàn)。正是因為你可能不清楚未知的內(nèi)容,所以將想法或功能標(biāo)記為可重用備選項,但不一定非要使其可重用。

  在《軟件架構(gòu)師應(yīng)該知道的97件事》中,Kevlin Henney在其中一條里提到了“通用之前先簡單,重用之前先可用”('Simplicity Before Generality, Use Before Reuse.')這個概念。請記住,在項目的整個生命周期中,結(jié)合真實用戶的反饋進一步理解領(lǐng)域只會對你有所幫助,而不會影響你的目標(biāo)。

  提示4——迭代演進可重用的資產(chǎn)

  當(dāng)你認(rèn)識到需要可重用的軟件資產(chǎn)時,規(guī)劃實現(xiàn)戰(zhàn)略就很重要了。如果你用大爆炸的方式處理資產(chǎn)實現(xiàn),那你創(chuàng)建的軟件資產(chǎn)最終會脫離項目當(dāng)前的需求;由于要增加設(shè)計、開發(fā)和測試的時間,顯然還會拖延進度。無論哪種方式,你都要花費大量寶貴的資源。

  相反,可以通過多次迭代來演進可重用的資產(chǎn),從而減輕這些風(fēng)險。舉一個可重用資產(chǎn)的例子——給用戶發(fā)通知。我們將該資產(chǎn)命名為Business Notifier。我們提出一個簡單的計劃——通過數(shù)次迭代來逐步實現(xiàn)該資產(chǎn)的一百個附屬功能,而不是一下子就創(chuàng)建出來。

  迭代1:用電子郵件通知用戶預(yù)定的業(yè)務(wù)事件

  迭代2:允許用戶選擇,只接收某些業(yè)務(wù)事件的通知

  迭代3:讓用戶自定義業(yè)務(wù)規(guī)則,繼而生成業(yè)務(wù)事件

  迭代4:通過Web控制臺或即時消息應(yīng)用發(fā)送通知

  迭代5:能讓用戶邀請朋友一起接收通知

  迭代6:將通知和工作流結(jié)合起來,讓支持人員進行審查

  這顯然只是個范例,在特定迭代中加入的功能往往要基于業(yè)務(wù)需求、優(yōu)先級、實現(xiàn)的難易程度和其它因素。比如不再優(yōu)先處理資產(chǎn)時,你可以減少投資,反之亦然。不論構(gòu)建為可重用資產(chǎn)的內(nèi)容是什么,都要在多個迭代中規(guī)劃其發(fā)展演進。這樣,你就可以減少風(fēng)險,保持對業(yè)務(wù)需求的靈活性,還能只創(chuàng)建那些你愿意投資的資 產(chǎn)。

  提示5——保持一致性要比遵循行業(yè)標(biāo)準(zhǔn)更為重要

  跨應(yīng)用創(chuàng)建可重用的軟件組件和服務(wù)時,力爭保持一致性要比符合標(biāo)準(zhǔn)更為重要。如果大量應(yīng)用程序都使用了特定的可重用組件,那你就可以跟往常一樣,將現(xiàn)有接 口作為適配器,讓它在后臺調(diào)用行業(yè)標(biāo)準(zhǔn)的API。不過要注意,我并不是建議你盲目地為那些已經(jīng)有成熟標(biāo)準(zhǔn)的內(nèi)容創(chuàng)建新代碼。

  這與要重用的水平業(yè)務(wù)能力相關(guān)。比如說,你在多個應(yīng)用程序中都需要處理信用卡付款的功能,而在此時又沒有行業(yè)標(biāo)準(zhǔn)。創(chuàng)建應(yīng)用可利用的支付API就很重要, 而不是等待標(biāo)準(zhǔn)奇跡般地出現(xiàn)。第二天,如果出現(xiàn)了一個標(biāo)準(zhǔn),你可以修改現(xiàn)有的實現(xiàn),這不會對你當(dāng)前的應(yīng)用有任何影響。好吧,也許我說得太過輕松了——你可能需要細微的代碼修改和回歸測試。但最起碼你的處境會比較好,不用修改代碼庫中的代碼。

  提示6——進行代碼審查

  代碼審查能最有效地保證可重用資產(chǎn)被正確使用。大多數(shù)時候,為了趕緊發(fā)布產(chǎn)品,開發(fā)人員提交代碼時并不了解其它地方已經(jīng)實現(xiàn)了的功能。由于審查代碼要花費時間、遵循規(guī)則,所以在小規(guī)模內(nèi)這樣做的確是個好主意。關(guān)鍵之所在與其說是代碼質(zhì)量,還不如說是一致性。你可能期望能有一個快速的方法指出哪些資產(chǎn)可重用,將其與代碼中的變化相結(jié)合。我在代碼審查時經(jīng)常會找出新的可重用資產(chǎn)。隨著時間的推移,你會看到多個代碼片段和應(yīng)用功能中存在的模式和重復(fù)的代碼,這對起到增效作用很有幫助。

  當(dāng)你看到重構(gòu)或創(chuàng)建可重用資產(chǎn)的機會時,不要把這些工作跟應(yīng)用代碼的剩余部分摻雜在一起。將它們從源碼和版本控制中分離出來,作為一個獨立的實體。和其它內(nèi)容一樣,這也需要迭代地來完成,也不必在產(chǎn)品的最初版本中就有。隨著資產(chǎn)演進、變得可重用,可以重構(gòu)、把它們放到它們自己的倉庫中,以便更好地管理。主要問題是在它們可重用時把它們移出來。在主干代碼之外對它們進行版本化和演進,以便更容易地在新項目中集成。

  提示7——沒有自動化的回歸測試套件,就不要發(fā)布可重用的軟件資產(chǎn)

  如果你要在可重用軟件資產(chǎn)上押寶,把它推廣到全世界,那你必須要有一套回歸測試套件。為什么呢?沒有回歸測試,現(xiàn)有和潛在的消費者對資產(chǎn)就沒有足夠的信 心。重用的基礎(chǔ)就是不用再次實現(xiàn)已有的內(nèi)容,從而獲得更好的質(zhì)量——較少的錯誤、Bug、不對的需求實現(xiàn)。為了確保能兌現(xiàn)這一承諾,你必須得有完整的自動化回歸測試套件。這不僅有利于當(dāng)前的消費者,對以后的任何消費者也是有用的。

  你可以創(chuàng)建可重用的腳本,完成編譯、執(zhí)行、單元測試和回歸測試的報告。無論你構(gòu)建的是組件還是服務(wù),甚至是業(yè)務(wù)流程,這都是適用的。下一步合乎邏輯的事情就是把這些腳本集成到持續(xù)集成套件中去。

  提示8——理解業(yè)務(wù)需求之后再去說服別人

  大家總想說服開發(fā)人員或開發(fā)經(jīng)理能同意重用軟件資產(chǎn)。但如果你還沒理解業(yè)務(wù)需求就一再地去勸說,成功的可能性并不大。不要試圖去說服,而是傾聽、體會、真正理解需求。弄清楚業(yè)務(wù)需求,然后確定能被利用或開發(fā)的資產(chǎn)。為什么要這么做呢?因為當(dāng)你真正去聽的時候,你可能會發(fā)現(xiàn)現(xiàn)有的資產(chǎn)能完全滿足需求,或者根本不能滿足需求。也許可重用的服務(wù)還需要滿足某個性能指標(biāo)。或者利用現(xiàn)有的服務(wù)會增加進度風(fēng)險。諸如此類。

  關(guān)鍵是現(xiàn)有的資產(chǎn)要適用于眼前的問題。傾聽,評估,如果合適就說服——一定要遵循這個順序

  提示9——盡可能與開發(fā)團隊一起創(chuàng)建可重用的軟件資產(chǎn)

  造成系統(tǒng)級重用失敗的原因各種各樣,其中包括技術(shù)和組織方面的原因。 開發(fā)團隊是可重用資產(chǎn)的潛在用戶,如果沒有來自開發(fā)團隊的支持,你的計劃就不可能取得成功。我經(jīng)常聽到開發(fā)人員對開發(fā)經(jīng)理說,不想重用,也不想開發(fā)可重用的功能,因為他們覺得實現(xiàn)可重用資產(chǎn)與他們無關(guān)。如何解決這個問題呢?不要試圖去說服他們,而是和他們共同創(chuàng)建可重用的資產(chǎn)。

  如果有個需求是通過電子郵件發(fā)送通知,那就和原來的開發(fā)團隊合作,讓他們參與設(shè)計。更好的辦法是讓他們開發(fā)部分或全部的功能。如果他們和你聯(lián)合創(chuàng)建了該資產(chǎn),他們就不會覺得這個資產(chǎn)是強迫他們使用的黑盒子了。他們會在組織里和他們的合作伙伴分享該資產(chǎn),從而幫助你促進重用——你會對此感到驚訝的。

  提示10——從生產(chǎn)支持人員那里獲取可重用資產(chǎn)的需求

  將可重用資產(chǎn)投入生產(chǎn)環(huán)境之前需要做一件事,就是與生產(chǎn)支持人員溝通。讓他們投入進來,分享你的設(shè)計,及早并經(jīng)常獲取他們的反饋。這不僅能讓資產(chǎn)可被支持 (想象一個沒有日志、輔助工具、記錄關(guān)鍵指標(biāo)功能的可重用資產(chǎn)),還能讓你擁有一個有價值的的合作伙伴。生產(chǎn)支持人員很快就會信任你的資產(chǎn)和服務(wù),并要求多個項目都利用這個功能。賣出重用資產(chǎn)是一回事,合作伙伴表示支持又是另一回事。

  結(jié)論

  技術(shù)實踐、協(xié)作和務(wù)實相結(jié)合,可以慢慢擴充你的可重用資產(chǎn)庫。本文介紹的這些小提示都是我在日常工作中為了提高成功率而反復(fù)使用的。我非常想聽聽你在促進有效軟件重用時總結(jié)出的經(jīng)驗,無論它們是否有效。

  英文原文:Tips for Effective Software Reuse

it知識庫有效進行軟件重用的小提示,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 欧美视频在线观看 | 国产高清一区二区 | 婷婷丁香花麻豆 | 精品久久久久久久久久 | 真实国产普通话对白乱子子伦视频 | 色婷婷综合缴情综六月 | 亚洲免费视频一区二区三区 | 国产成人美女福利在线观看 | 欧美99视频 | fefe66免费毛片你懂的 | 国产成人精品系列在线观看 | 伊人成人在线观看 | 日本免费一区二区视频 | 香蕉久久影院 | 亚洲二区在线 | 日日噜噜夜夜狠狠tv视频免费 | 亚洲一卡2卡4卡5卡6卡在线99 | 久久国产精品一区 | 日韩在线二区全免费 | 国产精品综合在线 | 色综合天天综合网站中国 | 久久久久久久久女黄 | 国产亚洲精品九九久在线观看 | 美女全黄网站 | 欧美a级黄色片 | 91精品啪在线观看国产色 | 国产午夜精品久久久久九九 | 欧美中文字幕一二三四区 | 国产精品亚洲第一区焦香 | 天天色天天综合 | 国产精品高清一区二区三区 | 2021国产情侣真实露脸在线 | 亚洲伦理一二三四 | 一级做a爰片性色毛片刺激 一级做a爰片性色毛片黄书 | 精品一二三区 | 亚洲国产精品一区二区三区在线观看 | 六月婷婷综合 | 午夜看片网址 | 国产成人久久精品麻豆二区 | 一区二区三区在线播放视频 | 99精品免费视频 |