2007年1月28日 星期日

SCEA第二階段---如何開始


還記得拿到第二階段的考題後,便迫不及待的把他印出來,並且很認真的畫線、註解。
然後很快的看完了一遍,當時覺得應該不難,但反覆看過幾次後,卻還是不知如何開始…

在考SCEA之前,我也負責過幾個J2EE的案子,在客戶面前也都能自傲的吹噓我們的OOAD技術,UML的各種圖也都畫了出來,在"結案"前也準時的交付,但仔細想想…那些文件的用途是什麼?
老實說,是為了結案。

如果客戶需要顧用一位新員工來維護該系統,新員工能在沒有我出面說明的情形下,只憑文件就了解系統嗎? 系統中的各項設計訣擇,是在什麼情形下產生的?

一個個問題在我回想中一一浮現…是的,我的確沒有認真想過,以致只能看著試題發呆…

當你拿到一份需求時,首先要做的是徹底了解,接著思考可行的架構,一個好的架構必然是符合需求且具全面性考量的,以下我要來介紹一些名詞,都是在設計時必須好好思考的名詞:



1. Assumption:
我在SI公司待了很久,就是那種專門接案件開發的單位,東奔西跑下來,看過的需求還真不少,使用者提出需求一定有他的想法需要你幫他滿足,但可惜的是他們永遠說不清楚,他們需要一位有經驗的IT從業人員來導引出真正清楚可行的需求。

不論是那裡來的需求書,看完後必然有一堆問號(如果你有認真看的話),把這些問號都寫下來,去找實際的使用者,一一問清楚,然後做成正式的會議記錄,要求大家簽名同意,並更新文件,這個階段的每個遺漏,都是你這開發者將來會吃悶虧的地方。

SCEA第二部份的考題也是一份需求書,同樣的也是不清不楚,但這次沒有使用者可以幫你犛清所有問號,但沒關係,想像你自己是使用者,自問自答,把答案寫下來成為一條一條的Assumption。



2. Design Decision:
去年12月,我帶著身懷六甲的老婆出遊,行程是這樣設計的:
第一天:
08:00 出發,從茹冬交流道上北二高,往南至南投草屯接新中橫,目的地是合歡山
12:00 清境附近找一間不錯的民宿用餐
14:00 合歡山莊 Check in
15:00 武嶺賞雲海
16:00 合歡主峰登山步道
17:30 合歡主峰頂看日落


行程的設計訣擇:
1. 08:00出發-->因為當天是非假日,所以預期不會塞車,這時間出發到清境剛好約午餐時間。
2. 從茹冬交流道上北二高,往南至南投草屯-->因為從新竹經北二高到南投路徑短,車流速度快。
3. 12:00 清境附近找一間不錯的民宿用餐-->清境附近的用餐選擇很多,不致於找不到餐館,所以決定到時再找。
4. 從新中橫上山會先經過合歡主峰、武嶺再到合歡山莊,但我們決定先到合歡山莊Check in再回頭觀光 --> 因為合歡主峰日落景致很美,為了配合黃昏的時間,所以決定先Check in再繞回頭路。



我並不想寫一篇遊記,但思考一下行程與其設計訣擇之間的關係,其實是很有趣的。

如果只有行程表,而十年後的我看到這行程表時,能夠了解行程為何要這樣安排嗎?
如果只有行程表,而十年後的我想再安排一次合歡山之旅時,這行程有用嗎?(也許到時的交通環境和景點設施都已改變)

生活中的許多事物都存在著「Design<-->Design Decision」之間的關係,例如大樓的設計圖、食譜、引擎……數不盡。

軟體設計也一樣,好的設計文件,應該要將「重要的」「Design Decision」,以簡單明暸的方式寫下來,這會使你的文件更具可讀性及參考價值。



3. Good Diagram:
簡單的文字搭配良好的圖解,可以讓你的文件可讀性事半功倍,這裡的Diagram並不限定要符合UML規格,只要是可以幫助說明的,都可以放在文件中,記住一點:沒有人員輔助說明就看不懂的文件,不能叫好。

2007年1月11日 星期四

SCEA Part 2考試心得(二)

在完成SCEA第二階段的報名手續後, 你會收到考試中心通知,要求受試者至Sun CertManager下載考題,網址如下:

https://www.certmanager.net/sun_assignment/

你必須使用在Prometric報考第一階段時的考試ID (Candidate ID)做為帳號登入,然後下載作業題目(Assignment)

開啟後原則上每個人的題目都一樣,是一個航空系統專案,內容方面,礙於保密協定的關系,我就不透露了,但其實在網路上應該很容易可以找到這份題目。

第二階段的作業要求你產出一份文件,內容包含Class Diagram, Component Diagram, Sequence Diagram for each Use Case,以及對系統的說明和假設。

這些文件都必須使用英文撰寫成網頁格式,並在最後打包成一個.jar上傳回Sun CertManager。

在你上傳之後,便可以至Prometric報名第三階段的考試,考試類型是四題問答題,問的就是你系統的設計方式,及為什麼要這樣設計,目的是確認作業真的是你本人寫的。

完成第三階段後,在家等待四到六週,你會收到一封EMail通知你的考試成績。如果大於70分,那恭喜你過關了,如果小於70分,那你還有一次機會補考310-300R,修改好你的作業後再度上傳。

補考時唯一可以參考的資訊是考試成績,Sun不會把為什麼不及格的原因告訴你,你只會得到一份成績單,裡頭寫著Class Diagram的分數、Component Diagram的分數、Sequence Diagram的分數。

根據這些分數,你可以補強作業中失分較多的地方,重新寫完後再上傳到Sun CertManager。

補考的流程我沒有實際體驗過,不過根據我在Java Ranch看來的資料,如果補考後還是失敗的話,必須再回到第一階段重新考起。

在此提供大家一個網站:http://www.javaranch.com
該網站有一個SCEA考試版,提供很多SCEA考試方面的相關討論,幾乎是所有準備報考SCEA同好的必到之處。