主流軟件開發流程(軟件開發的(de)一(yī)般流程是怎樣的(de))
本篇文章(zhāng)給大家談談主流軟件開發流程,以及軟件開發的(de)一(yī)般流程是怎樣的(de)對應的(de)知識點,希望對各位有(yǒu)所幫助,不要忘了收藏本站喔。
本文目錄一(yī)覽:
- 1、面向對象軟件開發主要有(yǒu)哪些過程?
- 2、如(rú)何自(zì)己開發一(yī)個app軟件
- 3、手機(jī)APP軟件開發怎麽做(zuò)?
- 4、軟件開發主要分為(wèi)哪幾個階段
- 5、軟件開發需要會什麽?
面向對象軟件開發主要有(yǒu)哪些過程?
面向對象(Object Oriented,OO)是當前計算機(jī)界關心的(de)重點,它是90年(nián)代軟件開發方法的(de)主流。面向對象的(de)概念和(hé)應用已超越了程序設計和(hé)軟件開發,擴展到很寬的(de)範圍。如(rú)數據庫系統、交互式界面、應用結構、應用平台、分布式系統、網絡管理(lǐ)結構、CAD技術、人工智能等領域。
談到面向對象,這方面的(de)文章(zhāng)非常多。但是,明确地(dì)給出對象的(de)定義或說明對象的(de)定義的(de)非常少——至少我(wǒ)現在還沒有(yǒu)發現。其初,“面向對象”是專指在程序設計中采用封裝、繼承、抽象等設計方法。可(kě)是,這個定義顯然不能再适合現在情況。面向對象的(de)思想已經涉及到軟件開發的(de)各個方面。如(rú),面向對象的(de)分析(OOA,Object Oriented Analysis),面向對象的(de)設計(OOD,Object Oriented Design)、以及我(wǒ)們(men)經常說的(de)面向對象的(de)編程實現(OOP,Object Oriented Programming)。許多有(yǒu)關面向對象的(de)文章(zhāng)都隻是講述在面向對象的(de)開發中所需要注意的(de)問題或所采用的(de)比較好的(de)設計方法。看這些文章(zhāng)隻有(yǒu)真正懂得什麽是對象,什麽是面向對象,才能最大程度地(dì)對自(zì)己有(yǒu)所裨益。這一(yī)點,恐怕對初學(xué)者甚至是從事相關工作多年(nián)的(de)人員也會對它們(men)的(de)概念模糊不清。
面向對象是當前計算機(jī)界關心的(de)重點,它是90年(nián)代軟件開發方法的(de)主流。面向對象的(de)概念和(hé)應用已超越了程序設計和(hé)軟件開發,擴展到很寬的(de)範圍。如(rú)數據庫系統、交互式界面、應用結構、應用平台、分布式系統、網絡管理(lǐ)結構、CAD技術、人工智能等領域。
一(yī)、傳統開發方法存在問題
1.軟件重用性差
重用性是指同一(yī)事物不經修改或稍加修改就可(kě)多次重複使用的(de)性質。軟件重用性是軟件工程追求的(de)目标之一(yī)。
2.軟件可(kě)維護性差
軟件工程強調軟件的(de)可(kě)維護性,強調文檔資料的(de)重要性,規定最終的(de)軟件産品應該由完整、一(yī)緻的(de)配置成分組成。在軟件開發過程中,始終強調軟件的(de)可(kě)讀性、可(kě)修改性和(hé)可(kě)測試性是軟件的(de)重要的(de)質量指标。實踐證明,用傳統方法開發出來的(de)軟件,維護時其費用和(hé)成本仍然很高(gāo),其原因是可(kě)修改性差,維護困難,導緻可(kě)維護性差。
3.開發出的(de)軟件不能滿足用戶需要
用傳統的(de)結構化方法開發大型軟件系統涉及各種不同領域的(de)知識,在開發需求模糊或需求動态變化的(de)系統時,所開發出的(de)軟件系統往往不能真正滿足用戶的(de)需要。
用結構化方法開發的(de)軟件,其穩定性、可(kě)修改性和(hé)可(kě)重用性都比較差,這是因為(wèi)結構化方法的(de)本質是功能分解,從代表目标系統整體功能的(de)單個處理(lǐ)着手,自(zì)頂向下不斷把複雜的(de)處理(lǐ)分解為(wèi)子(zǐ)處理(lǐ),這樣一(yī)層一(yī)層的(de)分解下去(qù),直到僅剩下若幹個容易實現的(de)子(zǐ)處理(lǐ)功能為(wèi)止,然後用相應的(de)工具來描述各個最低(dī)層的(de)處理(lǐ)。因此,結構化方法是圍繞實現處理(lǐ)功能的(de)“過程”來構造系統的(de)。然而,用戶需求的(de)變化大部分是針對功能的(de),因此,這種變化對于基于過程的(de)設計來說是災難性的(de)。用這種方法設計出來的(de)系統結構常常是不穩定的(de) ,用戶需求的(de)變化往往造成系統結構的(de)較大變化,從而需要花費很大代價才能實現這種變化。
二、面向對象的(de)基本概念
(1)對象。
對象是人們(men)要進行(xíng)研究的(de)任何事物,從最簡單的(de)整數到複雜的(de)飛(fēi)機(jī)等均可(kě)看作對象,它不僅能表示具體的(de)事物,還能表示抽象的(de)規則、計劃或事件。
(2)對象的(de)狀态和(hé)行(xíng)為(wèi)。
對象具有(yǒu)狀态,一(yī)個對象用數據值來描述它的(de)狀态。
對象還有(yǒu)操作,用于改變對象的(de)狀态,對象及其操作就是對象的(de)行(xíng)為(wèi)。
對象實現了數據和(hé)操作的(de)結合,使數據和(hé)操作封裝于對象的(de)統一(yī)體中
(3)類。
具有(yǒu)相同或相似性質的(de)對象的(de)抽象就是類。因此,對象的(de)抽象是類,類的(de)具體化就是對象,也可(kě)以說類的(de)實例是對象。
類具有(yǒu)屬性,它是對象的(de)狀态的(de)抽象,用數據結構來描述類的(de)屬性。
類具有(yǒu)操作,它是對象的(de)行(xíng)為(wèi)的(de)抽象,用操作名和(hé)實現該操作的(de)方法來描述。
(4)類的(de)結構。
在客觀世界中有(yǒu)若幹類,這些類之間有(yǒu)一(yī)定的(de)結構關系。通常有(yǒu)兩種主要的(de)結構關系,即一(yī)般--具體結構關系,整體--部分結構關系。
①一(yī)般——具體結構稱為(wèi)分類結構,也可(kě)以說是“或”關系,或者是“is a”關系。
②整體——部分結構稱為(wèi)組裝結構,它們(men)之間的(de)關系是一(yī)種“與”關系,或者是“has a”關系。
(5)消息和(hé)方法。
對象之間進行(xíng)通信的(de)結構叫做(zuò)消息。在對象的(de)操作中,當一(yī)個消息發送給某個對象時,消息包含接收對象去(qù)執行(xíng)某種操作的(de)信息。發送一(yī)條消息至少要包括說明接受消息的(de)對象名、發送給該對象的(de)消息名(即對象名、方法名)。一(yī)般還要對參數加以說明,參數可(kě)以是認識該消息的(de)對象所知道(dào)的(de)變量名,或者是所有(yǒu)對象都知道(dào)的(de)全局變量名。
類中操作的(de)實現過程叫做(zuò)方法,一(yī)個方法有(yǒu)方法名、參數、方法體。消息傳遞如(rú)圖10-1所示。
二、面向對象的(de)特征
(1)對象唯一(yī)性。
每個對象都有(yǒu)自(zì)身唯一(yī)的(de)标識,通過這種标識,可(kě)找到相應的(de)對象。在對象的(de)整個生命期中,它的(de)标識都不改變,不同的(de)對象不能有(yǒu)相同的(de)标識。
(2)分類性。
分類性是指将具有(yǒu)一(yī)緻的(de)數據結構(屬性)和(hé)行(xíng)為(wèi)(操作)的(de)對象抽象成類。一(yī)個類就是這樣一(yī)種抽象,它反映了與應用有(yǒu)關的(de)重要性質,而忽略其他一(yī)些無關內(nèi)容。任何類的(de)劃分都是主觀的(de),但必須與具體的(de)應用有(yǒu)關。
(3)繼承性。
繼承性是子(zǐ)類自(zì)動共享父類數據結構和(hé)方法的(de)機(jī)制,這是類之間的(de)一(yī)種關系。在定義和(hé)實現一(yī)個類的(de)時候,可(kě)以在一(yī)個已經存在的(de)類的(de)基礎之上來進行(xíng),把這個已經存在的(de)類所定義的(de)內(nèi)容作為(wèi)自(zì)己的(de)內(nèi)容,并加入若幹新的(de)內(nèi)容。
繼承性是面向對象程序設計語言不同于其它語言的(de)最重要的(de)特點,是其他語言所沒有(yǒu)的(de)。
在類層次中,子(zǐ)類隻繼承一(yī)個父類的(de)數據結構和(hé)方法,則稱為(wèi)單重繼承。
在類層次中,子(zǐ)類繼承了多個父類的(de)數據結構和(hé)方法,則稱為(wèi)多重繼承。
在軟件開發中,類的(de)繼承性使所建立的(de)軟件具有(yǒu)開放性、可(kě)擴充性,這是信息組織與分類的(de)行(xíng)之有(yǒu)效的(de)方法,它簡化了對象、類的(de)創建工作量,增加了代碼的(de)可(kě)重性。
采用繼承性,提供了類的(de)規範的(de)等級結構。通過類的(de)繼承關系,使公共的(de)特性能夠共享,提高(gāo)了軟件的(de)重用性。
(4)多态性(多形性)
多态性使指相同的(de)操作或函數、過程可(kě)作用于多種類型的(de)對象上并獲得不同的(de)結果。不同的(de)對象,收到同一(yī)消息可(kě)以産生不同的(de)結果,這種現象稱為(wèi)多态性。
多态性允許每個對象以适合自(zì)身的(de)方式去(qù)響應共同的(de)消息。
多态性增強了軟件的(de)靈活性和(hé)重用性。
三、面向對象的(de)要素
(1)抽象。
抽象是指強調實體的(de)本質、內(nèi)在的(de)屬性。在系統開發中,抽象指的(de)是在決定如(rú)何實現對象之前的(de)對象的(de)意義和(hé)行(xíng)為(wèi)。使用抽象可(kě)以盡可(kě)能避免過早考慮一(yī)些細節。
類實現了對象的(de)數據(即狀态)和(hé)行(xíng)為(wèi)的(de)抽象。
(2)封裝性(信息隐藏)。
封裝性是保證軟件部件具有(yǒu)優良的(de)模塊性的(de)基礎。
面向對象的(de)類是封裝良好的(de)模塊,類定義将其說明(用戶可(kě)見的(de)外部接口)與實現(用戶不可(kě)見的(de)內(nèi)部實現)顯式地(dì)分開,其內(nèi)部實現按其具體定義的(de)作用域提供保護。
對象是封裝的(de)最基本單位。封裝防止了程序相互依賴性而帶來的(de)變動影響。面向對象的(de)封裝比傳統語言的(de)封裝更為(wèi)清晰、更為(wèi)有(yǒu)力。
(3)共享性
面向對象技術在不同級别上促進了共享
同一(yī)類中的(de)共享。同一(yī)類中的(de)對象有(yǒu)着相同數據結構。這些對象之間是結構、行(xíng)為(wèi)特征的(de)共享關系。
在同一(yī)應用中共享。在同一(yī)應用的(de)類層次結構中,存在繼承關系的(de)各相似子(zǐ)類中,存在數據結構和(hé)行(xíng)為(wèi)的(de)繼承,使各相似子(zǐ)類共享共同的(de)結構和(hé)行(xíng)為(wèi)。使用繼承來實現代碼的(de)共享,這也是面向對象的(de)主要優點之一(yī)。
在不同應用中共享。面向對象不僅允許在同一(yī)應用中共享信息,而且為(wèi)未來目标的(de)可(kě)重用設計準備了條件。通過類庫這種機(jī)制和(hé)結構來實現不同應用中的(de)信息共享。
4.強調對象結構而不是程序結構
四、面向對象的(de)開發方法
目前,面向對象開發方法的(de)研究已日趨成熟,國(guó)際上已有(yǒu)不少面向對象産品出現。面向對象開發方法有(yǒu)Coad方法、Booch方法和(hé)OMT方法等。
1.Booch方法
Booch最先描述了面向對象的(de)軟件開發方法的(de)基礎問題,指出面向對象開發是一(yī)種根本不同于傳統的(de)功能分解的(de)設計方法。面向對象的(de)軟件分解更接近人對客觀事務的(de)理(lǐ)解,而功能分解隻通過問題空間的(de)轉換來獲得。
2.Coad方法
Coad方法是1989年(nián)Coad和(hé)Yourdon提出的(de)面向對象開發方法。該方法的(de)主要優點是通過多年(nián)來大系統開發的(de)經驗與面向對象概念的(de)有(yǒu)機(jī)結合,在對象、結構、屬性和(hé)操作的(de)認定方面,提出了一(yī)套系統的(de)原則。該方法完成了從需求角度進一(yī)步進行(xíng)類和(hé)類層次結構的(de)認定。盡管Coad方法沒有(yǒu)引入類和(hé)類層次結構的(de)術語,但事實上已經在分類結構、屬性、操作、消息關聯等概念中體現了類和(hé)類層次結構的(de)特征。
3.OMT方法
OMT方法是1991年(nián)由James Rumbaugh等5人提出來的(de),其經典著作為(wèi)“面向對象的(de)建模與設計”。
該方法是一(yī)種新興的(de)面向對象的(de)開發方法,開發工作的(de)基礎是對真實世界的(de)對象建模,然後圍繞這些對象使用分析模型來進行(xíng)獨立于語言的(de)設計,面向對象的(de)建模和(hé)設計促進了對需求的(de)理(lǐ)解,有(yǒu)利于開發得更清晰、更容易維護的(de)軟件系統。該方法為(wèi)大多數應用領域的(de)軟件開發提供了一(yī)種實際的(de)、高(gāo)效的(de)保證,努力尋求一(yī)種問題求解的(de)實際方法。
4.UML(Unified Modeling Language)語言
軟件工程領域在1995年(nián)~1997年(nián)取得了前所未有(yǒu)的(de)進展,其成果超過軟件工程領域過去(qù)15年(nián)的(de)成就總和(hé),其中最重要的(de)成果之一(yī)就是統一(yī)建模語言(UML)的(de)出現。UML将是面向對象技術領域內(nèi)占主導地(dì)位的(de)标準建模語言。
UML不僅統一(yī)了Booch方法、OMT方法、OOSE方法的(de)表示方法,而且對其作了進一(yī)步的(de)發展,最終統一(yī)為(wèi)大衆接受的(de)标準建模語言。UML是一(yī)種定義良好、易于表達、功能強大且普遍适用的(de)建模語言。它融入了軟件工程領域的(de)新思想、新方法和(hé)新技術。它的(de)作用域不限于支持面向對象的(de)分析與設計,還支持從需求分析開始的(de)軟件開發全過程。
五、面向對象的(de)模型
·對象模型
對象模型表示了靜态的(de)、結構化的(de)系統數據性質,描述了系統的(de)靜态結構,它是從客觀世界實體的(de)對象關系角度來描述,表現了對象的(de)相互關系。該模型主要關心系統中對象的(de)結構、屬性和(hé)操作,它是分析階段三個模型的(de)核心,是其他兩個模型的(de)框架。
1.對象和(hé)類
(1) 對象。
對象建模的(de)目的(de)就是描述對象。
(2) 類。
通過将對象抽象成類,我(wǒ)們(men)可(kě)以使問題抽象化,抽象增強了模型的(de)歸納能力。
(3) 屬性。
屬性指的(de)是類中對象所具有(yǒu)的(de)性質(數據值)。
(4) 操作和(hé)方法。
操作是類中對象所使用的(de)一(yī)種功能或變換。類中的(de)各對象可(kě)以共享操作,每個操作都有(yǒu)一(yī)個目标對象作為(wèi)其隐含參數。
方法是類的(de)操作的(de)實現步驟。
2.關聯和(hé)鏈
關聯是建立類之間關系的(de)一(yī)種手段,而鏈則是建立對象之間關系的(de)一(yī)種手段。
(1) 關聯和(hé)鏈的(de)含義。
鏈表示對象間的(de)物理(lǐ)與概念聯結,關聯表示類之間的(de)一(yī)種關系,鏈是關聯的(de)實例,關聯是鏈的(de)抽象。
(2) 角色。
角色說明類在關聯中的(de)作用,它位于關聯的(de)端點。
(3) 受限關聯。
受限關聯由兩個類及一(yī)個限定詞組成,限定詞是一(yī)種特定的(de)屬性,用來有(yǒu)效的(de)減少關聯的(de)重數,限定詞在關聯的(de)終端對象集中說明。
限定提高(gāo)了語義的(de)精确性,增強了查詢能力,在現實世界中,常常出現限定詞。
(4) 關聯的(de)多重性。
關聯的(de)多重性是指類中有(yǒu)多少個對象與關聯的(de)類的(de)一(yī)個對象相關。重數常描述為(wèi)“一(yī)”或“多”。
圖10-8表示了各種關聯的(de)重數。小實心圓表示“多個”,從零到多。小空心圓表示零或一(yī)。沒有(yǒu)符号表示的(de)是一(yī)對一(yī)關聯。
3.類的(de)層次結構
(1) 聚集關系。
聚集是一(yī)種“整體-部分”關系。在這種關系中,有(yǒu)整體類和(hé)部分類之分。聚集最重要的(de)性質是傳遞性,也具有(yǒu)逆對稱性。
聚集可(kě)以有(yǒu)不同層次,可(kě)以把不同分類聚集起來得到一(yī)顆簡單的(de)聚集樹,聚集樹是一(yī)種簡單表示,比畫很多線來将部分類聯系起來簡單得多,對象模型應該容易地(dì)反映各級層次,圖10-10表示一(yī)個關于微機(jī)的(de)多極聚集。
(2)一(yī)般化關系。
一(yī)般化關系是在保留對象差異的(de)同時共享對象相似性的(de)一(yī)種高(gāo)度抽象方式。它是“一(yī)般---具體”的(de)關系。一(yī)般化類稱為(wèi)你類,具體類又能稱為(wèi)子(zǐ)類,各子(zǐ)類繼承了交類的(de)性質,而各子(zǐ)類的(de)一(yī)些共同性質和(hé)操作又歸納到你類中。因此,一(yī)般化關系和(hé)繼承是同時存在的(de)。一(yī)般化關系的(de)符号表示是在類關聯的(de)連線上加一(yī)個小三角形,如(rú)圖10-11
4.對象模型
(1)模闆。模闆是類、關聯、一(yī)般化結構的(de)邏輯組成。
(2)對象模型。
對象模型是由一(yī)個或若幹個模闆組成。模闆将模型分為(wèi)若幹個便于管理(lǐ)的(de)子(zǐ)塊,在整個對象模型和(hé)類及關聯的(de)構造塊之間,模闆提供了一(yī)種集成的(de)中間單元,模闆中的(de)類名及關聯名是唯一(yī)的(de)。
·動态模型
動态模型是與時間和(hé)變化有(yǒu)關的(de)系統性質。該模型描述了系統的(de)控制結構,它表示了瞬間的(de)、行(xíng)為(wèi)化的(de)系統控制
性質,它關心的(de)是系統的(de)控制,操作的(de)執行(xíng)順序,它表示從對象的(de)事件和(hé)狀态的(de)角度出發,表現了對象的(de)相互行(xíng)為(wèi)。
該模型描述的(de)系統屬性是觸發事件、事件序列、狀态、事件與狀态的(de)組織。使用狀态圖作為(wèi)描述工具。它涉及到事件、狀态、操作等重要概念。
1.事件
事件是指定時刻發生的(de)某件事。
2.狀态
狀态是對象屬性值的(de)抽象。對象的(de)屬性值按照影響對象顯著行(xíng)為(wèi)的(de)性質将其歸并到一(yī)個狀态中去(qù)。狀态指明了對象
對輸入事件的(de)響應。
3.狀态圖
狀态圖是一(yī)個标準的(de)計算機(jī)概念,他是有(yǒu)限自(zì)動機(jī)的(de)圖形表示,這裏把狀态圖作為(wèi)建立動态模型的(de)圖形工具。
狀态圖反映了狀态與事件的(de)關系。當接收一(yī)事件時,下一(yī)狀态就取決于當前狀态和(hé)所接收的(de)該事件,由該事件引起的(de)狀态變化稱為(wèi)轉換。
狀态圖是一(yī)種圖,用結點表示狀态,結點用圓圈表示;圓圈內(nèi)有(yǒu)狀态名,用箭頭連線表示狀态的(de)轉換,上面标記事件名,箭頭方向表示轉換的(de)方向。
·功能模型
功能模型描述了系統的(de)所有(yǒu)計算。功能模型指出發生了什麽,動态模型确定什麽時候發生,而對象模型确定發生的(de)客體。功能模型表明一(yī)個計算如(rú)何從輸入值得到輸出值,它不考慮計算的(de)次序。功能模型由多張數據流圖組成。數據流圖用來表示從源對象到目标對象的(de)數據值的(de)流向,它不包含控制信息,控制信息在動态模型中表示,同時數據流圖也不表示對象中值的(de)組織,值的(de)組織在對象模型中表示。圖10-15給出了一(yī)個窗口系統的(de)圖标顯示的(de)數據流圖。
數據流圖中包含有(yǒu)處理(lǐ)、數據流、動作對象和(hé)數據存儲對象。
1.處理(lǐ)
數據流圖中的(de)處理(lǐ)用來改變數據值。最低(dī)層處理(lǐ)是純粹的(de)函數,一(yī)張完整的(de)數據流圖是一(yī)個高(gāo)層處理(lǐ)。
2.數據流
數據流圖中的(de)數據流将對象的(de)輸出與處理(lǐ)、處理(lǐ)與對象的(de)輸入、處理(lǐ)與處理(lǐ)聯系起來。在一(yī)個計算機(jī)中,用數據流來表示一(yī)中間數據值,數據流不能改變數據值。
3.動作對象
動作對象是一(yī)種主動對象,它通過生成或者使用數據值來驅動數據流圖。
4.數據存儲對象
數據流圖中的(de)數據存儲是被動對象,它用來存儲數據。它與動作對象不一(yī)樣,數據存儲本身不産生任何操作,它隻響應存儲和(hé)訪問的(de)要求。
六、面向對象的(de)分析
面向對象分析的(de)目的(de)是對客觀世界的(de)系統進行(xíng)建模。本節以上面介紹的(de)模型概念為(wèi)基礎,結合“銀行(xíng)網絡系統”的(de)具體實例來構造客觀世界問題的(de)準确、嚴密的(de)分析模型。
分析模型有(yǒu)三種用途:用來明确問題需求;為(wèi)用戶和(hé)開發人員提供明确需求;為(wèi)用戶和(hé)開發人員提供一(yī)個協商(shāng)的(de)基礎,作為(wèi)後繼的(de)設計和(hé)實現的(de)框架。
(一(yī)) 面向對象的(de)分析
系統分析的(de)第一(yī)步是:陳述需求。分析者必須同用戶一(yī)塊工作來提煉需求,因為(wèi)這樣才表示了用戶的(de)真實意圖,其中涉及對需求的(de)分析及查找丢失的(de)信息。下面以“銀行(xíng)網絡系統”為(wèi)例,用面向對象方法進行(xíng)開發。
銀行(xíng)網絡系統問題陳述: 設計支持銀行(xíng)網絡的(de)軟件,銀行(xíng)網絡包括人工出納站和(hé)分行(xíng)共享的(de)自(zì)動出納機(jī)。每個分理(lǐ)處用分理(lǐ)處計算機(jī)來保存各自(zì)的(de)帳戶,處理(lǐ)各自(zì)的(de)事務;各自(zì)分理(lǐ)處的(de)出納站與分理(lǐ)處計算機(jī)通信,出納站錄入帳戶和(hé)事務數據;自(zì)動出納機(jī)與分行(xíng)計算機(jī)通信,分行(xíng)計算機(jī)與撥款分理(lǐ)處結帳,自(zì)動出納機(jī)與用戶接口接受現金卡,與分行(xíng)計算機(jī)通信完成事務,發放現金,打印收據;系統需要記錄保管和(hé)安全措施;系統必須正确處理(lǐ)同一(yī)帳戶的(de)并發訪問;每個分處理(lǐ)為(wèi)自(zì)己的(de)計算機(jī)準備軟件,銀行(xíng)網絡費用根據顧客和(hé)現金卡的(de)數目分攤給各分理(lǐ)處。
圖10-18給出銀行(xíng)網絡系統的(de)示意圖。
(二)建立對象模型
首先标識和(hé)關聯,因為(wèi)它們(men)影響了整體結構和(hé)解決問題的(de)方法,其次是增加屬性,進一(yī)步描述類和(hé)關聯的(de)基本網絡,使用繼承合并和(hé)組織類,最後操作增加到類中去(qù)作為(wèi)構造動态模型和(hé)功能模型的(de)副産品。
1.确定類
構造對象模型的(de)第一(yī)步是标出來自(zì)問題域的(de)相關的(de)對象類,對象包括物理(lǐ)實體和(hé)概念。所有(yǒu)類在應用中都必須有(yǒu)意義,在問題陳述中,并非所有(yǒu)類都是明顯給出的(de)。有(yǒu)些是隐含在問題域或一(yī)般知識中的(de)。
按圖10-19所示的(de)過程确定類
查找問題陳述中的(de)所有(yǒu)名詞,産生如(rú)下的(de)暫定類。
軟件 銀行(xíng)網絡 出納員 自(zì)動出納機(jī) 分行(xíng)
分處理(lǐ) 分處理(lǐ)計算機(jī) 帳戶 事務 出納站
事務數據 分行(xíng)計算機(jī) 現金卡 用戶 現金
收據 系統 顧客 費用 帳戶數據
訪問 安全措施 記錄保管
根據下列标準,去(qù)掉不必要的(de)類和(hé)不正确的(de)類。
(1) 冗餘類:若兩個類表述了同一(yī)個信息 ,保留最富有(yǒu)描述能力的(de)類。如(rú)"用戶"和(hé)"顧客"就是重複的(de)描述,因為(wèi)"顧客"最富有(yǒu)描述性,因此保留它。
(2) 不相幹的(de)類:除掉與問題沒有(yǒu)關系或根本無關的(de)類。例如(rú),攤派費用超出了銀行(xíng)網絡的(de)範圍。
(3) 模糊類:類必須是确定的(de),有(yǒu)些暫定類邊界定義模糊或範圍太廣,如(rú)"記錄保管"就模糊類,它是"事務"中的(de)一(yī)部分。
(4) 屬性:某些名詞描述的(de)是其他對象的(de)屬性,則從暫定類中删除。如(rú)果某一(yī)性質的(de)獨立性很重要,就應該把他歸屬到類,而不把它作為(wèi)屬性。
(5) 操作:如(rú)果問題陳述中的(de)名詞有(yǒu)動作含義,則描述的(de)操作就不是類。但是具有(yǒu)自(zì)身性質而且需要獨立存在的(de)操作應該描述成類。如(rú)我(wǒ)們(men)隻構造電話模型,"撥号"就是動态模型的(de)一(yī)部分而不是類,但在電話撥号系統中,"撥号"是一(yī)個重要的(de)類,它日期、時間、受話地(dì)點等屬性。
在銀行(xíng)網絡系統中,模糊類是"系統"、"安全措施"、"記錄保管"、"銀行(xíng)網絡"等。屬于屬性的(de)有(yǒu):"帳戶數據"、"收據"、"現金"、"事務數據"。屬于實現的(de)如(rú):"訪問"、"軟件"等。這些均應除去(qù)。
2.準備數據字典
為(wèi)所有(yǒu)建模實體準備一(yī)個數據字典。準确描述各個類的(de)精确含義,描述當前問題中的(de)類的(de)範圍,包括對類的(de)成員、用法方面的(de)假設或限制。
3.确定關聯
兩個或多個類之間的(de)相互依賴就是關聯。一(yī)種依賴表示一(yī)種關聯,可(kě)用各種方式來實現關聯,但在分析模型中應删除實現的(de)考慮,以便設計時更為(wèi)靈活。關聯常用描述性動詞或動詞詞組來表示,其中有(yǒu)物理(lǐ)位置的(de)表示、傳導的(de)動作、通信、所有(yǒu)者關系、條件的(de)滿足等。從問題陳述中抽取所有(yǒu)可(kě)能的(de)關聯表述,把它們(men)記下來,但不要過早去(qù)細化這些表述。
下面是銀行(xíng)網絡系統中所有(yǒu)可(kě)能的(de)關聯,大多數是直接抽取問題中的(de)動詞詞組而得到的(de)。在陳述中,有(yǒu)些動詞詞組表述的(de)關聯是不明顯的(de)。最後,還有(yǒu)一(yī)些關聯與客觀世界或人的(de)假設有(yǒu)關,必須同用戶一(yī)起核實這種關聯,因為(wèi)這種關聯在問題陳述中找不到。
銀行(xíng)網絡問題陳述中的(de)關聯:
·銀行(xíng)網絡包括出納站和(hé)自(zì)動出納機(jī);
·分行(xíng)共享自(zì)動出納機(jī);
·分理(lǐ)處提供分理(lǐ)處計算機(jī);
·分理(lǐ)處計算機(jī)保存帳戶;
·分理(lǐ)處計算機(jī)處理(lǐ)帳戶支付事務;
·分理(lǐ)處擁有(yǒu)出納站;
·出納站與分理(lǐ)處計算機(jī)通信;
·出納員為(wèi)帳戶錄入事務;
·自(zì)動出納機(jī)接受現金卡;
·自(zì)動出納機(jī)與用戶接口;
·自(zì)動出納機(jī)發放現金;
·自(zì)動出納機(jī)打印收據;
·系統處理(lǐ)并發訪問;
·分理(lǐ)處提供軟件;
·費用分攤給分理(lǐ)處。
隐含的(de)動詞詞組:
·分行(xíng)由分理(lǐ)處組成;
·分理(lǐ)處擁有(yǒu)帳戶;
·分行(xíng)擁有(yǒu)分行(xíng)計算機(jī);
·系統提供記錄保管;
·系統提供安全;
·顧客有(yǒu)現金卡。
基于問題域知識的(de)關聯:
·分理(lǐ)處雇傭出納員;
·現金卡訪問帳戶。
使用下列标準去(qù)掉不必要和(hé)不正确的(de)關聯:
(1) 若某個類已被删除,那麽與它有(yǒu)關的(de)關聯也必須删除或者用其它類來重新表述。在例中,我(wǒ)們(men)删除了"銀行(xíng)網絡",相關的(de)關聯也要删除。
(2) 不相幹的(de)關聯或實現階段的(de)關聯:删除所有(yǒu)問題域之外的(de)關聯或涉及實現結構中的(de)關聯。如(rú)"系統處理(lǐ)并發訪問"就是一(yī)種實現的(de)概念。
(3) 動作:關聯應該描述應用域的(de)結構性質而不是瞬時事件,因此應删除"自(zì)動出納機(jī)接受現金卡","自(zì)動出納機(jī)與用戶接口"等。
(4) 派生關聯:省略那些可(kě)以用其他關聯來定義的(de)關聯。因為(wèi)這種關聯是冗餘的(de)。銀行(xíng)網絡系統的(de)初步對象圖如(rú)圖10-20所示。其中含有(yǒu)關聯。
4.确定屬性
屬性是個體對象的(de)性質,屬性通常用修飾性的(de)名詞詞組來表示.形容詞常常表示具體的(de)可(kě)枚舉的(de)屬性值,屬性不可(kě)能在問題陳述中完全表述出來,必須借助于應用域的(de)知識及對客觀世界的(de)知識才可(kě)以找到它們(men)。隻考慮與具體應用直接相關的(de)屬性,不要考慮那些超出問題範圍的(de)屬性。首先找出重要屬性,避免那些隻用于實現的(de)屬性,要為(wèi)各個屬性取有(yǒu)意義的(de)名字。按下列标準删除不必要的(de)和(hé)不正确的(de)屬性:
(1) 對象:若實體的(de)獨立存在比它的(de)值重要,那麽這個實體不是屬性而是對象。如(rú)在郵政目錄中,"城市(shì)"是一(yī)個屬性,然而在人口普查中,"城市(shì)"則被看作是對象。在具體應用中,具有(yǒu)自(zì)身性質的(de)實體一(yī)定是對象。
(2) 定詞:若屬性值取決于某種具體上下文,則可(kě)考慮把該屬性重新表述為(wèi)一(yī)個限定詞。
(3) 名稱:名稱常常作為(wèi)限定詞而不是對象的(de)屬性,當名稱不依賴于上下文關系時,名稱即為(wèi)一(yī)個對象屬性,尤其是它不惟一(yī)時。
(4) 标識符:在考慮對象模糊性時,引入對象标識符表示,在對象模型中不列出這些對象标識符,它是隐含在對象模型中,隻列出存在于應用域的(de)屬性。
(5) 內(nèi)部值:若屬性描述了對外不透明的(de)對象的(de)內(nèi)部狀态,則應從對象模型中删除該屬性。
(6) 細化:忽略那些不可(kě)能對大多數操作有(yǒu)影響的(de)屬性。
5.使用繼承來細化類
使用繼承來共享公共機(jī)構,以次來組織類,可(kě)以用兩種方式來進行(xíng)。
(1) 自(zì)底向上通過把現有(yǒu)類的(de)共同性質一(yī)般化為(wèi)父類,尋找具有(yǒu)相似的(de)屬性,關系或操作的(de)類來發現繼承。例如(rú)"遠程事務"和(hé)"出納事務"是類似的(de),可(kě)以一(yī)般化為(wèi)"事務"。有(yǒu)些一(yī)般化結構常常是基于客觀世界邊界的(de)現有(yǒu)分類,隻要可(kě)能,盡量使用現有(yǒu)概念。對稱性常有(yǒu)助于發現某些丢失的(de)類。
(2) 自(zì)頂向下将現有(yǒu)的(de)類細化為(wèi)更具體的(de)子(zǐ)類。具體化常常可(kě)以從應用域中明顯看出來。應用域中各枚舉字情況是最常見的(de)具體化的(de)來源。例如(rú):菜單,可(kě)以有(yǒu)固定菜單,頂部菜單,彈出菜單,下拉菜單等,這就可(kě)以把菜單類具體細化為(wèi)各種具體菜單的(de)子(zǐ)類。當同一(yī)關聯名出現多次且意義也相同時,應盡量具體化為(wèi)相關聯的(de)類,例如(rú)"事務"從"出納站"和(hé)"自(zì)動出納機(jī)"進入,則"錄入站"就是"出納站"和(hé)"自(zì)動出納站"的(de)一(yī)般化。在類層次中,可(kě)以為(wèi)具體的(de)類分配屬性和(hé)關聯。各屬性和(hé)都應分配給最一(yī)般的(de)适合的(de)類,有(yǒu)時也加上一(yī)些修正。
應用域中各枚舉情況是最常見的(de)具體化的(de)來源。
6.完善對象模型
對象建模不可(kě)能一(yī)次就能保證模型是完全正确的(de),軟件開發的(de)整個過程就是一(yī)個不斷完善的(de)過程。模型的(de)不同組成部分多半是在不同的(de)階段完成的(de),如(rú)果發現模型的(de)缺陷,就必須返回到前期階段去(qù)修改,有(yǒu)些細化工作是在動态模型和(hé)功能模型完成之後才開始進行(xíng)的(de)。
(1) 幾種可(kě)能丢失對象的(de)情況及解決辦法:
·同一(yī)類中存在毫無關系的(de)屬性和(hé)操作,則分解這個類,使各部分相互關聯;
·一(yī)般化體系不清楚,則可(kě)能分離(lí)扮演兩種角色的(de)類
·存在無目标類的(de)操作,則找出并加上失去(qù)目标的(de)類;
·存在名稱及目的(de)相同的(de)冗餘關聯,則通過一(yī)般化創建丢失的(de)父類,把關聯組織在一(yī)起。
(2) 查找多餘的(de)類。
類中缺少屬性,操作和(hé)關聯,則可(kě)删
如(rú)何自(zì)己開發一(yī)個app軟件
如(rú)何自(zì)己開發一(yī)個app軟件
如(rú)今,不少企業都想擁有(yǒu)屬于自(zì)己企業或産品的(de)手機(jī)APP,但其中最困擾企業主的(de)問題就是:開發一(yī)款手機(jī)APP到底需要多少錢?
簡單點來說,要視(shì)手機(jī)APP的(de)需求及質量而言,價位一(yī)般在幾千到十幾萬左右,更高(gāo)端的(de)價格更高(gāo)。
今天,我(wǒ)們(men)就來詳細分析一(yī)下這個問題,請繼續往下看吧(ba)。
一(yī)、APP開發款式分為(wèi)固定款和(hé)定制款,兩者的(de)價格均不相同
固定款:是指直接套用已有(yǒu)的(de)、現成的(de)APP固定模闆,報價是固定的(de),所需要的(de)功能也是固定的(de),缺點就是客戶拿不到源代碼,也不能根據企業需求進行(xíng)定制,由于源代碼是封裝的(de),如(rú)果企業以後想進行(xíng)功能升級或系統維護的(de)話,也不能夠實現,隻能重新開發一(yī)個新的(de)軟件。
固定款的(de)APP開發時間短(duǎn),約2~3日的(de)時間即可(kě)完成,費用大約在幾千到幾萬之間。
定制款:定制款是指APP的(de)功能全部重新開發,過程比較繁瑣,需要美工、策劃、APP開發(前台/客戶端/手機(jī)端)、後台程序員等工種協同完成,大型的(de)、功能複雜的(de)APP甚至需要數十人的(de)團隊。
由于APP的(de)功能和(hé)設計都是定制的(de),因此價格會高(gāo)些。定制款的(de)開發時間與開發價格是成正比的(de),開發時間長(cháng),大約在兩三個月甚至不定的(de)周期裏才能完成,而費用大概在幾萬甚至十幾萬左右。
因此,想要知道(dào)開發一(yī)款手機(jī)APP需要花費多少錢,企業主首先必須把APP的(de)詳細需求和(hé)功能告知APP開發公司,開發公司才能報出一(yī)個合理(lǐ)的(de)價格。
二、手機(jī)APP平台不同,制作成本也不一(yī)樣
現在市(shì)面上流行(xíng)的(de)手機(jī)APP制作平台主要有(yǒu)兩種一(yī)般包括兩種系統:安卓系統(Android)和(hé)蘋果系統(IOS)。
一(yī)般來說,制作蘋果系統的(de)手機(jī)APP軟件費用要比安卓平台的(de)貴一(yī)些,因為(wèi)蘋果公司對蘋果平台的(de)封閉性和(hé)手機(jī)APP開發語言Objective-C的(de)難度,都讓APP開發者加大了蘋果系統手機(jī)APP開發的(de)難度。
三、APP制作成本包含參與人員的(de)工資
通常情況下,開發一(yī)款APP需要産品經理(lǐ)、客戶端工程師、後端工程師和(hé)UI設計師各一(yī)名,這已經是制作手機(jī)APP應用軟件比較精簡的(de)配置了,所以這些參與人員的(de)工資也是包含在APP制作成本當中的(de)。這些工作人員的(de)月薪加起來可(kě)能都會超過4、5萬元。
四、APP開發公司的(de)所在地(dì)
需要注意的(de)是,同樣實力的(de)APP開發公司,在不同的(de)城市(shì)也會導緻APP的(de)成本費用高(gāo)一(yī)些,如(rú)在北(běi)京、深圳和(hé)上海等地(dì)的(de)開發公司開發成本費用就會比較高(gāo),因為(wèi)當地(dì)開發人員的(de)薪資和(hé)其他支出相對更高(gāo)。
手機(jī)APP軟件開發怎麽做(zuò)?
手機(jī)app制作流程從app開發前,中,後期詳細給您講解下:
一(yī)、App開發前期
1、明确app開發需求
在明确需要開發一(yī)個app前,首先要問自(zì)己,為(wèi)什麽要做(zuò)一(yī)個app,手機(jī)app需要什麽系統版本,app是給誰使用的(de),面向的(de)用戶是哪些群體等。要對開發app行(xíng)業進行(xíng)了解,分析app開發的(de)可(kě)行(xíng)性。
2、确定app開發報價
在确定完需求後,開發公司會根據溝通內(nèi)容出一(yī)份開發app功能需求列表,目前普遍使用思維導圖居多,可(kě)以根據這份思維導圖增加或删除功能。敲定好功能需求後,再确認使用什麽開發模式進行(xíng)開發等細節。較後開發公司會核算開發所需周期和(hé)人員投入,提供一(yī)份詳細開發價格表。
二、App開發中期
1、确定視(shì)覺UI界面設計
UI設計是APP正式開發的(de)為(wèi)數不多步。一(yī)般來說,app風格較好簡潔大方,功能一(yī)目了然,能讓用戶為(wèi)數不多眼留下好印象。效果圖的(de)制作會根據app的(de)需求、app的(de)LOGO、app面對人群來選擇主色調,終讓客戶确定。
2、着手開發app應用程序
在确定好app界面風格後,就可(kě)以正式進入app應用程序開發了。目前主流app包括兩類,一(yī)類是基于安卓系統的(de)app,另一(yī)類是基于蘋果系統的(de)app。兩種系統使用的(de)開發語言和(hé)工具不同,但是流程基本都是包括前端開發、後端開發、應用接口開發、服務器環境構建等。此外還有(yǒu)就是頁面标注和(hé)手機(jī)适配,這是app開發項目獨有(yǒu)的(de)流程。這個環節是為(wèi)了能夠讓app在不同手機(jī)上也能正常顯示和(hé)使用,後期上線不會影響用戶使用app的(de)體驗。
3、進行(xíng)app整體測試
測試內(nèi)容包括:APP內(nèi)容測試、APP性能測試、APP功能測試、APP視(shì)覺測試、對于BUG調試修複。如(rú)果測試問題需要及時修複,直到測試結果通過,App的(de)整體開發才能完成。可(kě)以多邀請一(yī)些內(nèi)部人員進行(xíng)測試,充分優化和(hé)測試app的(de)體驗度和(hé)穩定性。
三、App開發後期
1、App打包上線發布
全部做(zuò)好之後就可(kě)以在各大應用市(shì)場發布上線了。APP上線審核,俱備蘋果開發者賬号的(de)前提下,一(yī)般蘋果的(de)APP store審核大概需要一(yī)個星期,安卓審核在3天左右,甚至更快,所以我(wǒ)們(men)要注意把握好這個時間,不要讓審核時間耽誤上線時間。而且,有(yǒu)個别情況會導緻審核失敗,需要修改資料重新提交,這樣就會導緻審核周期更長(cháng)。
2、App後期維護升級
完成開發上線後,app開發公司根據合同要求,交付相關內(nèi)容,合作完成。至于後期需不需要維護升級得根據雙方合同要求。
軟件開發主要分為(wèi)哪幾個階段
軟件開發一(yī)般分為(wèi)五個階段:
1.問題的(de)定義及規劃
此階段是軟件開發與需求放共同讨論,主要确定軟件的(de)開發目标及其可(kě)行(xíng)性。
2.需求分析
在确定軟件開發可(kě)行(xíng)性的(de)情況下,對軟件需要實現的(de)各個功能進行(xíng)詳細需求分析。需求分析階段是一(yī)個很重要的(de)階段,這一(yī)階段做(zuò)的(de)好,将為(wèi)整個軟件項目的(de)開發打下良好的(de)基礎。“唯一(yī)不變的(de)是變化本身”,同樣軟件需求也是在軟件愛你開發過程中不斷變化和(hé)深入的(de),因此,我(wǒ)們(men)必須定制需求變更計劃來應付這種變化,以保護整個項目的(de)正常進行(xíng)。
3.軟件設計
此階段中偶要根據需求分析的(de)結果,對整個軟件系統進行(xíng)設計,如(rú)系統框架設計、數據庫設計等。軟件設計一(yī)般分為(wèi)總體設計和(hé)詳細設計。還的(de)軟件設計将為(wèi)軟件程序編寫打下良好的(de)基礎。
4.程序編碼
此階段是将軟件設計的(de)結果轉化為(wèi)計算機(jī)可(kě)運行(xíng)的(de)程序代碼。在程序編碼中必定要制定統一(yī)、符合标準的(de)編寫規範。以保證程序的(de)可(kě)讀性、易維護性。提高(gāo)程序的(de)運行(xíng)效率。
5.軟件測試
在軟件設計完成之後要進行(xíng)嚴密的(de)測試,一(yī)發現軟件在整個軟件設計過程中存在的(de)問題并加以糾正。整個測試階段分為(wèi)單元測試、組裝測試、系統測試三個階段進行(xíng)。測試方法主要有(yǒu)白盒測試和(hé)黑盒測試。
軟件開發需要會什麽?
軟件開發需要會什麽,這個問題比較廣泛,首先是要會2-3門左右的(de)編程語言,起碼要精通1-2門。
然後需要精通數據庫,精通sql語言,熟悉存儲,了解緩存機(jī)制。
然後需要熟悉網絡通信,socket、tcp/ip、http等等。以及在這之上的(de)web服務等等。
需要熟悉常見的(de)文件操作,特别是xml的(de)的(de)語法與操作。
還需要了解服務器的(de)知識,單元測試,前端的(de)知識,項目管理(lǐ)的(de)知識,業務域的(de)知識等等。
這裏還有(yǒu)框架類庫的(de)知識,這個也是非常重要的(de)。總之軟件開發要學(xué)的(de)東西非常之多。而且這個職業知識更新非常快,需要終身持續學(xué)習。
主流軟件開發流程的(de)介紹就聊到這裏吧(ba),感謝你花時間閱讀本站內(nèi)容,更多關于軟件開發的(de)一(yī)般流程是怎樣的(de)、主流軟件開發流程的(de)信息别忘了在本站進行(xíng)查找喔。
-
上一(yī)篇
小程序開發項目驗收意見(小程序開發項目驗收意見怎麽填) -
下一(yī)篇
網絡軟件開發定制平台(網絡軟件開發定制平台)