色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

拒絕形式化的軟件工程文檔

  最近在一個軟件公司實習,這是一個小型的公司,承接政府和事業(yè)單位的一些工程項目。 我在這個企業(yè)所遇到的所有事情相信在中國絕大多數(shù)地方和絕大多數(shù)軟件企業(yè)中尤為重要。

  我已經(jīng)在很多次的公開場合批評過形式化的軟件工程,就是將書本上所要求的軟件工程實踐內容不經(jīng)過任何具體化的措施和方法直接形式化套用。 這個做法的后果是極大的浪費了時間和資源,打擊了開發(fā)者的積極性。

  文檔的本質是什么?為什么要寫文檔?什么樣的文檔才是有用的文檔。

  大多數(shù)的程序員沒有主動寫文檔的習慣,這個可以接受,因為并不是所有的文檔都有用,大概九成以上的文檔是實際上的多余。

  大家應該仔細考慮文檔所處的位置和作用。 ——為什么不剪裁? ——因為我們不知道哪些信息是有用的信息,所以沒有辦法建立“有用”的文檔。 在開發(fā)工具和開發(fā)模式高度發(fā)達的今天,我們還在用“手工作坊”的方式寫著文檔。

  我們的開發(fā)是進步了,可是我們的文檔化卻沒有進步。 我對軟件工程一直秉持著實用化的態(tài)度。這個和RUP的原則也頗為類似。

  作為一種可以剪裁的軟件過程方案,RUP在實際的應用上已經(jīng)遠遠做到了我們現(xiàn)在還沒有做到的境界。

  從需求、設計、實現(xiàn)、編碼、測試的一系列過程。我們需要的是“準確記錄”,而不是文字堆砌的卷宗。

  文檔的本質就是“記錄”,而記錄的方法卻有多種多樣,“我們沒必要用文字成篇的去描述,而一兩個圖形或者圖像更有表現(xiàn)力”,UML如是說。 而我在前篇文章所說的帶著一部DV去做需求,還是因為在需求的過程中需要采集需求,進而就需要記錄。

  而文字的表達能力是有限的,你不可能把一部人性化的軟件交給一疊冷冰冰的紙張。因此,我們需要廣泛的采集需求的信息。這時我們是在同客戶分享一種感覺,一種用軟件的感覺。 說到需求的分析,用例圖給了一種改進,但不是里程碑式的改進。微軟的開發(fā)過程就充分的體會到這樣的問題,所以提出了一些改進的措施,可能是因為微軟所做的軟件并不是管理系統(tǒng)的原因吧。 到了設計和開發(fā),作為結構最主要的表達——圖形發(fā)揮了很大的作用,目前為止應該是最豐富的表達方法。

   然而我們卻亂畫一氣……不根據(jù)變更的需求去變更設計……設計文檔又成了一種形式。我在很多地方都看不到設計文檔,因為這個依靠想象力和創(chuàng)造力的領域變化的太快,文檔跟不上思維。而我們需要的是一種可以經(jīng)過反復討論的設計思路,我們需要統(tǒng)一的設計規(guī)范——設計模式。它告訴我們在什么樣的情況下需要什么樣的設計。而Gof-23模式甚至不夠用,他們只是遵循了某種面向對象的原則。

  但是AOP是否有這樣的模式呢,據(jù)我了解,是有的,只是很少有人總結。我希望很多專心于AOP的人可以像專心于OOP的那樣總結出一些設計模式。 編碼階段的文檔——這可能是大多數(shù)軟件工程實踐中最成篇累牘但是最沒有用的文檔了。 我所提倡的是良好的設計,良好的設計可以讓編程人員(無論是專業(yè)還是非專業(yè))對于實現(xiàn)可以做到一目了然。類似于一種模式,例如某個地方需要冒泡排序,我們就知道代碼如何實現(xiàn)的。而不用考慮它是怎么實現(xiàn)的。

  設計文檔就要做到這一步,能夠很輕松的告訴編碼者整個框架是什么,整個結構是什么,而到了具體實現(xiàn)需要怎么做。而到了這一步,我們所需要的文檔可能很少,甚至——沒有。 編碼階段一直提倡的是自文檔化的代碼。這樣的代碼不光極具可讀性,而且極具格式和規(guī)范性。我們所需要的可能僅僅是一份編碼規(guī)范。剩下的,交給注釋吧。

   或者可以說:文檔即是代碼,代碼即是文檔。 這是編碼文檔的理想境界。但是這是需要很好設計才能做到的。而這樣的設計是需要長期編碼-設計,設計-編碼訓練才可以達到的境界。

   而代碼規(guī)范,便是這個階段最重要的因素了。好的代碼規(guī)范會早就高可讀性的代碼——這是我們不需要在編碼階段另寫文檔的重要原因。因為這樣不光可以節(jié)省了時間和資源,還提高了代碼的質量。

  關于測試階段的文檔,這應該是及其重要的一環(huán)。如果是使用的RUP的軟件過程,和現(xiàn)在通常使用的螺旋模型的話,當然類似的模型可以。這類軟件要求測試對需求能夠有一個反饋,這是大家常用的模型的特點。

   而測試文檔在這里所扮演的角色不光是記錄,更多的是一種報告。包括從各種測試得出的分析及分析的對策。就像資深會計師對公司的運作情況和未來發(fā)展給出的分析一樣。

  資深的測試人員一定會對整個軟件從需求、設計、到編碼有最全面的把握。 所以,測試在軟件工程中有很重要的位置。而不是所謂的簡簡單單“質量保證”或者“驗證”,因為,質量是沒辦法保證的。測試不可能也沒有必要窮舉。因此測試文檔不光要找出問題,更要有清晰的思路,因為新的需求會從這份分析報告(文檔)中給出。這往往是大多數(shù)測試人員忽略的一環(huán)。

  這些僅是我的所思所感,歡迎與我討論。

  我的原則是,軟件工程一定要實用,要切實的有用而不是為了點綴而做的形式上的工作。 拒絕形式化的軟件工程,拒絕形式化的文檔。

it知識庫拒絕形式化的軟件工程文檔,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 黄浦区| 东台市| 岳阳县| 疏勒县| 若尔盖县| 峨眉山市| 正安县| 安泽县| 慈利县| 偃师市| 西和县| 咸阳市| 定兴县| 连州市| 慈利县| 天津市| 南平市| 江西省| 青海省| 治多县| 区。| 琼结县| 青冈县| 观塘区| 九寨沟县| 大姚县| 古蔺县| 北票市| 枝江市| 依安县| 濉溪县| 和政县| 拜泉县| 自贡市| 体育| 锡林浩特市| 图们市| 台东县| 庆城县| 元朗区| 思茅市|