iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 16
2
Modern Web

跨平台開發利器- ASP.NET Core 系列 第 16

(Day 16) 敏捷開發不是萬靈丹

  • 分享至 

  • xImage
  •  

『主任知道敏捷開發嗎?』小魏一進辦公室就來問我。
『知道啊!以前在軟件公司帶專案時,還曾經找顧問來帶我們團隊Run敏捷開發。』
『喔,那主任想不想引用敏捷開發在專案上?』
『為什麼會這樣想?』
『上課時,講師提到可以採用敏捷開發的方法來加速專案開發進度。』
『嗯,還有什麼?』
『沒了,然後就談到MVC架構的關注點分離(Separation of Concern,SOC)。也談到關注點分離有助於大型軟體專案的分工開發工作,然後用敏捷開發來改善大型軟體專案,因專案開發組織的龐大,導致開發工作進度不易掌握的問題。』
『關注點分離,是MVC架構的特色之一,但並不是只有MVC架構才有關注點分離,這是一種概念,如果我們用Delphi來開發,也是可以做關注點分離的開發方式,只要我們能夠把系統規劃成彼此間關聯度很小的模組或函數庫,這也就是耦合度微弱的意思,耦合度是種判斷軟體系統各模組間關聯性強弱的一種方式,高耦合度模組的系統會比較難以維護,因為,修改其中一個模組就會連動到其他模組。』
『這耦合度是軟體工程的一種理論,我們在規劃系統時,會儘量規劃成低耦合度的模組,實在緊密耦合的模組就合併成一個模組來設計,這也是大型軟體系統開發時常用的手法。不僅僅敏捷開發而己。』
『MVC架構的關注點分離,也是一種低耦合度的開發方式,Model、View、Controller三者之間,有些關聯,但我們不用對其間如何關聯作處理,只要把正確的程式碼放到適當的位置,其他就靠背後的平台幫我們來完成系統運作。我們只要關注在怎麼把Model設計好,其他,基本上就靠ASP.NET Core來完成了。這樣我們可以用比較少的人力來完成比較多的開發任務。』
『主任講慢點,我要消化一下。那,敏捷開發為什麼那麼多人在談。MVC,若不是要學ASP.NET Core,還真沒聽到人在說。』
『其實,MVC己經成為很多PHP程式開發的基礎,己經是通識,不需要再強調了。很多PHP的程式人員,在使用Laravel這些框架時,就自然的使用了MVC架構,很平常的,只是微軟的Visual Studio的ASP.NET發展到今天才開始主打ASP.NET Core,雖然有一段時間在發展ASP.NET MVC,但大多數開發者還是在走.NET Framework WebForm的老路線,所以,對使用.NET Framework WebForm為主要框架的開發者,MVC就變得很新奇了。而其實,MVC的理論架構在大約40年前被提出了。 』我在Google上查找了MVC的Wiki文章,把MVC理論的出現年度那一段指給小魏看。
『這麼久,為什到現在又會再提出來呢?』
『這個,我猜是因為網站開發成為今天軟體系統開發的主流。』
『怎麼說?』
『前後端開發的模式呀!你沒聽過前端工程師、後端工程師和全端工程師的職務名稱嗎?』
『聽過,這又有什麼關聯呢?』
『其實,在軟體設計的領域,很早以來就有區分前端與後端,前端是和使用者互動的部份,後端控制資料的輸入、處理和輸出,從大型主機時代的終端機開始,前端後端就一直是軟體架構的基礎,到了Client/Server架構,前端後端架構比較明顯一些些,到了網際網路時代,前端後端的分際又有些模糊,所以才會出現全端工程師這種職務。』
『那,這些和敏捷開發有什麼關係?』
『沒有關係。』我給小魏一個大大的笑容。『只是在講一下發展歷程。』
『嚴格來說,敏捷開發也是在這個過程中發展出來的思維。從軟體工程的角度來看,能夠把軟體規劃成低耦合度的模組來開發,就能夠在開發過程中,減少開發團隊間的干擾,對大型軟體專案來講,就能減少開發時間,每個程式設計人員獨立專注開發自己負責的模組,編寫程式碼,進行單元測試,然後交給負責整合的系統人員,整合出完全的系統,這樣子開發大型系統是比較理想的。』
『嗯,那問題是什麼?』
『開發品質一致的程式設人員不好找,不好培養。人都有自己的想法,你忘了昨天你和葉經理的衝突?所謂不想用精靈,要自己刻程式,就是一種程式品質不一致的行為。你刻出來的程式和我刻出來的程式,一定不一樣。所以大型軟體專案一定會引進所謂模版(Template)來做為程式設計人員的指引,大家用模版來開發,減少程式設計人員的個人風格造成的程式品質問題。如果再考慮萬一模組間耦合度太過於緊密時,程式品質引發的互相干擾的問題就會更嚴重,於是大型軟體專案就面臨程式設計人員間的溝通問題及協調問題,當每個模組負責程式編碼的人都說自己是對的,這時,你想想這個軟體專案會變成什麼樣子?』
『一片混亂吧,而且專案成員間的信任度會降低,最後形成壁壘,政治問題日益嚴重。』小魏說。
『是啊!所以,敏捷開發就出現了,這樣你瞭解敏捷開發是為什麼了嗎?』
『大概有點概念,但是,根本在軟體規劃有問題,對吧!主任是這個意思吧?』小魏還滿聰明的,我想這是老闆想留他的主要原因吧,有腦袋的工作者,比較有用。
『對的,如果軟體結構設計不好,模組規劃出來,耦合度高,再怎麼敏捷開發,最後都不敏捷了。所以,你有聽過重構吧?』
『有,講師一直在講重構。』
『好吧,重構其實是指打掉原有模組,重新設計系統模組,為的是規劃出低耦合度的模組結構,用這樣的方式來改善程式人員間的合作關係。』
『講師說的重構是指程式碼的重構,不是主任講的模組重構。』
『嗯,但這樣子的重構是指優化程式碼,不是指對整個軟體專案開發的重構,而敏捷開發的敏捷,並不是指程式碼優化,應該是指軟體專案開發變得敏捷,快速完成。這是兩種不同的意思,我個人以為,台灣現在一些大師級人物,賣弄自己的程式設計能力,各大師自以為是的建構自己的程式風格,形成各門各派的開發方式,其實不是好事,軟體專案就成了各門派較勁的的華山派,你知道六大門派在華山爭的結果是什麼嗎?』
『知道,互相殘殺,以致魔教興起。』
『對囉,也就是這樣子。敏捷開發,並不是解決軟體專案開發進度緩慢的萬靈丹,用的不好,反而會讓軟體專案走向失敗的旅程上。』
『嗯,我大致瞭解了,那主任會怎麼進行?』
『精靈囉,我不是說大型軟體專案多半會發展一套自己的模版來作為程式設計人員的標準,精靈正好就是我們的模版。微軟的神人們弄出來的模版,沒理由不用來加速我們開發系統的進度吧?』
『主任說的是。』
『好吧,今天到這裏,我們該開始正式的工作了。』
『可以請主任指導一下, ASP.NET Core的精靈如何使用嗎?』小魏涎著臉,一付討饒的模樣。
『好吧,我們從如何由SQL Server Database來建造Model的Database first方法來談起吧。』說著, 小魏拉了張子坐到我旁邊,看著我操作的步驟,依樣畫葫蘆地在他筆電上實作。


上一篇
(Day 15) 行百里者半九十
下一篇
(Day 17) 主版網頁(Master Page)的調整
系列文
跨平台開發利器- ASP.NET Core 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言