設(shè)計(jì)文檔?

          做軟件以來(lái),這個(gè)話題一直是自己很郁悶的一個(gè)地方,我們來(lái)看看軟件開(kāi)發(fā)的過(guò)程,軟件開(kāi)發(fā)的過(guò)程無(wú)論是采用傳統(tǒng)的瀑布、如今的迭代等方式都是一個(gè)需求-->設(shè)計(jì)-->實(shí)現(xiàn)的過(guò)程,在這整個(gè)過(guò)程當(dāng)中,每個(gè)環(huán)節(jié)都要有個(gè)完成的標(biāo)識(shí),并且需要成為下一環(huán)節(jié)的前置條件、參考依據(jù),這個(gè)時(shí)候通常的做法都是通過(guò)提供文檔的方式,但是在我所經(jīng)歷的開(kāi)發(fā)當(dāng)中,我最郁悶的也是這點(diǎn),需求這部我沒(méi)什么疑問(wèn),我覺(jué)得產(chǎn)生需求文檔是必須的,但其實(shí)就我所經(jīng)歷的開(kāi)發(fā)來(lái)看,我認(rèn)為需求文檔對(duì)于用例最好不是僅僅依賴(lài)于描述,描述是沒(méi)人會(huì)仔細(xì)去看的,而最好是UI原型圖,這樣對(duì)于用例的表達(dá)會(huì)清晰些,當(dāng)然,有些復(fù)雜的部分仍然需要通過(guò)描述的方式。
          來(lái)看設(shè)計(jì)部分,在這個(gè)部分我一直就覺(jué)得有些疑問(wèn),一直以來(lái)都不是很認(rèn)同在設(shè)計(jì)的輸出就是要提供一份詳細(xì)、規(guī)范的設(shè)計(jì)文檔,在我看來(lái),設(shè)計(jì)確實(shí)是進(jìn)行實(shí)現(xiàn)的前提條件,這毫無(wú)疑問(wèn),但真的就一定要通過(guò)一份詳細(xì)的設(shè)計(jì)文檔來(lái)做到這點(diǎn)嗎?我覺(jué)得設(shè)計(jì)中最重要的設(shè)計(jì)理念的表達(dá),而對(duì)于設(shè)計(jì)理念我覺(jué)得最佳的表達(dá)方式仍然是圖形,而這個(gè)圖形一定要采用規(guī)范的象UML這些來(lái)表示嗎?我并不是那么的認(rèn)同,我覺(jué)得設(shè)計(jì)圖最重要的就是要表現(xiàn)出自己的意思,至于你用什么圖形來(lái)表示我不覺(jué)得有什么重要,只要設(shè)計(jì)人員認(rèn)為那是他最擅長(zhǎng)表達(dá)自己設(shè)計(jì)意圖的工具就行,沒(méi)必要在工具這件事上浪費(fèi)設(shè)計(jì)人員太多的時(shí)間,并且造成了限制,設(shè)計(jì)的評(píng)審我覺(jué)得是有必要做的,這時(shí)我覺(jué)得大家可能會(huì)問(wèn),沒(méi)有文檔怎么辦,怎么評(píng)審?我覺(jué)得評(píng)審的人是為了讓同行的設(shè)計(jì)人員能夠根據(jù)目前設(shè)計(jì)人員對(duì)圖形的一個(gè)解釋來(lái)準(zhǔn)備的了解設(shè)計(jì)人員的設(shè)計(jì)意圖,并且根據(jù)自己的經(jīng)驗(yàn)相應(yīng)的給設(shè)計(jì)人員一些建議;其次,從簡(jiǎn)單設(shè)計(jì)角度上來(lái)講,我覺(jué)得設(shè)計(jì)是一個(gè)不斷充實(shí)和完善的過(guò)程,設(shè)計(jì)是一個(gè)典型的求解過(guò)程,就象一道數(shù)學(xué)題,通常來(lái)說(shuō),也許會(huì)有N中解法,每個(gè)不同程度的人看到的解法也許是不一樣的,但首先能解出來(lái)這就是一個(gè)成功,其次才是看這個(gè)解法有什么可以改進(jìn)的地方,我現(xiàn)在做設(shè)計(jì)的時(shí)候就是首先采用自己目前能想到的最簡(jiǎn)單的解決方案,在做同行評(píng)審的時(shí)候也許有些同行能給出些建議,如果沒(méi)有的話,通常來(lái)說(shuō)我會(huì)先按照這個(gè)簡(jiǎn)單的解決方案先做,在實(shí)現(xiàn)后其實(shí)就會(huì)發(fā)現(xiàn)目前這個(gè)實(shí)現(xiàn)方案的一些問(wèn)題,即使當(dāng)時(shí)沒(méi)發(fā)現(xiàn),在添加新功能的時(shí)候也會(huì)發(fā)現(xiàn),這個(gè)時(shí)候依賴(lài)重構(gòu)開(kāi)始進(jìn)行調(diào)整,其實(shí)我覺(jué)得只有這樣一個(gè)設(shè)計(jì)才能慢慢的被完善、被誕生,應(yīng)該說(shuō),不同程度的設(shè)計(jì)師的區(qū)別就在于設(shè)計(jì)出來(lái)的東西所被完善時(shí)投入的精力和造成的影響,我相信沒(méi)有哪個(gè)設(shè)計(jì)出來(lái)就是那么好的,在這種情況下,通常就會(huì)出現(xiàn)一個(gè)問(wèn)題,就是最后實(shí)現(xiàn)形成的設(shè)計(jì)和最初的設(shè)計(jì)有很多的不同,這個(gè)時(shí)候是不是意味著在開(kāi)發(fā)的過(guò)程中應(yīng)該一直去更新、維護(hù)設(shè)計(jì)文檔呢?所以我覺(jué)得最初的設(shè)計(jì)文檔不需要為了規(guī)范投入那么大的精力, 但不意味著不要,需要的是一份能夠表達(dá)設(shè)計(jì)意圖的文檔,最重要的是圖形化的表達(dá),大家認(rèn)為呢?或者說(shuō)大家都是怎么做的呢?還有就是這種時(shí)候正規(guī)的設(shè)計(jì)文檔什么時(shí)候出呢?^_^,缺少文檔時(shí)有的一個(gè)問(wèn)題是怎么樣將設(shè)計(jì)意圖準(zhǔn)確的表達(dá)給開(kāi)發(fā)人員,這部的做法在XP中通常不存在,因?yàn)閄P中設(shè)計(jì)是大家一起做的,在傳統(tǒng)的情況下我覺(jué)得更多的是依賴(lài)設(shè)計(jì)人員和開(kāi)發(fā)人員的頻繁交流以及對(duì)于代碼的code review。
          但缺少設(shè)計(jì)文檔在公司的運(yùn)作中通常會(huì)出現(xiàn)一個(gè)問(wèn)題,就是領(lǐng)導(dǎo)們的不放心,領(lǐng)導(dǎo)們會(huì)覺(jué)得怎么經(jīng)過(guò)了這個(gè)階段沒(méi)啥正式的產(chǎn)物,領(lǐng)導(dǎo)們會(huì)認(rèn)為設(shè)計(jì)圖這些是不足以證明這個(gè)階段的完善的,郁悶,造成總是和領(lǐng)導(dǎo)形成矛盾,這也怪自己在安排任務(wù)時(shí)通常缺少這個(gè)正規(guī)的設(shè)計(jì)文檔的編寫(xiě)過(guò)程,這個(gè)過(guò)程真的有這么必要嗎?疑問(wèn)中......

          ps:順便說(shuō)下現(xiàn)在自己從設(shè)計(jì)到實(shí)現(xiàn)的一個(gè)步驟,在設(shè)計(jì)時(shí)首先我會(huì)根據(jù)目前的需求得出問(wèn)題域,這個(gè)時(shí)候開(kāi)始進(jìn)行設(shè)計(jì),對(duì)問(wèn)題域進(jìn)行求解,這個(gè)時(shí)候會(huì)給一個(gè)自己能想到的最簡(jiǎn)單的解決方案,注意,既然是解決方案就以為著首先要能解決問(wèn)題,簡(jiǎn)單的解決方案不等于簡(jiǎn)陋的解決方案,在提供這個(gè)解決方案后開(kāi)發(fā)人員實(shí)現(xiàn)后我會(huì)對(duì)code進(jìn)行review,而這個(gè)時(shí)候review經(jīng)常會(huì)發(fā)現(xiàn)設(shè)計(jì)中值得改善的地方,這個(gè)時(shí)候開(kāi)始對(duì)設(shè)計(jì)進(jìn)行重構(gòu),詳細(xì)設(shè)計(jì)一般要在迭代完成時(shí)才能最終形成.....覺(jué)得這樣的方法挺好的,^_^,自己在做實(shí)現(xiàn)的時(shí)候現(xiàn)在的做法都是先把測(cè)試代碼寫(xiě)完后,寫(xiě)設(shè)計(jì)的時(shí)候會(huì)先隨意的寫(xiě),寫(xiě)完在通過(guò)測(cè)試后開(kāi)始對(duì)代碼進(jìn)行重構(gòu),這個(gè)時(shí)候開(kāi)始把之初的長(zhǎng)方法首先進(jìn)行重構(gòu)為小方法,重構(gòu)完后開(kāi)始做封裝的考慮,形成對(duì)象模型,在對(duì)象模型形成后開(kāi)始考慮繼承、多態(tài)的引入,最后開(kāi)始考慮設(shè)計(jì)模式的引入,一般這個(gè)時(shí)候最終的詳細(xì)設(shè)計(jì)才得以形成,我覺(jué)得這個(gè)時(shí)候是體現(xiàn)一個(gè)設(shè)計(jì)師水平的時(shí)候,一個(gè)優(yōu)秀的設(shè)計(jì)師在設(shè)計(jì)之初就能想到很多,預(yù)見(jiàn)的很遠(yuǎn),使得設(shè)計(jì)在設(shè)計(jì)之初就能足夠的完善,而不需要通過(guò)太多的重構(gòu)形成最終的設(shè)計(jì),而一個(gè)普通的設(shè)計(jì)師也許最初只是能給出一個(gè)解決方案,但畢竟是可行的解決方案,在設(shè)計(jì)實(shí)現(xiàn)的過(guò)程時(shí)才逐漸的發(fā)現(xiàn)設(shè)計(jì)的不足,這個(gè)時(shí)候通過(guò)重構(gòu)進(jìn)行的完善,對(duì)設(shè)計(jì)師來(lái)講也是一種很好的積累,所以來(lái)說(shuō),在完成設(shè)計(jì)后最好是能多找人交流交流,^_^,喜歡這個(gè)方法.......

          posted on 2006-01-06 21:19 BlueDavy 閱讀(3143) 評(píng)論(4)  編輯  收藏 所屬分類(lèi): 系統(tǒng)設(shè)計(jì)

          評(píng)論

          # re: 設(shè)計(jì)文檔? 2006-01-07 12:26 wzr

          何時(shí)創(chuàng)建設(shè)計(jì)文檔最好?是在整個(gè)團(tuán)隊(duì)結(jié)束項(xiàng)目時(shí),這是最后一項(xiàng)工作。這樣的文檔能夠精確地反映出團(tuán)隊(duì)離開(kāi)時(shí)的實(shí)際設(shè)計(jì)情況,而且這樣的文檔對(duì)新來(lái)的團(tuán)隊(duì)大有幫助。

          ——這是Robert C. Martin(即Bob大叔)在UML For Java Programmers書(shū)中所寫(xiě)的。

          向領(lǐng)導(dǎo)們宣傳XP思想,也是設(shè)計(jì)人員的一項(xiàng)重要工作。XP最講究溝通,領(lǐng)導(dǎo)們也是溝通的對(duì)象。
          第一步:有事沒(méi)事,向領(lǐng)導(dǎo)們介紹一些軟件工程方面的專(zhuān)家,當(dāng)然要挑選支持XP方法的“大佬們”。
          第二步:等領(lǐng)導(dǎo)們熟知這些專(zhuān)家的大名,就可以用他們的“語(yǔ)錄”幫教領(lǐng)導(dǎo)了。比如,上面的那一句。  回復(fù)  更多評(píng)論   

          # re: 設(shè)計(jì)文檔? 2006-01-07 20:04 brokendoor

          奇跡不是一夜之間就憑空而來(lái)的,外星人也不行。
          對(duì)于設(shè)計(jì)文檔,不可不寫(xiě),因?yàn)椤扒Ю镏校加谧阆隆薄?
          更不可寫(xiě)完就完了,因?yàn)檫@可是“千里之行”啊!
          即使是開(kāi)寶馬,也不是一下就到的了的,中途總要加點(diǎn)油什么的.......:)  回復(fù)  更多評(píng)論   

          # re: 設(shè)計(jì)文檔? 2006-01-08 01:16 nake

          寫(xiě)的不錯(cuò),“而這個(gè)圖形一定要采用規(guī)范的象UML這些來(lái)表示嗎?”
          如果你的團(tuán)隊(duì)沒(méi)人會(huì)uml你就不用uml,一支筆一張紙就可以了。大的軟件我覺(jué)得還是要把許多過(guò)程規(guī)范起來(lái)。簡(jiǎn)單的就沒(méi)必要了,比較規(guī)范是要成本的。  回復(fù)  更多評(píng)論   

          # re: 設(shè)計(jì)文檔? 2006-01-09 09:23 走過(guò)看看

          Bob大叔的實(shí)戰(zhàn)水平太差,基本上寫(xiě)些demo程序都會(huì)出問(wèn)題。他的那本“敏捷軟件開(kāi)發(fā)”是這類(lèi)書(shū)里面代碼邏輯錯(cuò)誤最多的,真不知道是怎么混出道的。可能比較善于動(dòng)嘴皮子或?qū)憰?shū)?
          他說(shuō)的話聽(tīng)聽(tīng)就行,不必當(dāng)真。  回復(fù)  更多評(píng)論   

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導(dǎo)航

          <2006年1月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          統(tǒng)計(jì)

          隨筆分類(lèi)

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 永春县| 水富县| 山西省| 应城市| 邹城市| 沂南县| 尚义县| 开阳县| 牡丹江市| 海南省| 桐城市| 郸城县| 富顺县| 通江县| 蒲城县| 和顺县| 磴口县| 通化县| 黄山市| 温州市| 永定县| 徐汇区| 北票市| 西盟| 九寨沟县| 清新县| 龙海市| 南和县| 防城港市| 田阳县| 丰县| 西乡县| 阳新县| 精河县| 贡觉县| 丹东市| 进贤县| 赤壁市| 皮山县| 安丘市| 武隆县|