優(yōu)化方案,提出最后的設(shè)計方案
8)綜合結(jié)論:程序考慮了諸多功能,通用編輯器是眾多功能的集合體,內(nèi)部詳細(xì)規(guī)劃了各種類型數(shù)據(jù)的操作、顯示和排版分析。
經(jīng)過一系列的方案定義,將問題逐步減少,最后獲得一個規(guī)模較大的系統(tǒng)設(shè)計早期方案。我們可以較早地進(jìn)入系統(tǒng)設(shè)計,并且提前進(jìn)入程序代碼級開發(fā)工作,同時逐步實現(xiàn)各項內(nèi)容。
此方法分析需求,有助于我們盡早實現(xiàn)想法,同時較好地控制住程序開發(fā)方向和基本功能完成的進(jìn)度。但遺憾的是提高開發(fā)速度的代價是降低程序的可靠性、擴(kuò)展性和重用性。過去,我們往往覺得所作的程序基本上不能再次使用,原因就在于沒有抽象問題,尋找問題的根本解決方案。就問題實現(xiàn)問題的方法,忽略了深入分析問題的過程。對于針對開發(fā)某專業(yè)的應(yīng)用軟件采用此方法分析需求比較合適,但對系統(tǒng)性強(qiáng)的軟件,最好采用樹狀遍歷式尋找問題的方法。
二、分析問題和需求
在沒有分析清楚問題和需求的來由就匆匆下定論是非常危險的。忽略問題和需求就可能埋下了潛在的程序或系統(tǒng)設(shè)計問題。我們也常常犯這樣的錯誤:由于沒有分析清楚問題和需求,結(jié)果到頭來更改系統(tǒng)設(shè)計。能夠提出的問題和需求,就一定要扎扎實實分析它,否則后果難料。
分析問題和需求的能力大小與思路和經(jīng)驗有關(guān)。好的思路來源于嚴(yán)謹(jǐn)、邏輯和跳躍的思考習(xí)慣。嚴(yán)謹(jǐn)要求不要放過任何一個小問題,邏輯要求思考的過程應(yīng)該是一種符合規(guī)則的推導(dǎo)過程,跳躍思維要求思考的路子不是一走到底而是多條路子并行著走。經(jīng)驗來自于編寫調(diào)試大量程序和善于總結(jié),要求程序員不斷地開發(fā)新程序和創(chuàng)造新思路,并且敢于嘗試和接受失敗,當(dāng)然還有一條重要的方面:跟蹤最新技術(shù)。
如何正確分析問題,有以下幾個要素值得注意:
1.所有問題和需求都有發(fā)生的根源。
問題和需求的表面現(xiàn)象總是與開發(fā)者思路切入點相關(guān),如果切入點是狹隘的,那么圍繞著問題和需求的分析往往局限于自身的思路范圍,問題和需求產(chǎn)生的原因就很難發(fā)覺。所以當(dāng)不能理解分析問題和需求時,不妨先找一找為什么存在這樣的問題和需求,它的存在是否合理,然后再分析理解它就不難了。思路一定要跳出慣例。
2.交替反復(fù)分析多個問題和需求,尋找問題間的共性和特性
看似問題和需求間沒有聯(lián)系,而且分析不清各自意義,那么建議交替反復(fù)分析考慮這些問題。勤能補拙,不要擔(dān)心它將花費開發(fā)者多少時間,只有開發(fā)者仔細(xì)分析問題需求,以后的工作越來越簡單明了。
3.復(fù)雜化問題
問題復(fù)雜化,是一個抽象問題或需求的逆過程,提出問題需求的許多可能的假設(shè),豐富了問題需求的形式。能夠復(fù)雜化問題,本身就體現(xiàn)了分析問題和需求的能力。比如:做一個加法程序,兩個數(shù)相加,返回結(jié)果。簡單的問題,但,我們一般都按兩整數(shù)加法,有時考慮了浮點加法。為什么不是兩個復(fù)數(shù)相加,或者是兩個字符串相加等。這是一個使用操作符重載或類模板解決的簡單例子,在這里我的意圖是許多問題應(yīng)該從更多的方面去驗證問題是否同樣存在。
4.問一問自己:問題是否能夠抽象化,繼而簡化問題。
眾多的問題和需求變成程序代碼的過程,就是公式化問題和需求。如果象上例加法一樣,不管三七二十一,什么樣的數(shù)據(jù)就寫一段什么的代碼,不同類型數(shù)據(jù)間的加法同樣又要寫一段代碼,這樣下去就寫不完了。抽象問題,簡化問題,類模板就是一個抽象問題很好的例子。在分析問題和需求的過程中,同樣采用面向?qū)ο蟮乃季S方式去求解,會獲得一個非常滿意的需求報告。
5.問題和需求分類分主次考慮
1)軟件產(chǎn)品的性能指標(biāo):可靠、功能全、速度、易擴(kuò)展。
易擴(kuò)展:一種是產(chǎn)品升級換代快、系列化產(chǎn)品豐富。另一種是用戶的二次開發(fā)擴(kuò)展產(chǎn)品的再生功能。
速度:表示軟件執(zhí)行速度不僅要快,同時操作中的速度要均衡。
&nbs
項目經(jīng)理勝任力免費測評PMQ上線啦!快來測測你排多少名吧~
http://www.vanceur.cn/pmqhd/index.html