【文章內(nèi)容簡(jiǎn)介】
計(jì)算機(jī)學(xué)院 /軟件學(xué)院 設(shè)計(jì)方法的發(fā)展 ? 復(fù)雜性 單機(jī) —— 〉 網(wǎng)絡(luò) ? 應(yīng)用領(lǐng)域 廣泛;差異大 ? 集成度 軟硬件協(xié)同 ? 更新速度 重用 ? 通用方法 多種起因: 60 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 1. 軟硬件協(xié)同設(shè)計(jì) 系 統(tǒng) 需 求 規(guī) 格 說(shuō) 明系 統(tǒng) 軟 硬 件 劃 分性 能 評(píng) 估硬 件 綜 合 、 軟 件 編 譯 、 接 口 設(shè) 計(jì)軟 硬 件 集 成軟 硬 件 協(xié) 同 仿 真系 統(tǒng) 評(píng) 估 、 設(shè) 計(jì) 驗(yàn) 證設(shè) 計(jì) 完 成NY61 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 2. 構(gòu)件化設(shè)計(jì) 系 統(tǒng) 需 求 規(guī) 格 說(shuō) 明基 于 構(gòu) 件 庫(kù) 選 擇 構(gòu) 件N存 在生 成 系 統(tǒng)構(gòu) 件 設(shè) 計(jì)加 入 構(gòu) 件 庫(kù)Y標(biāo) 識(shí) 所 需 要 的 構(gòu) 件62 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 3. 基于中間件的設(shè)計(jì) O R B C o r e G I O P / I I O PI D L S t u bO R B 接 口P O AI D L S k e l e t o n服 務(wù)I D L 編 譯 器客 戶O R B : 對(duì) 象 請(qǐng) 求 代 理P O A : 可 移 植 對(duì) 象 適 配 器I D L : 接 口 定 義 語(yǔ) 言G I O P : 通 用 O R B 間 協(xié) 議I I O P : 互 聯(lián) 網(wǎng) O R B 間 協(xié) 議63 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 基本設(shè)計(jì)原則 ? 盡量簡(jiǎn)單 ? 使用靜態(tài)表 ? 盡量減少動(dòng)態(tài)性 ? 恰當(dāng)?shù)娜蝿?wù)數(shù)目 ? 使用有限狀態(tài)自動(dòng)機(jī)輔助設(shè)計(jì) ? 面向?qū)ο笤O(shè)計(jì) ? 減少預(yù)留接口 64 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 盡量簡(jiǎn)單 ? 不存在完善方法 任何的設(shè)計(jì)都只能盡量好,不可能最優(yōu)。 ? 以成本為基準(zhǔn) 開(kāi)發(fā)計(jì)劃易實(shí)現(xiàn),成本費(fèi)用可控制,軟件質(zhì)量有保障 ? 不能過(guò)于強(qiáng)調(diào)精簡(jiǎn) 軟件具有可讀性、可移植性、易維護(hù) ? 常用模型和方法 原型模型、增量模型、組件/構(gòu)件方法 65 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 使用靜態(tài)表 ? 系統(tǒng)運(yùn)行前,根據(jù)各任務(wù)的實(shí)時(shí)要求生成一張任務(wù)的運(yùn)行時(shí)間表,指明各任務(wù)的起始運(yùn)行時(shí)間以及運(yùn)行長(zhǎng)度 ? 運(yùn)行時(shí)間表生成后,在系統(tǒng)運(yùn)行過(guò)程中不再變化 ? 系統(tǒng)運(yùn)行時(shí),調(diào)度器只需根據(jù)這張表在指定的時(shí)刻啟動(dòng)相應(yīng)的實(shí)時(shí)任務(wù) 66 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 減少動(dòng)態(tài)性 ? 特點(diǎn)決定 嵌入式系統(tǒng)中,時(shí)間資源非常寶貴,往往需要以空間換時(shí)間 ? 采用靜態(tài)數(shù)據(jù)結(jié)構(gòu) 如 靜態(tài)數(shù)組 ? 不能絕對(duì)禁止動(dòng)態(tài) 消息隊(duì)列、資源豐富系統(tǒng)、動(dòng)態(tài)更新 67 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 減少任務(wù)數(shù) ? 任務(wù)隊(duì)列變長(zhǎng),任務(wù)調(diào)度管理復(fù)雜化,調(diào)度延遲增加,從而降低整個(gè)系統(tǒng)的實(shí)時(shí)性能 ? 任務(wù)數(shù)目的增多,任務(wù)間通信幾何級(jí)數(shù)增長(zhǎng),影響系統(tǒng)的實(shí)時(shí)性能 ? 原則 在實(shí)時(shí)性允許的范圍內(nèi)定義適當(dāng)?shù)娜蝿?wù)數(shù)目 68 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 軟件開(kāi)發(fā)的 相關(guān)考慮 69 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 一、 程序的風(fēng)格 70 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 1. 注釋 ? 寫(xiě)程序必須有注釋??! ? 問(wèn)題 I n t m a i n ( i n t a r g c , c h a r * a r g v [ ] ) { F i l e * f i n , * f o u t 。 / * 分 別 為 輸 入 輸 出 文 件 * / i n t i , j , b , g , r , y 。 / * 計(jì) 數(shù) 器 和 轉(zhuǎn) 換 用 臨 時(shí) 變 量 * / / * 以 二 進(jìn) 制 只 讀 方 式 打 開(kāi) 文 件 并 判 斷 是 否 成 功 * / i f ( ( f i n = f o p e n ( “ c a t . p i c ” , “ r b ” ) ) = = N U L L ) { / * 如 果 打 開(kāi) 失 敗 則 顯 示 出 錯(cuò) 信 息 * / p u t s ( “ 打 開(kāi) 文 件 出 錯(cuò) ” ) 。 r e t u r n 1 。 } / * 將 文 件 指 針 移 向 文 件 尾 * / f s e e k ( f i n , 0 , S E E K _ E N D ) 。 / * 獲 得 文 件 指 針 位 置 并 判 斷 * / i f ( f t e l l ( f i n ) ! = 4 0 0 * 4 0 0 * 3 ) { ? ? } ? ?}71 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 注釋的功效 注釋的最重要功效在于傳承: ? 便于以后再次查看代碼時(shí)理清思路 ? 前人栽樹(shù),后人乘涼 方便后繼程序員對(duì)程序進(jìn)行維護(hù) 72 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 注釋的原則 ① 應(yīng)當(dāng)淺顯、明白 不需要臨時(shí)信息 ② 不是編程指南 不需要說(shuō)明之后程序如何實(shí)現(xiàn) ③ 不是 標(biāo)準(zhǔn) 庫(kù)函數(shù)參考手冊(cè) 不需要說(shuō)明函數(shù)的意義及使用 ④ 是答疑 邏輯復(fù)雜、流程冗長(zhǎng)處需要注釋 ⑤ 對(duì)設(shè)計(jì)思想的精確描述 代表之后程序段的原理 73 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 I n t m a i n ( i n t a r g c , c h a r * a r g v [ ] ) { F i l e * f i n , * f o u t 。 / * 分 別 為 輸 入 輸 出 文 件 * / i n t i , j , b , g , r , y 。 / * 計(jì) 數(shù) 器 和 轉(zhuǎn) 換 用 臨 時(shí) 變 量 * / / * 以 二 進(jìn) 制 只 讀 方 式 打 開(kāi) 文 件 并 判 斷 是 否 成 功 * / i f ( ( f i n = f o p e n ( “ c a t . p i c ” , “ r b ” ) ) = = N U L L ) { / * 如 果 打 開(kāi) 失 敗 則 顯 示 出 錯(cuò) 信 息 * / p u t s ( “ 打 開(kāi) 文 件 出 錯(cuò) ” ) 。 r e t u r n 1 。 } / * 將 文 件 指 針 移 向 文 件 尾 * / f s e e k ( f i n , 0 , S E E K _ E N D ) 。 / * 獲 得 文 件 指 針 位 置 并 判 斷 * / i f ( f t e l l ( f i n ) ! = 4 0 0 * 4 0 0 * 3 ) { ? ? } ? ?}74 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 2. 標(biāo)識(shí)符 ? 最能體現(xiàn)程序員風(fēng)格的是標(biāo)識(shí)符命名規(guī)則 ? 問(wèn)題 ‘ 帳 戶 信 息 數(shù) 據(jù) 結(jié) 構(gòu)P u b l i c T y p e Z H Z H a s S t r i n g ‘ 帳 號(hào) D Q H a s S t r i n g ‘ 地 區(qū) 號(hào) W D H a s S t r i n g ‘ 網(wǎng) 點(diǎn) 號(hào) B Z a s L o n g ‘ 幣 種 K H R Q a s D a t e ‘ 開(kāi) 戶 日 期 Z H D Z a s S t r i n g ‘ 帳 戶 地 址 Z H D H a s S t r i n g ‘ 帳 戶 電 話 Y J D M a s L o n g ‘ 印 簽 代 碼 B Z H a s S t r i n g ‘ 備 注 E n d T y p e75 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 標(biāo)識(shí)符的定義 ① 個(gè)人風(fēng)格不等于規(guī)范 如兩個(gè)程序員Wang和 Zhang,變量名為 wNum和 zNum ② 標(biāo)準(zhǔn)標(biāo)識(shí)符的封裝都必須易理解 如Integer: wI或 LongInteger ③ 宏定義名易讀和理解 如 TaskQueue 和 BufferCount ④ 不能因?yàn)楸C芏タ勺x性 76 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 優(yōu)秀程序員的要求 ① 后繼者可以輕松閱讀自己的代碼 ② 后繼者可以輕松復(fù)用自己的代碼 ③ 后繼者可以輕松修改自己的代碼 ④ 后繼者可以輕松區(qū)分代碼的作者 77 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 問(wèn)題示例 L R e s u l t C a l l B a c k W i n d o w P r o c { H W N D h w n d , / / h a n d l e t o w i n d o w U I N T u M s g , / / m e s s a g e i d e n t i f i e r W P A R A M w P a r a m , / / f i r s t m e s s a g e p a r a m e t e r L P A R A M l P a r a m / / s e c o n d m e s s a g e p a r a m e t e r}16位平臺(tái)上的 Word類型,對(duì) 32位平臺(tái),意義不明 78 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 小結(jié) ① 風(fēng)格不能妨礙溝通 ② 混合風(fēng)格等于沒(méi)有風(fēng)格 ③ 沒(méi)有個(gè)性特色的代碼未必就是好代碼 79 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 3. 非正常語(yǔ)句 有些程序段可能是用非常規(guī)語(yǔ)句編寫(xiě)的 / * J a v a 程 序 段 * /p u b l i c s t a t i c v o i d m a i n ( s t r i n g _ $ _ [ ] ) { s y s t e m . o u t . p r i n t l n ( _ . _ _ . _ _ _ . _ ( 1 , 2 ) ) 。}s t a t i c i n t _ ( i n t _ 1 , i n t _ 2 ) { r e t u r n _ 1 = = _ 2 ? _ 1 + + + _ 2 : _ 1 _ 2 。}80 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 / * V B 5 . 0 程 序 段 * /v o i d m a i n ( ) { ? ? 。 / / 讀 鍵 盤(pán) 輸 入 r e a d ( c h ) 。 r e a d ( c h ) 。 / / 真 正 讀 入 ? ?}81 計(jì)算機(jī)學(xué)院 /軟件學(xué)院 小結(jié) ① 任何語(yǔ)法規(guī)則都可能被濫用 ② 風(fēng)格的優(yōu)劣取決于是否是正確的選擇 ③ 選擇的前提:代碼是否更為簡(jiǎn)潔、高效、易維護(hù) 82 計(jì)算機(jī)學(xué)院 /軟件學(xué)院