Luba Tang CEO Founder of Skymizer Inc Together
Luba Tang CEO & Founder of Skymizer Inc. Together, we make difference
About Me – Luba Tang § § § BS. , CS department, NTHU, Taiwan MS. , CS department, NTHU, Taiwan Ph. D Candidate, CS department, NTHU, Taiwan v Architect of GYM iterative compiler, Marvell Processor R&D Dept. – the most efficient iterative compiler in the world v Architect of MCLinker, Media. Tek CTO/CIT Dept. – the fast, smallest and the first modular linker in the world – Adapted in Android Native Development Kit v Co-founder and organizer of Hsinchu Code Serfs Meeting. v CEO and Founder of Skymizer Inc. (臺灣發展軟體科技) 唐文力 Luba Tang CEO & Founder of Skymizer Inc. Compiler and Linker/Electronic System Level Design
Outline • 軟體開發流程 • 進入職場前的準備 唐文力 Luba Tang CEO & Founder of Skymizer Inc. Compiler and Linker/Electronic System Level Design
SW is more costly than HW • In recent 5 years, software is 3 times costly than hardware • Software aspects of IC design can now account for 80% or more of embedded systems development cost
Embedded System Suffers from Design Gap
Challenges in Modern Embedded Software n Implement a large, various and variant embedded system Ø Shrinking time-to-market for short life cycle of a product • 10~15 months for releasing • 6~12 months for being on the shelf Ø Changing requirement • x 2 new devices per 10 months Ø Coordinate with more than 6 teams coming from different backgrounds Ø Heavy workload • 250 K Line of code for self product • 1 M Line of code in total system Ø High reliability
Everyth ing abo ut DES IGN be Esp. So comes ftware import Engine ant ering
專案開發的時間表 (2/2) n 總時間 l 第二次release之後,每隔N週要release一次 • Linux kernel中,N=8~12 n 個別時間 24 hours Release 1 24 hours Release 2 24 hours Release 3 Release 4 依專案慣性 4~8週
Project Vision n 內容 – – 我們要做甚麼? 為什麼要做這件事? 投資報酬 失敗風險 n 例子 – 將simulation instruction相關資訊放入SQL資料庫中, 以利下列操作 1. 2. 3. 方便閱讀simulation instruction內容 自動生成simulation instruction的header與implementation files 方便修改、新增simulation instruction的內容
Example
Pair Programming n 優點 – – – 降低溝通成本 自然導入unit test 減少trivial fault 提升programmer素質 不需要額外的peer review n 執行方法 – 每個人是code owner,同時也是他人的code tester – 兩人為一組,每 1~2週輪換一次 n 在實驗室當中,pair programming的效率比single programming高
UML Scenario
架構設計的步驟 n 從最粗糙到最精細 – Software Stack (必要) – CRC (非必要) – Work-Breakdown-Structure (必要) – UML Object diagram (必要)
Example Level 2 dependency graph Level 3 dependency graph
Too Old Problem n Host – 提供函式庫的專案 n Dependant – 使用函式庫的程式 n Too Old Problem – Host提供的函式庫版本太舊 Dependant 需要 version 3 Host Version 2
Too New Problem n Host所提供的函式庫太新 需要 version 3 Dependant Host V 3 Host V 4 改成 version 6,可能嗎? Host V 5 Host V 6
Dependency Checking n 最常見 dependency checker 為. /configure script n Dependency checker 產生器有 Open Source 的 – Autoconf – Cmake n Dependency checker 會 Top-down 的檢查函式庫 版本以及系統環境 程式或 函式庫 Is v 2? Is v 6? Is v 3? stdlib Qt math
Global Version n n 解決太舊的問題 將所有的project設定一個版次號碼 規定所有的 dependant的版次必須要小於等於host的版次 最上層的dependant為global version Global version Main V 2 Qt V 5 Stdlib V 6 Pthread V 7 Math V 3
Local Version n 解決太新的問題 n 這是從少數客戶擴張到多數客戶的關鍵 需要 version 3 Dependant 開分支 (branch) Host V 3 -1 Host V 3 -2 合併 (merge) 版次跳躍 Host V 4 Host V 5 Host V 6
Version Threads 2. 3 -1 2. 3 -2 Local Versions 2. 3 2. 4 -1 2. 4 2. 5 2. 6 -1 2. 6 2. 7 Global Versions
Software Versioning n 功用 – 對外做為看板,告知客戶目前專案的stage of life cycle – 對內做為進度管理,得知目前release status • Point release • Major release
Stage of Life Cycle 2 In House 0 1 Beta Customer testing Alpha Internal testing Pre-alpha developing 3 4 5 GA Success in Market RTM Release to Market RC Release Candidate In Market
Release Status n Point release – 為了bug-fix經常且快速的release n Major release – 為了new feature告知客戶應做更新 2. 6. 1 2. 7 major point 2. 6. 1 2. 8 2. 6. 1 2. 9
Case Study 1 – Direct. FB n Format – [Major]. [Minor]. [Micro]. [IF_Age]. [Bin_Age] n Major release – [Major]. [Minor] n Point release – [Micro] n Release Status – [IF Age]. [Bin Age] n Release的規則不固定,隨喜好進版。 n 進版規則 – Existing interface changed => IF Age = 0 – Binary interface changed => Bin Age = 0 – Bug-fixed or new feature => Micro += 1
Case Study 2 – Linux Kernel 2. 6. 11+ n Format – [Major]. [Patch Level]. [Minor]. [Bug-fixed] n 改進以往 release方式(2. odd/2. even),利用多個 source tree來增加patch進入mainline的效率 Source tree Versioning Meaning Mainline 2. 6. X/2. 6. X-rc. Y Developing source tree Stable 2. 6. X. Y For bug-fix Legacy 2. 6. X. Y-1 1 version old stable Mm Integration tree, for new feature Ck/Rt Improve performance
Linux kernel version threads 2. 6. 11. 1 2. 6. 11. 2 stable 2. 6. 11 2. 6. 12 2. 6. 13 2. 6. 14. 1 2. 6. 14 2. 6. 15 MM Mainline
Proposed Release Engineering 3. 1. 1 3. 1. 2 stable 3. 1 3. 2 3. 3 3. 4. 1 3. 4 3. 5 Release Stable Developing
Optimize in the Sky Together, we make difference
- Slides: 61