Ⅰ 如何開發軟體
60年代中期開始爆發了眾所周知的軟體危機。為了克服這一危機,在1968、1969年連續召開的兩次著名的NATO會議上提出了軟體工程這一術語,並在以後不斷發展、完善。與此同時,軟體研究人員也在不斷探索新的軟體開發方法。至今已形成八類軟體開發方法。
一、1972年 Parnas方法
二、1978年 SASA方法
三、1975年 面向數據結構的軟體開發方法(至今仍廣泛使用)
四、問題分析法
五、面向對象的軟體開發方法
六、可視化開發方法
一、Parnas方法
最早的軟體開發方法是由D.Parnas在1972年提出的。由於當時軟體在可維護性和可靠性方面存在著嚴重問題,因此Parnas提出的方法是針對這兩個問題的。首先,Parnas提出了信息隱蔽原則:在概要設計時列出將來可能發生變化的因素,並在模塊劃分時將這些因素放到個別模塊的內部。這樣,在將來由於這些因素變化而需修改軟體時,只需修改這些個別的模塊,其它模塊不受影響。信息隱蔽技術不僅提高了軟體的可維護性,而且也避免了錯誤的蔓延,改善了軟體的可靠性。現在信息隱蔽原則已成為軟體工程學中的一條重要原則。
Parnas提出的第二條原則是在軟體設計時應對可能發生的種種意外故障採取措施。軟體是很脆弱的,很可能因為一個微小的錯誤而引發嚴重的事故,所以必須加強防範。如在分配使用設備前,應該取設備狀態字,檢查設備是否正常。此外,模塊之間也要加強檢查,防止錯誤蔓延。
Parnas對軟體開發提出了深刻的見解。遺憾的是,他沒有給出明確的工作流程。所以這一方法不能獨立使用,只能作為其它方法的補充。
二、SASA方法
1978年,E.Yourdon和L.L.Constantine提出了結構化方法,即SASD方法,也可稱為面向功能的軟體開發方法或面向數據流的軟體開發方法。1979年TomDeMarco對此方法作了進一步的完善。
Yourdon方法是80年代使用最廣泛的軟體開發方法。它首先用結構化分析(SA)對軟體進行需求分析,然後用結構化設計(SD)方法進行總體設計,最後是結構化編程(SP)。這一方法不僅開發步驟明確,SA、SD、SP相輔相成,一氣呵成,而且給出了兩類典型的軟體結構(變換型和事務型),便於參照,使軟體開發的成功率大大提高,從而深受軟體開發人員的青睞。
三、面向數據結構的軟體開發方法
Jackson方法
1975年,M.A.Jackson提出了一類至今仍廣泛使用的軟體開發方法。這一方法從目標系統的輸入、輸出數據結構入手,導出程序框架結構,再補充其它細節,就可得到完整的程序結構圖。這一方法對輸入、輸出數據結構明確的中小型系統特別有效,如商業應用中的文件表格處理。該方法也可與其它方法結合,用於模塊的詳細設計。
Jackson方法有時也稱為面向數據結構的軟體設計方法。
Warnier方法
1974年,J.D.Warnier提出的軟體開發方法與Jackson方法類似。
差別有三點:一是它們使用的圖形工具不同,分別使用Warnier圖和Jackson圖;另一個差別是使用的偽碼不同;最主要的差別是在構造程序框架時,Warnier方法僅考慮輸入數據結構,而Jackson方法不僅考慮輸入數據結構,而且還考慮輸出數據結構。
四、問題分析法
PAM問題分析法。PAM(ProblemAnalysisMethod)是80年代末由日立公司提出的一種軟體開發方法。
PAM方法希望能兼顧Yourdon方法、Jackson方法和自底向上的軟體開發方法的優點,而避免它們的缺陷。它的基本思想是:考慮到輸入、輸出數據結構,指導系統的分解,在系統分析指導下逐步綜合。這一方法的具體步驟是:從輸入、輸出數據結構導出基本處理框;分析這些處理框之間的先後關系;按先後關系逐步綜合處理框,直到畫出整個系統的PAD圖。從上述步驟中可以看出,這一方法本質上是綜合的自底向上的方法,但在逐步綜合之前已進行了有目的的分解,這個目的就是充分考慮系統的輸入、輸出數據結構。
PAM方法的另一個優點是使用PAD圖。這是一種二維樹形結構圖,是到目前為止最好的詳細設計表示方法之一,遠遠優於NS圖和PDL語言。
這一方法在日本較為流行,軟體開發的成功率也很高。由於在輸入、輸出數據結構與整個系統之間同樣存在著鴻溝,這一方法仍只適用於中小型問題。
五、面向對象的軟體開發方法
面向對象技術是軟體技術的一次革命,在軟體開發史上具有里程碑的意義。
隨著OOP(面向對象編程)向OOD(面向對象設計)和OOA(面向對象分析)的發展,最終形成面向對象的軟體開發方法OMT(LbjectModellingTechnique)。這是一種自底向上和自頂向下相結合的方法,而且它以對象建模為基礎,從而不僅考慮了輸入、輸出數據結構,實際上也包含了所有對象的數據結構。所以OMT徹底實現了PAM沒有完全實現的目標。不僅如此,OO技術在需求分析、可維護性和可靠性這三個軟體開發的關鍵環節和質量指標上有了實質性的突破,徹底地解決了在這些方面存在的嚴重問題,從而宣告了軟體危機末日的來臨。
自底向上的歸納
OMT的第一步是從問題的陳述入手,構造系統模型。從真實系統導出類的體系,即對象模型包括類的屬性,與子類、父類的繼承關系,以及類之間的關聯。類是具有相似屬性和行為的一組具體實例(客觀對象)的抽象,父類是若乾子類的歸納。因此這是一種自底向上的歸納過程。在自底向上的歸納過程中,為使子類能更合理地繼承父類的屬性和行為,可能需要自頂向下的修改,從而使整個類體系更加合理。由於這種類體系的構造是從具體到抽象,再從抽象到具體,符合人類的思維規律,因此能更快、更方便地完成任務。這與自頂向下的Yourdon方法構成鮮明的對照。在Yourdon方法中構造系統模型是最困難的一步,因為自頂向下的「頂」是一個空中樓閣,缺乏堅實的基礎,而且功能分解有相當大的任意性,因此需要開發人員有豐富的軟體開發經驗。而在OMT中這一工作可由一般開發人員較快地完成。在對象模型建立後,很容易在這一基礎上再導出動態模型和功能模型。這三個模型一起構成要求解的系統模型。
自頂向下的分解
系統模型建立後的工作就是分解。與Yourdon方法按功能分解不同,在OMT中通常按服務(Service)來分解。服務是具有共同目標的相關功能的集合,如I/O處理、圖形處理等。這一步的分解通常很明確,而這些子系統的進一步分解因有較具體的系統模型為依據,也相對容易。所以OMT也具有自頂向下方法的優點,即能有效地控制模塊的復雜性,同時避免了Yourdon方法中功能分解的困難和不確定性。
OMT的基礎是對象模型
每個對象類由數據結構(屬性)和操作(行為)組成,有關的所有數據結構(包括輸入、輸出數據結構)都成了軟體開發的依據。因此Jackson方法和PAM中輸入、輸出數據結構與整個系統之間的鴻溝在OMT中不再存在。OMT不僅具有Jackson方法和PAM的優點,而且可以應用於大型系統。更重要的是,在Jackson方法和PAM方法中,當它們的出發點輸入、輸出數據結構(即系統的邊界)發生變化時,整個軟體必須推倒重來。但在OMT中系統邊界的改變只是增加或減少一些對象而已,整個系統改動極小。
需求分析徹底
需求分析不徹底是軟體失敗的主要原因之一。即使在目前,這一危險依然存在。傳統的軟體開發方法不允許在開發過程中用戶的需求發生變化,從而導致種種問題。正是由於這一原因,人們提出了原型化方法,推出探索原型、實驗原型和進化原型,積極鼓勵用戶改進需求。在每次改進需求後又形成新的進化原型供用戶試用,直到用戶基本滿意,大大提高了軟體的成功率。但是它要求軟體開發人員能迅速生成這些原型,這就要求有自動生成代碼的工具的支持。
OMT徹底解決了這一問題。因為需求分析過程已與系統模型的形成過程一致,開發人員與用戶的討論是從用戶熟悉的具體實例(實體)開始的。開發人員必須搞清現實系統才能導出系統模型,這就使用戶與開發人員之間有了共同的語言,避免了傳統需求分析中可能產生的種種問題。
可維護性大大改善
在OMT之前的軟體開發方法都是基於功能分解的。盡管軟體工程學在可維護方面作出了極大的努力,使軟體的可維護性有較大的改進。但從本質上講,基於功能分解的軟體是不易維護的。因為功能一旦有變化都會使開發的軟體系統產生較大的變化,甚至推倒重來。更嚴重的是,在這種軟體系統中,修改是困難的。由於種種原因,即使是微小的修改也可能引入新的錯誤。所以傳統開發方法很可能會引起軟體成本增長失控、軟體質量得不到保證等一系列嚴重問題。正是OMT才使軟體的可維護性有了質的改善。
OMT的基礎是目標系統的對象模型,而不是功能的分解。功能是對象的使用,它依賴於應用的細節,並在開發過程中不斷變化。由於對象是客觀存在的,因此當需求變化時對象的性質要比對象的使用更為穩定,從而使建立在對象結構上的軟體系統也更為穩定。
更重要的是OMT徹底解決了軟體的可維護性。在OO語言中,子類不僅可以繼承父類的屬性和行為,而且也可以重載父類的某個行為(虛函數)。利用這一特點,我們可以方便地進行功能修改:引入某類的一個子類,對要修改的一些行為(即虛函數或虛方法)進行重載,也就是對它們重新定義。由於不再在原來的程序模塊中引入修改,所以徹底解決了軟體的可修改性,從而也徹底解決了軟體的可維護性。OO技術還提高了軟體的可靠性和健壯性。
六、可視化開發方法
可視化開發是90年代軟體界最大的兩個熱點之一。隨著圖形用戶界面的興起,用戶界面在軟體系統中所佔的比例也越來越大,有的甚至高達60~70%。產生這一問題的原因是圖形
界面元素的生成很不方便。為此Windows提供了應用程序設計介面API(Application Programming Interface),它包含了600多個函數,極大地方便了圖形用戶界面的開發。但是在這批函數中,大量的函數參數和使用數量更多的有關常量,使基於Windows API的開發變得相當困難。為此Borland C++推出了Object Windows編程。它將API的各部分用對象類進行封裝,提供了大量預定義的類,並為這些定義了許多成員函數。利用子類對父類的繼承性,以及實例對類的函數的引用,應用程序的開發可以省卻大量類的定義,省卻大量成員函數的定義或只需作少量修改以定義子類。
Object Windows還提供了許多標準的預設處理,大大減少了應用程序開發的工作量。但要掌握它們,對非專業人員來說仍是一個沉重的負擔。為此人們利用Windows API或Borland C++的Object Windows開發了一批可視開發工具。
可視化開發就是在可視開發工具提供的圖形用戶界面上,通過操作界面元素,諸如菜單、按鈕、對話框、編輯框、單選框、復選框、列表框和滾動條等,由可視開發工具自動生成應用軟體。
這類應用軟體的工作方式是事件驅動。對每一事件,由系統產生相應的消息,再傳遞給相應的消息響應函數。這些消息響應函數是由可視開發工具在生成軟體時自動裝入的
Ⅱ 我想自己開發軟體需要學習什麼
方法/步驟1:
重視基礎課的學習
計算機雖然是高科技的象徵,但又受到其它專業發展的制約。計算機專業知識的學習同樣要加強一些相關知識的學習。計算機學習過程往往是由硬體開始,走向軟體,但最終又會走向硬體。一個軟體開發高手非常注重程序效率,而效率卻往往與計算機硬體知識是緊密相關。
因此高等數學、離散數學、線性代數等數學知識的學習也有一定需求。尤其是軟體開發高手,開發過程會涉及數學方面往往會更多一些。
要自始自終地加強英語的學習。因為目前的計算機程序設計語言主要是外國開發的,編代碼的主要語句往往是英文,中文通常是做解釋和說明用。有一定的英文基礎,在計算機學習上可以事半功倍。
方法/步驟2:
重視編程基本功的學習
學習軟體需要什麼?一個優秀的程序員也不是十天半個月就能夠造就出來的,必須要扎扎實實學好編程基礎知識,要經歷一個漫長且辛苦的學習和程序開發過程。因此計算機專業學生,首先要做好吃苦的准備。
當我們在學習一些基礎課如java,C語言等,我們會感覺到似乎這些沒什麼大作用,這些近似於低級語言的東西好像再努力也難成大器呀!計算機教育應該重視代碼編程的教育,專業學生也不能忽視代碼開發的學習。
如果你要問C語言這種代碼開發功能具有多大的用處,大名鼎鼎的UNIX操作系統就是使用C語言書寫的。而且我們玩的所有游戲幾乎也是使用C語言編寫的。
學習C語言的難度比學習匯編語言的難度小多了,而且C語言是一門「必修課」所以每一位立志成為電腦編程者的用戶都必須征服C語言這座山峰。
方法/步驟3:
理論聯系實踐
學習編寫程序,不僅要領悟老師的各種知識點,多看教材,還要結合課程重視上機的練習。很多學生在理解老師知識點和看教材上花了很多時間,卻不重視上機的練習,最終會走向「書獃子」類,很難在軟體開發中佔有一席之地。在看教材、聽課的同時,要將知識點在上機過程中做第二消化,這樣便比光消化課本會強得多。當然每次上機應該做好准備,很多學生是無目標的上機,其學習效率當
然會很低。上機前要計劃一下上機做些什麼,要有一些新思路來設計和調試程序。只有在上機過程中不斷發現問題,解決問題,才能逐步邁向程序員之路。又一些同學光重視上機,
忽視理論的學習,這些同學剛開始好像進步快,但到了一定的層次,就會停滯不前了。因此,實操要與理論同步,緊密結合,方可為編程打下扎實的基礎。
總結學習軟體需要什麼?軟體編程需要實踐。
方法/步驟4:
深入學習,練就高手
經過一定時間的學習、實踐,你已經具備了較扎實的計算機編程方法和技巧。正因為你有了上面的基礎,學習起新的語言來更是輕車熟路。
總之,學習軟體需要什麼?實際和其他的一些技術錯不多,只要你肯吃苦,沒什麼學不成的,所以只有想不到沒有做不到,告誡軟體愛好著要想掌握它,就要實踐、實踐、再實踐。當學到了一種新的技術或知識時,多實踐是鞏固學習的一種最好最有效的方法。
Ⅲ 如何開發一個軟體
TAG:軟體工程導論,軟體生命周期模型,軟體開發方法TEXT:在規定的投資規模和時間限制內,實現符合用戶需求的高質量軟體是軟體開發的目標,為實現這一目標,人們根據軟體開發的特點,提出了多種軟體開發策略。通過不同的軟體開發模型闡明從問題提出到最終軟體實現,軟體開發工作過程的階段性任務分解,並規定了每一個階段的目標、任務以及工作結果的表達形式。常見的軟體設計模型有:瀑布模型(waterfallmodel)、漸進模型(increamentalmodel)、演化模型(evolutionarymodel)、螺旋模型(spiralmodel)、噴泉模型(fountainmodel)、智能模型(intelligentmodel)等。 REF:.txt,瀑市模型.txt,漸進模型.txt,噴泉模型.txt
瀑市模型TAG:軟體工程導論,軟體生命周期模型,軟體開發方法,瀑市模型TEXT:瀑市模型瀑市模型1970年由W.Royce提出,其開發過程依照固定順序進行,各階段的任務與工作結果如圖1所示。該模型嚴格規定各階段的任務,上一階段任務輸出作為下一階段工作輸入。此模型適合於用戶需求明確、開發技術比較成熟、工程管理嚴格的場合使用,其缺點是:由於任務順序固定,軟體研製周期長,前一階段工作中造成的差錯越到後期越大,而且糾正前期錯誤的代價高。 圖1瀑布型開發過程 REF:.txt,16_2_1.jpg,16_2_2.jpg
漸進模型TAG:軟體工程導論,軟體生命周期模型,軟體開發方法,漸進模型TEXT:漸進模型從一組簡單的基本用戶需求出發,首先建立一個滿足基本要求的原型系統。通過測試和運行原型系統,有用戶提出進一步細致的需求,然後修改和完善原型系統,反復進行這個過程直到用戶滿意為止。該模型適合開發初期用戶需求不甚明確,相關技術和理論需要不斷研究、反復實驗以及開發過程需要經常與用戶交互的場合,學習或研究類軟體的開發常用此法。由於用戶在整個軟體開發過程中都直接參與.因此最終的軟體產品能夠很好地滿足用戶的需求。漸進模型開發過程如圖2所示。 圖2漸進型開發模型 REF:.txt,16_2_3.jpg
噴泉模型TAG:軟體工程導論,軟體生命周期模型,軟體開發方法,噴泉模型TEXT:噴泉模型該模型主要用於面向對象軟體技術開發項目,其特點是各項活動之間沒有明顯的界限。由於面向對象技術的優點,該模型軟體開發過程與開發者對問題認識和理解的深化過程同步。該模型重視軟體研發工作的重復與漸進,通過相關對象的反復迭代並在迭代中充實擴展,實現了開發工作的迭代和無間隙,該開發過程分為:分析、設計、實現、確認、維護和演化。 REF:.txt
Ⅳ 軟體怎麼開發
軟體開發是根據用戶要求建造出軟體系統或者系統中的軟體部分的過程。軟體開發是一項包括需求捕捉、需求分析、設計、實現和測試的系統工程。軟體一般是用某種程序設計語言來實現的。通常採用軟體開發工具可以進行開發。軟體分為系統軟體和應用軟體,並不只是包括可以在計算機上運行的程序,與這些程序相關的文件一般也被認為是軟體的一部分。 軟體設計思路和方法的一般過程,包括設計軟體的功能和實現的演算法和方法、軟體的總體結構設計和模塊設計、編程和調試、程序聯調和測試,然後進行編寫再提交程序。
Ⅳ 怎麼開發軟體
軟體(Software)簡單的說就是那些在計算機中能看的著,但摸不著的東西,概念性的說軟體也稱為「軟設備」,廣義地說軟體是指系統中的程序以及開發、使用程序所需要的所有文檔的集合。軟體分為系統軟體和應用軟體。 軟體並不只是包括可以在計算機上運行的程序,與這些程序相關的文件一般也被認為是軟體的一部分。 軟體被應用於世界的各個領域,對人們的生活和工作都產生了深遠的影響
Ⅵ 軟體是怎麼開發的
簡單一點的軟體,有個思路開始動手寫就行了
大一些的軟體,要做需求分析,概要設計,詳細設計,最終才是代碼實現
更大更復雜的基本也是這個套路,不過細節上要更復雜
Ⅶ 怎麼自己開發軟體呢
軟體製作分兩類應用軟體和系統軟體
應用軟體的開發大多使用 VB VC c++ 等等
系統軟體的開發大多使用 C C++
現在新的語言是面向對象的編程語言
C# Vb.net java 等等
可以按照開發需求來選擇 語言種類
大多數軟體都會相應的有一個資料庫來支持它運行。比如我們天天都在用的QQ,在它的後台就有一個很大的資料庫,而且是個共享資料庫,這樣保證了每一個用戶在任何一個地方都可以隨時登錄QQ。當用戶輸入了帳號和密碼後,它就會相應的寫入後台資料庫,當密碼與資料庫的密碼想符合,用戶才可以在前台登錄。
目前開發軟體的工具很多,比如Visual Basic,是現在比較流行的,還有Visual C++、Delphi也很不錯。另外有些人喜歡有Visual Foxpro來製作一些比較小型的軟體,還有比較早的C程序,原來我們經常玩的俄羅斯方塊和貪吃蛇有很多都是用C開發出來的。比較大型的就是Microsoftsoft SQL Server和Access。當然,這些都是需要編程的,每個工具相應用的語言都不一樣,代碼也不一樣。
當軟體做成後,還要進行調試,來測試它的穩定度。當一系列測試都通過後,還要用一種工具來使它脫離所開發的軟體來運行,生成可執行文件.exe 這樣,一個軟體就基本做成了。
我們現在用的QQ 2005 beta3就是個測試版,也許你可能感覺到了,它總是不時的會出現些小問題,因為它目前還只是個測試版,正式版出來後,這些問題也就會隨之沒有了
Ⅷ 如何自己開發一個app軟體
如何自己開發一個app軟體
如今,不少企業都想擁有屬於自己企業或產品的手機APP,但其中最困擾企業主的問題就是:開發一款手機APP到底需要多少錢?
簡單點來說,要視手機APP的需求及質量而言,價位一般在幾千到十幾萬左右,更高端的價格更高。
四、APP開發公司的所在地
需要注意的是,同樣實力的APP開發公司,在不同的城市也會導致APP的成本費用高一些,如在北京、深圳和上海等地的開發公司開發成本費用就會比較高,因為當地開發人員的薪資和其他支出相對更高。
Ⅸ 如何製作開發一個軟體
1、需求分析
相關系統分析員向用戶初步了解需求,然後用相關的工具軟體列出要開發的系統的大功能模塊,每個大功能模塊有哪些小功能模塊,對於有些需求比較明確相關的界面時,在這一步裡面可以初步定義好少量的界面。
系統分析員深入了解和分析需求,根據自己的經驗和需求用WORD或相關的工具再做出一份文檔系統的功能需求文檔。這次的文檔會清楚列出系統大致的大功能模塊,大功能模塊有哪些小功能模塊,並且還列出相關的界面和界面功能。
系統分析員向用戶再次確認需求。
2、概要設計
首先,開發者需要對軟體系統進行概要設計,即系統設計。概要設計需要對軟體系統的設計進行考慮,包括系統的基本處理流程、系統的組織結構、模塊劃分、功能分配、介面設計、運行設計、數據結構設計和出錯處理設計等,為軟體的詳細設計提供基礎。
3、詳細設計
在詳細設計中,描述實現具體模塊所涉及到的主要演算法、數據結構、類的層次結構及調用關系,需要說明軟體系統各個層次中的每一個程序(每個模塊或子程序)的設計考慮,以便進行編碼和測試。應當保證軟體的需求完全分配給整個軟體。
4、編碼
在軟體編碼階段,開發者根據《軟體系統詳細設計報告》中對數據結構、演算法分析和模塊實現等方面的設計要求,開始具體的編寫程序工作,分別實現各模塊的功能,從而實現對目標系統的功能、性能、介面、界面等方面的要求。
5、測試
測試編寫好的系統。交給用戶使用,用戶使用後一個一個的確認每個功能。軟體測試有很多種:按照測試執行方,可以分為內部測試和外部測試;按照測試范圍,可以分為模塊測試和整體聯調;按照測試條件,可以分為正常操作情況測試和異常情況測試;按照測試的輸入范圍,可以分為全覆蓋測試和抽樣測試。
6、軟體交付
在軟體測試證明軟體達到要求後,軟體開發者應向用戶提交開發的目標安裝程序、資料庫的數據字典、《用戶安裝手冊》、《用戶使用指南》、需求報告、設計報告、測試報告等雙方合同約定的產物。
7、驗收
用戶驗收。
8、維護
根據用戶需求的變化或環境的變化,對應用程序進行全部或部分的修改。
(9)怎麼開發軟體擴展閱讀
軟體開發專業主要培養德智體全面發展,具有一定計算機軟硬體維護、網路組建、維護管理的高級實用技術型人才。
通過專業的學習,能熟練掌握常用的計算機軟體的使用、維護與技巧;在硬體方面學生應了解計算機硬體的發展,熟練掌握計算機組裝的方法,能熟練運用應用軟體檢測計算機性能、故障的范圍所在,掌握硬體故障的一般處理方法。
在網路方面,學生應掌握如今流行網路的技術特點,掌握網路工程、網路維護、網路安全及應用方面的知識。能勝任一般網路工程方案的設計、組建、網路維護、及簡單網站的建設與維護。