Android 核心分析 之一:分析方法論探討之設計意圖
0
Android 核心分析 之一:分析方法論探討之設計意圖
分析方法論探討之設計意圖為什麼要研究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)從分析系統數據流和控制流分析出發。
從設計者意圖出發,得出系統原型,提取到大的邏輯結構和系統構成是第一步。之後我們可以從設計者的角度考慮系統猜想系統設計,為什麼要這樣設計,為什麼要有這些構成。這樣的基本原型是什麼?系統的限制是什麼,應用場景有哪些,有些設計的引進還是系統收斂性而為之呢。我們還可以從代碼痕跡上去分析,這些概念是如何的得來的?從一定的抽象和高度去理解這些問題,遵循系統原型出發之原則,在深入分析代碼的時候,就不容易陷入細節中。我們就可以隨時跳出來想,這些代碼在整體上載表達一個什麼概念,在描繪一個什麼邏輯,他要構成一個虛擬層嗎?他是在管理這個硬件嗎?他在 虛擬這個對象嗎?他在構建管理機構?還是在構建一個對象管理?空間管理,為了快速引入了什麼樣的復雜算法,實際上的原型算法應該是什麼樣的?
只有深入到這個抽象層次,我們才能很好的把握住系統的每一條線,每一個對象的意義。只用從原型出發,我們才能把握住這個系統的實質所在,在干什麼?他要表達什麼?設計者為什麼要這樣想?最終極的想法是什麼?這樣,代碼分析就變得簡單明了,讀代碼就變成了是在印證猜想,修正方向。
引用 maxleng