程序設(shè)計(jì)主要方法有面向結(jié)構(gòu)的方法和面向?qū)ο蟮姆椒ā?/p>
結(jié)構(gòu)化程序設(shè)計(jì) 隨著計(jì)算機(jī)的價(jià)格不斷下降,硬件環(huán)境不斷改善,運(yùn)行速度不斷提升。程序越寫越大,功能越來越強(qiáng),講究技巧的程序設(shè)計(jì)方法已經(jīng)不能適應(yīng)需求了。
記得是哪本書上講過,一個(gè)軟件的開發(fā)成本是由:程序設(shè)計(jì) 30% 和程序維護(hù) 70% 構(gòu)成。這是書上給出的一個(gè)理論值,但實(shí)際上,從我十幾年的工作經(jīng)驗(yàn)中,我得到的體會(huì)是:程序設(shè)計(jì)占 10%,而維護(hù)要占 90%。
也許我說的還是太保守了,維護(hù)的成本還應(yīng)該再提高。下面這個(gè)程序,提供了兩種設(shè)計(jì)方案,大家看看哪個(gè)更好一些那? 題目:對(duì)一個(gè)數(shù)組中的100個(gè)元素,從小到大排序并顯示輸出。
(BASIC) 方法1:冒泡法排序,同時(shí)輸出。 FOR I=1 TO 100 FOR J=I+1 TO 100 IF A[I] > A[J] THEN T=A[J]: A[J]=A[I]: A[I]=T NEXT J ? A[I] NEXT I 方法2:冒泡法排序,然后再輸出。
FOR I=1 TO 100 FOR J=I+1 TO 100 IF A[I] > A[J] THEN T=A[J]: A[J]=A[I]: A[I]=T NEXT NEXT FOR I=1 TO 100? A[I] NEXT 顯然,“方法1”比“方法2”的效率要高,運(yùn)行的更快。但是,從現(xiàn)在的程序設(shè)計(jì)角度來看,“方法2”更高級(jí)。
原因很簡單:(1)功能模塊分割清晰——易讀;(2)也是最重要的——易維護(hù)。程序在設(shè)計(jì)階段的時(shí)候,就要考慮以后的維護(hù)問題。
比如現(xiàn)在是實(shí)現(xiàn)了在屏幕上的輸出,也許將來某一天,你要修改程序,輸出到打印機(jī)上、輸出到繪圖儀上;也許將來某一天,你學(xué)習(xí)了一個(gè)新的高級(jí)的排序方法,由“冒泡法”改進(jìn)為“快速排序”、“堆排序”。那么在“方法2”的基礎(chǔ)上進(jìn)行修改,是不是就更簡單了,更容易了?!這種把功能模塊分離的程序設(shè)計(jì)方法,就叫“結(jié)構(gòu)化程序設(shè)計(jì)”。
面向?qū)ο蟮某绦蛟O(shè)計(jì) 隨著程序的設(shè)計(jì)的復(fù)雜性增加,結(jié)構(gòu)化程序設(shè)計(jì)方法又不夠用了。不夠用的根本原因是“代碼重用”的時(shí)候不方便。
面向?qū)ο蟮姆椒ㄕQ生了,它通過繼承來實(shí)現(xiàn)比較完善的代碼重用功能。很多學(xué)生在應(yīng)聘工作,面試的時(shí)候,常被問及一個(gè)問題“你來談?wù)勈裁词敲嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)”,學(xué)生無言,回來問我,這個(gè)問題應(yīng)該怎么回答。
我告訴他,你只要說一句話就夠了“面向?qū)ο蟪绦蛟O(shè)計(jì)是對(duì)數(shù)據(jù)的封裝;范式(模板)的程序設(shè)計(jì)是對(duì)算法的封裝。”后來再有學(xué)生遇到了這個(gè)問題,只簡單的一句對(duì)答,對(duì)方就對(duì)這個(gè)學(xué)生就刮目相看了(學(xué)生后來自豪地告訴我的)。
為什么那?因?yàn)橹挥薪?jīng)過徹底的體會(huì)和實(shí)踐才能提煉出這個(gè)精華。 面向?qū)ο蟮脑O(shè)計(jì)方法和思想,其實(shí)早在70年代初就已經(jīng)被提出來了。
其目的就是:強(qiáng)制程序必須通過函數(shù)的方式來操縱數(shù)據(jù)。這樣實(shí)現(xiàn)了數(shù)據(jù)的封裝,就避免了以前設(shè)計(jì)方法中的,任何代碼都可以隨便操作數(shù)據(jù)而因起的BUG,而查找修改這個(gè)BUG是非常困難的。
那么你可以說,即使我不使用面向?qū)ο螅?dāng)我想訪問某個(gè)數(shù)據(jù)的時(shí)候,我就通過調(diào)用函數(shù)訪問不就可以了嗎?是的,的確可以,但并不是強(qiáng)制的。人都有惰性,當(dāng)我想對(duì) i 加1的時(shí)候,干嗎非要調(diào)用函數(shù)呀?算了,直接i++多省事呀。
呵呵,正式由于這個(gè)懶惰,當(dāng)程序出BUG的時(shí)候,可就不好捉啦。而面向?qū)ο笫菑?qiáng)制性的,從編譯階段就解決了你懶惰的問題。
巧合的是,面向?qū)ο蟮乃枷耄鋵?shí)和我們的日常生活中處理問題是吻合的。舉例來說,我打算丟掉一個(gè)茶杯,怎么扔那?太簡單了,拿起茶杯,走到垃圾桶,扔!注意分析這個(gè)過程,我們是先選一個(gè)“對(duì)象”------茶杯,然后向這個(gè)對(duì)象施加一個(gè)動(dòng)作——扔。
每個(gè)對(duì)象所能施加在它上面的動(dòng)作是有一定限制的:茶杯,可以被扔,可以被砸,可以用來喝水,可以敲它發(fā)出聲音。
;一張紙,可以被寫字,可以撕,可以燒。
也就是說,一旦確定了一個(gè)對(duì)象,則方法也就跟著確定了。
我們的日常生活就是如此。但是,大家回想一下我們程序設(shè)計(jì)和對(duì)計(jì)算機(jī)的操作,卻不是這樣的。
拿DOS的操作來說,我要?jiǎng)h除一個(gè)文件,方法是在DOS提示符下:c:> del 文件名。注意看這個(gè)過程,動(dòng)作在前(del),對(duì)象在后(文件名),和面向?qū)ο蟮姆椒ㄕ庙樞蛳喾础?/p>
那么只是一個(gè)順序的問題,會(huì)帶來什么影響那?呵呵,大家一定看到過這個(gè)現(xiàn)象:File not found. “啊~~~,我錯(cuò)了,我錯(cuò)了,文件名敲錯(cuò)了一個(gè)字母”,于是重新輸入:c:> del 文件名2。不幸又發(fā)生了,計(jì)算機(jī)報(bào)告:File read only. 哈哈,痛苦吧:)。
所以DOS的操作其實(shí)是違反我們?nèi)粘I钪械牧?xí)慣的(當(dāng)然,以前誰也沒有提出過異議),而現(xiàn)在由于使用了面向?qū)ο蟮脑O(shè)計(jì),那么這些問題,就在編譯的時(shí)候解決了,而不是在運(yùn)行的時(shí)候。obj.fun(),對(duì)于這條語句,無論是對(duì)象,還是函數(shù),如果你輸入有問題,那么都會(huì)在編譯的時(shí)候報(bào)告出來,方便你修改,而不是在執(zhí)行的時(shí)候出錯(cuò),害的你到處去捉蟲子。
同時(shí),面向?qū)ο笥帜芙鉀Q代碼重用的問題——繼承。我以前寫了一個(gè)“狗”的類,屬性有(變量):有毛、4條腿、有翹著的尾巴(耷拉著尾巴的那是狼)、鼻子很靈敏、喜歡吃肉骨頭。
方法有(函數(shù)):能跑、能聞、汪汪叫。
如果它去抓耗子,人家叫它“多管閑事”。
好了,狗這個(gè)類寫好了。但在我實(shí)際的生活中,我家養(yǎng)的這條狗和我以前寫的這個(gè)“。
程序設(shè)計(jì)方法學(xué)(Programming Methodology)有兩種含義: 一種是以程序設(shè)計(jì)方法為研究對(duì)象的學(xué)科,它不僅研究各種具體的方法,而且著重研究各種具體方法的共性,涉及規(guī)范的全局性方法,以及這些方法的顯示背景和理論基礎(chǔ);另外一種含義是針對(duì)某一領(lǐng)域或某一領(lǐng)域的一類特定
程序設(shè)計(jì)方法學(xué)(Programming Methodology)有兩種含義:
一種是以程序設(shè)計(jì)方法為研究對(duì)象的學(xué)科,它不僅研究各種具體的方法,而且著重研究各種具體方法的共性,涉及規(guī)范的全局性方法,以及這些方法的顯示背景和理論基礎(chǔ);另外一種含義是針對(duì)某一領(lǐng)域或某一領(lǐng)域的一類特定問題,所用的一整套特定程序設(shè)計(jì)方法所構(gòu)成的體系。
作為一門學(xué)科(第一種含義),程序設(shè)計(jì)方法學(xué)可對(duì)程序設(shè)計(jì)人員選用具體的程序設(shè)計(jì)方法起指導(dǎo)作用,而具體的程序設(shè)計(jì)方法對(duì)程序設(shè)計(jì)工作的質(zhì)量以及所設(shè)計(jì)出大程序的質(zhì)量影響巨大。因此,對(duì)程序設(shè)計(jì)方法學(xué)的研究是非常重要的。
作為一套完整特定的程序設(shè)計(jì)方法所構(gòu)成的體系(第二種含義),如邏輯式程序設(shè)計(jì)方法學(xué)、函數(shù)式程序設(shè)計(jì)方法學(xué)、對(duì)象式程序設(shè)計(jì)方法學(xué)等。它們有各自的利弊得失,與具體領(lǐng)域、具體問題以及具體環(huán)境相關(guān)。
兩種含義之間的關(guān)系是:第二種含義是第一種含義的基礎(chǔ),第一種含義是在第二種含義的基礎(chǔ)上的總結(jié)、提高,并上升到原理、原則和理論的高度。這兩種含義的程序設(shè)計(jì)方法學(xué)都非常重要。
程序設(shè)計(jì)主要方法有面向結(jié)構(gòu)的方法和面向?qū)ο蟮姆椒ā?/p>
結(jié)構(gòu)化程序設(shè)計(jì) 隨著計(jì)算機(jī)的價(jià)格不斷下降,硬件環(huán)境不斷改善,運(yùn)行速度不斷提升。程序越寫越大,功能越來越強(qiáng),講究技巧的程序設(shè)計(jì)方法已經(jīng)不能適應(yīng)需求了。
記得是哪本書上講過,一個(gè)軟件的開發(fā)成本是由:程序設(shè)計(jì) 30% 和程序維護(hù) 70% 構(gòu)成。這是書上給出的一個(gè)理論值,但實(shí)際上,從我十幾年的工作經(jīng)驗(yàn)中,我得到的體會(huì)是:程序設(shè)計(jì)占 10%,而維護(hù)要占 90%。
也許我說的還是太保守了,維護(hù)的成本還應(yīng)該再提高。下面這個(gè)程序,提供了兩種設(shè)計(jì)方案,大家看看哪個(gè)更好一些那? 題目:對(duì)一個(gè)數(shù)組中的100個(gè)元素,從小到大排序并顯示輸出。
(BASIC) 方法1:冒泡法排序,同時(shí)輸出。 FOR I=1 TO 100 FOR J=I+1 TO 100 IF A[I] > A[J] THEN T=A[J]: A[J]=A[I]: A[I]=T NEXT J ? A[I]NEXT I 方法2:冒泡法排序,然后再輸出。
FOR I=1 TO 100FOR J=I+1 TO 100IF A[I] > A[J] THEN T=A[J]: A[J]=A[I]: A[I]=TNEXTNEXTFOR I=1 TO 100? A[I]NEXT 顯然,“方法1”比“方法2”的效率要高,運(yùn)行的更快。但是,從現(xiàn)在的程序設(shè)計(jì)角度來看,“方法2”更高級(jí)。
原因很簡單:(1)功能模塊分割清晰——易讀;(2)也是最重要的——易維護(hù)。程序在設(shè)計(jì)階段的時(shí)候,就要考慮以后的維護(hù)問題。
比如現(xiàn)在是實(shí)現(xiàn)了在屏幕上的輸出,也許將來某一天,你要修改程序,輸出到打印機(jī)上、輸出到繪圖儀上;也許將來某一天,你學(xué)習(xí)了一個(gè)新的高級(jí)的排序方法,由“冒泡法”改進(jìn)為“快速排序”、“堆排序”。那么在“方法2”的基礎(chǔ)上進(jìn)行修改,是不是就更簡單了,更容易了?!這種把功能模塊分離的程序設(shè)計(jì)方法,就叫“結(jié)構(gòu)化程序設(shè)計(jì)”。
面向?qū)ο蟮某绦蛟O(shè)計(jì) 隨著程序的設(shè)計(jì)的復(fù)雜性增加,結(jié)構(gòu)化程序設(shè)計(jì)方法又不夠用了。不夠用的根本原因是“代碼重用”的時(shí)候不方便。
面向?qū)ο蟮姆椒ㄕQ生了,它通過繼承來實(shí)現(xiàn)比較完善的代碼重用功能。很多學(xué)生在應(yīng)聘工作,面試的時(shí)候,常被問及一個(gè)問題“你來談?wù)勈裁词敲嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)”,學(xué)生無言,回來問我,這個(gè)問題應(yīng)該怎么回答。
我告訴他,你只要說一句話就夠了“面向?qū)ο蟪绦蛟O(shè)計(jì)是對(duì)數(shù)據(jù)的封裝;范式(模板)的程序設(shè)計(jì)是對(duì)算法的封裝?!焙髞碓儆袑W(xué)生遇到了這個(gè)問題,只簡單的一句對(duì)答,對(duì)方就對(duì)這個(gè)學(xué)生就刮目相看了(學(xué)生后來自豪地告訴我的)。
為什么那?因?yàn)橹挥薪?jīng)過徹底的體會(huì)和實(shí)踐才能提煉出這個(gè)精華。 面向?qū)ο蟮脑O(shè)計(jì)方法和思想,其實(shí)早在70年代初就已經(jīng)被提出來了。
其目的就是:強(qiáng)制程序必須通過函數(shù)的方式來操縱數(shù)據(jù)。這樣實(shí)現(xiàn)了數(shù)據(jù)的封裝,就避免了以前設(shè)計(jì)方法中的,任何代碼都可以隨便操作數(shù)據(jù)而因起的BUG,而查找修改這個(gè)BUG是非常困難的。
那么你可以說,即使我不使用面向?qū)ο?,?dāng)我想訪問某個(gè)數(shù)據(jù)的時(shí)候,我就通過調(diào)用函數(shù)訪問不就可以了嗎?是的,的確可以,但并不是強(qiáng)制的。人都有惰性,當(dāng)我想對(duì) i 加1的時(shí)候,干嗎非要調(diào)用函數(shù)呀?算了,直接i++多省事呀。
呵呵,正式由于這個(gè)懶惰,當(dāng)程序出BUG的時(shí)候,可就不好捉啦。而面向?qū)ο笫菑?qiáng)制性的,從編譯階段就解決了你懶惰的問題。
巧合的是,面向?qū)ο蟮乃枷?,其?shí)和我們的日常生活中處理問題是吻合的。舉例來說,我打算丟掉一個(gè)茶杯,怎么扔那?太簡單了,拿起茶杯,走到垃圾桶,扔!注意分析這個(gè)過程,我們是先選一個(gè)“對(duì)象”------茶杯,然后向這個(gè)對(duì)象施加一個(gè)動(dòng)作——扔。
每個(gè)對(duì)象所能施加在它上面的動(dòng)作是有一定限制的:茶杯,可以被扔,可以被砸,可以用來喝水,可以敲它發(fā)出聲音。
;一張紙,可以被寫字,可以撕,可以燒。
也就是說,一旦確定了一個(gè)對(duì)象,則方法也就跟著確定了。
我們的日常生活就是如此。但是,大家回想一下我們程序設(shè)計(jì)和對(duì)計(jì)算機(jī)的操作,卻不是這樣的。
拿DOS的操作來說,我要?jiǎng)h除一個(gè)文件,方法是在DOS提示符下:c:> del 文件名。注意看這個(gè)過程,動(dòng)作在前(del),對(duì)象在后(文件名),和面向?qū)ο蟮姆椒ㄕ庙樞蛳喾础?/p>
那么只是一個(gè)順序的問題,會(huì)帶來什么影響那?呵呵,大家一定看到過這個(gè)現(xiàn)象:File not found. “啊~~~,我錯(cuò)了,我錯(cuò)了,文件名敲錯(cuò)了一個(gè)字母”,于是重新輸入:c:> del 文件名2。不幸又發(fā)生了,計(jì)算機(jī)報(bào)告:File read only. 哈哈,痛苦吧:)。
所以DOS的操作其實(shí)是違反我們?nèi)粘I钪械牧?xí)慣的(當(dāng)然,以前誰也沒有提出過異議),而現(xiàn)在由于使用了面向?qū)ο蟮脑O(shè)計(jì),那么這些問題,就在編譯的時(shí)候解決了,而不是在運(yùn)行的時(shí)候。obj.fun(),對(duì)于這條語句,無論是對(duì)象,還是函數(shù),如果你輸入有問題,那么都會(huì)在編譯的時(shí)候報(bào)告出來,方便你修改,而不是在執(zhí)行的時(shí)候出錯(cuò),害的你到處去捉蟲子。
同時(shí),面向?qū)ο笥帜芙鉀Q代碼重用的問題——繼承。我以前寫了一個(gè)“狗”的類,屬性有(變量):有毛、4條腿、有翹著的尾巴(耷拉著尾巴的那是狼)、鼻子很靈敏、喜歡吃肉骨頭。
方法有(函數(shù)):能跑、能聞、汪汪叫。
如果它去抓耗子,人家叫它“多管閑事”。
好了,狗這個(gè)類寫好了。但在我實(shí)際的生活中,我家養(yǎng)的這條狗和我以前寫的這個(gè)“狗類”非常相似,只有一點(diǎn)點(diǎn)的不同,就是我的這條狗。
系統(tǒng)分析與設(shè)計(jì)的方法主要包括結(jié)構(gòu)化生命周期法(又稱瀑布法)、原型化方法(迭代法)、面向?qū)ο蠓椒ā?/p>
按時(shí)間過程來分,開發(fā)方法分為生命周期法和原型法,實(shí)際上還有許多處于中間狀態(tài)的方法。原型法又按照對(duì)原型結(jié)果的處理方式分為試驗(yàn)原型法和演進(jìn)原型法。試驗(yàn)原型法只把原型當(dāng)成試驗(yàn)工具,試了以后就拋掉,根據(jù)試驗(yàn)的結(jié)論做出新的系統(tǒng)。演進(jìn)原型法則把試好的結(jié)果保留,成為最終系統(tǒng)的一部分。
按照系統(tǒng)的分析要素,可以把開發(fā)方法分為三類:
①面向處理方法(Processing Oriented ,簡稱PO)。
②面向數(shù)據(jù)方法(Data Oriented ,簡稱DO)。
③面向?qū)ο蟮姆椒ǎ∣bject Oriented ,簡稱OO)。
組織設(shè)計(jì)程序與方法 設(shè)計(jì)程序工作內(nèi)容 1.設(shè)計(jì)原則的確定根據(jù)企業(yè)的目標(biāo)和特點(diǎn),確定組織設(shè)計(jì)的方針、原則和主要參數(shù) 2.職能分析和設(shè)計(jì)確定管理職能及其結(jié)構(gòu),層層分解到各項(xiàng)管理業(yè)務(wù)和工作中,進(jìn)行管理業(yè)務(wù)的總體設(shè)計(jì) 3.結(jié)構(gòu)框架的設(shè)計(jì)設(shè)計(jì)各個(gè)管理層次、部門、崗位及其責(zé)任、權(quán)力。
具體表現(xiàn)為確定企業(yè)的組織系統(tǒng)圖 4.聯(lián)系方式的設(shè)計(jì)進(jìn)行控制、信息交流、綜合、協(xié)調(diào)等方式和制度的設(shè)計(jì) 5.管理規(guī)范的設(shè)計(jì)主要設(shè)計(jì)管理工作程序、管理工作標(biāo)準(zhǔn)和管理工作方法,作為管理人員的行為規(guī)范 6.人員配備和訓(xùn)練根據(jù)結(jié)構(gòu)設(shè)計(jì),定質(zhì)、定量地配備各級(jí)各類管理人員 7.運(yùn)行制度的設(shè)計(jì)設(shè)計(jì)管理部門和人員績效考核制度,設(shè)計(jì)精神鼓勵(lì)和工資獎(jiǎng)勵(lì)制度,設(shè)計(jì)管理人員培訓(xùn)制度 8.反饋和修正將運(yùn)行過程中的信息反饋回去,定期或不定期地對(duì)上述各項(xiàng)設(shè)計(jì)進(jìn)行必要的修正。
方法通過靜態(tài)分析方式和動(dòng)態(tài)分析方式相結(jié)合,實(shí)現(xiàn)應(yīng)用程序行為分析檢測。
靜態(tài)分析通過Android的靜態(tài)反匯編和反編譯獲取應(yīng)用程序的源代碼和資源配置文件,然后通過檢測源代碼中是否包含敏感行為特征,實(shí)現(xiàn)靜態(tài)行為分析檢測。動(dòng)態(tài)分析結(jié)合沙箱系統(tǒng),實(shí)現(xiàn)程序的動(dòng)態(tài)運(yùn)行并輸出行為日志,然后對(duì)輸出的行為日志分析,實(shí)現(xiàn)對(duì)應(yīng)用程序動(dòng)態(tài)行為分析檢測。
靜態(tài)分析由于某些程序精心構(gòu)造,無法對(duì)一些未將特征編碼在代碼文件中行為進(jìn)行分析,在檢測時(shí)無法獲取潛在的應(yīng)用程序行為;動(dòng)態(tài)分析由于自動(dòng)運(yùn)行行為的隨機(jī)性,不能完全觸發(fā)應(yīng)用程序操作。兩種方式都存在這不足,所以本課題在實(shí)現(xiàn)分析系統(tǒng)時(shí)采取了動(dòng)靜態(tài)分析相結(jié)合方式,以更全面的實(shí)現(xiàn)Android應(yīng)用程序的行為分析檢測,為安全分析提供依據(jù)。
MIS的開發(fā)方式有自行開發(fā)、委托開發(fā)、聯(lián)合開發(fā)、購買現(xiàn)成軟件包進(jìn)行二次開發(fā)幾種形式。一般來說根據(jù)企業(yè)的技術(shù)力量、資源及外部環(huán)境而定。 補(bǔ)充: 管理信息系統(tǒng)的開發(fā)策略
不可行的開發(fā)方法:組織結(jié)構(gòu)法,機(jī)械的按照現(xiàn)有組織機(jī)構(gòu)劃分系統(tǒng),不考慮MIS的開發(fā)原則。
數(shù)據(jù)庫法,開發(fā)人員從數(shù)據(jù)庫設(shè)計(jì)開始對(duì)現(xiàn)有系統(tǒng)進(jìn)行開發(fā)。
想象系統(tǒng)發(fā),開發(fā)人員基于對(duì)現(xiàn)有系統(tǒng)進(jìn)行想象為基礎(chǔ)進(jìn)行開發(fā)。
可行的開發(fā)方法:自上而下(Top__Down),從企業(yè)管理的整體進(jìn)行設(shè)計(jì),逐漸從抽象到具體,從概要設(shè)計(jì)到詳細(xì)設(shè)計(jì),體現(xiàn)結(jié)構(gòu)化的設(shè)計(jì)思想。自下而上(Bottom__Up),設(shè)計(jì)系統(tǒng)的構(gòu)件,采用搭積木的方式組成整個(gè)系統(tǒng),缺點(diǎn)在于忽視系統(tǒng)部件的有機(jī)聯(lián)系。
兩者結(jié)合是實(shí)際開發(fā)過程中常用的方法。通過對(duì)系統(tǒng)進(jìn)行分析得到系統(tǒng)的邏輯模型, 進(jìn)而從邏輯模型求得最優(yōu)的物理模型。邏輯模型和物理模型的這種螺旋式循環(huán)優(yōu)化的設(shè)計(jì)模式體現(xiàn)了自上而下、自下而上結(jié)合的設(shè)計(jì)思想。
管理信息系統(tǒng)的開發(fā)方法
完整實(shí)用的文檔資料是成功MIS的標(biāo)致。科學(xué)的開發(fā)過程從可行性研究開始,經(jīng)過系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)施等主要階段。每一個(gè)階段都應(yīng)有文檔資料,并且在開發(fā)過程中不斷完善和充實(shí)。目前使用的開發(fā)方法有以下兩種:
1.瀑布模型(生命周期方法學(xué))
結(jié)構(gòu)分析、結(jié)構(gòu)設(shè)計(jì),結(jié)構(gòu)程序設(shè)計(jì)(簡稱SA—SD—SP方法)用瀑布模型來模擬。各階段的工作自頂向下從抽象到具體順序進(jìn)行。瀑布模型意味著在生命周期各階段間存在著嚴(yán)格的順序且相互依存。瀑布模型是早期MIS設(shè)計(jì)的主要手段。
2.快速原型法(面向?qū)ο蠓椒ǎ?/p>
快速原型法也稱為面向?qū)ο蠓椒ㄊ墙陙磲槍?duì)(SA—SD—SP)的缺陷提出的設(shè)計(jì)新途徑,是適應(yīng)當(dāng)前計(jì)算機(jī)技術(shù)的進(jìn)步及對(duì)軟件需求的極大增長而出現(xiàn)的。是一種快速、靈活、交互式的軟件開發(fā)方法學(xué)。其核心是用交互的、快速建立起來的原型取代了形式的、僵硬的(不易修改的)大快的規(guī)格說明,用戶通過在計(jì)算機(jī)上實(shí)際運(yùn)行和試用原型而向開發(fā)者提供真實(shí)的反饋意見??焖僭头ǖ膶?shí)現(xiàn)基礎(chǔ)之一是可視化的第四代語言的出現(xiàn)。
1.結(jié)構(gòu)化方法:分析,設(shè)計(jì),程序設(shè)計(jì)構(gòu)成,面向數(shù)據(jù)流的開發(fā)方法,分解和抽象的原則,數(shù)據(jù)流圖建立功能模型,完成需求分析工作。
2.Jackson方法:面向數(shù)據(jù)結(jié)構(gòu)開發(fā)方法。數(shù)據(jù)結(jié)構(gòu)為驅(qū)動(dòng),適合小規(guī)模的項(xiàng)目,當(dāng)輸入數(shù)據(jù)結(jié)構(gòu)和輸出結(jié)構(gòu)之間沒有對(duì)應(yīng)關(guān)系,難用此方法,JSD(Jackson Structure Prograamming)是JSP(JacksonSystem Development)的擴(kuò)充
3.原型化方法:和演化模型相對(duì)應(yīng),需求不清,業(yè)務(wù)理論不確定,需求經(jīng)常變化,規(guī)模不大去不太復(fù)雜時(shí)采用。
4.面向?qū)ο箝_發(fā)方法:分析,設(shè)計(jì),實(shí)現(xiàn),Booch,Coad,OMT,為統(tǒng)一各種面向?qū)ο蠓椒ǖ男g(shù)語,概念和模型,推出UML (Unified Modeling Language)統(tǒng)一化建模語言,成為工業(yè)標(biāo)準(zhǔn)。
聲明:本網(wǎng)站尊重并保護(hù)知識(shí)產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請(qǐng)?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號(hào)-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時(shí)間:3.107秒