自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

軟件開發(fā)演化史:尋找“銀彈”之道

開發(fā)
軟件開發(fā)演化史即研究管理軟件復(fù)雜度方法的歷史。本文探討了軟件開發(fā)史上五種軟件方法論的發(fā)展及應(yīng)用,其中包括面向?qū)ο缶幊毯蜆O限編程。

軟件開發(fā)方法的演化史絕對(duì)是一部尋找“銀彈”的歷史,即研究管理軟件復(fù)雜度方法的歷史。我個(gè)人的體會(huì):開發(fā)復(fù)雜的軟件系統(tǒng)的確,呃,復(fù)雜,由此帶來不菲的時(shí)間和金錢的花費(fèi)。下面我們看一下5種軟件方法論的發(fā)展及應(yīng)用。

軟件方法論之結(jié)構(gòu)化編程(Structured programming)

在結(jié)構(gòu)化編程思想提出之前幾年,我就已經(jīng)開始了(始于1973)職業(yè)編程生涯。結(jié)構(gòu)化編程涉及正確使用代碼塊,過程調(diào)用以及各種循環(huán)結(jié)構(gòu)。還有一條黃金法則:go-to是有害的。

程序結(jié)構(gòu)應(yīng)該清晰、流程控制易于理解,這點(diǎn)在今天看來是毋庸質(zhì)疑的。同時(shí)我也認(rèn)為,結(jié)構(gòu)化編程的想法已經(jīng)融入后來所有的編程方法論之中。

軟件方法論之面向?qū)ο缶幊蹋∣bject oriented programming)

面向?qū)ο缶幊?OOP)方法自然也是從結(jié)構(gòu)化編程思想演化而來。OOP通過封裝代碼與代碼使用的數(shù)據(jù)來管理軟件復(fù)雜度。我們習(xí)慣于處理真實(shí)世界的物理對(duì)象,在OOP中,我們可以為真實(shí)世界的對(duì)象建模(如編寫模擬程序,這也是OOP概念開始提出的地方),并對(duì)非具體概念如進(jìn)程、信息組織方法等建立軟件模型。

程序里“對(duì)象”維護(hù)自己的內(nèi)部狀態(tài),這與結(jié)構(gòu)化編程非常地不同。在結(jié)構(gòu)化編程里面,代碼是以一種結(jié)構(gòu)化的、容易理解的方式組織,全局共享數(shù)據(jù)對(duì)于軟件系統(tǒng)的各個(gè)部分都是可見的,包括那些并不需要訪問或修改那些共享數(shù)據(jù)的部分。

軟件方法論之設(shè)計(jì)模式(Design patterns)

睿智的人關(guān)注他們世界的各種模式。學(xué)生時(shí)候,我們可能會(huì)注意班上同學(xué)的良好學(xué)習(xí)習(xí)慣所形成的學(xué)習(xí)模式帶給他們優(yōu)異的成績(jī)。我們學(xué)習(xí)烹飪時(shí),可能注意到有經(jīng)驗(yàn)的廚師做菜的模式,如烹飪前先備料,加調(diào)料的時(shí)候不斷的嘗一下等。

在軟件開發(fā)領(lǐng)域,設(shè)計(jì)模式的使用是基于對(duì)某些項(xiàng)目失敗而另外類似項(xiàng)目成功的觀察(這些也可能是管理模式,計(jì)劃模式,測(cè)試模式等等)。在軟件設(shè)計(jì)過程中,模式的使用是基于對(duì)一些通用的設(shè)計(jì)方式在成功項(xiàng)目中的重復(fù)使用的進(jìn)一步研究的結(jié)果。

軟件方法論之極限編程(Extreme programming)

極限編程基于對(duì)客戶需求的快速確認(rèn),快速開發(fā)與快速交付使用。極限程序員與客戶交流過程中使用簡(jiǎn)單的設(shè)計(jì),并以迭代方式優(yōu)先開發(fā)軟件最被需要的部分。

極限編程與傳統(tǒng)開發(fā)方式背道而馳。傳統(tǒng)開發(fā)方式是開發(fā)者與客戶花費(fèi)大量時(shí)間來試圖事先將一切細(xì)節(jié)寫入文檔,這種開發(fā)方式占用相當(dāng)長(zhǎng)的時(shí)間。有經(jīng)驗(yàn)的開發(fā)者知道,階段性的完成編碼對(duì)設(shè)計(jì)流程有正面影響。極限編程尤其適合那些需求復(fù)雜、或需求事先無法達(dá)成一致的情況。

在學(xué)習(xí)本書中的UML時(shí)候,我們會(huì)涉及個(gè)人如何使用軟件系統(tǒng)的例子。極限編程有類似的概念,叫做"user stories"(這個(gè)詞不知道應(yīng)該如何正確翻譯-by譯者),即客戶提供的他們感覺軟件系統(tǒng)應(yīng)該如何使用的信息。User stories會(huì)被用來估計(jì)開發(fā)時(shí)間,并幫助建立自動(dòng)測(cè)試用例——用于開發(fā)測(cè)試和交付用戶測(cè)試。

極限編程經(jīng)常被描述為——對(duì)于我而言更加容易理解——測(cè)試驅(qū)動(dòng)的編程,在編碼前即編寫測(cè)試代碼!然后編寫足夠的能通過測(cè)試的代碼即可。在所有單元測(cè)試通過之前,軟件代碼不允許改動(dòng)。使用像JUnit 這樣的工具來編寫自動(dòng)測(cè)試。

軟件方法論之面向切面編程(Aspect oriented programming)

面向切面編程(AOP)后面的主要思想是對(duì)軟件系統(tǒng)不同關(guān)注點(diǎn)的分離,開發(fā)者通過攔截方法調(diào)用并在方法調(diào)用前后添加輔助代碼來實(shí)現(xiàn)。切面可以在對(duì)象里除了行為之外新定義特定的切面數(shù)據(jù)(aspect-specific data)。原理上,這種哲學(xué)允許系統(tǒng)開發(fā)更加模塊化,這種模塊化的實(shí)現(xiàn)通過程序員不同的關(guān)注點(diǎn)來驅(qū)動(dòng)。對(duì)于Java程序員,我推薦看一下AspectJ項(xiàng)目(eclipse.org/aspectj). 下面是從AspectJ站點(diǎn)引用的:

”AspectJ 通過對(duì)以下關(guān)注點(diǎn)的橫切達(dá)到簡(jiǎn)潔的模塊化:錯(cuò)誤檢測(cè)和處理,同步,對(duì)上下文敏感的行為,性能優(yōu)化,監(jiān)控及日志,調(diào)試支持,多對(duì)象協(xié)議”

無論是免費(fèi)的Eclipse還是商業(yè)的IntelliJ Java IDE都支持AspectJ. AspectJ 是Java語言的擴(kuò)展,需要預(yù)處理。我在為開源web框架Jaffa做收費(fèi)咨詢的時(shí)候用過Java的切面。在使用動(dòng)態(tài)語言像Ruby和Lisp時(shí),切面更加有用。Ruby和Common Lisp允許在任何源文件為一個(gè)類增加方法,這種優(yōu)勢(shì)意味著特殊的目的以及特定應(yīng)用的對(duì)庫(kù)的擴(kuò)展可以與庫(kù)的源代碼相分離。

一個(gè)簡(jiǎn)單的使用切面的例子如下:你有一個(gè)類庫(kù)來處理收發(fā)郵件,然后來了一個(gè)商業(yè)方面的需求,按收信人和發(fā)信人分類,記錄郵件的數(shù)目和大小。分離的切面就能讓你通過代碼注入的方式來實(shí)現(xiàn)對(duì)郵件的監(jiān)測(cè),而不需要改變?cè)悗?kù)的代碼。這會(huì)讓類庫(kù)作者更加容易地維護(hù)他們的代碼,不用增加對(duì)郵件監(jiān)測(cè)的代碼。

本文來自metaphy的博客:《軟件設(shè)計(jì)和開發(fā)的簡(jiǎn)史》

【編輯推薦】

  1. C#歷史回顧及C# 4.0新特性一覽
  2. .NET正則表達(dá)式的歷史
  3. J2SE歷史回顧:JDK 1.1時(shí)代開始
  4. EJB技術(shù)的歷史
  5. Java歷史回顧:開發(fā)人員十大問答
責(zé)任編輯:yangsai 來源: metaphy的博客
相關(guān)推薦

2021-01-18 12:31:46

物聯(lián)網(wǎng)

2023-08-07 18:45:30

電商訂單訂單類型批量發(fā)貨

2018-08-03 16:00:09

人工智能神經(jīng)網(wǎng)絡(luò)高級(jí)算法

2009-07-01 10:11:04

.NETLINQ

2023-07-05 09:37:49

AI人工智能

2012-07-06 11:03:15

Intel等燈等燈

2020-06-30 18:04:41

RPA應(yīng)用

2019-10-21 13:03:04

編程語言PythonJava

2019-10-09 16:14:30

Web服務(wù)器Tomcat

2009-05-25 15:00:20

2021-09-06 14:37:19

軟件開發(fā) 技術(shù)

2010-09-04 15:27:31

多平臺(tái)移動(dòng)開發(fā)黃洋成尚郵

2017-03-17 08:15:17

敏捷軟件開發(fā)軟件開發(fā)

2012-06-18 09:34:14

2020-06-24 11:21:47

軟件開發(fā)面試

2024-11-07 12:14:36

2020-12-03 15:54:15

軟件開發(fā)工具

2009-02-10 17:11:53

SaaSSaaS開發(fā)PaaS

2023-10-31 00:49:20

對(duì)話式軟件開發(fā)

2015-03-02 09:35:07

軟件開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)