分析方法論探討之設計意圖
為什么要研究Android,是因為它夠龐大,它夠復雜,他激起了我作為一個程序員的內心的渴望,渴望理解這種復雜性。我研究的對象是作為手機開發平臺的Android軟件系統部分,而不是Dalvik虛擬機本身。
作為一個從其他平臺裝接過來的程序員,要從事Andoid平臺系統開發,我的關于手機平臺上積累的知識已經不能滿足需要了,Android為我們帶來了大量的新名詞,Activity,Manifest,INTENT,Service,Binder,Dalvik虛擬機,Framework,Linux,Navtive?,JNI.....。通過在源代碼,在開發社區,在開發博客,甚至在招聘過程中,我不斷的尋求Android是什么。經過一定時間的沉淀,我慢慢的理解到Android不僅僅是一類手機的總稱,不僅僅是一個手機開發平臺,不僅僅是一個虛擬java操作系統,不僅僅是一個開發社區,一個開發標準,不僅僅是一堆代碼,Android已經成了一個新的潮流。
代碼多,系統復雜,縱觀社區中Android的研究者,一開始從源代碼分析Android就走向迷途,不斷的跋山涉水,向縱深沖刺,最終腦袋堆棧不夠用,迷失在開始的旅程,或者掛在半途中,鮮有通達者。我感覺到大部分的研究者總是忘記站在高山上向下望一望設計者的意圖,一味的隨著代碼的控制流走入繁雜的謎團,陷入到復雜性的深淵。
我的研究分析是從設計者的意圖出發,從抽象的甚至從哲學的高度,從最簡單的系統原型開始,從設計猜想開始,而不是一開始就從代碼分析展開。首先理解Android大的運行框架,主干流程,系統原型,之后再用源代碼分析充實之。當然我這里的設計者意圖并不是真正的Android設計者意圖,而是我以為的Android設計者意圖。
要理解設計者意圖,就需要抽象。我們需要在哲學意義空間中去考慮系統的描述,即系統在本質上要表達什么。在邏輯空間上去考慮系統基本構成和動態結構。從現實到虛擬對象的映射去理解系統對象的組成,在從數據流的角度分析數據的產生者和消費者之間作用關系,從控制流的角度去分析對象之間的交互關系,從函數調用去分析具體的層次關系。
在系統設計上,原型是最能表達哲學空間和邏輯空間中系統本質的東西,原型是事物本質的第一層體現。我以為任何復雜的系統都一個簡潔的系統原型,都有它簡潔的意義。系統原型是設計者意圖的第一體現,所以我們需要從幾個方向上去提煉系統原型:
(1)從系統本質和基本原理出發
(2)從分析系統數據流和控制流分析出發。
從設計者意圖出發,得出系統原型,提取到大的邏輯結構和系統構成是第一步。之后我們可以從設計者的角度考慮系統猜想系統設計,為什么要這樣設計,為什么要有這些構成。這樣的基本原型是什么?系統的限制是什么,應用場景有哪些,有些設計的引進還是系統收斂性而為之呢。我們還可以從代碼痕跡上去分析,這些概念是如何的得來的?從一定的抽象和高度去理解這些問題,遵循系統原型出發之原則,在深入分析代碼的時候,就不容易陷入細節中。我們就可以隨時跳出來想,這些代碼在整體上載表達一個什么概念,在描繪一個什么邏輯,他要構成一個虛擬層嗎?他是在管理這個硬件嗎?他在虛擬這個對象嗎?他在構建管理機構?還是在構建一個對象管理?空間管理,為了快速引入了什么樣的復雜算法,實際上的原型算法應該是什么樣的?
只有深入到這個抽象層次,我們才能很好的把握住系統的每一條線,每一個對象的意義。只用從原型出發,我們才能把握住這個系統的實質所在,在干什么?他要表達什么?設計者為什么要這樣想?最終極的想法是什么?這樣,代碼分析就變得簡單明了,讀代碼就變成了是在印證猜想,修正方向。
- 前言
- (一)分析方法論探討之設計意圖
- (二)方法論探討之概念空間篇
- (三)手機之硬件形態
- (四)手機的軟件形態
- (五)基本空間劃分
- (六)IPC框架分析 Binder,Service,Service manager
- (七)Service深入分析
- (八)Android 啟動過程詳解
- (九)Zygote Service
- (十)Android GWES之基本原理篇
- (十一)Android GWES之消息系統
- (十二)Android GEWS窗口管理之基本架構原理
- (十三)Android GWES之Android窗口管理
- (十四)Android GWES之輸入系統
- (十五)Android輸入系統之輸入路徑詳解
- (十六)Android電話系統-概述篇
- (十七)電話系統之rilD
- (十八)Android電話系統之RIL-Java
- (十九)電話系統之GSMCallTacker
- (二十)Android應用程序框架之無邊界設計意圖
- (二十一)Android應用框架之AndroidApplication
- (二十二)Android應用框架之Activity
- (二十三)Andoird GDI之基本原理及其總體框架
- (二十四)Android GDI之顯示緩沖管理
- (二十五)Android GDI之共享緩沖區機制
- (二十六)Android GDI之SurfaceFlinger
- (二十七)Android GDI 之SurfaceFlinger之動態結構示意圖
- (二十八)Android GDI之Surface&Canvas