從程式設計師到系統分析員 4

2021-04-23 09:22:08 字數 2073 閱讀 8865

這個詞便是「校訂」。換言之,「你第一次做的東西並不完善,所以需為自己留下乙個深入學習、認知的空間,再回過頭去作一些改變」。對於要解決的問題,隨著對它的學習和了解愈加深入,可能需要作出大量改動。進行這些工作的乙個動力是隨著不斷的改革優化,終於能夠從自己的努力中得到回報,無論這需要經歷乙個較短還是較長的時期。

什麼時候才叫「達到理想的狀態」呢?這並不僅僅意味著程式必須按要求的那樣工作,並能適應各種指定的「使用條件」,它也意味著**的內部結構應當盡善盡美。至少,我們應能感覺出整個結構都能良好地協調運作。沒有笨拙的語法,沒有臃腫的物件,也沒有一些華而不實的東西。除此以外,必須保證程式結構有很強的生命力。由於多方面的原因,以後對程式的改動是必不可少。但必須確定改動能夠方便和清楚地進行。這裡沒有花巧可言。不僅需要理解自己構建的是什麼,也要理解程式如何不斷地進化。幸運的是,物件導向的程式語言特別適合進行這類連續作出的修改——由物件建立起來的邊界可有效保證結構的整體性,並能防範對無關物件進行的無謂干擾、破壞。也可以對自己的程式作一些看似激烈的大變動,同時不會破壞程式的整體性,不會波及到其他**。事實上,對「校訂」的支援是oop非常重要的乙個特點。

通過校訂,可建立出至少接近自己設想的東西。然後從整體上觀察自己的作品,把它與自己的要求比較,看看還短缺什麼。然後就可以從容地回過頭去,對程式中不恰當的部分進行重新設計和重新實現(注釋⑩)。在最終得到一套恰當的方案之前,可能需要解決一些不能迴避的問題,或者至少解決問題的乙個方面。而且一般要多「校訂」幾次才行。

構建一套系統時,「校訂」幾乎是不可避免的。我們需要不斷地對比自己的需求,了解系統是否自己實際所需要的。有時只有實際看到系統,才能意識到自己需要解決乙個不同的問題。若認為這種形式的校訂必然會發生,那麼最好盡快拿出自己的第乙個版本,檢查它是否自己希望的,使自己的思想不斷趨向成熟。

反覆的「校訂」同「遞增開發」有關密不可分的關係。遞增開發意味著先從系統的核心入手,將其作為乙個框架實現,以後要在這個框架的基礎上逐漸建立起系統剩餘的部分。隨後,將準備提供的各種功能(特性)乙個接乙個地加入其中。這裡最考驗技巧的是架設起乙個能方便擴充所有目標特性的乙個框架(對這個問題,大家可參考第16章的論述)。這樣做的好處在於一旦令核心框架運作起來,要加入的每一項特性就象它自身內的乙個小專案,而非大專案的一部分。此外,開發或維護階段合成的新特性可以更方便地加入。oop之所以提供了對遞增開發的支援,是由於假如程式設計得好,每一次遞增都可以成為完善的物件或者物件組。

⑩:這有點類似「快速造型」。此時應著眼於建立乙個簡單、明了的版本,使自己能對系統有個清楚的把握。再把這個原型扔掉,並正式地構建乙個。快速造型最麻煩的一種情況就是人們不將原型扔掉,而是直接在它的基礎上建造。如果再加上程式化設計中「結構」的缺乏,就會導致乙個混亂的系統,致使維護成本增加。

計畫的回報

如果沒有仔細擬定的設計圖,當然不可能建起一所房子。如建立的是一所狗舍,儘管設計圖可以不必那麼詳盡,但仍然需要一些草圖,以做到心中有數。軟體開發則完全不同,它的「設計圖」(計畫)必須詳盡而完備。在很長的一段時間裡,人們在他們的開發過程中並沒有太多的結構,但那些大型專案很容易就會遭致失敗。通過不斷的摸索,人們掌握了數量眾多的結構和詳細資料。但它們的使用卻使人提心吊膽在意——似乎需要把自己的大多數時間花在編寫文件上,而沒有多少時間來程式設計(經常如此)。我希望這裡為大家講述的一切能提供一條折衷的道路。需要採取一種最適合自己需要(以及習慣)的方法。不管制訂出的計畫有多麼小,但與完全沒有計畫相比,一些形式的計畫會極大改善你的專案。請記住:根據估計,沒有計畫的50%以上的專案都會失敗!

非常佩服作者對軟體構建過程的精闢見解,軟體工程是一門內容非常繁雜的學科,但是作者能夠用淺顯易懂的句子把它描述出來,真的是非常不簡單。軟體工程最早的提出者並不是計算機的專業人士,而是一位建築設計師,所以軟體工程的很多思想來自於建築學。經過了幾十年的發展,軟體工程經歷了很多次的蛻變。形成了今天的世界上以一些大公司提出的架構為主的形式:比如微軟提出的com及com+以及基於其上的dna體系,sun提出的ejb,corba,還有bea、weblogic、ibm等公司的架構。雖然架構有不同,但是他們的思想都是相通的,架構的作用都是起到輔助開發者實現規範的、科學的軟體開發過程。至於談軟體專案的管理和開發,那麼rational公司就是這方面的鼻祖。綜合來說,目前世界範圍內的軟體工程提倡的就是以漸進的、螺旋式的開發方法構建基於元件的軟體產品。現在說這些東西可能有些畫餅的嫌疑,隨著我們專題討論的繼續深入,這些概念就會很清晰的展現在面前。

系統分析員試題(摘1)

試題一 論軟體質量保證 影響軟體質量的因素很多,軟體質量的優劣直接關係到軟體專案的成敗。在軟體開發過程中為保證軟體的質量,採用了許多有關的技術 策略和方法。請圍繞 軟體質量保證 論題,依次對以下三個方面進行論述。1 概要敘述你參與分析和開發的應用專案以及你所擔任的主要工作。2 具體討論你在軟體開發中...

系統分析員試題(摘3)

適用於 tcp ip 網路管理的基本協議是 1 其對應的管理資訊庫為 2 1 a cmis b cmip c snmp d tp 2 a.mib 1 b mib 2 c mib 3 d rmon 採用美國資料加密標準des進行資料加密時,加密演算法中的基本運算不包括 3 3 a 置換運算 b 模加運...

系統分析員級考試大綱

系統分析員級考試大綱 一 考試說明 1.考試要求 1 掌握管理科學與系統工程基礎知識 2 熟悉資訊系統開發過程 3 理解資訊系統開發標準 4 掌握需求分析 系統測試和系統維護基本技術 5 理解質量保證的手段 6 掌握計算機硬軟體的基礎知識 7 理解智財權的基本知識 8 掌握組織與管理的基本知識 10...