軟件功能模塊的MVC實(shí)現(xiàn)_第1頁(yè)
軟件功能模塊的MVC實(shí)現(xiàn)_第2頁(yè)
軟件功能模塊的MVC實(shí)現(xiàn)_第3頁(yè)
軟件功能模塊的MVC實(shí)現(xiàn)_第4頁(yè)
軟件功能模塊的MVC實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一、軟件模塊MVC實(shí)現(xiàn)1.1軟件項(xiàng)目是由模塊組成1.1.1軟件是由其模塊組成在軟件開(kāi)發(fā)中,最終需要生產(chǎn)出“軟件”產(chǎn)品。但開(kāi)發(fā)出的“軟件”是由功 能“模塊”組成。根據(jù)定義,所謂的軟件“模塊(module)”是在程序設(shè)計(jì)中,為完成某一相 對(duì)獨(dú)立功能所需的一段程序或子程序;也可以指是某大型軟件系統(tǒng)的一部分。前面我們編寫(xiě)的“用戶管理”,我們編寫(xiě)了用戶信息的“列表查詢”功能, 那么“列表查詢”是用戶管理軟件的一個(gè)功能模塊。如果我們對(duì)“用戶”信息進(jìn) 行管理,還需要有:“新增用戶信息”、“修改用戶信息”、“刪除用戶信息”操作。 那么,“新增用戶信息”、“修改用戶信息”、“刪除用戶信息”均是“用戶管理” 的模

2、塊,也稱(chēng)功能模塊。我們可以用軟件功能模塊結(jié)構(gòu)圖表示它們的關(guān)系。例如, “用戶信息管理”的模塊組成由下圖所示,該圖不但表示了其功能模塊的組成, 而且表示了其模塊結(jié)構(gòu)的設(shè)計(jì)。圖1用戶信息管理的功能“模塊”組成結(jié)構(gòu)1.1.2軟件項(xiàng)目開(kāi)發(fā)是以模塊為單位進(jìn)行我們?cè)谲浖_(kāi)發(fā)時(shí),或者在編碼時(shí),不是無(wú)序地進(jìn)行的,往往是以模塊為單 位進(jìn)行的。例如:用戶信息管理包括:新增用戶信息、修改用戶信息、刪除用戶信息、 查詢用戶信息等模塊。我們?cè)诔绦蚓幋a時(shí),就分別對(duì)它們一個(gè)一個(gè)進(jìn)行?!景咐?-1】完整實(shí)現(xiàn)“用戶信息管理”模塊中新增、修改、刪除、查詢功 能,并使它們?cè)谝粋€(gè)統(tǒng)一界面中操作。根據(jù)分析與設(shè)計(jì),“用戶信息管理”中有新

3、增用戶信息、修改用戶信息、刪 除用戶信息、查詢用戶信息子模塊。每一個(gè)模塊有自己的操作界面、自己的訪問(wèn)數(shù)據(jù)庫(kù)操作方法、還有自己的控 制器,然后將它們通過(guò)主界面集成起來(lái)。這樣就完成了該案例要求的軟件功能模 塊的開(kāi)發(fā)。在主界面上,對(duì)各個(gè)子模塊的操作鏈接進(jìn)行布局,用戶操作后再返回到該主 界面。而每個(gè)模塊分為界面、邏輯處理、控制器組成,分別由JSP、Javabean、 Servlet 實(shí)現(xiàn)。1.1.3 “用戶信息管理”程序結(jié)構(gòu)簡(jiǎn)介在對(duì)軟件進(jìn)行設(shè)計(jì)時(shí),如果以“程序”的觀點(diǎn)進(jìn)行組織與管理則程序會(huì)非常 多、類(lèi)型也不同,與應(yīng)用業(yè)務(wù)的關(guān)系不緊密,所以管理起來(lái)非常困難。但在開(kāi)發(fā) 軟件時(shí),要克服“以程序?yàn)閱挝弧钡木幊?/p>

4、思想,而要“以模塊為單位”進(jìn)行開(kāi)發(fā); 即先劃分模塊,然后再將每個(gè)模塊分解成不同的程序文件,則會(huì)比較有秩序。例如:用戶信息管理包括:新增用戶信息、修改用戶信息、刪除用戶信息、 查詢用戶信息等模塊,則程序文件以這些模塊分為不同的類(lèi)型。用戶信息管理本身是一個(gè)模塊,而其又是由子“功能模塊”組成,而各模塊 又是由多個(gè)程序文件組成。而每個(gè)功能模塊又是由:界面、邏輯處理的Java類(lèi)、 Servlet組成。這三個(gè)部分分別表示:視圖、模型、控制。視圖表示:用戶看到的 界面;模型表示:業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)規(guī)則;而控制表示:接受用戶的輸入并調(diào)用模 型和視圖去完成用戶的需求。現(xiàn)在,將一個(gè)軟件“模塊”,分解為:視圖、模型、控

5、制器來(lái)分別編碼,是 一種廣泛流行與應(yīng)用的設(shè)計(jì)模式,即:MVC設(shè)計(jì)模式(Model-View-Controller, Model-模型,View-視圖,Controller-控制器)。1.2基于MVC設(shè)計(jì)模式軟件開(kāi)發(fā)概述1.2.1 MVC設(shè)計(jì)模式概述所謂的設(shè)計(jì)模式是一套被反復(fù)使用、成功的設(shè)計(jì)總結(jié)與提煉。而MVC設(shè)計(jì) 模式是將軟件的代碼分為M、V、C三層來(lái)實(shí)現(xiàn)的一種設(shè)計(jì)方案。MVC全名是Model-View-Controller的縮寫(xiě),分別表示:M模型(Model)-V視 圖(View)-C控制器(Controller),它一種軟件設(shè)計(jì)典范。它采用業(yè)務(wù)邏輯和數(shù)據(jù) 顯示代碼分離的方法,并將業(yè)務(wù)邏輯處

6、理放到一個(gè)部件里面,而將界面、以及用 戶圍繞數(shù)據(jù)的展開(kāi)的操作單獨(dú)被分離出來(lái)。MVC類(lèi)似于傳統(tǒng)軟件開(kāi)發(fā)中模塊的 輸入、處理和輸出功能,集成在一個(gè)圖形化用戶界面的結(jié)構(gòu)中。.視圖(View)視圖是用戶看到并與之交互的界面。對(duì)老式的Web用程序來(lái)說(shuō),視圖就是 由HTML元素組成的界面,在新式的Web應(yīng)用程序中,HTML依舊在視圖中扮演 著重要的角色,但一些新的技術(shù)已層出不窮,它們包括Adobe Flash和像XHTML、 XML、WML等一些標(biāo)識(shí)語(yǔ)言。JSP作為動(dòng)態(tài)網(wǎng)頁(yè)常常充當(dāng)Web應(yīng)用的視圖。.模型(Model)模型表示業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)規(guī)則。在MVC的三個(gè)部件中,模型擁有最多的處 理任務(wù)。例如它可能封

7、裝數(shù)據(jù)庫(kù)連接、業(yè)務(wù)數(shù)據(jù)庫(kù)處理這樣的構(gòu)件,這樣一個(gè)模 型能為多個(gè)視圖提供數(shù)據(jù)。由于應(yīng)用于模型的代碼只需寫(xiě)一次就可以被多個(gè)視圖 重用,所以能提高代碼的重用性。模型一般用JavaBean技術(shù)實(shí)現(xiàn)。.控制器(Controller)控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求,所以當(dāng)單擊 Web頁(yè)面中的超鏈接和發(fā)送HTML表單時(shí),控制器本身不輸出任何東西和做任何 處理。它只是接收請(qǐng)求并決定調(diào)用哪個(gè)模型構(gòu)件去處理請(qǐng)求,然后再確定用哪個(gè) 視圖來(lái)顯示返回的數(shù)據(jù)。1.2.2 MVC設(shè)計(jì)模式的優(yōu)缺點(diǎn)作為一種設(shè)計(jì)模式,MVC即有很多好處,但也有一些缺點(diǎn)。MVC的優(yōu)點(diǎn)MVC的優(yōu)點(diǎn)表現(xiàn)在:耦合性低、重用性高、可

8、維護(hù)性高、有利軟件工程化 管理等。MVC的缺點(diǎn)由于MVC內(nèi)部原理比較復(fù)雜,理解起來(lái)并不很容易。所以,在使用MVC時(shí) 需要精心的計(jì)劃、需花費(fèi)一定時(shí)間去思考。所以,MVC有調(diào)試較困難、不利于中小型軟件的開(kāi)發(fā)、增加系統(tǒng)結(jié)構(gòu)和實(shí) 現(xiàn)的復(fù)雜性等缺點(diǎn)。1.3軟件項(xiàng)目功能模塊分解與設(shè)計(jì)以一個(gè)學(xué)生管理系統(tǒng)軟件的開(kāi)發(fā)為例,介紹軟件功能模塊的分解及實(shí)現(xiàn)。1.3.1學(xué)生管理系統(tǒng)軟件項(xiàng)目的開(kāi)發(fā)某高校需要通過(guò)“學(xué)生管理軟件系統(tǒng)”對(duì)學(xué)生的相關(guān)信息進(jìn)行計(jì)算機(jī)管理。 本章以該項(xiàng)目為引導(dǎo)案例,介紹軟件的一個(gè)模塊的MVC模式的開(kāi)發(fā)。圍繞學(xué)生的信息有許多,包括:學(xué)生基本信息、學(xué)生學(xué)習(xí)信息等。而學(xué)生的 學(xué)習(xí)信息與教師信息、課程信息相

9、關(guān)聯(lián)。為了簡(jiǎn)單起見(jiàn),我們暫時(shí)以上述信息的 管理為主,介紹其功能的分解與實(shí)現(xiàn)。我們簡(jiǎn)單地將該軟件分解為如下幾個(gè)模塊:1、學(xué)生信息管理2、教師信息管理3、課程信息管理4、學(xué)生成績(jī)管理為了說(shuō)明用Jsp+Servlet+JavaBean技術(shù)實(shí)現(xiàn)MVC方式的開(kāi)發(fā),我們以學(xué) 生信息管理”模塊的實(shí)現(xiàn)為案例進(jìn)行MVC實(shí)現(xiàn)介紹。1.3.2功能模塊分解為了技術(shù)說(shuō)明清楚,本項(xiàng)目實(shí)現(xiàn)的功能非常簡(jiǎn)單。本軟件分解為四大模塊, 分別對(duì)教師信息、學(xué)生信息、課程信息、成績(jī)進(jìn)行管理。而學(xué)生信息只包括:編 號(hào)、姓名、性別、班級(jí)、年齡、成績(jī)6個(gè)。圖2給出了該軟件的模塊結(jié)構(gòu)的分解與設(shè)計(jì)。圖2學(xué)生管理軟件模塊設(shè)計(jì)結(jié)構(gòu)圖模塊:教師信息管理

10、、學(xué)生信息管理、課程信息管理的實(shí)現(xiàn)技術(shù)基本相同, 下面只以一個(gè)模塊“學(xué)生信息管理”為例,介紹該模塊基于MVC的實(shí)現(xiàn)?!景咐?】對(duì)“學(xué)生信息管理”模塊進(jìn)行MVC設(shè)計(jì)模式的程序編碼與功能 實(shí)現(xiàn)。并對(duì)該功能的軟件設(shè)計(jì)內(nèi)容進(jìn)行表示。實(shí)現(xiàn)思路:本案例技術(shù)上與要求同案例1,但是學(xué)生信息比較多,包括:學(xué) 號(hào)、姓名、性別、班級(jí)、成績(jī)等。其功能子模塊可從圖3中可以看出,即“學(xué)生 信息管理”模塊包括如下子模塊:1)學(xué)生信息顯示,包括:?jiǎn)蝹€(gè)學(xué)生信息顯示、學(xué)生信息列表顯示兩種2)學(xué)生信息新增3)學(xué)生信息修改4)學(xué)生信息刪除1.4模塊模型層的優(yōu)化上述案例2中模型層中所有的類(lèi)均有一個(gè)共同點(diǎn),即均是對(duì)學(xué)生信息的操 作,最終

11、落實(shí)到對(duì)同一數(shù)據(jù)庫(kù)表student的操作;其次,創(chuàng)建數(shù)據(jù)庫(kù)連接等數(shù)據(jù) 處理代碼相同,這些均可以放到一起共用,從而優(yōu)化模型的處理程序??梢圆桓淖円晥D層的情況下,對(duì)模型層進(jìn)行優(yōu)化。即通過(guò)一個(gè)Java類(lèi)存放 對(duì)數(shù)據(jù)庫(kù)表的增加、刪除、修改、查詢操作的方法,并且這些方法中的邏輯處理 代碼不需作任何改變?!景咐?】?jī)?yōu)化學(xué)生管理模塊,使其模型層的類(lèi)均放在一個(gè)Java類(lèi)程序文件 中。由于對(duì)“學(xué)生信息管理模塊”代碼這些程序代碼有許多共同的特征,則將它 們的方法合并到一個(gè)類(lèi)中。這個(gè)類(lèi)取名StudentModel.java,用以存放對(duì)學(xué)生信 息管理”相關(guān)的各處理方法。這樣,就使得程序代碼優(yōu)化簡(jiǎn)潔,今后以此原則將 不

12、同的處理放到不同的模塊處理模型中,整個(gè)程序結(jié)構(gòu)比較合理。二、軟件集成2.1問(wèn)題的提出前面介紹了一個(gè)功能模塊的MVC實(shí)現(xiàn)。但是一個(gè)軟件是由許多模塊組成, 這些模塊在運(yùn)行時(shí)可能互相交互,它們的關(guān)系有可能很復(fù)雜。如果我們沒(méi)有一個(gè) 好的操作界面與組織模式,那么這個(gè)軟件會(huì)很不好使用。另外,當(dāng)軟件的各個(gè)模塊開(kāi)發(fā)好后,也需要將它們組裝在一起形成一個(gè)整體, 即完整的軟件的實(shí)現(xiàn)。這個(gè)工作就是軟件的集成或稱(chēng)軟件的組裝。軟件的集成是 軟件開(kāi)發(fā)的一個(gè)重要任務(wù)。2.1.1軟件項(xiàng)目的功能模塊分解模塊化原則是軟件設(shè)計(jì)的重要原則之一。也就是說(shuō),在軟件開(kāi)發(fā)時(shí)一般要對(duì) 軟件進(jìn)行模塊化。即在設(shè)計(jì)時(shí),需先將軟件分解成不同的模塊,這些

13、模塊的功能 能構(gòu)成軟件的整體功能。然后在編碼時(shí)對(duì)這些模塊一個(gè)一個(gè)地實(shí)現(xiàn),最后通過(guò)集 成將它們組成這個(gè)完整軟件。模塊化體現(xiàn)了將大事化小,然后各個(gè)擊破的做事原則。例如,高校學(xué)生管理系統(tǒng)不但包括學(xué)生信息,還包括教師信息、課程信息和 學(xué)習(xí)成績(jī)信息。那么在該軟件的開(kāi)發(fā)時(shí)就需要將它們分解為不同的模塊。這些模 塊構(gòu)成了學(xué)生管理系統(tǒng)(如圖1所示)。圖1學(xué)生管理系統(tǒng)模塊組成圖1中示意了一個(gè)軟件的模塊分解,分解后的模塊還可以如此分解下去,直 至程序員能理解如何做為止(見(jiàn)對(duì)學(xué)生信息管理的進(jìn)一步分解)。如此對(duì)要開(kāi)發(fā) 的軟件進(jìn)行模塊分解,就是所謂的模塊化。軟件模塊化是軟件設(shè)計(jì)階段應(yīng)做的事 情。2.1.2軟件的模塊集成軟

14、件的模塊化是為了將大問(wèn)題變成小問(wèn)題然后一個(gè)一個(gè)去實(shí)現(xiàn)這些小問(wèn)題。 軟件各功能模塊的分解完成后,就可以對(duì)這些模塊分別進(jìn)行實(shí)現(xiàn)。這些模塊是相 對(duì)獨(dú)立的軟件,在實(shí)現(xiàn)過(guò)程中可以單獨(dú)進(jìn)行編碼與單元測(cè)試。當(dāng)這些模塊編碼完成并通過(guò)單元測(cè)試后,就可以放在一起運(yùn)行。這個(gè)過(guò)程就 是所謂的軟件集成。由于在軟件模塊的開(kāi)發(fā)過(guò)程中,只是局部功能的實(shí)現(xiàn),它們?cè)谝黄鸬南嗷ゲ?作沒(méi)有運(yùn)行過(guò),只是在單元測(cè)試階段模擬了互相調(diào)用的測(cè)試,所以當(dāng)它們?cè)谝黄?的時(shí)候是否能按設(shè)計(jì)要求運(yùn)行,也需要進(jìn)行集成后的測(cè)試。其實(shí),最終軟件是要通過(guò)集成完整軟件的組裝,完成軟件的開(kāi)發(fā)任務(wù)。21.3軟件集成相關(guān)技術(shù)工作如果軟件設(shè)計(jì)得好,集成時(shí)只要將軟件的各個(gè)

15、模塊代碼復(fù)制在一起,就完成 了集成工作。但是軟件集成是這么簡(jiǎn)單嗎?軟件模塊在集成前,可能需要一些公共的軟件部件先部署好,即各個(gè)模塊的 一些共性的部分就需要先實(shí)現(xiàn)并在系統(tǒng)中支持各模塊的運(yùn)行。比如:上述各模塊 可能均要對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,那么獲取數(shù)據(jù)庫(kù)連接的處理,就可抽象處理作為一 個(gè)公共部件,先開(kāi)發(fā)出來(lái)并部署好。如果每個(gè)模塊都有自己的數(shù)據(jù)庫(kù)連接獲取的 處理代碼,這樣既增加了軟件的冗余度,也不利于今后代碼的閱讀與維護(hù)。所以,在軟件集成前,需要定義與部署軟件各模塊運(yùn)行的技術(shù)支持,包括運(yùn) 行互相調(diào)用的運(yùn)行環(huán)境與底層的技術(shù)支持部件。這些部件提供了各個(gè)模塊的公共 系統(tǒng)部件,各個(gè)業(yè)務(wù)功能模塊在設(shè)計(jì)時(shí)在滿足了這

16、些公共部件的接口要求后,集 成時(shí)只要復(fù)制業(yè)務(wù)處理模塊的代碼(公共部分的代碼不需要復(fù)制),就完成了集 成工作??偨Y(jié)上述提到的技術(shù)工作,包括如下幾點(diǎn):模塊運(yùn)行的公共系統(tǒng)環(huán)境部件公共的底層技術(shù)支撐部件這些工作是在所謂的軟件架構(gòu)時(shí)進(jìn)行考慮與設(shè)計(jì)的,所以又稱(chēng)為軟件總體架 構(gòu)設(shè)計(jì)。在軟件架構(gòu)設(shè)計(jì)時(shí),架構(gòu)師要考慮系統(tǒng)運(yùn)行環(huán)境如何布局、采用何種技 術(shù)、與模塊的接口標(biāo)準(zhǔn),以及底層采用何種技術(shù)、底層技術(shù)的配置與實(shí)現(xiàn)等等。有了這些公共部件后,軟件各模塊按其要求進(jìn)行編碼實(shí)現(xiàn),那么集成起來(lái)就 是一件簡(jiǎn)單的事情。2.2軟件架構(gòu)簡(jiǎn)介7.2.1以架構(gòu)為中心的開(kāi)發(fā)方法軟件開(kāi)發(fā)時(shí)先確定軟件架構(gòu),再基于該軟件架構(gòu)進(jìn)行并行開(kāi)發(fā),稱(chēng)為

17、“以架 構(gòu)為中心的開(kāi)發(fā)方法”。它綜合利用了 “分而治之”的方法,利于控制軟件復(fù)雜 性、提高軟件開(kāi)發(fā)效率。所謂軟件架構(gòu)是一種高層設(shè)計(jì),是系統(tǒng)開(kāi)發(fā)策略的定義與選擇,是關(guān)于如何 構(gòu)建軟件的一些最重要的設(shè)計(jì)決策。這些決策往往是圍繞將系統(tǒng)分為哪些部分、 各部分之間是如何交互展開(kāi)的等問(wèn)題。軟件架構(gòu)是團(tuán)隊(duì)開(kāi)發(fā)的基礎(chǔ),有了軟件架 構(gòu),很多技術(shù)、標(biāo)準(zhǔn)都以確定,不會(huì)由于某個(gè)程序員的“即時(shí)”發(fā)揮而使軟件增 大后導(dǎo)致的不可控。軟件架構(gòu)是高層設(shè)計(jì),而各個(gè)模塊的設(shè)計(jì)相對(duì)來(lái)說(shuō)屬于底層設(shè)計(jì),這些設(shè)計(jì) 需要在技術(shù)上對(duì)接。所以在軟件架構(gòu)時(shí)就需要考慮這些細(xì)節(jié),如各自做什么工作、 接口標(biāo)準(zhǔn)是什么、采用何種技術(shù)去實(shí)現(xiàn)等等。軟件架構(gòu)作為

18、高層設(shè)計(jì),存在著到底設(shè)計(jì)到什么程度的問(wèn)題。如果過(guò)多地限 定了底層的內(nèi)容,可能導(dǎo)致過(guò)度設(shè)計(jì),不利于今后的開(kāi)發(fā)。其實(shí)軟件架構(gòu)設(shè)計(jì)到 “能為開(kāi)發(fā)人員提供足夠的指導(dǎo)和限制”的程度就可以。軟件的接口與實(shí)現(xiàn)的分離的選擇、架構(gòu)設(shè)計(jì)與底層詳細(xì)設(shè)計(jì)的分離程度的選 擇等,均是屬于架構(gòu)方面的問(wèn)題。軟件架構(gòu)的優(yōu)勢(shì)在于,有了軟件架構(gòu)設(shè)計(jì)方案之后,確定了 “架構(gòu)中包含了 關(guān)于軟件各元素應(yīng)如何彼此相關(guān)等信息”,從而可以把不同模塊分配給不同的小 組進(jìn)行分頭開(kāi)發(fā)。而軟件架構(gòu)(其確定的設(shè)計(jì)方案)則在這些小組中間扮演“橋 梁”和“合作契約”的作用。每個(gè)小組的工作覆蓋了 “整個(gè)軟件的一部分”,各 小組之間可以互相獨(dú)立地進(jìn)行并行工作,

19、從而實(shí)現(xiàn)了“分割問(wèn)題,各個(gè)擊破”的 策略。穩(wěn)定的軟件架構(gòu)是未來(lái)軟件順利進(jìn)行的基礎(chǔ)。以架構(gòu)為中心的開(kāi)發(fā)有利于解 決技術(shù)復(fù)雜性與管理復(fù)雜性問(wèn)題,所以它有利于大規(guī)模軟件的開(kāi)發(fā)。2.2.2軟件架構(gòu)時(shí)的工作內(nèi)容根據(jù)軟件架構(gòu)的定義,軟件架構(gòu)是一種高層設(shè)計(jì)與決策。軟件架構(gòu)設(shè)計(jì)是解 決全局性的、涉及不同“局部問(wèn)題”之間交互的設(shè)計(jì)問(wèn)題。這些工作包括與整體 相關(guān)的那些內(nèi)容,如接口和實(shí)現(xiàn)分離的設(shè)計(jì),表示層、模型層、控制層和數(shù)據(jù)層 的設(shè)計(jì)與技術(shù)選擇等。接口和實(shí)現(xiàn)分離的設(shè)計(jì),是在架構(gòu)設(shè)計(jì)時(shí)無(wú)需深入到一個(gè)子系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié) 中去,而是分而治之,先確定該子系統(tǒng)的接口。接口的設(shè)計(jì)是先定義了一個(gè)子系 統(tǒng)為其他子系統(tǒng)所提供服務(wù)的契

20、約。軟件架構(gòu)通過(guò)明確每個(gè)子系統(tǒng)所要實(shí)現(xiàn)的接 口及所要調(diào)用的接口,為我們展現(xiàn)了一個(gè)軟件系統(tǒng)如何分割為多個(gè)相互協(xié)作的子 系統(tǒng)。又例如,表示層、模型層、控制層和數(shù)據(jù)層的開(kāi)發(fā)往往需要不同的技術(shù),不 但可以這些層分別分派給不同的小組承擔(dān),而且其選擇為各個(gè)局部模塊提供統(tǒng)一 的技術(shù)基礎(chǔ)平臺(tái)。例如:可以選擇JSP+Servlet+JavaBean技術(shù)實(shí)現(xiàn)MVC模式的 開(kāi)發(fā),也可以選擇Struts2+Hibernate或采用Spring技術(shù)實(shí)現(xiàn)。這是軟件架構(gòu)時(shí)要 考慮與確定的。相對(duì)于架構(gòu)的全局性的設(shè)計(jì),對(duì)于模塊的具體設(shè)計(jì)屬于“局部”的詳細(xì)設(shè)計(jì)。 它是在軟件架構(gòu)所提供的“合作契約”的指導(dǎo)之下,眾多局部問(wèn)題被很好地

21、“按 問(wèn)題廣度分而治之”地并行進(jìn)行。而詳細(xì)設(shè)計(jì)針對(duì)每個(gè)部分的內(nèi)部進(jìn)行設(shè)計(jì)。隨 著軟件開(kāi)發(fā)的規(guī)模和復(fù)雜度增加,將架構(gòu)設(shè)計(jì)和詳細(xì)設(shè)計(jì)分離已成為普遍的做 法。設(shè)計(jì)和制定系統(tǒng)全局性整體結(jié)構(gòu)這類(lèi)問(wèn)題,這就是軟件架構(gòu)的設(shè)計(jì)。例如,介紹學(xué)生管理系統(tǒng)只是一個(gè)模塊的實(shí)現(xiàn),它的MVC技術(shù)、數(shù)據(jù)處理 層等屬于公共規(guī)范與內(nèi)容,它屬于軟件架構(gòu)的范疇;而各個(gè)模塊的實(shí)現(xiàn),只要在 此“契約規(guī)定”下,做好自己的JSP界面、模型層、控制器就可以了。另外,要使該模塊能在統(tǒng)一的環(huán)境下運(yùn)行,還需要一個(gè)統(tǒng)一運(yùn)行環(huán)境。2.3學(xué)生管理系統(tǒng)各模塊統(tǒng)一運(yùn)行環(huán)境本章圖1所示的學(xué)生管理系統(tǒng)模塊組成包括:學(xué)生信息管理模塊、教師信息 管理模塊、課程信息

22、管理模塊和成績(jī)管理模塊。這些模塊的實(shí)現(xiàn)是可單獨(dú)實(shí)現(xiàn)與 運(yùn)行的(見(jiàn)實(shí)現(xiàn))。但是,這些模塊開(kāi)發(fā)成功后,需要在一個(gè)統(tǒng)一的界面中操作 與管理運(yùn)行(見(jiàn)后圖7-3)。設(shè)計(jì)與開(kāi)發(fā)一個(gè)各模塊統(tǒng)一的運(yùn)行界面與環(huán)境也是軟件架構(gòu)的任務(wù),因?yàn)樗?也是軟件全局性的工作。2.3.1統(tǒng)一運(yùn)行界面的設(shè)計(jì)上述四個(gè)模塊(學(xué)生信息管理模塊、教師信息管理模塊、課程信息管理模塊 和成績(jī)管理模塊)均可以獨(dú)立運(yùn)行(見(jiàn)“學(xué)生信息管理”模塊功能演示(a)(g), 其他模塊類(lèi)似)。如果我們不改這些模塊的代碼,使得它們?cè)谝粋€(gè)統(tǒng)一的界面下 運(yùn)行,則集成工作非常簡(jiǎn)單(運(yùn)行效果見(jiàn)圖3、圖4所示)。下面介紹統(tǒng)一運(yùn)行 的主界面的設(shè)計(jì)與實(shí)現(xiàn)。1.主界面的設(shè)計(jì)

23、可以設(shè)計(jì)一個(gè)統(tǒng)一的學(xué)生管理系統(tǒng)的主界面,將所有的學(xué)生管理相關(guān)的功能 模塊在其中進(jìn)行集中展現(xiàn),該主界面的設(shè)計(jì)格式如圖2所示。Logo 區(qū)標(biāo)頭區(qū)菜單導(dǎo)航區(qū)內(nèi)容區(qū)頁(yè)腳區(qū)圖2學(xué)生管理系統(tǒng)統(tǒng)一界面設(shè)計(jì)該統(tǒng)一主界面包括五個(gè)部分:Logo區(qū)、標(biāo)頭區(qū)、菜單導(dǎo)航區(qū)、內(nèi)容區(qū)、頁(yè) 腳區(qū)。其中菜單導(dǎo)航區(qū)是各個(gè)模塊的入口地址,即是調(diào)用各個(gè)功能模塊的菜單, 當(dāng)通過(guò)該菜單調(diào)用某個(gè)模塊后,則該模塊就在內(nèi)容區(qū)中運(yùn)行(而不是獨(dú)立運(yùn)行)。2 .學(xué)生管理系統(tǒng)主界面運(yùn)行效果展示參考圖2實(shí)現(xiàn)的學(xué)生管理系統(tǒng)的統(tǒng)一運(yùn)行主界面見(jiàn)圖3所示。為了簡(jiǎn)單起見(jiàn) 在該主界面中有一個(gè)標(biāo)頭區(qū)、菜單導(dǎo)航區(qū)、內(nèi)容區(qū)、頁(yè)腳區(qū)四個(gè)區(qū)。其中菜單導(dǎo) 航區(qū)是該系統(tǒng)的四個(gè)模

24、塊的入口;而內(nèi)容區(qū)是各個(gè)模塊運(yùn)行的界面。2.3.2統(tǒng)一運(yùn)行界面的實(shí)現(xiàn)【案例1】設(shè)計(jì)學(xué)生管理系統(tǒng)各模塊的統(tǒng)一運(yùn)行主界面,使學(xué)生管理系統(tǒng)四 大模塊(學(xué)生信息管理、教師信息管理、課程信息管理、成績(jī)管理)在其中以統(tǒng) 一的形式運(yùn)行。首先分別實(shí)現(xiàn)各個(gè)模塊的程序代碼,每一個(gè)模塊均有一個(gè)URL入口,例如學(xué) 生信息管理模塊為一個(gè)servlet,其U RL為L(zhǎng)istStudentServlet.do。則在主菜單的導(dǎo) 航區(qū)中對(duì)應(yīng)“學(xué)生管理”的入口為一個(gè)超鏈接: 學(xué)生管理同理,其他模塊的入口地址也是類(lèi)似的超鏈接,從而實(shí)現(xiàn)了軟件各功能模塊 的集成。軟件的各功能模塊則可在此統(tǒng)一界面中操作運(yùn)行。2.3.3在主界面中其他模塊

25、的集成已經(jīng)介紹過(guò)各模塊統(tǒng)一運(yùn)行主界面的設(shè)計(jì)與實(shí)現(xiàn),也介紹了一個(gè)模塊“學(xué)生 信息管理”的實(shí)現(xiàn)及在主界面中的運(yùn)行。那么,其他的模塊在主界面中集成與運(yùn) 行是否也相同呢?答案是肯定的!即其他各模塊只要分別開(kāi)發(fā)完成,將其程序文件復(fù)制到項(xiàng)目 工程中,在left.jsp中修改對(duì)應(yīng)菜單的超鏈接,則完成了其集成工作,該模塊就 可以在主界面中運(yùn)行了。2.3.4軟件集成后程序的組織學(xué)生管理系統(tǒng)軟件組成包括學(xué)生信息管理模塊、教師信息管理模塊、課程信 息管理和成績(jī)管理模塊,以及公共架構(gòu)部件幾大部分。每個(gè)模塊又有MVC各個(gè) 層次,所以整個(gè)軟件按模塊以及按層次進(jìn)行布局均是一種結(jié)構(gòu)性設(shè)計(jì)。-另 src+ 出 control+ 出 dbutil+ 由 entity+ 出 model-但 WebRoot+ 4 CSS+ & META-INFI-4 scorejsp尸 scoreinfo. jspII- g? student jspj, error.jspj,student insert. jspj,student

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論