A. 4種軟體開發方法有哪些
1.結構化方法:分析,設計,程序設計構成,面向數據流的開發方法,分解和抽象的原則,數據流圖建立功能模型,完成需求分析工作。
2.Jackson方法:面向數據結構開發方法。數據結構為驅動,適合小規模的項目,當輸入數據結構和輸出結構之間沒有對應關系,難用此方法,JSD(Jackson Structure Prograamming)是JSP(JacksonSystem Development)的擴充
3.原型化方法:和演化模型相對應,需求不清,業務理論不確定,需求經常變化,規模不大去不太復雜時採用。
4.面向對象開發方法:分析,設計,實現,Booch,Coad,OMT,為統一各種面向對象方法的術語,概念和模型,推出UML (Unified Modeling Language)統一化建模語言,成為工業標准。
B. 軟體開發方法總結
在軟體開發的過程中,軟體開發方法是關繫到軟體開發成敗的重要因素。 軟體開發方法就是軟體開發所遵循的辦法和步驟,以保證所得到的運行系統和支持的文檔滿足質量要求,下面為大家分享了軟體開發方法,一起來看看吧!
1 結構化開發方法
結構指系統內各組成要素之間的相互聯系、相互作用的框架。結構化開發方法強調系統結構的合理性以及所開發的軟體的結構的合理性,主要是面向數據流的,因此也被稱為面向功能的軟體開發方法或面向數據流的軟體開發方法。結構化技術包括結構化分析、結構化設計和結構化程序設計三方面內容。
1.1 結構化分析的步驟
結構化分析是一種模型的確立活動,就是使用獨有的符號,來確立描繪信息(數據和控制)流和內容的模型,劃分系統的功能和行為,以及其他為確立模型不可缺少的描述。其基本步驟是:
(1)構造數據流模型:根據用戶當前需求,在創建實體—關系圖的基礎上,依據數據流圖構造數據流模型。
(2)構建控制流模型:一些應用系統除了要求用數據流建模外,通過構造控制流圖(CFD),構建控制流模型。
(3)生成數據字典:對所有數據元素的輸入、輸出、存儲結構,甚至是中間計算結果進行有組織的列表。目前一般採用CASE的「結構化分析和設計工具」來完成。
(4)生成可選方案,建立需求規約:確定各種方案的成本和風險等級,據此對各種方案進行分析,然後從中選擇一種方案,建立完整的需求規約。
1.2 結構化設計步驟
結構化設計是採用最佳的可能方法設計系統的各個組成部分以及各成分之間的內部聯系的技術,目的在於提出滿足系統需求的最佳軟體的結構,完成軟體層次圖或軟體結構圖。其基本步驟如下:
(1)研究、分析和審查數據流圖。從軟體的需求規格說明中弄清數據流加工的過程。
(2)然後根據數據流圖決定問題的類型。數據處理問題有兩種典型的類型:變換型和事務型。針對兩種不同的'類型分別進行分析處理。(3)由數據流圖推導出系統的初始結構圖。也就是把數據流圖映射到軟體模塊結構,設計出模塊結構的上層。
(4)利用一些試探性原則來改進系統的初始結構圖,直到得到符合要求的結構圖為止。即在數據流圖的基礎上逐步分解高層模塊,設計中下層模塊,並對軟體模塊結構進行優化,最終得到更為合理的軟體結構。
(5)描述模塊介面。
(6)修改和補充數據詞典。
(6)制定測試計劃。
結構化設計可以將用數據流圖表示的信息轉換成程序結構的設計描述。
2 模塊化開發方法
模塊化程序設計方法就是把一個待開發的軟體系統分解成若干可單獨命名和編址的較為簡單的部分,這些可單獨命名和編址的部分稱為模塊。每個模塊分別獨立地開發、測試,最後再組裝出整個軟體系統。這種方法不僅可以將軟體系統開發的復雜性在分解過程中降低,便於修改、維護,而且還容易實現同一個系統不同部分的並行開發,從而提高了軟體的生產效率。
一般,將用一個名字就可調用的一段程序稱為「模塊」。在考慮模塊化時,將模塊定義為多大較合適,模塊設計規則應如何制定成為關鍵,下面五條標准可供參考:
(1)模塊可分解性:如果一種設計方法提供了將問題分解成子問題的系統化機制,它就能降低整個系統的復雜性,從而實現一種有效的模塊化解決方案。
(2)模塊可組裝性:如果一種設計方法使現存的設計模塊能夠被組裝成新系統,它就能提供一種不用一切從頭開始的模塊化解決方案。
(3)模塊可理解性:如果一個模塊可以作為一個獨立的單位被理解,那麼它就易於構造和修改。(4)模塊連續性:如果對系統需求的微小修改只導致對單個模塊而不是對整個系統的修改,則修改引起的副作用就會被最小化。
一般來說,對模塊採用耦合和內聚兩個准則進行度量。如模塊內部具有高內聚和模塊間低耦合,那這樣的模塊就具有獨立性,模塊設計得比較好。
3 面向對象開發方法
面向對象開發方法是以面向對象程序設計語言作為基礎的,其核心思想是利用面向對象的概念和方法為軟體需求建立模型,進行系統設計,採用面向對象程序設計語言進行系統實現,對建成的系統進行面向對象的測試和維護。
如果一個軟體系統是使用這樣4個概念設計和實現的,則可以認為這個軟體系統是面向對象的。其基本要點可以概括為:
(1)數據的抽象,即類與子類的概念及相互關系。任何客觀的事物和實體都是對象,復雜對象可以由簡單對象組成
(2)數據及對它的操作的一體化,即封裝的概念和方法。具有相同數據和操作的對象可歸並為一個類,具有封裝性,形成一個包裝;對象是類的一個實例;一個類可以產生很多對象。
(3)屬性與操作由父類向子類傳遞,即繼承的概念與方法。類可以派生出子類,繼承能避免共同行為的重復。
(4)客觀事物之間的相互關系用統一的、消息傳遞的方法來描述。
目前廣泛使用的面向對象開發方法包括Booch方法、Rumbaugh方法、Coad和Yourdon方法、Jacobson方法、Wirfs-Brock方法和統一建模方法等。
C. 軟體開發方法
1:瀑布方法
所有軟體方法的祖先是瀑布方法(waterfall methodology)。它之所以被稱為瀑布方法是因為開發模塊相互之間的依次流動,瀑布方法通過控制閥門的一系列活動組成。這些控制閥門決定一個給定的活動是否已經完成並且可以進入下一個活動。需求階段處理決定了所有的軟體需求。設計階段決定整個系統的設計。代碼在代碼階段編寫。代碼然後被測試。最後產品被發布。
對瀑布方法模型最基本的批評就是瀑布方法對於反饋事物發展狀況耗時太長。軟體的一些內容那個很容易被理解,而另一些內容則相反。因此,當用戶對於手邊出現的問題都沒有很好理解的時候,開發人員試圖先完成所有的需求(也就是說,將需求量化到實際的規格說明當中)是非常空難的。更進一步來說,如果在需求中出現一個錯誤,它將傳播到設計階段,傳播到代碼中等。同時一般不存在過程中返回的真正能力。因此,如果進入測試並且發現設計的一部分是無法工作的,那麼就會進行修改並修補問題而交差,但是這種方法將會失去設計活動的所有上下文環境——你只是有目的地對系統權宜行事!
認識到這個問題後瀑布方法已經被修改成幾種形式。例如螺旋式瀑布方法它繼承並使用了多個瀑布模型。這種方法縮短了生命周期向下的時間;也就是說,為解決為題提供了迭代方案。
最終,大家無法脫離瀑布方法是因為它確實是合乎常規的方法。首先,這種方法可以決定將要構建的內容。接著,決定將要如何構建這些,下一步,世界構建這些內容。可以確保自己確實構建自己所需的東西(並且可以成功運行)。
2:統一過程
統一過程應用了基於處理系統首先考慮的最重要方面而實施的短期迭代開發。
開發一個寡慾各種用列(use case)的調查文檔(也就是說,對用戶與系統交互的簡短描述),並且開始排除那些可能對整個系統成功造成風險的用列。只要適合,就可以在開發過程中添加或者刪除用列。
統一過程的4個階段定義如下:
初始(inception):系統仍然處於決定系統內容的階段——系統將要完成什麼以及系統的邊界是什麼。如果系統能夠很好的理解,那麼這個階段就非常短。
細化(Elaboration):正在將體系結構的風險移至系統。一種表述該階段的說法是,「你是否已經解決了所有難題?」或者「你知道如何完成你將要去完成的事情嗎?」
構造(Construction)正在完成所有相關的用列來使系統為移交做好准備,也就是說,進入Beta版本。
移交(Transition)使系統通過它的最後發布階段以及Beta版本。它可能包括軟體的操作及維護。
這是一個關注於維護要素的敏捷過程,但是仍然採用了大量用例開發,間模等方面的傳統實踐。
3:極限編程:
極限編程的開發過程就是以代碼為中心的方法。
讓用戶告知你一些有關系統是如何如用轉的故事描述,基於故事相互之間的重要性來定製這些系統這樣就可以為自己的團隊提供一個故事集合,可以在一個給定的迭代中完成他們,大約兩周時間——每周工作40個小時,你將團隊劃分,雙人應付沒一個故事,在代碼被編寫時提供確定數量的內建對等評審。你和你的同伴在編寫自己代碼的同時編寫單元測試。在完成自己負責的那段代碼後,將其拿到集成的機器上,放入代碼基線,運行從所有人的代碼中積累而成的單元測試。在完成iji負責的那段代碼後,將會提供一個運行系統使用戶可以評審來確保自己的工作滿足他們的需要。
注意極限編程並沒有將軟體的設計設置成一個高級階段。相反它認為那些最前端的設計對於整個系統開發不是很有幫助,並且隨著實際開發的進行它最終還是被修改。
極限編程對於需要持續提供運行系統的軟體卡發來說非常適用。當缺少用戶介入或者項目規模很大時極限編程方法將會不好用,因為這時協調和設計活動實際上變得更重要了。
極限編程合理地考慮開發團體的能力,這樣可以有效計劃。
D. 軟體開發中最常用方法有哪些
最常用的方法都有:
日期函數,
字元串函數,
文件函數等,
比如下面的函數:
1.1.一個不透明的結構, 它指向一條線程並間接(通過該線程)引用了整個 Lu a 解釋器的狀態。 L ua 庫是完全可重入的: 它沒有任何全局變數。 狀態機所有的信息都可以通過這個結構訪問到。
這個結構的指針必須作為第一個參數傳遞給每一個庫函數。 l ua_newstate 是一個例外, 這個函數會從頭創建一個 L ua 狀態機。
l。a_status
1.2.返回線程 L 的狀態。
正常的線程狀態是 0 (LUA_OK)。 當線程用 lua_resume 執行完畢並拋出了一個錯誤時, 狀態值是錯誤碼。 如果線程被掛起,狀態為 LUA_YIELD 。
你只能在狀態為 LUA_OK 的線程中調用函數。 你可以延續一個狀態為 LUA_OK 的線程 (用於開始新協程)或是狀態為 LUA_YIELD 的線程 (用於延續協程)。
lu a_stringtonumber
size_t lu a_stringtonumber (l ua_State *L, const char *s);
將一個零結尾的字元串 s 轉換為一個數字, 將這個數字壓棧,並返回字元串的總長度(即長度加一)。 轉換的結果可能是整數也可能是浮點數, 這取決於 Lua 的轉換語法(。 這個字元串可以有前置和後置的空格以及符號。 如果字元串並非一個有效的數字,返回 0 並不把任何東西壓棧。 (注意,這個結果可以當成一個布爾量使用,為真即轉換成功。)
lu a_toboolean
int lu a_toboolean (lu a_State *L, int index);
把給定索引處的 Lu a 值轉換為一個 C 中的布爾量( 0 或是 1 )。 和 L ua 中做的所有測試一樣, lua_toboolean 會把任何不同於 false 和 nil 的值當作真返回; 否則就返回假。 (如果你想只接受真正的 boolean 值, 就需要使用 lua_isboolean 來測試值的類型。)
lu a_tocfunction
lu a_CFunction lua_tocfunction (lu a_State *L, int index);
把給定索引處的 L ua 值轉換為一個 C 函數。 這個值必須是一個 C 函數; 如果不是就返回 NULL 。
lu a_tointeger
lua_Integer l ua_tointeger (lu a_State *L, int index);
等價於調用 l ua_tointegerx, 其參數 isnum 為 NULL。
lu a_tointegerx
l ua_Integer lua_tointegerx (lua_State *L, int index, int *isnum);
將給定索引處的 L。a 值轉換為帶符號的整數類型 lu a_Integer。 這個 Lu a 值必須是一個整數,或是一個可以被轉換為整數 (3)的數字或字元串; 否則,lua_tointegerx 返回 0 。
如果 isnum 不是 NULL, *isnum 會被設為操作是否成功。
lu a_tolstring
const char *lu a_tolstring (lu a_State *L, int index, size_t *len);
把給定索引處的 Lua 值轉換為一個 C 字元串。 如果 len 不為 NULL , 它還把字元串長度設到 *len 中。 這個 L ua 值必須是一個字元串或是一個數字; 否則返回返回 NULL 。 如果值是一個數字, lua_tolstring 還會 把堆棧中的那個值的實際類型轉換為一個字元串。 (當遍歷一張表的時候, 若把 lua_tolstring 作用在鍵上, 這個轉換有可能導致 lua_next 弄錯。)
lua_tolstring 返回一個已對齊指針 指向 Lua 狀態機中的字元串。 這個字元串總能保證 ( C 要求的)最後一個字元為零 ('