Email me: jollen # jollen.org

more: Jollen 的 Embedded Linux 教育訓練

« May 2011 | (回到Blog入口) | July 2011 »

June 2011 歸檔

June 29, 2011

培養 Android 軟體人才: 從落實軟體工程教育開始

文/Jollen(原文刊載於零組件雜誌 2011 年 6 月號)

「開發 Android」是台灣科技業的全民運動了。未來幾年,如果要尋求更大的突破,並提升整體軟體開發能力,根本的做法與策略為何?個人看法是「落實軟體工程的基本教育」。以下是個人對於「軟體人才培養」的看法與心得,請不吝指教。

提昇 Android 軟體能量,我們的當務之急是:培養一批「架構分析」的工程師。架構分析需要考量的層面較廣,包括技術面與產品面。軟硬整合的工作,幾年前訴求的是硬體驅動程式與系統軟體,主要工作是效能的提昇與優化,這是從硬體層面思考的軟硬整合。從產品層面重新思考軟硬整合,涉及的層面會放大至中間軟體(Middleware、Application Framework)、應用程式(Application)以及網路服務等。

架構分析的重點工作之一,在於了解 Application Framework 與驅動程式(硬體)間的關係,使用各種現有的技術來整合系統,並提出更好的架構設計方案。架構分析的技術屬於「軟體工程」領域,而不是硬體或系統程式領域。但具備驅動程式與硬體經驗,可以幫助工程師找出更好的架構設計方法。

Android 是軟體框架的技術。台灣廠商得天獨厚的優勢在於,過去積累大量的IC設計、硬體主板、驅動程式與系統軟體經驗,若能補足軟體框架的分析與設計能力,未來競爭力將有很大的想像空間。因此,導入架構分析技術,培養架構分析工程師,理論上能讓我們發揮這項得天獨厚的能力,建立獨特的競爭力。這也是三星(Samsung)正在積極進行的工作。

落實軟體工程教育是根本,必須從教育做起。軟體工程所討論的「軟體框架」就像資訊科學的「位元運算」一樣,屬於通識學科。軟體框架技術,重度依賴這些基礎學科:物件導向(OO)、物件導向語言(OOP)、物件導向分析與設計(OOAD)、分層架構設計、設計模式(Design Patterns)等,這些知識缺一不可。

軟體框架 (Software Framework ) 的四大特性

以下針對軟體框架做簡單的說明,以做為研究「軟體框架」的起步點。軟體框架具備四項特性:控制點反轉、預設行為、不可修改性與擴充性。第一、控制點反轉(Inverse of control),整體來看,控制應用程式執行流程的人,是軟體框架,而不是應用程式本身的函數呼叫關係。這與一般循序式的結構化語言(如:C語言)很不同。

第二、預設行為(default behavior),軟體框架本身都有預先設定好的行為。這些行為通常都是預先定義好後,才釋出軟體框架。所謂的「行為」範圍廣大,例如同步呼叫、非同步呼叫、阻塞式I/O等。

第三、不可修改性,這是軟體框架相當重要的觀念。以 Android 為例,其 Application Framework 的程式碼「不能」修改,開發者「不能直接改 Code」。意思是我們下載 AOSP(Android Open Source Project)程式碼後,不能直接修改框架層的程式碼。若直接修改 Android 應用框架程式碼,在編譯時期便會出現警告訊息。直接修改 Android 應用框架程式碼也會造成 API 相容性的問題,可能無法通過 CTS,導致產品無法上市,不可不重視。

最後是擴充性,在不能直接修改軟體框架的前提下,我們如何「加入自已的功能」至 Android 框架呢?正確的方法是以覆載(override)方式進行擴充(extend)。覆載是物件導向領域的基本知識,也是開發 Android 應用框架的重要技術。撰寫「應用程式」補上軟體框架所沒有的功能,也是「擴充性」的另外一個做法。現在正在進行 Android 開發工作的我們,具備這四個基本觀念了嗎?從以上的介紹便能發現,未來如果要在 Android 應用框架開發上有所突破,軟體工程教育就必須要落實,畢竟這是軟體開發的基本學科。

關於 June 2011

此頁面包含了在June 2011發表於Jollen's Blog的所有日記,它們從老到新列出。

前一個存檔 May 2011

後一個存檔 July 2011

更多信息可在 主索引 頁和 歸檔 頁看到。

Top | 授權條款 | Jollen's Forum: Blog 評論、討論與搜尋
Copyright(c) 2006 www.jollen.org