主流軟件開發(fā)流程(主流軟件開發(fā)流程包括)
本篇文章給大家談?wù)勚髁鬈浖_發(fā)流程,以及主流軟件開發(fā)流程包括對應(yīng)的知識點(diǎn),希望對各位有所幫助,不要忘了收藏本站喔。
本文目錄一覽:
- 1、軟件開發(fā)主要分為哪幾個(gè)階段
- 2、如果要開發(fā)手機(jī)APP,需要哪些準(zhǔn)備
- 3、軟件開發(fā)需要會什么?
- 4、面向?qū)ο筌浖_發(fā)主要有哪些過程?
- 5、軟件開發(fā)需要學(xué)習(xí)什么基礎(chǔ)知識
軟件開發(fā)主要分為哪幾個(gè)階段
軟件開發(fā)一般分為五個(gè)階段:
1.問題的定義及規(guī)劃
此階段是軟件開發(fā)與需求放共同討論,主要確定軟件的開發(fā)目標(biāo)及其可行性。
2.需求分析
在確定軟件開發(fā)可行性的情況下,對軟件需要實(shí)現(xiàn)的各個(gè)功能進(jìn)行詳細(xì)需求分析。需求分析階段是一個(gè)很重要的階段,這一階段做的好,將為整個(gè)軟件項(xiàng)目的開發(fā)打下良好的基礎(chǔ)?!拔ㄒ徊蛔兊氖亲兓旧怼?,同樣軟件需求也是在軟件愛你開發(fā)過程中不斷變化和深入的,因此,我們必須定制需求變更計(jì)劃來應(yīng)付這種變化,以保護(hù)整個(gè)項(xiàng)目的正常進(jìn)行。
3.軟件設(shè)計(jì)
此階段中偶要根據(jù)需求分析的結(jié)果,對整個(gè)軟件系統(tǒng)進(jìn)行設(shè)計(jì),如系統(tǒng)框架設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)等。軟件設(shè)計(jì)一般分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)。還的軟件設(shè)計(jì)將為軟件程序編寫打下良好的基礎(chǔ)。
4.程序編碼
此階段是將軟件設(shè)計(jì)的結(jié)果轉(zhuǎn)化為計(jì)算機(jī)可運(yùn)行的程序代碼。在程序編碼中必定要制定統(tǒng)一、符合標(biāo)準(zhǔn)的編寫規(guī)范。以保證程序的可讀性、易維護(hù)性。提高程序的運(yùn)行效率。
5.軟件測試
在軟件設(shè)計(jì)完成之后要進(jìn)行嚴(yán)密的測試,一發(fā)現(xiàn)軟件在整個(gè)軟件設(shè)計(jì)過程中存在的問題并加以糾正。整個(gè)測試階段分為單元測試、組裝測試、系統(tǒng)測試三個(gè)階段進(jìn)行。測試方法主要有白盒測試和黑盒測試。
如果要開發(fā)手機(jī)APP,需要哪些準(zhǔn)備
開發(fā)手機(jī)APP需要做這七大準(zhǔn)備:
一、新郵箱的申請
用于申請各類賬號時(shí)接收郵件,建議申請一個(gè)新的郵箱,如QQ郵箱。避免一開始使用的是私人或工作郵箱,后面因?yàn)殡[私問題不方面提供給開發(fā)人員進(jìn)行操作。
忽視可能造成的問題:溝通和效率低下。
二、域名的購買和備案
上線必備。域名備案一般需要21個(gè)工作日,在備案前還必須有已購的ECS服務(wù)器,整體流程和時(shí)間較長,所以需要提早申請。
忽視可能造成的問題:影響蘋果賬號的申請。
三、官網(wǎng)的制作
蘋果賬號申請審核必備。若宣傳需求不大,則可制作一個(gè)超簡單的單頁版,時(shí)間快。開發(fā)前需跟APP開發(fā)團(tuán)隊(duì)明確好商務(wù)。
忽視可能造成的問題:影響蘋果賬號的申請。
四、云服務(wù)器的注冊和購買
非單機(jī)必備。注冊賬號后,需要進(jìn)行企業(yè)認(rèn)證,時(shí)間1-3個(gè)工作日,隨后進(jìn)行服務(wù)器的選配和購買。配置推薦:前期測試階段夠用即可。
忽視可能造成的影響:影響開發(fā)進(jìn)度,不必要的成本浪費(fèi)。
五、蘋果iOS賬號的申請
上線app stroe必備。蘋果賬號的申請一般需要1個(gè)月,在電話核實(shí)階段需要先把官網(wǎng)制作好。費(fèi)用:99美金/年。【大致流程為:注冊賬號-申請鄧白氏碼DUNS(下來后兩周方可用)-查看官網(wǎng)并打電話核實(shí)-支付。參考網(wǎng)址:可搜索iOS賬號申請流程】
忽視可能造成的影響:影響測試和上線時(shí)間。
六、安卓應(yīng)用市場的申請
上線安卓市場必備。注冊賬號后,需要進(jìn)行企業(yè)認(rèn)證,時(shí)間1-3個(gè)工作日。安卓市場賬號申請快,但平臺較多,如:應(yīng)用寶、華為、小米、阿里系、百度、360、OPPO、vivo、谷歌等,整體的上架工作很繁瑣。一般建議前期先選擇主流的三個(gè),后期再擴(kuò)大,當(dāng)然也有些平臺支持APP分發(fā),但并不多。
忽視可能造成的影響:影響上線時(shí)間。
七、軟件著作權(quán)的申請
知識產(chǎn)權(quán)保護(hù)必備;國內(nèi)安卓應(yīng)用市場上線必備。軟著權(quán)的申請,分為普通和加急兩種方式,影響價(jià)格和時(shí)間,價(jià)格可以跟各個(gè)代理商商談,時(shí)間上普通的需31個(gè)工作日以上,加急可縮短。出于節(jié)約成本的角度,建議開發(fā)到一定里程碑階段即可開始著手申請,當(dāng)然也可以根據(jù)實(shí)際情況進(jìn)行選擇。
忽視可能造成的影響:影響成本和上線時(shí)間,影響知識產(chǎn)權(quán)。
以上就是開發(fā)APP前需要做的準(zhǔn)備工作,希望對大家有所幫助
軟件開發(fā)需要會什么?
軟件開發(fā)需要會什么,這個(gè)問題比較廣泛,首先是要會2-3門左右的編程語言,起碼要精通1-2門。
然后需要精通數(shù)據(jù)庫,精通sql語言,熟悉存儲,了解緩存機(jī)制。
然后需要熟悉網(wǎng)絡(luò)通信,socket、tcp/ip、http等等。以及在這之上的web服務(wù)等等。
需要熟悉常見的文件操作,特別是xml的的語法與操作。
還需要了解服務(wù)器的知識,單元測試,前端的知識,項(xiàng)目管理的知識,業(yè)務(wù)域的知識等等。
這里還有框架類庫的知識,這個(gè)也是非常重要的。總之軟件開發(fā)要學(xué)的東西非常之多。而且這個(gè)職業(yè)知識更新非常快,需要終身持續(xù)學(xué)習(xí)。
面向?qū)ο筌浖_發(fā)主要有哪些過程?
面向?qū)ο?Object Oriented,OO)是當(dāng)前計(jì)算機(jī)界關(guān)心的重點(diǎn),它是90年代軟件開發(fā)方法的主流。面向?qū)ο蟮母拍詈蛻?yīng)用已超越了程序設(shè)計(jì)和軟件開發(fā),擴(kuò)展到很寬的范圍。如數(shù)據(jù)庫系統(tǒng)、交互式界面、應(yīng)用結(jié)構(gòu)、應(yīng)用平臺、分布式系統(tǒng)、網(wǎng)絡(luò)管理結(jié)構(gòu)、CAD技術(shù)、人工智能等領(lǐng)域。
談到面向?qū)ο螅@方面的文章非常多。但是,明確地給出對象的定義或說明對象的定義的非常少——至少我現(xiàn)在還沒有發(fā)現(xiàn)。其初,“面向?qū)ο蟆笔菍V冈诔绦蛟O(shè)計(jì)中采用封裝、繼承、抽象等設(shè)計(jì)方法??墒?,這個(gè)定義顯然不能再適合現(xiàn)在情況。面向?qū)ο蟮乃枷胍呀?jīng)涉及到軟件開發(fā)的各個(gè)方面。如,面向?qū)ο蟮姆治觯∣OA,Object Oriented Analysis),面向?qū)ο蟮脑O(shè)計(jì)(OOD,Object Oriented Design)、以及我們經(jīng)常說的面向?qū)ο蟮木幊虒?shí)現(xiàn)(OOP,Object Oriented Programming)。許多有關(guān)面向?qū)ο蟮奈恼露贾皇侵v述在面向?qū)ο蟮拈_發(fā)中所需要注意的問題或所采用的比較好的設(shè)計(jì)方法??催@些文章只有真正懂得什么是對象,什么是面向?qū)ο螅拍茏畲蟪潭鹊貙ψ约河兴砸?。這一點(diǎn),恐怕對初學(xué)者甚至是從事相關(guān)工作多年的人員也會對它們的概念模糊不清。
面向?qū)ο笫钱?dāng)前計(jì)算機(jī)界關(guān)心的重點(diǎn),它是90年代軟件開發(fā)方法的主流。面向?qū)ο蟮母拍詈蛻?yīng)用已超越了程序設(shè)計(jì)和軟件開發(fā),擴(kuò)展到很寬的范圍。如數(shù)據(jù)庫系統(tǒng)、交互式界面、應(yīng)用結(jié)構(gòu)、應(yīng)用平臺、分布式系統(tǒng)、網(wǎng)絡(luò)管理結(jié)構(gòu)、CAD技術(shù)、人工智能等領(lǐng)域。
一、傳統(tǒng)開發(fā)方法存在問題
1.軟件重用性差
重用性是指同一事物不經(jīng)修改或稍加修改就可多次重復(fù)使用的性質(zhì)。軟件重用性是軟件工程追求的目標(biāo)之一。
2.軟件可維護(hù)性差
軟件工程強(qiáng)調(diào)軟件的可維護(hù)性,強(qiáng)調(diào)文檔資料的重要性,規(guī)定最終的軟件產(chǎn)品應(yīng)該由完整、一致的配置成分組成。在軟件開發(fā)過程中,始終強(qiáng)調(diào)軟件的可讀性、可修改性和可測試性是軟件的重要的質(zhì)量指標(biāo)。實(shí)踐證明,用傳統(tǒng)方法開發(fā)出來的軟件,維護(hù)時(shí)其費(fèi)用和成本仍然很高,其原因是可修改性差,維護(hù)困難,導(dǎo)致可維護(hù)性差。
3.開發(fā)出的軟件不能滿足用戶需要
用傳統(tǒng)的結(jié)構(gòu)化方法開發(fā)大型軟件系統(tǒng)涉及各種不同領(lǐng)域的知識,在開發(fā)需求模糊或需求動態(tài)變化的系統(tǒng)時(shí),所開發(fā)出的軟件系統(tǒng)往往不能真正滿足用戶的需要。
用結(jié)構(gòu)化方法開發(fā)的軟件,其穩(wěn)定性、可修改性和可重用性都比較差,這是因?yàn)榻Y(jié)構(gòu)化方法的本質(zhì)是功能分解,從代表目標(biāo)系統(tǒng)整體功能的單個(gè)處理著手,自頂向下不斷把復(fù)雜的處理分解為子處理,這樣一層一層的分解下去,直到僅剩下若干個(gè)容易實(shí)現(xiàn)的子處理功能為止,然后用相應(yīng)的工具來描述各個(gè)最低層的處理。因此,結(jié)構(gòu)化方法是圍繞實(shí)現(xiàn)處理功能的“過程”來構(gòu)造系統(tǒng)的。然而,用戶需求的變化大部分是針對功能的,因此,這種變化對于基于過程的設(shè)計(jì)來說是災(zāi)難性的。用這種方法設(shè)計(jì)出來的系統(tǒng)結(jié)構(gòu)常常是不穩(wěn)定的 ,用戶需求的變化往往造成系統(tǒng)結(jié)構(gòu)的較大變化,從而需要花費(fèi)很大代價(jià)才能實(shí)現(xiàn)這種變化。
二、面向?qū)ο蟮幕靖拍?
(1)對象。
對象是人們要進(jìn)行研究的任何事物,從最簡單的整數(shù)到復(fù)雜的飛機(jī)等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規(guī)則、計(jì)劃或事件。
(2)對象的狀態(tài)和行為。
對象具有狀態(tài),一個(gè)對象用數(shù)據(jù)值來描述它的狀態(tài)。
對象還有操作,用于改變對象的狀態(tài),對象及其操作就是對象的行為。
對象實(shí)現(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和操作封裝于對象的統(tǒng)一體中
(3)類。
具有相同或相似性質(zhì)的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實(shí)例是對象。
類具有屬性,它是對象的狀態(tài)的抽象,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性。
類具有操作,它是對象的行為的抽象,用操作名和實(shí)現(xiàn)該操作的方法來描述。
(4)類的結(jié)構(gòu)。
在客觀世界中有若干類,這些類之間有一定的結(jié)構(gòu)關(guān)系。通常有兩種主要的結(jié)構(gòu)關(guān)系,即一般--具體結(jié)構(gòu)關(guān)系,整體--部分結(jié)構(gòu)關(guān)系。
①一般——具體結(jié)構(gòu)稱為分類結(jié)構(gòu),也可以說是“或”關(guān)系,或者是“is a”關(guān)系。
②整體——部分結(jié)構(gòu)稱為組裝結(jié)構(gòu),它們之間的關(guān)系是一種“與”關(guān)系,或者是“has a”關(guān)系。
(5)消息和方法。
對象之間進(jìn)行通信的結(jié)構(gòu)叫做消息。在對象的操作中,當(dāng)一個(gè)消息發(fā)送給某個(gè)對象時(shí),消息包含接收對象去執(zhí)行某種操作的信息。發(fā)送一條消息至少要包括說明接受消息的對象名、發(fā)送給該對象的消息名(即對象名、方法名)。一般還要對參數(shù)加以說明,參數(shù)可以是認(rèn)識該消息的對象所知道的變量名,或者是所有對象都知道的全局變量名。
類中操作的實(shí)現(xiàn)過程叫做方法,一個(gè)方法有方法名、參數(shù)、方法體。消息傳遞如圖10-1所示。
二、面向?qū)ο蟮奶卣?
(1)對象唯一性。
每個(gè)對象都有自身唯一的標(biāo)識,通過這種標(biāo)識,可找到相應(yīng)的對象。在對象的整個(gè)生命期中,它的標(biāo)識都不改變,不同的對象不能有相同的標(biāo)識。
(2)分類性。
分類性是指將具有一致的數(shù)據(jù)結(jié)構(gòu)(屬性)和行為(操作)的對象抽象成類。一個(gè)類就是這樣一種抽象,它反映了與應(yīng)用有關(guān)的重要性質(zhì),而忽略其他一些無關(guān)內(nèi)容。任何類的劃分都是主觀的,但必須與具體的應(yīng)用有關(guān)。
(3)繼承性。
繼承性是子類自動共享父類數(shù)據(jù)結(jié)構(gòu)和方法的機(jī)制,這是類之間的一種關(guān)系。在定義和實(shí)現(xiàn)一個(gè)類的時(shí)候,可以在一個(gè)已經(jīng)存在的類的基礎(chǔ)之上來進(jìn)行,把這個(gè)已經(jīng)存在的類所定義的內(nèi)容作為自己的內(nèi)容,并加入若干新的內(nèi)容。
繼承性是面向?qū)ο蟪绦蛟O(shè)計(jì)語言不同于其它語言的最重要的特點(diǎn),是其他語言所沒有的。
在類層次中,子類只繼承一個(gè)父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為單重繼承。
在類層次中,子類繼承了多個(gè)父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為多重繼承。
在軟件開發(fā)中,類的繼承性使所建立的軟件具有開放性、可擴(kuò)充性,這是信息組織與分類的行之有效的方法,它簡化了對象、類的創(chuàng)建工作量,增加了代碼的可重性。
采用繼承性,提供了類的規(guī)范的等級結(jié)構(gòu)。通過類的繼承關(guān)系,使公共的特性能夠共享,提高了軟件的重用性。
(4)多態(tài)性(多形性)
多態(tài)性使指相同的操作或函數(shù)、過程可作用于多種類型的對象上并獲得不同的結(jié)果。不同的對象,收到同一消息可以產(chǎn)生不同的結(jié)果,這種現(xiàn)象稱為多態(tài)性。
多態(tài)性允許每個(gè)對象以適合自身的方式去響應(yīng)共同的消息。
多態(tài)性增強(qiáng)了軟件的靈活性和重用性。
三、面向?qū)ο蟮囊?
(1)抽象。
抽象是指強(qiáng)調(diào)實(shí)體的本質(zhì)、內(nèi)在的屬性。在系統(tǒng)開發(fā)中,抽象指的是在決定如何實(shí)現(xiàn)對象之前的對象的意義和行為。使用抽象可以盡可能避免過早考慮一些細(xì)節(jié)。
類實(shí)現(xiàn)了對象的數(shù)據(jù)(即狀態(tài))和行為的抽象。
(2)封裝性(信息隱藏)。
封裝性是保證軟件部件具有優(yōu)良的模塊性的基礎(chǔ)。
面向?qū)ο蟮念愂欠庋b良好的模塊,類定義將其說明(用戶可見的外部接口)與實(shí)現(xiàn)(用戶不可見的內(nèi)部實(shí)現(xiàn))顯式地分開,其內(nèi)部實(shí)現(xiàn)按其具體定義的作用域提供保護(hù)。
對象是封裝的最基本單位。封裝防止了程序相互依賴性而帶來的變動影響。面向?qū)ο蟮姆庋b比傳統(tǒng)語言的封裝更為清晰、更為有力。
(3)共享性
面向?qū)ο蠹夹g(shù)在不同級別上促進(jìn)了共享
同一類中的共享。同一類中的對象有著相同數(shù)據(jù)結(jié)構(gòu)。這些對象之間是結(jié)構(gòu)、行為特征的共享關(guān)系。
在同一應(yīng)用中共享。在同一應(yīng)用的類層次結(jié)構(gòu)中,存在繼承關(guān)系的各相似子類中,存在數(shù)據(jù)結(jié)構(gòu)和行為的繼承,使各相似子類共享共同的結(jié)構(gòu)和行為。使用繼承來實(shí)現(xiàn)代碼的共享,這也是面向?qū)ο蟮闹饕獌?yōu)點(diǎn)之一。
在不同應(yīng)用中共享。面向?qū)ο蟛粌H允許在同一應(yīng)用中共享信息,而且為未來目標(biāo)的可重用設(shè)計(jì)準(zhǔn)備了條件。通過類庫這種機(jī)制和結(jié)構(gòu)來實(shí)現(xiàn)不同應(yīng)用中的信息共享。
4.強(qiáng)調(diào)對象結(jié)構(gòu)而不是程序結(jié)構(gòu)
四、面向?qū)ο蟮拈_發(fā)方法
目前,面向?qū)ο箝_發(fā)方法的研究已日趨成熟,國際上已有不少面向?qū)ο螽a(chǎn)品出現(xiàn)。面向?qū)ο箝_發(fā)方法有Coad方法、Booch方法和OMT方法等。
1.Booch方法
Booch最先描述了面向?qū)ο蟮能浖_發(fā)方法的基礎(chǔ)問題,指出面向?qū)ο箝_發(fā)是一種根本不同于傳統(tǒng)的功能分解的設(shè)計(jì)方法。面向?qū)ο蟮能浖纸飧咏藢陀^事務(wù)的理解,而功能分解只通過問題空間的轉(zhuǎn)換來獲得。
2.Coad方法
Coad方法是1989年Coad和Yourdon提出的面向?qū)ο箝_發(fā)方法。該方法的主要優(yōu)點(diǎn)是通過多年來大系統(tǒng)開發(fā)的經(jīng)驗(yàn)與面向?qū)ο蟾拍畹挠袡C(jī)結(jié)合,在對象、結(jié)構(gòu)、屬性和操作的認(rèn)定方面,提出了一套系統(tǒng)的原則。該方法完成了從需求角度進(jìn)一步進(jìn)行類和類層次結(jié)構(gòu)的認(rèn)定。盡管Coad方法沒有引入類和類層次結(jié)構(gòu)的術(shù)語,但事實(shí)上已經(jīng)在分類結(jié)構(gòu)、屬性、操作、消息關(guān)聯(lián)等概念中體現(xiàn)了類和類層次結(jié)構(gòu)的特征。
3.OMT方法
OMT方法是1991年由James Rumbaugh等5人提出來的,其經(jīng)典著作為“面向?qū)ο蟮慕Ec設(shè)計(jì)”。
該方法是一種新興的面向?qū)ο蟮拈_發(fā)方法,開發(fā)工作的基礎(chǔ)是對真實(shí)世界的對象建模,然后圍繞這些對象使用分析模型來進(jìn)行獨(dú)立于語言的設(shè)計(jì),面向?qū)ο蟮慕:驮O(shè)計(jì)促進(jìn)了對需求的理解,有利于開發(fā)得更清晰、更容易維護(hù)的軟件系統(tǒng)。該方法為大多數(shù)應(yīng)用領(lǐng)域的軟件開發(fā)提供了一種實(shí)際的、高效的保證,努力尋求一種問題求解的實(shí)際方法。
4.UML(Unified Modeling Language)語言
軟件工程領(lǐng)域在1995年~1997年取得了前所未有的進(jìn)展,其成果超過軟件工程領(lǐng)域過去15年的成就總和,其中最重要的成果之一就是統(tǒng)一建模語言(UML)的出現(xiàn)。UML將是面向?qū)ο蠹夹g(shù)領(lǐng)域內(nèi)占主導(dǎo)地位的標(biāo)準(zhǔn)建模語言。
UML不僅統(tǒng)一了Booch方法、OMT方法、OOSE方法的表示方法,而且對其作了進(jìn)一步的發(fā)展,最終統(tǒng)一為大眾接受的標(biāo)準(zhǔn)建模語言。UML是一種定義良好、易于表達(dá)、功能強(qiáng)大且普遍適用的建模語言。它融入了軟件工程領(lǐng)域的新思想、新方法和新技術(shù)。它的作用域不限于支持面向?qū)ο蟮姆治雠c設(shè)計(jì),還支持從需求分析開始的軟件開發(fā)全過程。
五、面向?qū)ο蟮哪P?
·對象模型
對象模型表示了靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)數(shù)據(jù)性質(zhì),描述了系統(tǒng)的靜態(tài)結(jié)構(gòu),它是從客觀世界實(shí)體的對象關(guān)系角度來描述,表現(xiàn)了對象的相互關(guān)系。該模型主要關(guān)心系統(tǒng)中對象的結(jié)構(gòu)、屬性和操作,它是分析階段三個(gè)模型的核心,是其他兩個(gè)模型的框架。
1.對象和類
(1) 對象。
對象建模的目的就是描述對象。
(2) 類。
通過將對象抽象成類,我們可以使問題抽象化,抽象增強(qiáng)了模型的歸納能力。
(3) 屬性。
屬性指的是類中對象所具有的性質(zhì)(數(shù)據(jù)值)。
(4) 操作和方法。
操作是類中對象所使用的一種功能或變換。類中的各對象可以共享操作,每個(gè)操作都有一個(gè)目標(biāo)對象作為其隱含參數(shù)。
方法是類的操作的實(shí)現(xiàn)步驟。
2.關(guān)聯(lián)和鏈
關(guān)聯(lián)是建立類之間關(guān)系的一種手段,而鏈則是建立對象之間關(guān)系的一種手段。
(1) 關(guān)聯(lián)和鏈的含義。
鏈表示對象間的物理與概念聯(lián)結(jié),關(guān)聯(lián)表示類之間的一種關(guān)系,鏈?zhǔn)顷P(guān)聯(lián)的實(shí)例,關(guān)聯(lián)是鏈的抽象。
(2) 角色。
角色說明類在關(guān)聯(lián)中的作用,它位于關(guān)聯(lián)的端點(diǎn)。
(3) 受限關(guān)聯(lián)。
受限關(guān)聯(lián)由兩個(gè)類及一個(gè)限定詞組成,限定詞是一種特定的屬性,用來有效的減少關(guān)聯(lián)的重?cái)?shù),限定詞在關(guān)聯(lián)的終端對象集中說明。
限定提高了語義的精確性,增強(qiáng)了查詢能力,在現(xiàn)實(shí)世界中,常常出現(xiàn)限定詞。
(4) 關(guān)聯(lián)的多重性。
關(guān)聯(lián)的多重性是指類中有多少個(gè)對象與關(guān)聯(lián)的類的一個(gè)對象相關(guān)。重?cái)?shù)常描述為“一”或“多”。
圖10-8表示了各種關(guān)聯(lián)的重?cái)?shù)。小實(shí)心圓表示“多個(gè)”,從零到多。小空心圓表示零或一。沒有符號表示的是一對一關(guān)聯(lián)。
3.類的層次結(jié)構(gòu)
(1) 聚集關(guān)系。
聚集是一種“整體-部分”關(guān)系。在這種關(guān)系中,有整體類和部分類之分。聚集最重要的性質(zhì)是傳遞性,也具有逆對稱性。
聚集可以有不同層次,可以把不同分類聚集起來得到一顆簡單的聚集樹,聚集樹是一種簡單表示,比畫很多線來將部分類聯(lián)系起來簡單得多,對象模型應(yīng)該容易地反映各級層次,圖10-10表示一個(gè)關(guān)于微機(jī)的多極聚集。
(2)一般化關(guān)系。
一般化關(guān)系是在保留對象差異的同時(shí)共享對象相似性的一種高度抽象方式。它是“一般---具體”的關(guān)系。一般化類稱為你類,具體類又能稱為子類,各子類繼承了交類的性質(zhì),而各子類的一些共同性質(zhì)和操作又歸納到你類中。因此,一般化關(guān)系和繼承是同時(shí)存在的。一般化關(guān)系的符號表示是在類關(guān)聯(lián)的連線上加一個(gè)小三角形,如圖10-11
4.對象模型
(1)模板。模板是類、關(guān)聯(lián)、一般化結(jié)構(gòu)的邏輯組成。
(2)對象模型。
對象模型是由一個(gè)或若干個(gè)模板組成。模板將模型分為若干個(gè)便于管理的子塊,在整個(gè)對象模型和類及關(guān)聯(lián)的構(gòu)造塊之間,模板提供了一種集成的中間單元,模板中的類名及關(guān)聯(lián)名是唯一的。
·動態(tài)模型
動態(tài)模型是與時(shí)間和變化有關(guān)的系統(tǒng)性質(zhì)。該模型描述了系統(tǒng)的控制結(jié)構(gòu),它表示了瞬間的、行為化的系統(tǒng)控制
性質(zhì),它關(guān)心的是系統(tǒng)的控制,操作的執(zhí)行順序,它表示從對象的事件和狀態(tài)的角度出發(fā),表現(xiàn)了對象的相互行為。
該模型描述的系統(tǒng)屬性是觸發(fā)事件、事件序列、狀態(tài)、事件與狀態(tài)的組織。使用狀態(tài)圖作為描述工具。它涉及到事件、狀態(tài)、操作等重要概念。
1.事件
事件是指定時(shí)刻發(fā)生的某件事。
2.狀態(tài)
狀態(tài)是對象屬性值的抽象。對象的屬性值按照影響對象顯著行為的性質(zhì)將其歸并到一個(gè)狀態(tài)中去。狀態(tài)指明了對象
對輸入事件的響應(yīng)。
3.狀態(tài)圖
狀態(tài)圖是一個(gè)標(biāo)準(zhǔn)的計(jì)算機(jī)概念,他是有限自動機(jī)的圖形表示,這里把狀態(tài)圖作為建立動態(tài)模型的圖形工具。
狀態(tài)圖反映了狀態(tài)與事件的關(guān)系。當(dāng)接收一事件時(shí),下一狀態(tài)就取決于當(dāng)前狀態(tài)和所接收的該事件,由該事件引起的狀態(tài)變化稱為轉(zhuǎn)換。
狀態(tài)圖是一種圖,用結(jié)點(diǎn)表示狀態(tài),結(jié)點(diǎn)用圓圈表示;圓圈內(nèi)有狀態(tài)名,用箭頭連線表示狀態(tài)的轉(zhuǎn)換,上面標(biāo)記事件名,箭頭方向表示轉(zhuǎn)換的方向。
·功能模型
功能模型描述了系統(tǒng)的所有計(jì)算。功能模型指出發(fā)生了什么,動態(tài)模型確定什么時(shí)候發(fā)生,而對象模型確定發(fā)生的客體。功能模型表明一個(gè)計(jì)算如何從輸入值得到輸出值,它不考慮計(jì)算的次序。功能模型由多張數(shù)據(jù)流圖組成。數(shù)據(jù)流圖用來表示從源對象到目標(biāo)對象的數(shù)據(jù)值的流向,它不包含控制信息,控制信息在動態(tài)模型中表示,同時(shí)數(shù)據(jù)流圖也不表示對象中值的組織,值的組織在對象模型中表示。圖10-15給出了一個(gè)窗口系統(tǒng)的圖標(biāo)顯示的數(shù)據(jù)流圖。
數(shù)據(jù)流圖中包含有處理、數(shù)據(jù)流、動作對象和數(shù)據(jù)存儲對象。
1.處理
數(shù)據(jù)流圖中的處理用來改變數(shù)據(jù)值。最低層處理是純粹的函數(shù),一張完整的數(shù)據(jù)流圖是一個(gè)高層處理。
2.數(shù)據(jù)流
數(shù)據(jù)流圖中的數(shù)據(jù)流將對象的輸出與處理、處理與對象的輸入、處理與處理聯(lián)系起來。在一個(gè)計(jì)算機(jī)中,用數(shù)據(jù)流來表示一中間數(shù)據(jù)值,數(shù)據(jù)流不能改變數(shù)據(jù)值。
3.動作對象
動作對象是一種主動對象,它通過生成或者使用數(shù)據(jù)值來驅(qū)動數(shù)據(jù)流圖。
4.數(shù)據(jù)存儲對象
數(shù)據(jù)流圖中的數(shù)據(jù)存儲是被動對象,它用來存儲數(shù)據(jù)。它與動作對象不一樣,數(shù)據(jù)存儲本身不產(chǎn)生任何操作,它只響應(yīng)存儲和訪問的要求。
六、面向?qū)ο蟮姆治?
面向?qū)ο蠓治龅哪康氖菍陀^世界的系統(tǒng)進(jìn)行建模。本節(jié)以上面介紹的模型概念為基礎(chǔ),結(jié)合“銀行網(wǎng)絡(luò)系統(tǒng)”的具體實(shí)例來構(gòu)造客觀世界問題的準(zhǔn)確、嚴(yán)密的分析模型。
分析模型有三種用途:用來明確問題需求;為用戶和開發(fā)人員提供明確需求;為用戶和開發(fā)人員提供一個(gè)協(xié)商的基礎(chǔ),作為后繼的設(shè)計(jì)和實(shí)現(xiàn)的框架。
(一) 面向?qū)ο蟮姆治?
系統(tǒng)分析的第一步是:陳述需求。分析者必須同用戶一塊工作來提煉需求,因?yàn)檫@樣才表示了用戶的真實(shí)意圖,其中涉及對需求的分析及查找丟失的信息。下面以“銀行網(wǎng)絡(luò)系統(tǒng)”為例,用面向?qū)ο蠓椒ㄟM(jìn)行開發(fā)。
銀行網(wǎng)絡(luò)系統(tǒng)問題陳述: 設(shè)計(jì)支持銀行網(wǎng)絡(luò)的軟件,銀行網(wǎng)絡(luò)包括人工出納站和分行共享的自動出納機(jī)。每個(gè)分理處用分理處計(jì)算機(jī)來保存各自的帳戶,處理各自的事務(wù);各自分理處的出納站與分理處計(jì)算機(jī)通信,出納站錄入帳戶和事務(wù)數(shù)據(jù);自動出納機(jī)與分行計(jì)算機(jī)通信,分行計(jì)算機(jī)與撥款分理處結(jié)帳,自動出納機(jī)與用戶接口接受現(xiàn)金卡,與分行計(jì)算機(jī)通信完成事務(wù),發(fā)放現(xiàn)金,打印收據(jù);系統(tǒng)需要記錄保管和安全措施;系統(tǒng)必須正確處理同一帳戶的并發(fā)訪問;每個(gè)分處理為自己的計(jì)算機(jī)準(zhǔn)備軟件,銀行網(wǎng)絡(luò)費(fèi)用根據(jù)顧客和現(xiàn)金卡的數(shù)目分?jǐn)偨o各分理處。
圖10-18給出銀行網(wǎng)絡(luò)系統(tǒng)的示意圖。
(二)建立對象模型
首先標(biāo)識和關(guān)聯(lián),因?yàn)樗鼈冇绊懥苏w結(jié)構(gòu)和解決問題的方法,其次是增加屬性,進(jìn)一步描述類和關(guān)聯(lián)的基本網(wǎng)絡(luò),使用繼承合并和組織類,最后操作增加到類中去作為構(gòu)造動態(tài)模型和功能模型的副產(chǎn)品。
1.確定類
構(gòu)造對象模型的第一步是標(biāo)出來自問題域的相關(guān)的對象類,對象包括物理實(shí)體和概念。所有類在應(yīng)用中都必須有意義,在問題陳述中,并非所有類都是明顯給出的。有些是隱含在問題域或一般知識中的。
按圖10-19所示的過程確定類
查找問題陳述中的所有名詞,產(chǎn)生如下的暫定類。
軟件 銀行網(wǎng)絡(luò) 出納員 自動出納機(jī) 分行
分處理 分處理計(jì)算機(jī) 帳戶 事務(wù) 出納站
事務(wù)數(shù)據(jù) 分行計(jì)算機(jī) 現(xiàn)金卡 用戶 現(xiàn)金
收據(jù) 系統(tǒng) 顧客 費(fèi)用 帳戶數(shù)據(jù)
訪問 安全措施 記錄保管
根據(jù)下列標(biāo)準(zhǔn),去掉不必要的類和不正確的類。
(1) 冗余類:若兩個(gè)類表述了同一個(gè)信息 ,保留最富有描述能力的類。如"用戶"和"顧客"就是重復(fù)的描述,因?yàn)?顧客"最富有描述性,因此保留它。
(2) 不相干的類:除掉與問題沒有關(guān)系或根本無關(guān)的類。例如,攤派費(fèi)用超出了銀行網(wǎng)絡(luò)的范圍。
(3) 模糊類:類必須是確定的,有些暫定類邊界定義模糊或范圍太廣,如"記錄保管"就模糊類,它是"事務(wù)"中的一部分。
(4) 屬性:某些名詞描述的是其他對象的屬性,則從暫定類中刪除。如果某一性質(zhì)的獨(dú)立性很重要,就應(yīng)該把他歸屬到類,而不把它作為屬性。
(5) 操作:如果問題陳述中的名詞有動作含義,則描述的操作就不是類。但是具有自身性質(zhì)而且需要獨(dú)立存在的操作應(yīng)該描述成類。如我們只構(gòu)造電話模型,"撥號"就是動態(tài)模型的一部分而不是類,但在電話撥號系統(tǒng)中,"撥號"是一個(gè)重要的類,它日期、時(shí)間、受話地點(diǎn)等屬性。
在銀行網(wǎng)絡(luò)系統(tǒng)中,模糊類是"系統(tǒng)"、"安全措施"、"記錄保管"、"銀行網(wǎng)絡(luò)"等。屬于屬性的有:"帳戶數(shù)據(jù)"、"收據(jù)"、"現(xiàn)金"、"事務(wù)數(shù)據(jù)"。屬于實(shí)現(xiàn)的如:"訪問"、"軟件"等。這些均應(yīng)除去。
2.準(zhǔn)備數(shù)據(jù)字典
為所有建模實(shí)體準(zhǔn)備一個(gè)數(shù)據(jù)字典。準(zhǔn)確描述各個(gè)類的精確含義,描述當(dāng)前問題中的類的范圍,包括對類的成員、用法方面的假設(shè)或限制。
3.確定關(guān)聯(lián)
兩個(gè)或多個(gè)類之間的相互依賴就是關(guān)聯(lián)。一種依賴表示一種關(guān)聯(lián),可用各種方式來實(shí)現(xiàn)關(guān)聯(lián),但在分析模型中應(yīng)刪除實(shí)現(xiàn)的考慮,以便設(shè)計(jì)時(shí)更為靈活。關(guān)聯(lián)常用描述性動詞或動詞詞組來表示,其中有物理位置的表示、傳導(dǎo)的動作、通信、所有者關(guān)系、條件的滿足等。從問題陳述中抽取所有可能的關(guān)聯(lián)表述,把它們記下來,但不要過早去細(xì)化這些表述。
下面是銀行網(wǎng)絡(luò)系統(tǒng)中所有可能的關(guān)聯(lián),大多數(shù)是直接抽取問題中的動詞詞組而得到的。在陳述中,有些動詞詞組表述的關(guān)聯(lián)是不明顯的。最后,還有一些關(guān)聯(lián)與客觀世界或人的假設(shè)有關(guān),必須同用戶一起核實(shí)這種關(guān)聯(lián),因?yàn)檫@種關(guān)聯(lián)在問題陳述中找不到。
銀行網(wǎng)絡(luò)問題陳述中的關(guān)聯(lián):
·銀行網(wǎng)絡(luò)包括出納站和自動出納機(jī);
·分行共享自動出納機(jī);
·分理處提供分理處計(jì)算機(jī);
·分理處計(jì)算機(jī)保存帳戶;
·分理處計(jì)算機(jī)處理帳戶支付事務(wù);
·分理處擁有出納站;
·出納站與分理處計(jì)算機(jī)通信;
·出納員為帳戶錄入事務(wù);
·自動出納機(jī)接受現(xiàn)金卡;
·自動出納機(jī)與用戶接口;
·自動出納機(jī)發(fā)放現(xiàn)金;
·自動出納機(jī)打印收據(jù);
·系統(tǒng)處理并發(fā)訪問;
·分理處提供軟件;
·費(fèi)用分?jǐn)偨o分理處。
隱含的動詞詞組:
·分行由分理處組成;
·分理處擁有帳戶;
·分行擁有分行計(jì)算機(jī);
·系統(tǒng)提供記錄保管;
·系統(tǒng)提供安全;
·顧客有現(xiàn)金卡。
基于問題域知識的關(guān)聯(lián):
·分理處雇傭出納員;
·現(xiàn)金卡訪問帳戶。
使用下列標(biāo)準(zhǔn)去掉不必要和不正確的關(guān)聯(lián):
(1) 若某個(gè)類已被刪除,那么與它有關(guān)的關(guān)聯(lián)也必須刪除或者用其它類來重新表述。在例中,我們刪除了"銀行網(wǎng)絡(luò)",相關(guān)的關(guān)聯(lián)也要?jiǎng)h除。
(2) 不相干的關(guān)聯(lián)或?qū)崿F(xiàn)階段的關(guān)聯(lián):刪除所有問題域之外的關(guān)聯(lián)或涉及實(shí)現(xiàn)結(jié)構(gòu)中的關(guān)聯(lián)。如"系統(tǒng)處理并發(fā)訪問"就是一種實(shí)現(xiàn)的概念。
(3) 動作:關(guān)聯(lián)應(yīng)該描述應(yīng)用域的結(jié)構(gòu)性質(zhì)而不是瞬時(shí)事件,因此應(yīng)刪除"自動出納機(jī)接受現(xiàn)金卡","自動出納機(jī)與用戶接口"等。
(4) 派生關(guān)聯(lián):省略那些可以用其他關(guān)聯(lián)來定義的關(guān)聯(lián)。因?yàn)檫@種關(guān)聯(lián)是冗余的。銀行網(wǎng)絡(luò)系統(tǒng)的初步對象圖如圖10-20所示。其中含有關(guān)聯(lián)。
4.確定屬性
屬性是個(gè)體對象的性質(zhì),屬性通常用修飾性的名詞詞組來表示.形容詞常常表示具體的可枚舉的屬性值,屬性不可能在問題陳述中完全表述出來,必須借助于應(yīng)用域的知識及對客觀世界的知識才可以找到它們。只考慮與具體應(yīng)用直接相關(guān)的屬性,不要考慮那些超出問題范圍的屬性。首先找出重要屬性,避免那些只用于實(shí)現(xiàn)的屬性,要為各個(gè)屬性取有意義的名字。按下列標(biāo)準(zhǔn)刪除不必要的和不正確的屬性:
(1) 對象:若實(shí)體的獨(dú)立存在比它的值重要,那么這個(gè)實(shí)體不是屬性而是對象。如在郵政目錄中,"城市"是一個(gè)屬性,然而在人口普查中,"城市"則被看作是對象。在具體應(yīng)用中,具有自身性質(zhì)的實(shí)體一定是對象。
(2) 定詞:若屬性值取決于某種具體上下文,則可考慮把該屬性重新表述為一個(gè)限定詞。
(3) 名稱:名稱常常作為限定詞而不是對象的屬性,當(dāng)名稱不依賴于上下文關(guān)系時(shí),名稱即為一個(gè)對象屬性,尤其是它不惟一時(shí)。
(4) 標(biāo)識符:在考慮對象模糊性時(shí),引入對象標(biāo)識符表示,在對象模型中不列出這些對象標(biāo)識符,它是隱含在對象模型中,只列出存在于應(yīng)用域的屬性。
(5) 內(nèi)部值:若屬性描述了對外不透明的對象的內(nèi)部狀態(tài),則應(yīng)從對象模型中刪除該屬性。
(6) 細(xì)化:忽略那些不可能對大多數(shù)操作有影響的屬性。
5.使用繼承來細(xì)化類
使用繼承來共享公共機(jī)構(gòu),以次來組織類,可以用兩種方式來進(jìn)行。
(1) 自底向上通過把現(xiàn)有類的共同性質(zhì)一般化為父類,尋找具有相似的屬性,關(guān)系或操作的類來發(fā)現(xiàn)繼承。例如"遠(yuǎn)程事務(wù)"和"出納事務(wù)"是類似的,可以一般化為"事務(wù)"。有些一般化結(jié)構(gòu)常常是基于客觀世界邊界的現(xiàn)有分類,只要可能,盡量使用現(xiàn)有概念。對稱性常有助于發(fā)現(xiàn)某些丟失的類。
(2) 自頂向下將現(xiàn)有的類細(xì)化為更具體的子類。具體化常常可以從應(yīng)用域中明顯看出來。應(yīng)用域中各枚舉字情況是最常見的具體化的來源。例如:菜單,可以有固定菜單,頂部菜單,彈出菜單,下拉菜單等,這就可以把菜單類具體細(xì)化為各種具體菜單的子類。當(dāng)同一關(guān)聯(lián)名出現(xiàn)多次且意義也相同時(shí),應(yīng)盡量具體化為相關(guān)聯(lián)的類,例如"事務(wù)"從"出納站"和"自動出納機(jī)"進(jìn)入,則"錄入站"就是"出納站"和"自動出納站"的一般化。在類層次中,可以為具體的類分配屬性和關(guān)聯(lián)。各屬性和都應(yīng)分配給最一般的適合的類,有時(shí)也加上一些修正。
應(yīng)用域中各枚舉情況是最常見的具體化的來源。
6.完善對象模型
對象建模不可能一次就能保證模型是完全正確的,軟件開發(fā)的整個(gè)過程就是一個(gè)不斷完善的過程。模型的不同組成部分多半是在不同的階段完成的,如果發(fā)現(xiàn)模型的缺陷,就必須返回到前期階段去修改,有些細(xì)化工作是在動態(tài)模型和功能模型完成之后才開始進(jìn)行的。
(1) 幾種可能丟失對象的情況及解決辦法:
·同一類中存在毫無關(guān)系的屬性和操作,則分解這個(gè)類,使各部分相互關(guān)聯(lián);
·一般化體系不清楚,則可能分離扮演兩種角色的類
·存在無目標(biāo)類的操作,則找出并加上失去目標(biāo)的類;
·存在名稱及目的相同的冗余關(guān)聯(lián),則通過一般化創(chuàng)建丟失的父類,把關(guān)聯(lián)組織在一起。
(2) 查找多余的類。
類中缺少屬性,操作和關(guān)聯(lián),則可刪
軟件開發(fā)需要學(xué)習(xí)什么基礎(chǔ)知識
學(xué)習(xí)軟件開發(fā)經(jīng)常會涉及到數(shù)學(xué)和英語的知識,所以需要有一定的數(shù)學(xué)和英語基礎(chǔ),這樣可以讓軟件開發(fā)變得事半功倍。千鋒教育就有線上免費(fèi)的軟件開發(fā)公開課,。
千鋒教育采用全程面授高品質(zhì)、高體驗(yàn)培養(yǎng)模式,學(xué)科大綱緊跟企業(yè)需求,擁有國內(nèi)一體化教學(xué)管理及學(xué)員服務(wù),在職業(yè)教育發(fā)展道路上不斷探索前行。如果你擅長英語和數(shù)學(xué),你可以跳過這一步。軟件的操作是通過某種程序語言來實(shí)現(xiàn)的,所以學(xué)好程序語言是做好軟件開發(fā)的必修課。所以,如果你想學(xué)軟件開發(fā),第二步就是選擇一門編程開發(fā)語言來學(xué)習(xí),集中精力學(xué)好一門語言。一般來說,要想做好軟件開發(fā),至少要學(xué)一門編程語言。目前主流的編程語言有Java、PHP、C#語言,軟件開發(fā)形式有多種,先學(xué)好這些基礎(chǔ)語言,之后再慢慢擴(kuò)展。除了學(xué)習(xí)基礎(chǔ)語言,還要學(xué)習(xí)數(shù)據(jù)庫的知識。在軟件開發(fā)中,數(shù)據(jù)的存儲和調(diào)用至關(guān)重要。HTML,CSS,Java腳本等相關(guān)的前端語言也是需要掌握的,經(jīng)過這四個(gè)學(xué)習(xí)階段,我們已經(jīng)基本掌握了一套完整的軟件開發(fā)流程,后面深入學(xué)習(xí)的話,就需要掌握各種框架。千鋒官網(wǎng)每日更新最新軟件開發(fā)基礎(chǔ)知識內(nèi)容,鞏固日常學(xué)習(xí)中的基礎(chǔ)技能。更有免費(fèi)的軟件開發(fā)視頻教程幫助學(xué)員快速學(xué)習(xí)。
主流軟件開發(fā)流程的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于主流軟件開發(fā)流程包括、主流軟件開發(fā)流程的信息別忘了在本站進(jìn)行查找喔。