一、no silver bullet: essence and accidents of software engineering
在fred brooks所寫的這邊文章中,他認為曾經傳說的年代中銀色子彈可以有力針對狼人,是乙個解決問題的良劑。然而,在軟體工程中卻不是如此,軟體工程中有不可避免的諸多問題,主要由複雜性(complexity),軟體整合(conformity),可變性(changeability)和不可見性(invisibility)等組成。
複雜性(complexity)
在硬體發展如此飛快的腳步下,軟體也不敢落後,飛速的發展著。因而對應著使用者各項要求的不斷提高,軟體也逐漸向著複雜性的方向不斷延伸,為適應使用者的 需求。因而,軟體的複雜性不斷體現出來。在軟體中,規模的增加不僅是簡單的新增元件,而是在整個軟體上進行重新新增也相互協調,因而工程量與複雜度也隨著軟體規模的增加而倍數增加。複雜性的提高也將帶來許多問題,如軟體模組間的複雜,將帶來軟體不穩定性的問題;而複雜軟體模組之間的相互呼叫與協調也將變得難以進行;而在軟體複雜的同時軟體專案組規模也變大,在人員的增加上之下,也像軟體模組間一樣,人員也很難達到協調同步的地步。
軟體整合(conformity)
大型的軟體不可能有一人獨立完成,必須由軟體開發者們相互合作才可以完成,為了便於開發者們的相互分工,軟體就必需統一化介面,介面是軟體模組的交流部分,在大型軟體中,模組的劃分成的小模組數量也許多,而實現軟體的整合確實是個大問題。
變性(changeability)、
開發者寫出軟體之後並不是一成不變的,由於使用中會出現各種bug和使用者的其他的需求,導致軟體就得不斷進行修改。然而只要軟體還存在就意味著需要不斷的更新,這給軟體開發人員不小的困難。在不斷解決發現的bug前提下還要加上新的功能或改寫功能,和上面所提到的不斷增加軟體複雜度類似,在不斷增加難度。
不可見性(invisibility)
軟體不同於硬體,硬體是可見的,而軟體是不可見的,所以軟體描述有些困難。然而,軟體工作者可以使用有向圖來表示控制流,資料流,模式的依賴,時間序列,命名空間的關係,這樣增加了軟體的可表達性,但是仍然改變不了軟體的不可見性。還是有許多不可表達的地方,這也給軟體開發帶來巨大問題。
在這些問題下,許多進步也給軟體開發帶來許多便捷,如高階語言(high-level languages)的方便性與統一化程式設計環境unified programming environments)等。然而是否可以找到針對軟體開發問題的silver bullet,就需要軟體人員的繼續努力了。
二.there is a silver bullet – brad j cox
這個標題恰好同前一篇相反,brad j cox認為這個銀彈就是——複雜結構的內部封裝,使元件簡單易用。將軟體封裝起來使得開發者可以對其有更好的管理能力,更重要的是使用者們可以很方便的使用,使用者可以減少那些他所不擅長和需要管理的東西,將複雜軟體對使用者簡單化。因而這被視為一silver bullet。確實這對軟體的開發與使用者體驗有巨大的提公升,也許是稱得上一枚銀彈吧。
三.big ball of mud
正如這個名字,猶如乙個大泥團,而在軟體開發中意味著軟體**雜亂無章,軟體模組劃分也是沒有太多邏輯含義,這將軟體變得猶如泥團一樣,使得本來就不可視的軟體變得更加讓人無法理解。在雜亂的軟體中不僅開發者無法準確的進行開發,難以完成所預期的各種效果,難以完成軟體的整合與模組的清晰化;而使用者也會感覺軟體bug連連,無法滿足自己的各項需求。而後期,開發人員也難以進行進一步除錯,修改和公升級等操作。這給整個軟體帶來不可估量的毀滅性的打擊。
這次我們許多的行為減少了這個問題。首先,我們開會討論了整個軟體框架,畫出了大致草圖,之後確定了軟體實體化圖案;然後,我們先由部分人員將整個框架搭建完成,之後人員分工進行後續的**完成。軟體的整體框架式一致性的,避免了大泥團的產生。
四、catb – cathedral and the bazaar
此文描述兩種軟體開發模式,即:「大教堂式」和「市集」兩種。這兩種都是開源的,但區別在於「大教堂式」的每個軟體版本**在團隊的手中,而「市集式」的源**是在網際網路上的。
此次我們是自由專案,有組員們自己選題,軟體**是自己編寫,屬於第一種——「大教堂式」。
五、lost in catb
「市集式」的開發帶來許多情況。在有些人稱為是.com熱潮時,認為在這個大熱潮的時代it人員大量湧現,**的產量也是嚇煞前人,有些人大為稱讚此狀況的時候,作者提出這只是在「市集式」開發的一種迷失。作者認為這只是一種泡沫,是一種與「教堂式」恰恰相反的「集市式」。在這種情況下,各種參差不齊的**與模組化不夠清晰,最為嚴重的是強行使用不必要的**重用導致將整個web弄得混亂不堪,與自己聲稱的種種優點背道而馳,因為被作者稱為只是「lost in catb」。
此次我們並不是使用「市集式」開發模式,且我們軟體調理已經理清,框架明了,不會出現這種混亂情況。
個人閱讀作業2
在 no silver bullet 中,作者提到兩種軟體開發的困難 1.本質性 軟體本身在概念 conceptual 建構上存先天的困難 亦即如何從抽象性問題,發展出具體概念上的解決方案。2.附屬性 將概念上的構思施行於電腦上,所遭遇到的困難。而造成本質性困難的原因是 1.複雜性 complexi...
個人閱讀作業 2
專案 內容這個作業屬於哪個課程 2021春季軟體工程 羅傑 任健 這個作業的要求在 個人閱讀作業 2 我在這個課程的目標是 學習軟體工程基礎知識以及培養軟體開發能力和專案組織能力 這個作業在哪個具體方面幫助我實現目標 對軟體開發流程有基本的了解 學習用ci id進行專案的整合與部屬 p1 閱讀提問 ...
個人閱讀作業2
乙個學期的軟體工程課程即將結束,從一次個人作業,一次結對作業和兩個階段軟體的開發中,我學到了很多東西。個人作業讓我明白了程式設計師最需要具備的一項技能就是自學能力。從對語言的不熟悉,到能寫出乙個小型的程式,非常考驗我們的自學能力。結對作業重在讓我們有乙個團隊合作的意識,給接下來的團隊專案打下基礎。同...