2007年2月4日 星期日
[Book] Practice of Programming
1. Style.
Names.
Expressions and Statements.
Consistency and Idioms.
Function Macros.
Magic Numbers.
Comments.
Why Bother?
2. Algorithms and Data Structures.
Searching.
Sorting.
Libraries.
A Java Quicksort.
O-Notation.
Growing Arrays.
Lists.
Trees.
Hash Tables.
Summary.
3. Design and Implementation.
The Markov Chain Algorithm.
Data Structure Alternatives.
Building the Data Structure in C.
Generating Output.
Java.
C++.
Awk and Perl.
Performance.
Lessons.
4. Interfaces.
Comma-Separated Values.
A Prototype Library.
A Library for Others.
A C++ Implementation.
Interface Principles.
Resource Management.
Abort, Retry, Fail?
User Interfaces.
5. Debugging.
Debuggers.
Good Clues, Easy Bugs.
No Clues, Hard Bugs.
Last Resorts.
Non-reproducible Bugs.
Debugging Tools.
Other People's Bugs.
Summary.
6. Testing.
Test as You Write the Code.
Systematic Testing.
Test Automation.
Test Scaffolds.
Stress Tests.
Tips for Testing.
Who Does the Testing?
Testing the Markov Program.
Summary.
7. Performance.
A Bottleneck.
Timing and Profiling.
Strategies for Speed.
Tuning the Code.
Space Efficiency.
Estimation.
Summary.
8. Portability.
Language.
Headers and Libraries.
Program Organization.
Isolation.
Data Exchange.
Byte Order.
Portability and Upgrade.
Internationalization.
Summary.
9. Notation.
Formatting Data.
Regular Expressions.
Programmable Tools.
Interpreters, Compilers, and Virtual Machines.
Programs that Write Programs.
Using Macros to Generate Code.
Compiling on the Fly.
Epilogue.
Appendix: Collected Rules.
Index. 020161586XT04062001
數位學習-財團法人自強工業科學基金會
http://edu.tcfst.org.tw/E_learning/semiconductor.asp?etype=de14
http://edu.tcfst.org.tw/E_learning/semiconductor.asp?etype=de12
Driver Development
This section provides links to helpful resources for Driver Development.
Architecture Independent Articles
- Introduction to Device Drivers
- Linux Driver Model
- Device Classes
- Basic Char Driver
- Basic Open / Close Functions
- Basic Read / Write Functions
- Basic Driver Completion
- Basic Driver Configure and Build
- Advanced Device Driver Topics
- Network Device Drivers
- uClinux 2.6.x Kernel API
- Basic Block Drivers
- Block IO Subsystem
- IO Schedulers
- Kernel Objects
2007年2月3日 星期六
CMMI / TSP / PSP為相輔相成的機制
CMMI / TSP / PSP為相輔相成的機制
財團法人資訊工業策進會 林栩傑 整理
一、前言
CMMI是一個致力於組織流程改善的架構,由於CMMI並未提供有關實施CMMI各流程領域所需的知識和技能,因此美國Carnegie Mellon大學軟體工程研究所(CMU/SEI) 以W. S. Humphrey為首主持研究開發了個人軟體流程PSP(Personal software process)和團隊軟體流程TSP(Team Software Process),形成CMMI/PSP/TSP體系。根據近年來國際軟體流程理論與實踐的發展,目前著重在CMMI、PSP和TSP以及ISO軟體流程標準等方面的研究工作,根據專家學者建議,軟體流程的改善應該從三方面著手進行:
n 能力成熟度整合模式CMMI(Capability Maturity Model Integrated)
n 個人軟體流程PSP (Personal Software Process)
n 團隊軟體流程TSP(Team Software Process)
二、CMMI、PSP、TSP為相輔相成的機制

CMMI、PSP和TSP組成的軟體流程架構
n CMMI是流程改善的第一步,它可評鑑組織的能力、識別優先改善需求和追蹤改善進展的管理方式。企業只有開始CMMI改善後,才能接受需要規劃的事實,認識到品質的重要性,才能注重對員工經常進行培訓,合理分配專案人員,並且建立起有效的專案小組。然而,其實施的成功與否與組織內部有關人員的積極參與密不可分。
n PSP能夠指導程式設計師如何確保自己的工作品質,估計和規劃自己的工作,度量和追蹤個人的表現,管理自己的軟體流程和品質。經過PSP學習和實踐的正規訓練,程式設計師們能夠在他們參與的專案工作之中充分運用PSP,從而有助於CMMI目標的實現。
n TSP結合了CMMI的管理方法和PSP的工程技術,告訴程式設計師如何將個人流程結合進團隊軟體流程,並將後者與組織的整個管理系統相聯繫;告訴管理層如何支援和授權專案小組,堅持高品質的工作,並且依據資料進行建構管理,向組織展示如何應用CMMI的原則和PSP的技能去生產高品質的產品。
n CMMI/TSP/PSP代表了目前國際上軟體流程工程研究方面最先進的成果,它們對促進軟體產業的科學化管理,與提高軟體生產力意義重大。
n 要使一個軟體流程對軟體生產的改善真正有所幫助,其架構應是由CMMI、TSP和PSP組成的一個完整體系,即從組織、團隊和個人三個層次進行良好的軟體工程管理模式。換言之,單獨實施CMMI,無法真正做到能力成熟度的升級,只有將CMMI與PSP和TSP有效的結合,才能發揮最大的效力。
三、PSP概述
個人軟體流程(Personal Software Process ,PSP)是在1995年由美國Carnegie Mellon大學軟體工程研究所(CMU/SEI) Watts s. Humphrey領導開發;W. S. Humphrey同時也是SEI研發CMMI團隊的主持人。PSP是一種可用於控制、管理和改進個人工作方式的自我改善過程,是一個包括軟體發展表格、說明的結構化架構。 PSP為基於個人和小型團隊軟體流程的最佳化提供了具體有效的途徑,如制訂計畫、控制品質、其他人合作等等。在軟體設計階段, PSP的著眼點在於軟體缺失的預防,其具體辦法是強化設計的準則,而不是設計方法的選擇。根據對大陸參加PSP培訓的104位元軟體人員統計資料,在應用了PSP後軟體中總缺失減少了58.0%,在測試階段發現的缺失減少了71.0%,生產效率提高了20.0%。PSP的研究結果還發現,絕大多數軟體缺失是由於對問題的錯誤理解或簡單的錯誤所造成的,很少是因為技術問題而產生的。而且根據多年來的軟體工程統計資料發現,如果在設計階段埋下一個缺失,則這個缺失在程式設計階段引會發3到5個新的缺失,要修復這些缺失所花的費用要比修復這個設計缺失所花的費用增加了相當的成本。因此實施PSP為確保軟體品質的一個重要途徑,尤其是要提高軟體設計的品質。
3.1 PSP的現況
n 從1993年開始,美國、歐洲、澳洲等地已先後有20多所大學開設PSP課程。
n 在產業界,PSP也先後被Motorola、 HP、 AIS等公司採用,以Navy and Marine Corps為例,使用PSP進行以CMM為基礎的流程改善,從成熟度第一級到第四級只花30個月,而大部分的機構需要72個月的時間。SEI協助ABB導入PSP,在第一個應用PSP的專案中,交付時程提前6.9%,系統測試每千行只發現44個缺失,比原先系統減少10倍缺失。
n 中國大陸北航軟體工程研究所於1997年開始,在北航電腦科學與工程系率先開辦了PSP課程,並成立PSP的實驗應用。
3.2 PSP的內容
PSP與工程的技術(程式設計語言、工具或者設計方法等)沒有直接的關係,幾乎能應用到所有軟體工程的工作中。PSP能提供:
1. 個人軟體流程原則的說明
2. 程式設計師作出準確的計畫
3. 程式設計師在改善產品品質所需採取的步驟
4. 度量個人軟體流程改善的基準
5. 流程的改變對程式設計師能力的影響
3.3 PSP的效益
n 使用由下而上的方法來改進流程,讓每個程式設計師了解流程改進的原則,使其了解如何有效生產高品質的軟體
n 為個人和小型團隊軟體流程最佳化提供了具體有效的途徑。彌補在實施CMMI各流程領域所需知識與技能的空白。
n 幫助程式設計師在個人的基礎上運用流程的原則,借助PSP提供的度量和分析工具,瞭解自己的技能水準,控制和管理自己的工作方式,使自己日常工作的估計、規畫和預測更加準確更有效率,進而改進個人的工作表現,提高個人的工作品質和產量。
四、總結
CMMI如同軟體廠商的一面鏡子,用來衡量組織以反映出組織發展的水準及能力,改進軟體發展流程。建議組織在推動流程改善的同時,以CMMI為基礎架構,從PSP先做起,然後在此基礎上逐漸轉換到TSP,循序漸進以確保基礎的穩定,對於日後CMMI高成熟度的提升有正面的幫助。
產測前須知
硬體:
1.DUT的介紹/目前的硬體狀況(全部/部份)
2.GPIO/BUS/I2C/SPI EEPROM
3.硬體提供甚麼.
軟體:
1.該資料的DATA STRUCT
2.軟體如何最做?
會議:
1.記錄該產品在產測使的任何有關事情
2.會議記錄檔 txt/doc/pdf files
3.取得最後該DUT產測的動作. (沒有共識再下次討論)
自己想法:
一個產品不管重頭到尾,都應該有一次以上,大家做在一起,以該階段的工作事情內容來討論
以確保該產品的一致性.
不要太隨便/也不能僵硬
CMMI 是甚麼?

CMMI 是甚麼?能力成熟度整合模式(CMMI)是由Carnegie Mellon 大學的「軟件工程學院」(Software Engineering Institute) 發展出來的一套有組織的流程改善方法,用以管理專案、部門以至整個機構。CMMI 幫助整合傳統上分開的機構功能、訂立流程改善目標和優先次序、為推行優質流程提供指引、及為評估現行流程提供參考。
CMMI 受全球認可,現時集中在 4 個知識領域上:系統工程、軟件工程、整合的產品及流程發展、和供應商管理。CMMI 為不同的機構提供一個作同等比較的基準,亦為整個機構的流程改善提供一個有組織的展望。
CMMI 模式分連續式(continuous)或階段式(staged)表述。推行 CMMI 時,機構需選擇採用哪種表述方式外,還需決定哪些知識領域會受覆蓋。
http://www.ul.com.hk/b5/news_nl/2006-Issue18/page8.htm
2007年2月2日 星期五
有人對我說:妳的英文只能講給老外聽,寫給老外看
今天跟一位下學期打算邀我去演講的高中英文老師聊天,她看過
我許多本書,聊著聊著,她竟然說:「像妳這樣的英文深度,只能
講給老外聽,寫給老外看!」
她解釋道:「妳的英文只適合 native speaker, 台灣人不會
懂的。」
她還說,連英文老師恐怕也不知道要如何改我的英文作文。她
居然認為我用的是高級知識份子的英文,在台灣是行不通的!
那我該怎麼辦?刻意降低程度,使用淺薄的英語,以適應台灣
環境?我當場愣了一下。約愣了三秒鐘,我忽而醒了過來,回答她:
「可是,我們學英文本來就是要跟老外溝通的,又不是要講給
自己人聽,或寫給自己人看的。」
如果我要跟台灣人講話,我一定說國語,才不會故意說英語呢!
只有上周到 AIT 辦簽證,看那官員一臉華人長相,我一時不知該說
英語或國語好。可是,當他開始問問題:「妳去美國做什麼?」雖然
他說的是國語,我卻很自然的用英語回答:
"Just visiting."
我為什麼會這樣?
因為整個話題都是關於美國,一定會用到英文字彙,我的直覺
自然轉變成英文思維,這時候就不可能再說國語了。而我一向很不
習慣說話中英夾雜,所以要講英語就講英語,或要說國語就說國語;
我不喜歡〔半中半英〕或〔不中不西〕。
我想到有一回在台北君悅飯店用餐,在座有外交官陸以正等人。
陸以正編過字典,學養豐富,英文一流,然而用餐中,他也沒有講過
半個英文單字,可見當時他也是中文思維。
而且,我平常談版權,遣辭用字不可能太隨便,不然他們會以為
台灣人沒有什麼知識水平,這樣是要不到版權的。而我平常更沒機會
跟教育程度較低的老美來往,所以說一口有內容的英語,或寫優雅的
文章是有必要的。但老實說,我所用的英文都不是冷僻的英文,在電
視影集裡也常聽到劇中人這樣講話--而美國電視影集不就是給一般
人看的?可見我使用的英語就是一般英語而已。
學英文,本來就應該學到像個受過高等教育的人,如果只是簡單
幾句哈啦,用的都是草包英語 simple sentences, 那又何必學呢?反正
又派不上用場。而我的讀者,不少人的英文日益進步,他們都可以跟優秀
的老外共事,或到外商公司爭一席之地,這樣不是很好嗎?
反過來想,若一個學生按照正常語言學習方法,在高中畢業時,
英文聽讀說寫,早該綽綽有餘,像我在北歐碰到的青少年都是如此。
哪需要畢業以後重頭學英文呢?