信息系統(tǒng)
信息系統(tǒng)經(jīng)過開發(fā)商測試、用戶驗(yàn)證測試后膝晾,即可以正式投入運(yùn)行。此刻也標(biāo)志著系統(tǒng)的研制工作已經(jīng)結(jié)束务冕。系統(tǒng)進(jìn)入使用階段后血当,主要任務(wù)就是對信息系統(tǒng)進(jìn)行管理和維護(hù),其任務(wù)包括日常運(yùn)行的管理禀忆、運(yùn)行情況的記錄臊旭、對系統(tǒng)進(jìn)行修改和擴(kuò)充、對系統(tǒng)的運(yùn)行情況進(jìn)行檢查與評價等箩退。
只有這些工作做好了离熏,才能使信息系統(tǒng)能夠如預(yù)期目標(biāo)那樣,為管理工作提供所需信息戴涝,才能真正符合管理決策的需要滋戳。
信息化建設(shè)過程中钻蔑,原有的信息系統(tǒng)不斷被功能更強(qiáng)大的新系統(tǒng)所取代,所以需要系統(tǒng)轉(zhuǎn)換奸鸯,系統(tǒng)轉(zhuǎn)換也就是系統(tǒng)切換與運(yùn)行税稼,是指以新系統(tǒng)替換舊系統(tǒng)的過程糠馆。
系統(tǒng)成本分為固定成本和運(yùn)行成本窒舟。其中設(shè)備購置費(fèi)用绢要、設(shè)施費(fèi)用、軟件開發(fā)費(fèi)用屬于固定成本蓄拣,為購置長期使用的資產(chǎn)而發(fā)生的成本扬虚。而系統(tǒng)切換費(fèi)用屬于系統(tǒng)運(yùn)行維護(hù)費(fèi)用。
編寫和調(diào)試工作不能操之過急弯蚜,不可以匆忙完成孔轴,很可能后期會造成重大故障。因此最佳的方式就是將原工作做好斷點(diǎn)記錄和備份碎捺。
文檔設(shè)計
程序員需要用文檔來表述自己的思想路鹰,文檔設(shè)計的要點(diǎn)包括: 1. 編寫文檔前應(yīng)先做規(guī)劃∈粘可以參照有關(guān)標(biāo)準(zhǔn)以及成熟產(chǎn)品的案例晋柱,先列出文檔的綱目。文檔內(nèi)容的邏輯性要強(qiáng)诵叁,要讓人易于理解雁竞。要編寫進(jìn)度計劃。編寫文檔常常不是一次完成的拧额,需要先寫出初稿碑诉,并經(jīng)過自己多次修改,再送有關(guān)人員修改侥锦,待基本定稿后进栽,再送審。
2.? 要選擇最適合表達(dá)某種算法的形式恭垦。有些內(nèi)容適合用文本表示快毛,有些則采用表格更好,有時用圖來表示更清晰番挺。
3.? 軟件產(chǎn)品包括程序和文檔唠帝。程序與文檔要保持一致性,文檔上下文也要保持一致性玄柏,不能出現(xiàn)矛盾襟衰。有時隨著程序的不斷修改,很難完全同步修改文檔粪摘,但要求盡量做到同步瀑晒。起碼在對程序修改進(jìn)行了一個階段后阀湿,就應(yīng)修改相應(yīng)的文檔。雖然完全同步修改文檔的代價有時會太高瑰妄,大多數(shù)人也不會這樣做,但總體來說映砖,保持一致性十分重要间坐。反過來,文檔不一致會造成理解邑退、使用和維護(hù)軟件的困難竹宋。
4.? 要保持良好的文檔風(fēng)格,其重要性等同于保持良好的程序設(shè)計風(fēng)格地技。 軟件工程鼓勵開發(fā)者按相應(yīng)的文檔模板來編寫文檔蜈七,特別是大型軟件企業(yè)本身建立了文檔規(guī)范。利用文檔模板莫矗,可以減少遺漏飒硅,考慮得更全面,文檔的質(zhì)量也更高作谚。但是三娩,許多軟件的創(chuàng)新性強(qiáng),沒有相應(yīng)的模板供參照妹懒。此外雀监,即使使用了文檔模板,在軟件升級時對文檔的修改也同樣需要做不少工作眨唬,減少修改工作量不是采用文檔模板的主要原因会前。
面向?qū)ο?/h4>
面向?qū)ο蟪绦蛟O(shè)計的實(shí)質(zhì)是選用一種面向?qū)ο蟪绦蛟O(shè)計語言,采用對象匾竿、類及相關(guān)概念進(jìn)行程序設(shè)計瓦宜。
實(shí)現(xiàn)一個面向?qū)ο蟪绦驎r,通常首先編寫類搂橙,類是對對象的抽象歉提, 對象表現(xiàn)為類的實(shí)例。每個類可以創(chuàng)建不同個數(shù)的實(shí)例区转,也可以不創(chuàng)建實(shí)例苔巨。
類的實(shí)例化包括實(shí)例生成和實(shí)例消除,在實(shí)例化時可以確定實(shí)例的初始狀態(tài)废离,即初始化侄泽。
面向?qū)ο蠓椒ㄒ钥陀^世界的對象為中心,采用符合人們思維方式的分析和設(shè)計思想蜻韭,分析和設(shè)計的結(jié)果與客觀世界的實(shí)際情況比較接近悼尾。
在面向?qū)ο蟮南到y(tǒng)中柿扣,對象是基本的運(yùn)行時實(shí)體,它既包括數(shù)據(jù)(屬性)闺魏,也包括作用于數(shù)據(jù)的操作(行為)未状。
對象之間進(jìn)行通信的一種構(gòu)造叫做消息。封裝是一種信息隱蔽技術(shù)析桥,其目的是使對象的使用者和生產(chǎn)者分離司草,使對象的定義和實(shí)現(xiàn)分開。
一個類定義了一組大體上相似的對象泡仗,類所包含的方法和數(shù)據(jù)描述了這組對象的共同行為和屬性埋虹。類是對象之上的抽象,對象是類的具體化娩怎,是類的實(shí)例搔课。
父類(基類,超類)截亦,子類(派生類)
面向?qū)ο笾械?b>類是面向?qū)ο蠓椒ㄖ凶罨镜姆庋b單元爬泥,決定了現(xiàn)實(shí)世界中實(shí)體的數(shù)據(jù)和方法,以及數(shù)據(jù)和方法是否對外界暴露魁巩。
面向?qū)ο蟾拍钪屑泵穑宇愂歉割惖奶鼗宇惸軌蜃詣荧@得父類的屬性和方法谷遂,即繼承父類的屬性和方法葬馋,但子類可以根據(jù)實(shí)際情況對繼承而來的方法進(jìn)行覆蓋或重載,也就是子類和父類的行為不必保持完全地一致肾扰。
基類定義了一組對象的共有行為和屬性畴嘶;子類是集成關(guān)系中的孩子類,定義了特有的行為和屬性集晚;特化關(guān)系等價于繼承關(guān)系窗悯,因此子類是基類或超類的特化。
類是對象的模板偷拔,類定義了對象共有的屬性和方法蒋院。類也可以看作是一組對象共有特性的集合,即一個類中的對象擁有相同的屬性和方法莲绰,一般而言欺旧,從一個類可以產(chǎn)生多個對象。
根據(jù)類之間繼承關(guān)系的含義蛤签,一個子類對象一定也是一個父類對象辞友,所有使用父類對象的地方,都可以使用子類對象代替。因?yàn)樽宇惪梢赃x擇改變父類的屬性和方法称龙,因此留拾,子類和父類有可能具有完全相同的屬性和方法,也有可能不完全相同鲫尊。
對象
在面向?qū)ο蠓椒ㄖ谐杖幔瑢ο笫且环N概念、抽象或具有狀態(tài)疫向、行為和標(biāo)識的事物竞帽,對象通常可由對象名鸿捧、屬性和操作三部分組成。每個對象有唯一標(biāo)識疙渣。對象之間的關(guān)系表示對象之間的依賴匙奴、關(guān)聯(lián)等關(guān)系。對象之間進(jìn)行通信的一種構(gòu)造叫做消息妄荔。
在面向?qū)ο笙到y(tǒng)中泼菌,對象是基本的運(yùn)行時實(shí)體,它既包括數(shù)據(jù)(屬性)啦租,也包括作用于數(shù)據(jù)的操作(行為)哗伯,一個對象把屬性和行為封裝為一個整體。
對象通撑窠牵可由對象名焊刹、屬性和行為三部分組成,但并非必須顯式定義對象名恳蹲。
Peter Coad和Edward Yourdon提出用下面的等式識別面向?qū)ο蠓椒ǎ?
面向?qū)ο?對象(object) +分類(classification) +繼承(inheritance) +通過消息的通信(communication with messages)
可以說虐块,采用這4個概念開發(fā)的軟件系統(tǒng)是面向?qū)ο蟮摹?/p>
繼承,封裝嘉蕾,多態(tài)贺奠,覆蓋
繼承是父類和子類之間共享數(shù)據(jù)和方法的機(jī)制。這是類之間的一種關(guān)系错忱,在定義和實(shí)現(xiàn)一個類的時候儡率,可以在一個已經(jīng)存在的類的基礎(chǔ)上來進(jìn)行,把這個已經(jīng)存在的類所定義的內(nèi)容作為自己的內(nèi)容以清,并加入若干新的內(nèi)容儿普,即子類比父類更加具體化。
在進(jìn)行類設(shè)計時玖媚,有些類之間存在一般和特殊關(guān)系箕肃,即一些類是某個類的特殊情況,某個類是一些類的一般情況今魔,這就是繼承關(guān)系勺像。在定義和實(shí)現(xiàn)一個類的時候障贸,可以在一個已經(jīng)存在的類(一般情況)的基礎(chǔ)上來進(jìn)行,把這個已經(jīng)存在的類所定義的內(nèi)容作為自己的內(nèi)容吟宦,并加入若干新的內(nèi)容篮洁,即子類比父類更加具體化。一個父類可以有多個子類殃姓,這些子類都是父類的特例袁波。子類只能有一個父類,稱為單重繼承蜗侈;如果一個類可以有兩個或更多個父類篷牌,稱為多重繼承。多態(tài)(Polymorphism)是不同的對象收到同一消息可以產(chǎn)生完全不同的結(jié)果現(xiàn)象踏幻。
封裝是 一種信息隱蔽技術(shù)枷颊,其主要目的是對象的使用者和生產(chǎn)者分離,是對象的定義和實(shí)現(xiàn)分開该面。
面向?qū)ο笙到y(tǒng)中夭苗,在收到消息時,對象要予以相應(yīng)隔缀。多態(tài)(polymorphism)是不同的對象收到同一消息可以進(jìn)行不同的響應(yīng)题造,產(chǎn)生完全不同的結(jié)果,用戶可以發(fā)送一個通用的消息猾瘸,而實(shí)現(xiàn)細(xì)節(jié)則由接收對象自行決定界赔,使得對象對同一個消息可以調(diào)用不同的方法,即一個對象具有多種形態(tài)牵触。
多態(tài)的實(shí)現(xiàn)受到繼承的支持仔蝌,利用類的層次關(guān)系,把具有通用功能的消息存放在高層次荒吏,而不同的實(shí)現(xiàn)這一功能的行為放在較低層次敛惊,在這些低層次上的生成的對象能夠給通用消息以不同的響應(yīng)。
Cardelli和Wegner將多態(tài)分為4類:參數(shù)多態(tài)绰更、包含多態(tài)瞧挤、過載多態(tài)和強(qiáng)制多態(tài)。
其中參數(shù)多態(tài)的應(yīng)用比較廣儡湾,包含多態(tài)在許多語言中都存在特恬,最常見的例子就是子類型化。
過載多態(tài)是同一個名字在不同的上線文中所代表的含義徐钠。? ? ? ? ? ?
覆蓋是一個名稱多個含 義癌刽,即同一個方法名稱,帶有不同的參數(shù)個數(shù)或類型。交通工具是泛指各類交通工具显拜, 而汽車是一種交通工具衡奥,且具有自己的特性。因此远荠,繼承關(guān)系最適合表達(dá)這些類的設(shè)計矮固,在繼承交通工具的基礎(chǔ)上,設(shè)計汽車類譬淳,添加自己特有的行為档址,設(shè)計出子類。
面向?qū)ο蟮?個基本概念是對象邻梆、類守伸、繼承和消息傳遞。對象是面向?qū)ο蟮南到y(tǒng)中基本的運(yùn)行時實(shí)體浦妄,它既包括數(shù)據(jù)(屬性)含友,也包括作用域數(shù)據(jù)的操作(行為)。所以校辩,一個對象把數(shù)據(jù)和行為封裝為一個整體。一個類定義了大體上相似的對象辆童。繼承是父類和子類之間共享數(shù)據(jù)和方法的機(jī)制宜咒。消息是對象之間進(jìn)行通信的一種構(gòu)造,消息傳遞是對象之間的通信機(jī)制把鉴。
? ? 在同一類中是不能定義兩個名字相同故黑、參數(shù)個數(shù)和類型都相同的函數(shù)的,否則就是重復(fù)定義庭砍,但是在類的繼承層次結(jié)構(gòu)中场晶,在不同的層次中可以出現(xiàn)名字相同、參數(shù)個數(shù)和類型都相同而功能不同的函數(shù)怠缸。虛函數(shù)的作用是允許在派生類中重新定義與基類同名的函數(shù)诗轻,并且可以通過基類指針或引用來訪問基類和派生類中的同名函數(shù)。重載是在同一類中允許同時存在一個以上的同名方法揭北,只要這些方法的參數(shù)個數(shù)或類型不同即可扳炬,而重置(覆蓋)是子類重新定義父類中己經(jīng)定義的方法,即子類重寫父類方法搔体。? ? ? ? ? ?
多態(tài)指的是不同對象對同一消息的不同的響應(yīng)恨樟。主要分為: 參數(shù)多態(tài):應(yīng)用廣泛、最純的多態(tài)疚俱。 包含多態(tài):同樣的操作可用于一個類型及其子類型劝术。包含多態(tài)一般需要進(jìn)行運(yùn)行時的類型檢查。包含多態(tài)在許多語言中都存在,最常見的例子就是子類型化养晋,即一個類型是另外一個類型的子類型衬吆。 強(qiáng)制多態(tài):編譯程序通過語義操作,把操作對象的類型強(qiáng)行加以變換匙握,以符合函數(shù)或操作符的要求咆槽。 過載多態(tài):同一個名(操作符﹑函數(shù)名)在不同的上下文中有不同的類型。
在面向?qū)ο蟮南到y(tǒng)中圈纺,對象是基本的運(yùn)行時實(shí)體秦忿,它既包括數(shù)據(jù)(屬性),也包括作用于數(shù)據(jù)的操作(行為)蛾娶。所以灯谣,一個對象把屬性和行為封裝為一個整體。對象有三種成份:對象標(biāo)識蛔琅、屬性和方法(或操作)胎许。每個對象都有自己的屬性值,表示該對象的狀態(tài)罗售。對象中的屬性只能夠通過該對象所提供的操作來存取或修改辜窑。操作也稱為方法或服務(wù),它規(guī)定了對象的行為寨躁,表示對象所提供的服務(wù)穆碎。
在面向?qū)ο箝_發(fā)方法中,繼承是父類和子類之間共享數(shù)據(jù)和方法的機(jī)制职恳。在定義和實(shí)現(xiàn)一個類的時候所禀,可以在一個己經(jīng)存在的類的基礎(chǔ)上來進(jìn)行,即繼承己有類放钦,把已有類所定義的內(nèi)容作為自己的內(nèi)容色徘,并加入若干新的內(nèi)容。類Derived是類Base的一個子類操禀,則在Derived中除Base中的屬性和方法外褂策,還可以添加新屬性和新方法。
類是對象的模板颓屑,定義了對象共有的屬性和方法辙培。由一個類所生成的對象一定具有相同的屬性和操作,類生成對象的屬性所含有的數(shù)據(jù)可能相同也可能不同邢锯,但其操作一定是相同的扬蕊。生成的一組對象可通過類范圍的數(shù)據(jù)成員共享數(shù)據(jù),例如C++或java語言中的類靜態(tài)變量丹擎。
類是對象的模板尾抑,類可以看作是一組共有特性的對象集合歇父,即一個類中的對象擁有相同的屬性和方法。一般而言再愈,一個類可以產(chǎn)生多個對象榜苫。但是,在特殊情況下翎冲,一個類可以沒有對象垂睬,如靜態(tài)類的概念;一個類可以有且僅有一個對象抗悍,如單例模式下的類驹饺。
面向?qū)ο笙到y(tǒng)中,在收到消息時缴渊,對象要予以相應(yīng)赏壹。多態(tài)(polymorphism)是不同的對象收到同一消息可以進(jìn)行不同的響應(yīng),產(chǎn)生完全不同的結(jié)果衔沼,用戶可以發(fā)送一個通用的消息蝌借,而實(shí)現(xiàn)細(xì)節(jié)則由接收對象自行決定,使得對象對同一個消息可以調(diào)用不同的方法指蚁,即一個對象具有多種形態(tài)菩佑。多態(tài)的實(shí)現(xiàn)受到繼承的支持,利用類的層次關(guān)系凝化,把具有通用功能的消息存放在高層次稍坯,而不同的實(shí)現(xiàn)這一功能的行為放在較低層次,在這些低層次上的生成的對象能夠給通用消息以不同的響應(yīng)缘圈。 Cardelli和Wegner將多態(tài)分為4類:參數(shù)多態(tài)、包含多態(tài)袜蚕、過載多態(tài)和強(qiáng)制多態(tài)糟把。其中參數(shù)多態(tài)的應(yīng)用比較廣,包含多態(tài)在許多語言中都存在牲剃,最常見的例子就是子類型化遣疯。過載多態(tài)是同一個名字在不同的上線文中所代表的含義。
在同一類中是不能定義兩個名字相同凿傅、參數(shù)個數(shù)和類型都相同的函數(shù)的缠犀,否則就是重復(fù)定義,但是在類的繼承層次結(jié)構(gòu)中聪舒,在不同的層次中可以出現(xiàn)名字相同辨液、參數(shù)個數(shù)和類型都相同而功能不同的函數(shù)。虛函數(shù)的作用是允許在派生類中重新定義與基類同名的函數(shù)箱残,并且可以通過基類指針或引用來訪問基類和派生類中的同名函數(shù)滔迈。重載是在同一類中允許同時存在一個以上的同名方法止吁,只要這些方法的參數(shù)個數(shù)或類型不同即可,而重置(覆蓋)是子類重新定義父類中己經(jīng)定義的方法燎悍,即子類重寫父類方法敬惦。
多態(tài)指的是不同對象對同一消息的不同的響應(yīng)。主要分為: 參數(shù)多態(tài):應(yīng)用廣泛谈山、最純的多態(tài)俄删。 包含多態(tài):同樣的操作可用于一個類型及其子類型。包含多態(tài)一般需要進(jìn)行運(yùn)行時的類型檢查奏路。包含多態(tài)在許多語言中都存在畴椰,最常見的例子就是子類型化,即一個類型是另外一個類型的子類型思劳。 強(qiáng)制多態(tài):編譯程序通過語義操作迅矛,把操作對象的類型強(qiáng)行加以變換,以符合函數(shù)或操作符的要求潜叛。
過載多態(tài):同一個名(操作符﹑函數(shù)名)在不同的上下文中有不同的類型秽褒。在面向?qū)ο蟮南到y(tǒng)中,對象是基本的運(yùn)行時實(shí)體威兜,它既包括數(shù)據(jù)(屬性)销斟,也包括作用于數(shù)據(jù)的操作(行為)。所以椒舵,一個對象把屬性和行為封裝為一個整體蚂踊。
對象有三種成份:對象標(biāo)識、屬性和方法(或操作)笔宿。每個對象都有自己的屬性值犁钟,表示該對象的狀態(tài)。對象中的屬性只能夠通過該對象所提供的操作來存取或修改泼橘。操作也稱為方法或服務(wù)涝动,它規(guī)定了對象的行為,表示對象所提供的服務(wù)炬灭。
UML是一種能夠表達(dá)軟件設(shè)計中動態(tài)和靜態(tài)信息的可視化統(tǒng)一建模語言醋粟,
由三個要素構(gòu)成:UML的基本構(gòu)造塊、支配這些構(gòu)造塊如何放置在一起的規(guī)則以及用于整個語言的公共機(jī)制重归。
UML的詞匯表包含三種構(gòu)造塊:事物米愿、關(guān)系和圖。 事物是對模型中最具有代表性的成分的抽象鼻吮,分為結(jié)構(gòu)事物育苟、行為事物、分組事物和注釋事物椎木。
結(jié)構(gòu)事物通常是模型的靜態(tài)部分宙搬,是UML模型中的名詞笨腥,描述概念或物理元素,包括類勇垛、接口脖母、協(xié)作、用例闲孤、主動類谆级、構(gòu)件和節(jié)點(diǎn)。
行為事物是模型中的動態(tài)部分讼积,描述了跨越時間和空間的行為肥照,包括交互和狀態(tài)機(jī)。
分組事物是一些由模型分解成為組織部分勤众,最主要的是包舆绎。
注釋事物用來描述、說明和標(biāo)注模型的任何元素们颜,主要是注解吕朵。
UML2.0中提供了多種圖形。
對象圖展現(xiàn)了一組對象以及它們之間的關(guān)系窥突。對象圖描述了在類圖中所建立的事物的實(shí)例的靜態(tài)快照努溃。
類圖展現(xiàn)了一組對象、接口阻问、協(xié)作和它們之間的關(guān)系梧税。
用例圖展現(xiàn)了一組用例、參與者以及它們之間的關(guān)系称近,描述了誰將使 用系統(tǒng)以及用戶期望以什么方式與系統(tǒng)交互第队。
序列圖是場景的圖形化表示,描述了在一 個用例或操作的執(zhí)行過程中以時間順序組織的對象之間的交互活動刨秆。
將進(jìn)程或其他計算的結(jié)構(gòu)展示為計算內(nèi)部一步步的控制流和數(shù)據(jù)流凳谦,主要用來描述系統(tǒng)的動態(tài)視圖。
活動圖在本質(zhì)上是一種流程圖坛善×乐活動圖著重表現(xiàn)從一個活動到另一個活動的控制流邻眷,是內(nèi)部處理驅(qū)動的流程眠屎。? ? ? ? ? ?