Top Banner
Group Meeting - Some tracing tools Dept. Computer Science and Information Engineering, NTU 20081125 Yi-Siang Huang
27

trace code tool 以及人月神話

Jul 09, 2015

Download

Education

Yi-Hsiang Huang
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: trace code tool 以及人月神話

Group Meeting- Some tracing tools

Dept. Computer Science and Information Engineering, NTU

20081125

Yi-Siang Huang

Page 2: trace code tool 以及人月神話

Outline

Trac e c o d e …

讀書心得

Page 3: trace code tool 以及人月神話

Trac e c o d e …

讀書心得

Page 4: trace code tool 以及人月神話

Saying First

我們身邊有總是滿坑滿谷的 co d e …

為了人類的進步跟世界的和平 苦命工程師通常要「懂 」那些亂七八糟的 c o d e 到底在幹麼

怎樣 trac e c o d e 比較有效率呢 ???

Page 5: trace code tool 以及人月神話

Saying First (cont.)

其實有些吐喔可以給我們一隻手 !

GU I ?? 非 GU I ?????

Page 6: trace code tool 以及人月神話

Vim + plugin

大致有下面幾種- C tags , C s c o p e , taglis t, …

e m ac s 也有支援 ( 非 vim - o nly)

ub untu 都可以用 ap t- ge t 取得

Page 7: trace code tool 以及人月神話

Vim + plugin (cont.)

先來談談 vim …

- ctrl+w n … 分割視窗- ctrl+w s (:sp) … 開啟同一檔案在新分割視窗 (:e 可開別的檔案 )

- ctrl+w q (:q) … 關閉視窗

- ctrl+w [↑|↓] … 切換視窗- ctrl+w [+|-] … 調整視窗大小

- [[ / ]] … 跳到前 / 後一個函數

- [I / ]I … 放在關鍵字上可跳到同檔案中上 / 下次出現的位置

- gf … 放在 include 的檔案名稱上時即可開啟該檔案

( :set path+=/usr/include ) ctrl + O 回到原檔案

- [D … 承接上面的 gf, 可展示出 macro 的定義

- :set cursorline … 在 vim 中開啟基準線

Page 8: trace code tool 以及人月神話

Vim + plugin (cont.)

C tags

• 幫我們快速找到變數和函數宣告的地方 !

• apt-get ctags 即可安裝

• 產生檔案列表 :find . –name “*.c” –o –name “*.h” > ctags.files產生 index : ctags –L ctags.files

• 使用 :

Ctrl + ] … 跳到 function body( 可跨檔案 )

Ctrl + t … 回到上一次

:help tags … 查看說明

Page 9: trace code tool 以及人月神話

Vim + plugin (cont.)

C s c o p e

• 可以看成是 Ctags 的加強版 !

• 下載 cscope_maps.vim 到 ~/.vim/plugin 即安裝完成

• 產生檔案列表 :find . –name “*.c” –o –name “*.h” > ctags.files產生 index : ctags –bq –i ctags.files

• 使用 :

:cs find … 搜尋 functon ( 還有很多功能 )

Ctrl + O … 回到上一次

:help cscope … 查看說明

Page 10: trace code tool 以及人月神話

Vim + plugin (cont.)

taglis t

• 讓 vim 出現新分割視窗協助搜尋 ( 加強 ctags 功能 本質上仍是 ctags)

• apt-get excberant-ctags 並下載 taglist.vim 到 ~/.vim/plugin 即安裝完成

• 產生檔案列表以及產生 index 同 ctags

• 會列出該檔案中所有變數以及函數名稱

• 使用 :

:TlistToggle … 開啟輔助視窗

Ctrl + w + [←|→] … 切換視窗方式

Page 11: trace code tool 以及人月神話

Vim + plugin (cont.)

glo b al

• 可和 vim 結合 但比較特別的是可以產生網頁格式的樹狀結構網頁 !

• 支援多種語言 (php, perl, pyhton, …)

• apt-get global 即安裝完成

• 在要產生程式碼樹的地方下 gtags 即可產生索引檔接著下 htags –Fnsa 產生程式碼樹 其後會看到 HTML 目錄

Page 12: trace code tool 以及人月神話

GUI tools

大致有下面幾種- Ks c o p e , Anjuta, Kd e ve lo p , …

大致上差異不大( 都宣稱和 s o urc e in s igh t 差不多強 )

geany – 一個在程式語法上加強的編輯器

Page 13: trace code tool 以及人月神話
Page 14: trace code tool 以及人月神話

人月神話 :軟體專案管理之道

1975 年初版1995 年發行紀念版

Page 15: trace code tool 以及人月神話

…我們常常碰到 容易 d e lay 而且有抓不完的 b ug

老闆或組長要你畫押進度 但是你不敢

不斷不斷的加班 持續很長的一段時間

意志消沈 不幸的事情一再發生

浪費時間 一堆聰明人淨幹些蠢事

…想逃但是逃不出來

Page 16: trace code tool 以及人月神話

「對航海的人來說 擱淺的船就是燈塔」< 荷蘭諺語 >

但是「你所得到的權力並不足以承擔你所扛下的責任 」 < 管理學 >

把事情做好 得到更大的權力 承擔更大的責任

Page 17: trace code tool 以及人月神話

…焦油坑

Page 18: trace code tool 以及人月神話

…有些糟糕的事情總會發生 一切都會進行的順利 ! …真的嗎

… 雖然畫押了 但我真的做的到嗎 ?

人月神話 !!!

Delay 了 ! 快來人啊啊啊啊啊啊啊啊啊 !!!!

Page 19: trace code tool 以及人月神話

… 事實上Brooks 定律「在一個已經 delay 的 project 中增加人手

只會讓他更落後 !」

「人月神話」的迷思 花費的時間

- 專案有多少連續性限制投注的人力

- 可以被切分成多少獨立的子工作

Page 20: trace code tool 以及人月神話

… 優秀的團隊 ? 程式設計師間的生產力差異極大 !

經驗多寡 … 影響不如想像中大

兩難在於要兼顧工作效率跟概念整體性

H arle n Mills 的架構- 如外科手術團隊- 短小精悍的團隊比較棒

Page 21: trace code tool 以及人月神話

所以要專制還是民主 ?

保持概念整體性最好的方式就是其出自少數人的一致決定

架構是「做什麼」而實做是「如何做」

「第二系統」的出現 !

Page 22: trace code tool 以及人月神話

巴別塔為何失敗 ?

根據記載 巴別塔成功的條件明確目標 有人力 很多材料 足夠時間 沒有限制技術 足夠

缺少的是溝通和組織 !

Page 23: trace code tool 以及人月神話

要是失敗了該怎辦 ?不需要煩惱是否該先做一個試探性的系統

然後將之丟棄 目的只是吸收經驗因為你一定會丟掉第一次做出來的東西「把必然的一次失敗納入正式計畫之中」

放心 !

現在在你面前的 s p e c 一定會改變 !

Page 24: trace code tool 以及人月神話

…失敗失敗失敗 修好的 b ug 很可能會導致其他 b ug 出現 !

Pas c al :

「任何事物總是在最一開始的時候最完美」

Page 25: trace code tool 以及人月神話

…大災難啊為什麼專案會落後一年

因為每次都落後一天

程式除了寫給電腦看之外 也是寫給人看的請維持良好的寫作習慣 !

Page 26: trace code tool 以及人月神話

有沒有銀彈 !?

軟體開發的本質性和附屬性

因為本質性 大幅提昇開發速度有難度

軟體是人寫的 不是上帝 !

Page 27: trace code tool 以及人月神話

人月神話二十年勿忘初衷 !

架構設計師要綜觀全局而非細節

社會性問題通常超過技術性問題

一些反思- 即使知道這些 開發真能變得更順利 ?

- 真的沒有銀彈 ??