目前分類:IT (10)

瀏覽方式: 標題列表 簡短摘要
閱讀他人的程式碼(1)─讀懂程式碼,使心法皆為我所用 文/iThome (記者) 2008-03-05

程式碼是別人寫的,只有原作者才真的了解程式碼的用途及涵義。許多程式人心裡都有一種不自覺的恐懼感,深怕被迫去碰觸其他人所寫的程式碼。但是,與其抗拒接收別人的程式碼,不如徹底了解相關的語言和慣例,當成是培養自我實力的基石。

對大多數的程式人來說,撰寫程式碼或許是令人開心的一件事情,但我相信,有更多人視閱讀他人所寫成的程式碼為畏途。許多人寧可自己重新寫過一遍程式碼,也不願意接收別人的程式碼,進而修正錯誤、維護它們、甚至加強功能。

這其中的關鍵究竟在何處呢?若是一語道破,其實也很簡單,程式碼是別人寫的,只有原作者才真的了解程式碼的用途及涵義。許多程式人心裡都有一種不自覺的恐懼感,深怕被迫去碰觸其他人所寫的程式碼。這是來自於人類內心深處對於陌生事物的原始恐懼。

讀懂別人寫的程式碼,讓你收穫滿滿
不過,基於許多現實的原因,程式人時常受迫要去接收別人的程式碼。例如,同事離職了,必須接手他遺留下來的工作;也有可能你是剛進部門的菜鳥,而同事經驗 值夠了、升級了,風水輪流轉,一代菜鳥換菜鳥。甚至,你的公司所承接的專案,必須接手或是整合客戶前一個廠商所遺留下來的系統,你們手上只有那套系統的原 始碼(運氣好時,還有數量不等的文件)。

諸如此類的故事,其實時常在程式人身邊或身上持續上演著。許多程式人都將接手他人的程式碼,當做一件悲慘的事情。每個人都不想接手別人所撰寫的程式碼,因為不想花時間去探索,寧可將生產力花在產生新的程式碼,而不是耗費在了解這些程式碼上。

很遺憾的是,上述的情況對程式人來說很難避免。我們總是必須碰觸到其他人所寫成的程式碼,甚至必須了解它、加以修改。對於這項需求,在現今開放原 始碼的風氣如此盛行的今日,正如之前的「程式設計2.0」文中所提到的,你可以透過開放原始碼學習到新的技術、學習到高手的架構設計,大幅提高學習的效率 及效果。你甚至可以直接自開放原始碼專案中抽取、提煉出自己所需的程式碼,站在巨人的肩膀上,直接由彼端獲得所需的生產力。從這個觀點來看,讀懂別人所寫 的程式碼,就不再只是從負面觀點的「被迫接收」,而是極具正面價值的「汲取養份」。

先了解系統架構與行為模式,再細讀
倘若撰寫程式碼是程式人的重要技藝之一,那麼讀懂別人的程式碼、接著加以修改,也勢必是另一個重要的技藝。

如果你不能熟悉這項工作,不僅在遭逢你所不願面對的局面時,無法解決眼前接手他人程式碼的難題,更重要的是,當你看著眼前現成的程式碼,卻不知如何從中擷取自己所需,導致最後只能入寶山空手回,望之興嘆。

接觸他人的程式碼,大致上可以分為三種程度:一、了解,二、修改、擴充,三、抽取、提煉。

了解別人的程式碼是最基礎的工作,倘若不能了解自己要處理的程式碼,就甭論修改或擴充,更不可能去蕪存菁,從中萃取出自己所需,回收再利用別人所撰寫的程式碼。

雖說是「閱讀」,但程式碼並不像文章或小說一樣,透過這種做法,便能夠獲得一定程度的了解。閱讀文章或小說時,幾乎都是循序地閱讀,你只消翻開第一頁,一行行閱讀下去即可。但是,有許多程式人在試著閱讀其他人的程式碼時,卻往往有不知如何讀起的困難。

或許找到系統的第一頁(也就是程式碼執行的啟始點)並不難,但是複雜度高的系統,有時十分龐大,有時千頭萬緒。

從程式碼的啟始點開始讀起,一來要循序讀完所有的程式碼曠日費時,二來透過這種方式來了解系統,很難在腦中構建出系統的面貌,進而了解到系統真正 的行為。所以,閱讀程式碼的重點,不在於讀完每一行程式碼,而是在於有效率地透過探索及閱讀,從而了解系統的架構及行為模式。以便在你需要了解任何片段的 細節實作時,能夠很快在腦上對映到具體的程式碼位置,直到那一刻,才是細讀的時機。

熟悉溝通語言與慣例用語
不論如何,有些基本的準備,是閱讀他人程式碼時必須要有的。

首先,你最好得了解程式碼寫成的程式語言。想要讀懂法文寫成的小說,總不能連法文都不懂吧。有些情況則很特殊。我們雖然不懂該程式碼撰寫所用的語言,但是因為現代語言的高階化,而且流行的程式語言多半都是血統相近,所以即使不那麼熟悉,有時也可勉力為之。

除了認識所用語言之外,再來就是要先確認程式碼所用的命名慣例(naming convention)。了解命名慣例很重要,不同的程式人或開發團隊,差異可能很大。

這命名慣例涵蓋的範圍通常包括了變數的名稱、函式的名稱、類別(如果是物件導向的話)的名稱、原始碼檔案、甚至是專案建構目錄的名稱。倘若使用了像設計模式之類的方法,這些名稱更有一些具體的表述方式。

命名慣例有點像是程式人在程式語言之上,另行建構的一組溝通行話。程式人會透過共通約束、遵守的命名慣例,來表達一些較高階的概念。例如,有名的 匈牙利式命名法,便將變數名稱以屬性、型別、說明合併在一起描述。對程式人來說,這種方式能夠提供更豐富的資訊,以了解該變數的作用及性質。

對程式碼閱讀來說,熟悉這個做法之所以重要,是因為當你了解整個系統所採用的慣例時,你便能試著以他們所共同操用的語彙來進行理解。倘若,不能了 解其所用的慣例,那麼這些額外提供的資訊,就無法為你所用。像以設計模式寫成的程式碼,同樣處處充滿著模式的名稱,諸如:Factory、Facade、 Proxy等等。以這些名稱指涉的類別,也直接透過名稱,表達了它們自身的作用。對於懂得這命名慣例的讀者來說,不需要深入探索,也能很快捕捉到這些類別 的意義。

當你拿到一套必須閱讀的程式碼時,最好先取得命名慣例的說明文件。然而,並不是每套程式碼都附有此類的說明文件。另一個方式,就是自己到程式碼中,大略瀏覽一遍,有經驗的程式人可以輕易發掘出該系統所用的命名慣例。

常見的命名方式不脫那幾類,這時候經驗就很重要,倘若你知道的慣例越多,就越能輕易識別他人所用的慣例。如果運氣很糟,程式碼所用的慣例是前所未見的,那麼你也得花點時間歸納,憑自己的力量找出這程式碼命名上的規則。

掌握程式碼撰寫者的心態與習慣
大多數的程式碼,基本上都依循一致的命名慣例。不過運氣更差的時候,一套系統中可能會充斥著多套命名慣例。這有可能是因為開發團隊由多組人馬所構 成,每組人馬都有不同的文化,而在專案開發管理又沒有管控得宜所造成。最糟的情況,程式碼完全沒有明顯的慣例可言,這時候閱讀的難度就更高了。

想要閱讀程式碼,得先試著體會程式碼作者的「心」。想要這麼做,就得多了解對方所使用的語言,以及慣常運用的語彙。在下一回中,我們將繼續探討閱讀程式碼的相關議題。

作者簡介:
王建興
清華大學資訊工程系的博士研究生,研究興趣包括電腦網路、點對點網路、分散式網路管理、以及行動式代理人,專長則是Internet應用系統的開發。曾參與過的開發專案性質十分廣泛而且不同,從ERP、PC Game到P2P網路電話都在他的涉獵範圍之內。

Chery0805gamania 發表在 痞客邦 留言(0) 人氣()

架設網站問題

Q:新手上路,問很白痴的問題@@請見諒
請問我如果做好一個網頁,像是ASP網頁或者PHP網頁,我如何讓別人看到呢?
除了到網路上找空間放,還有另外一個方法是架設Server,還有別的方法嗎?
那架設Server的話,是利用Windows Server 03 或 08嗎,還是別的Server?
利用自己主機架設的話,會有很大的風險嗎?電腦配備和網路需要很好嗎?
應該買書來學習,還是另有管道呢?因為自己想架Server讓別人連到自己主機,
可以看到網頁,及下載我電腦上的東西。

回答http://ithelp.ithome.com.tw/question/10023690?#ooa_hash

Ans1:
1.請問我如果做好一個網頁,像是ASP網頁或者PHP網頁,我如何讓別人看到呢?除了到網路上找空間放,還有另外一個方法是架設Server,還有別的方法嗎?
Ans:
網路空間: 有分免費與付費的方式, 可以再自行找;
自己架站: 那要申請網路與個人的網域名稱, 目前seednet與hinet等ISP都有相關的業務服務.

2.那架設Server的話,是利用Windows Server 03 或 08嗎,還是別的Server?
Ans:
架server應該均可(Win2K, WinXP也行), 主要是你要有安裝Web Server(像IIS或apache等), 跟你裝在WinXXXXX應該較沒關係. 只是server版本是有其他的功能, 如果只是要做web server, 那就不一定要安裝到這樣版本或等級.

3.利用自己主機架設的話,會有很大的風險嗎?電腦配備和網路需要很好嗎?
Ans:
自己架站就是要注意被人惡意植入破壞程式, 病毒等等, 主要是還要日常維護主機比較費神, 電腦配備我覺得以現在P4左右的等級, 應該都能跑的嚇嚇叫, 除非大大您有架站有要做一些交易或是運算量大的網站, 不然一般的主機就不錯, 不過網路頻寬就要看大大需求, 初期先觀察流量, 如果流量大的話再申請調高頻寬.

4.應該買書來學習,還是另有管道呢?因為自己想架Server讓別人連到自己主機,可以看到網頁,及下載我電腦上的東西。
Ans:
買書, 上課程(類似電腦補習班), 或是多瀏覽一些討論區與個人blog, 應該都有這方面的教學.至於大大要供人下載資料, 要先考量版權的問題, 這點要多注意.

討論http://ithelp.ithome.com.tw/question/10023690?tab=opinion#ooa_hash

如果只是想學習如何架站,可以利用您的Windows XP安裝IIS(XP 內建)來學習ASP,也可以安裝APPSERV http://www.appservnetwork.com/ 用來學習PHP,請參考!

 

參考APPSERV http://www.appservnetwork.com/

Chery0805gamania 發表在 痞客邦 留言(0) 人氣()

參考1:http://ithelp.ithome.com.tw/question/10023690?tag=nl.daily

參考2:http://www.appservnetwork.com/

架設網站問題

新手上路,問很白痴的問題@@請見諒
請問我如果做好一個網頁,像是ASP網頁或者PHP網頁,我如何讓別人看到呢?
除了到網路上找空間放,還有另外一個方法是架設Server,還有別的方法嗎?
那架設Server的話,是利用Windows Server 03 或 08嗎,還是別的Server?
利用自己主機架設的話,會有很大的風險嗎?電腦配備和網路需要很好嗎?
應該買書來學習,還是另有管道呢?因為自己想架Server讓別人連到自己主機,
可以看到網頁,及下載我電腦上的東西。

 

所有回答

回答:jackaitw( IT邦初學者7級 )
時間:2009-07-16 09:00:15
通常需要主機來存放您的ASP或PHP檔
如果是ASP檔就需要Windows 2003/2008 Server
如果是PHP除了Windows 2003/2008 Server還可以用Linux系統
如果您的ISP是Hinet,可以申請http://www.myweb.hinet.net/
大約有40~60MB的空間,但不支援ASP
或是您可以架設部落格囉!無名或是痞客邦ITHome也提供部落格
其實要看您要分享的資訊是甚麼!這樣才能更準確的提供給您資訊

參考資料:星際吉羊

abcd0061您好
ISP是Internet Services Provider 取第一個字的縮寫,意思是網際網路服務提供者!就是您申請ADSL或Cable MODEM的廠商(需要花$$而且是每個月都要)
如果只是想學習如何架站,可以利用您的Windows XP安裝IIS(XP 內建)來學習ASP,也可以安裝APPSERV http://www.appservnetwork.com/ 用來學習PHP,請參考!2009-07-17 09:25:06 補充
回應 jackaitw

1

abcd0061 說:

RE:如果您的ISP是Hinet,可以申請http://www.myweb.hinet.net/
大約有40~60MB的空間,但不支援ASP
ANS:大大不好意思,請問什麼是ISP,及申請的話,需要$$嗎?
目前只是想學習如何架站,而不是真的要上路讓使用者使用。
是否有推荐的方法,想說自己架一次,比較有經驗。

2009-07-16 12:49:31

2

jackaitw 說:

abcd0061您好
ISP是Internet Services Provider 取第一個字的縮寫,意思是網際網路服務提供者!就是您申請ADSL或Cable MODEM的廠商(需要花$$而且是每個月都要)
如果只是想學習如何架站,可以利用您的Windows XP安裝IIS(XP 內建)來學習ASP,也可以安裝APPSERV http://www.appservnetwork.com/ 用來學習PHP,請參考!

2009-07-17 17:26:25

回答:linyt( IT邦初學者7級 )
時間:2009-07-16 10:39:00
1.請問我如果做好一個網頁,像是ASP網頁或者PHP網頁,我如何讓別人看到呢?除了到網路上找空間放,還有另外一個方法是架設Server,還有別的方法嗎?
Ans:
網路空間: 有分免費與付費的方式, 可以再自行找;
自己架站: 那要申請網路與個人的網域名稱, 目前seednet與hinet等ISP都有相關的業務服務.

2.那架設Server的話,是利用Windows Server 03 或 08嗎,還是別的Server?
Ans:
架server應該均可(Win2K, WinXP也行), 主要是你要有安裝Web Server(像IIS或apache等), 跟你裝在WinXXXXX應該較沒關係. 只是server版本是有其他的功能, 如果只是要做web server, 那就不一定要安裝到這樣版本或等級.

3.利用自己主機架設的話,會有很大的風險嗎?電腦配備和網路需要很好嗎?
Ans:
自己架站就是要注意被人惡意植入破壞程式, 病毒等等, 主要是還要日常維護主機比較費神, 電腦配備我覺得以現在P4左右的等級, 應該都能跑的嚇嚇叫, 除非大大您有架站有要做一些交易或是運算量大的網站, 不然一般的主機就不錯, 不過網路頻寬就要看大大需求, 初期先觀察流量, 如果流量大的話再申請調高頻寬.

4.應該買書來學習,還是另有管道呢?因為自己想架Server讓別人連到自己主機,可以看到網頁,及下載我電腦上的東西。
Ans:
買書, 上課程(類似電腦補習班), 或是多瀏覽一些討論區與個人blog, 應該都有這方面的教學.至於大大要供人下載資料, 要先考量版權的問題, 這點要多注意.

 

回應 linyt

1

abcd0061 說:

RE:自己架站: 那要申請網路與個人的網域名稱, 目前seednet與hinet等ISP都有相關的業務服務.
ANS:該如何申請網路與個人的網域名稱呢?還有網路與個人的網域名稱代表什麼意思@@

RE:架server應該均可(Win2K, WinXP也行), .....
ANS:Win2K,WinXP也是Server的種類嗎?我有裝IIS的話,還是要弄Server嗎?還是有IIS就夠

RE:至於大大要供人下載資料, 要先考量版權的問題, 這點要多注意.
ANS:目前只是想學習如何架站,而不是真的要上路讓使用者使用。
是否有推荐的方法,想說自己架一次,比較有經驗。

PS:問的問題都很基本,請見諒@@

2009-07-16 12:53:38

2

linyt 說:

RE:自己架站: 那要申請網路與個人的網域名稱, 目前seednet與hinet等ISP都有相關的業務服務.
ANS:該如何申請網路與個人的網域名稱呢?還有網路與個人的網域名稱代表什麼意思@@
ans===>
以HINET為例, 可讓大大您申請網站
http://nweb.hinet.net/idv-pay.html

Seednet
http://rs.seed.net.tw/p_question.html

不好意思~~寫的比較模糊點, 網路是指申請adsl 或是固網這類的作業;個人網域名稱是指類似個人專屬的姓名在網路上使用, 這個命名不能與其他人相同,透過申請作業將某一個網址名稱專屬於您個人使用, 如同像ithelp.ithome.com.tw這個名稱, 就專屬於it幫邦忙的網址.

RE:架server應該均可(Win2K, WinXP也行), .....
ANS:Win2K,WinXP也是Server的種類嗎?我有裝IIS的話,還是要弄Server嗎?還是有IIS就夠
ans===>
win2K的server版是算server等級, WINXP不是, 一般架站的話, 要有裝iis 是比較重要,
至於是裝在 win2K, WINXP, Win2K3, WIN2K8 均可, 依您所購買的作業系統為主.(微軟的作業系統基本上都有附iis, 如考量穩定性與其他功能的話, 當然就要買server版本, 不要用winxp home 或是 winxp pro 或 win2K Pro)

RE:至於大大要供人下載資料, 要先考量版權的問題, 這點要多注意.
ANS:目前只是想學習如何架站,而不是真的要上路讓使用者使用。
是否有推荐的方法,想說自己架一次,比較有經驗。
ans===>
之前學習是買一本有關asp的書來學, 如果大大是想run php的話, 就購買apache+php等相關的工具書來看會比較快. 架站不是難事, 難是在於要如何呈現出網站的風格來吸引人注意!! 所以網站美工與配色方面也是要注意的地方.

不會啦~~~我還怕寫的太不清楚~~誤導了大大!!

2009-07-18 01:05:39

回答:jachin( IT邦初學者9級 )
時間:2009-07-17 08:22:14
先回答你問題~
1.你的問題並不白痴,不懂就要問^^是吧~
2.你做好一個網頁之後,就是你說的兩種方法了A.申請空間存放,B.自己架SERVER主機存放(後面再講解細節及優缺點),申請空間代管的一般都在一年四五百元到一千多不等.
3.架設WEB SERVER並無一定的OS(例:WINDOWS XP,2K,2003,2008,VISTA),只是有些要另外安裝元件或工具而已
4.利用自己主機架的話風險當然有,配備其實不需要太好(有些人拿早期P2,P3就在架了),除非你寫的網頁很熱門,需要負荷幾千幾萬人瀏覽,那就要好一點,甚至建議申請空間讓專業人士代管
5.買書學習是不錯的方法,不過其實你在網路上找就有很多人教你了,如果你想讓人專門下載東西,可以學習架設FTP SERVER

補充:
*申請空間大部份是需要錢的(以前有很多免費的空間,但景氣不好,所以現在很少很少,否則就是要到國外找了),如果你家裡網路ADSL是中華電信的,或是你有EMAIL是中華電信的HINET,一定都會免費附上一個空間給你,以前是到80M,最近我試過可以上到一百多MB(可能我是老客戶吧XD),HINET的網頁服務速度品質不錯,不過就像前面大大說的,不支援ASP或CGI...等語法功能,而且會有HINET的廣告出現;如果你只是自己練習的話,可以練習自己架,也可以藉此學習架SERVER.
*不過自己架當然有風險,因為你等於多開放了一個管道給全世界網路人都能連進你的電腦存取(當然風險有限啦,只要裝好有效的防毒和防火牆就安全很多)(當然,防火牆必須要另外開啟允許存取的功能),另外一個缺點就是你要提供服務,當然要隨時開機,除了小小折損硬體之外,電費可想而知(真的不少^^")

*SERVER版本的OS,在你安裝好就已經有類似WINDOWS 2K和XP的IIS了,所以不用另外安裝,要裝IIS是因為XP和2K專業版本身你安裝好不會自動安裝IIS元件,所以才需要另外安裝.像LINUX就是安裝apache元件

*至於版權的問題,我想您就多注意不要放沒版權的東西(例:音樂MP3,電影之類的...),就算偷偷放,不要被抓到,不要公開散播(你想想,就像網路警察去你電腦抓到盜版意思一樣)

*回上面的大大,事實上如果你只是自己架站練習,不需要申請網域名稱啦,多花錢而已,你只要透過你電腦上網的IP就可以連接上去了(不過如果網路業者有提供空間,其實都有提供網域名稱吶)

名詞解釋:
ISP:就是網路提供的服務業者.例:HINET,SEEDNET...
網域名稱:即DN,由DNS提供服務,就是你的網址(例:http://abce.ithome.com.tw→ithome.com.tw就是你的DN)

參考資料:版權沒有 喜歡拿去

另外,您可能要瞭解,你電腦上網的IP是虛擬IP或是在Internet上的實體IP,如果是需擬IP就需要做NAT轉IP的動作唷(把外部IP轉成內部虛疑IP)(一般都在IP分享器,ROUTER或防火牆上設定)
如果是固定IP,就沒有這種問題,如果是浮動IP,還要另外思考IP會常換的問題(需要從IP分享器或ROUTER設備設定轉址)2009-07-17 08:26:32 補充
回答:sbee727( IT邦初學者10級 )
時間:2009-07-17 16:26:15
這個問題不會是正常的,因為看回答你的人是偏軟體還是偏硬體的
如果是偏軟體的人會告訴你看你是要用網頁空間架還是要用server架站,而我會問比較深一點,網頁中有沒有含資料庫或是影音串流,flash....等等,或是單純的靜態網頁
如果是搞硬體的,會問是要24小時供人上網查詢,還是會給相關會員作互動,因為如果只是查查連結或是賣賣小東西,網頁空間就夠,但是如果有很頻繁且資料量大的話,建議用一台好一點的電腦頻寬主機作service,以免資料或頻寬太大lag住
如果會linux的話建議用linux+apache+mysql+php,是最省錢省效能的作法,但是不是說m$不好,只是軟硬體都要花錢,比較傷荷包
回答:jjhuang( IT邦初學者9級 )
時間:2009-07-17 18:32:51
用 ms 學安裝apache mysql php
用 linux 幾乎都裝好了,要學的是檔案管理,網路設定等等..

我自己就是ms轉linux的.感覺不難啊.
其實安裝的教學都是網路上找來的,都要花時間的
我的網站,給你看看, http://cader.com.tw/vbb/
我不是學資訊的架設的網站.

參考資料:http://cader.com.tw/vbb/

回應 jjhuang

1

twtw 說:

架網站不難,難的是架好後,
怎麼經營和吸引更多人來用,
而能夠分享更多眾人的資訊。
您的網站真的很成功!

2009-07-17 22:06:09

討論

架設網站問題
wiselou( IT邦初學者7級 )
2009-07-16 08:39:18
架設網站的server....還有很多需要考慮的部份...
例如,要租個domain name....總不能要user記那一堆難看的IP;
即使,要讓user使用IP連線,至少也弄個固定的IP;
還有$$的考量,自己架設主機,要花費電費、網路費

綜合這些因素...如果只是個人網站...放在免費的網站空間似乎比較符合需求。
yking7065( IT邦初學者9級 )
2009-07-16 09:25:54
免費的網站空間有容量限制。

不過若是放好看的,
那就另當別論
abcd0061( IT邦初學者10級 )
2009-07-16 12:55:54
RE wiselow:
我現在架只是想學習用,而不是真的讓使用者使用,所以$$應該是不會是考量的因素,
租domain name,需要$$嗎?

 

回應 abcd0061

1

wiselou 說:

是的,『租』用域名,是每年要付錢的..不然怎麼會叫做『租』呢?
另外,當Server的主機,應該是長年處於不關機的狀態,要電費吧...
再來...網路的費用,ADSL等網路設備的電費也該算...
零零總總加起來,也要花上一些錢的。

不管是學習用還是給user使用,自己架設就是會有這些費用...
多與少的差別而已。


Chery0805gamania 發表在 痞客邦 留言(0) 人氣()

來源:http://www.ithome.com.tw/itadm/article.php?c=55727

拖垮OOAD專案的十大惡習

文/iThome (記者) 2009-07-07

──沒時間讀UML/OOAD書之挑讀筆記第 19 回 分析癱瘓(終)即使系統分析和規畫做的再好,進入實作以後,若沒注意到這十種狀況,小心,你的專案即將不保

 
實作(implementation)是ICONIX方法中的最後一步驟,先回顧一下ICONIX方法簡潔的五大開發步驟:
1.領域建模:撰寫使用案例敘述之前,需要先對領域概念有初步的認識,這樣才能寫出貼切的使用案例敘述,因此需要建構類別圖。

2.使用案例建模:在繪製穩健圖之前,需要描述一群物件合作的原由,所以此時將需要撰寫使用案例敘述。

3.穩健分析:在繪製循序圖之前,需要先透過穩健圖決定有哪些物件將參與使用案例。

4.互動建模:針對每一個使用案例思考及建構循序圖的過程,其實就是在分派責任給物件,同時也就是在決定類別的方法。

5.實作:ICONIX方法最後一個步驟就是編寫出程式碼,而編寫程式碼所需的最關鍵資訊是,類別的屬性、方法以及類別之間的關係,如圖1所示。

圖1:實作


雖說,許多UML工具都有提供自動產出程式碼的功能,可是通常僅能夠產出程式框架,操作中最重要的控制邏輯是沒辦法自動產出的。就以StarUML為例,即便它只是個免費的UML工具,仍然提供自動產出C++、C#和Java的程式碼。

針對圖2的類別圖,StarUML可以自動產出如下的C++程式碼,包括:Member.h、Member.cpp、CreditCard.h、CreditCard.cpp、Order.h、Order.cpp、OrderLine.h、OrderLine.cpp、Item.h和Item.cpp。

圖2:類別圖


最後,我們來看看採用物件導向分析設計技術的專案,如果遇到下列十個狀況時,可得小心了,這很可能是專案垮臺的前奏呢!

拖垮OOAD專案的十大惡習
惡習1 採用物件導向技術開發你最看重的專案。(Bet the farm by doing your most critical project as your first effort that involves object-oriented development.)

惡習2 確定你的專案團隊裡頭,沒有一位成員有採用物件導向開發系統的經驗。(Make sure there's nobody with any OO experience on your project team.)

惡習3 不做單元測試,而是直接做整合測試。(Don't do unit testing on a class-by-class basis. Instead, go directly into integration testing and hope for the best.)

惡習4 資深設計師忙著編寫使用案例敘述,並且派初級人員去設計循序圖。(Keep most of your senior designers busy writing use cases; have your junior people work on the sequence diagrams.)

惡習5 不複審任何的分析模式或設計模式。(Don't bother to review any of your analysis or design models.)

惡習6 讓設計模式與使用案例模式完全分離,反正我們都知道使用案例不會影響程式碼。(Keep your design model completely segregated from your use case model; we all know that use cases don't affect code.)

惡習7 先實作系統中容易的部分,並且將關鍵的部分留待最後逼近截止日時,才實作。(Implement the easy parts of your system first. Leave the critical items for the end, near the deadline. (You can earn lots of overtime pay this way!))

惡習8 帶領一組有20多位VB程式設計師的團隊,給他們C++編譯器和視覺化建模工具,並且讓他們自行其事。(Take a team of 20 or so Visual Basic programmers, hand them a C++ compiler and a visual modeling tool, and leave them to their own devices.)

惡習9 直接編寫程式碼,再透過反向工程自動產出物件模式,反正客戶根本不懂。(Ignore the analysis and design models you've produced, write the code, and reverse-engineer all the code you've written into an as-built object model. Your clients will never know the difference, right?)

惡習10 以為你的視覺化建模工具將自動產出程式碼,所以雇用一堆大專生來編碼。(Assume your visual modeling tool will generate great code for you, and hire a bunch of junior college students (none CS majors) to handle coding.)

原本我將「分析癱瘓」(analysis paralysis)中譯為「分析麻痺」,不過經網友建議,因此從善如流採用「分析癱瘓」。網友在我的UML Blog(www.umltw.com)中留言,建議我採用「分析癱瘓」譯詞,套用他說法是「因為分析過多,導致整個分析流程癱瘓…」,所以採用「分析癱瘓」會比採用「分析麻痺」更貼切。

從使用案例分析推進到循序圖設計,向來是開發流程最容易塞住、難以推進的關卡所在,也是經常會發生分析癱瘓之處。所以,我們除了可以參考原著作者提到的十五條分析癱瘓警訊之外,還可以善用穩健圖來進行初步設計,用以銜接分析與細部設計。

由於,原著作者提到的十五條分析癱瘓警訊分散在各小節中,為了方便你參考使用,所以,此處我們特別重整條列如下:
1. 別讓文法檢驗把你絆住了。

2. 別太早處理個體數目。

3. 直到細部設計階段,再來擔心聚合關係與組合關係。

4. 別嘗試寫使用案例,直到你知道使用者將做什麼,為止。

5. 別花費數週的時間,只是為了建造出精緻完善的使用案例模式。

6. 別浪費時間去擔心,到底該採用包含關係、擴充關係、亦或是使用關係。

7. 別把時間浪費在,冗長且複雜的使用案例樣板上頭。

8. 別試著用穩健圖進行細部設計。

9. 別浪費時間,想把穩健圖做得盡善盡美。

10. 在你對這些物件一無所知之前,別想要為它們配置行為。

11. 在你完成相關的穩健圖之前,別動手繪製循序圖。

12. 別將焦點放在存取方法上,而是該關注真正的方法。

13. 如果物件只有兩個狀態時,千萬別為它繪製狀態圖。

14. 如果你不是真的需要模式,那就別建模。

15. 別因為你懂得狀態圖,就一定要繪製。

總計,原著作者除了條列了十五條分析癱瘓警訊之外,還提出了十項領域建模錯誤、十項撰寫使用案例需避免的錯誤、十個穩健分析的好處、十個繪製循序圖該記得的要點、十種染上了分析癱瘓症的徵兆、十件跟需求有關的重要事項、十個拖垮OOAD專案的惡習。這些由實務經驗累積下來的智慧,真的很值得我們細細品味。

作者簡介:
邱郁惠
研究OOAD、UML、MDA十餘年,經歷過顧問、專案、教學及寫作工作。離職後創辦UML Blog推廣UML,組織《UML互助會》社群定期舉辦軟體技術講座,出版多本UML專業書籍與電子書。目前擁有OCUP/UML三級認證、PMP認證。

書籍簡介

 Use Case Driven Object Modeling With UML: A Practical Approach


 作者:Doug Rosenberg and Kendall Scott
頁數:160頁
出版社:Addison-Wesley Professional
出版時間:1999 March

Chery0805gamania 發表在 痞客邦 留言(0) 人氣()

系統問題,值得借鏡!!!!



戴爾網站再出包 6萬元商務筆電只賣1.8萬元
文/蘇文彬 (記者) 2009-07-06


台灣戴爾網站再次發生標錯價事件,由於距離上次出錯僅僅不到2週的時間,網路上再次引發網友批評聲浪。



上週日(7/5)清晨戴爾網站再次出包,被網友發現一台原本要價6萬元的13吋輕薄筆電,經調整選配規格後竟可以1.8萬元買到,網路上再次引起軒然大波。

據瞭解,網友在7/5清晨一點左右發現戴爾網站上有一款13.3吋含重1.5公斤的Latitude E4300商務筆電,原本要價60800元,但只要選配藍色或紅色機型搭配同配色螢幕、光碟機後,竟然可以折扣高達4萬多元,折扣後只要約1.8萬元就可買到。若昇級至4GB記憶體及7200轉250GB硬碟也只要2.3萬元。

E4300為戴爾定位在高階商務市場的超輕薄筆電,就算降低規格也不可能出現1.8萬元的低價,因此事後吸引大批網友上網搶購,戴爾方面則在上午10點多停止網站交易,以檢視、修正問題。

戴爾台灣區總經理廖仁祥昨日接受媒體團訪時再次表示歉意,並示正在了解這段時間的訂單數量及錯誤。至於這次筆電標錯價事件如何處理則未給予回應。

在此之前,戴爾網站在6/25也曾標錯價,當時19吋螢幕只賣500元,20吋標價也不到千元,筆電部份雖然也享有7千元折扣,但因為筆電單標較高,低價的螢幕反成為網友瘋狂下單目標,8個多小時創下14萬台螢幕訂單。上週四戴爾才剛做出決定,給予消費者1千至3千元的折價補償,被網友批評誠意不足。

先前網站出包,後續補償已引起消費者不滿,不到2週的時間戴爾網站又再次出包,消基會董事長謝天仁表示,戴爾網站前後兩次出現標錯價,證明了戴爾並沒有從上次事件學到教訓,沒有針對內部網路購物流程,以更嚴格的標準反覆檢視網站上的標價資訊,才會再次爆發筆電標價烏龍。這種連小型網路商店都會避免的問題,像戴爾這樣大的全球品牌業者卻一再發生。

謝天仁指出,就法律上來看,只要標出價格經消費者下單後,雙方的交易就已成立,戴爾不能夠以已經事先聲明消費者下單後並不代表戴爾接受為理由,而片面地主張因系統錯誤取消訂單,這在法律上站不住腳。目前消基會正考慮對網站線上交易誠信有問題的戴爾發起抵制,協助消費者團體訴訟,同時也希望戴爾要正視問題。

Chery0805gamania 發表在 痞客邦 留言(0) 人氣()

http://blog.chonpin.idv.tw/archives/000068.html

http://blog.xuite.net/pccompass/travel/203661
去迷路羅盤的站台看看教學明, 他寫的很清楚了...
加油

Chery0805gamania 發表在 痞客邦 留言(0) 人氣()

http://blog.chonpin.idv.tw/archives/000264.html

From:熊瓶、網路、部落格:Plurk(噗浪)好好玩
       

  最近網路服務最夯的應該就算是Plurk(噗浪)了吧!Plurk是有點類似Twitter(推特)的服務,簡單說的話可以把他想成一個小型的個人廣播台,同時也能接收朋友間的訊息,是很好的即時訊息收發站(當然前題是瀏覽器要一直開著收發訊息啊),妳可以在同一時間接收到從四面八方灌進來的訊息及八卦(對!八卦就是重點~),所以!大家一起來噗浪吧!




  我簡單說明一下噗浪裡的各個組成!
1. Plurk最重要的地方就是上方訊息在流通的區塊 - 『時間軸』通稱叫『河道』
2. 中間的輸入框就是自己要發佈訊息時的地方 - 我叫他『發射台』
3. 最下方的區塊就是個人的資訊由左而右分別是『個人資訊』、『Karma值』、『朋友』、『粉絲』
3.1個人資訊可以在最左上角我的檔案旁邊的『編輯』裡做修改
3.2Karma值會隨著你在Plurk上發言的次數而增加,有點類似電玩裡的經驗值,最高可到100分
  PS1 : Karma值的增加可讓您使用更多的進階功能
  PS2 : Karma = 咖馬 = 腳毛(台語)
3.3朋友是妳接受且認同的朋友(可能是你在網路上或現實生活中的朋友)
3.4粉絲是網友可能知道你這個人但你確不認識他或不熟,還不到朋友的程度
  PS1 : 朋友和粉絲的最大差異在朋友的訊息會出現在你的河道中而粉絲的則不會出現



  以上就是Plurk頁面上最基本的組成了!而每則所發出去的訊息則稱為『噗』,每則噗都會有個主題,所以大家如果看到自己有興趣的主題就可以跟著這則『噗』一起『噗』(好饒舌啊~哈~~),有時後大家可以在噗浪上得到許多新鮮的八卦!我想這應該就是Plurk上最吸引人的地方吧!所有的訊息的是公開且即時的!尤其像是公司或同學間的八卦更是會在Plurk裡瘋狂流竄!大概不出3分鐘就可以搞到全世界都知道,所以請小心服用啊!~~~
要加入熊瓶噗的朋友請往右方這個入口移動:我要成為熊瓶的朋友
只想到熊瓶噗看看的朋友請走這裡:我只想看熊瓶噗


  Plurk也支援CSS變更,所以大家可以很方便的把自己的Plurk換成自己想要的背景,工程師換開發工具、美編換PhotoShop、企劃換Word、會計換Excel、老闆就免了,你最大所以不用換!我稱這些偽裝過後的背景圖為老闆模式!ㄎㄎㄎㄎ~~以下順便介紹幾個Plurk佈景主題下載網站給大家看一下,大家可以去看看有沒有自己喜歡的佈景主題然後拿回來使用呦!~~~
Plurk Layouts



Plurk Themes



Plurk Templates



Flickr Plurk Themes

Chery0805gamania 發表在 痞客邦 留言(0) 人氣()

http://blog.chonpin.idv.tw/archives/000073.html

Chery0805gamania 發表在 痞客邦 留言(0) 人氣()

http://big5.webasp.net/article/15/14827.htm

這裡是判斷YYYY-MM-DD這種格式的,基本上把閏年和2月等的情況都考慮進去了,不過我已經忘了在哪裡找到的。

^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$



下面的是加了時間驗證的

^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$

Chery0805gamania 發表在 痞客邦 留言(0) 人氣()

CMMI軟體品質相關資訊文章


如何選取適當屬性之CMMI模式(上)
http://eblog.cisanet.org.tw/post/20081029cmmi.aspx

如何選取適當屬性之CMMI模式(下)
http://eblog.cisanet.org.tw/post/20081030cmmi.aspx


建置CMM與CMMI的第一步---差異分析(Gap Analysis)下篇
http://eblog.cisanet.org.tw/post/200810221652.aspx

cmmi 軟體品質 (7)
http://eblog.cisanet.org.tw/category/cmmi-e8bb9fe9ab94e59381e8b3aa.aspx

Chery0805gamania 發表在 痞客邦 留言(0) 人氣()