1. 程式人生 > >軟體工程與個人專案的結合

軟體工程與個人專案的結合

我們做產品與專案的,必須要知道該產品的價值,我們要做的是價值的調研,我們的智慧餐廳要深入到餐廳中去詢問,跟開餐廳的人瞭解,餐廳有餐廳的具體需求,不是你憑空想想就能完成的,所以做社會調研這一塊是很重要的額

然後,我們詳細的瞭解一下專案的背景,這對我們專案的開展功能很重要。
我們在研究了背景之後,我們要做一下可行性分析報告,我們的技術是否可行,我們能不能解決?我們組建的團隊能否解決這些問題,不可能解決的話咋辦?這些都是作為一個專案產品經理要去弄明白的東西。

假設風頭給了你500萬,你將會怎麼用?
開發成本要考慮吧?其中包括人員成本,外包吧,開發週期一年吧,所以經常會有老闆會去催進度,因為老闆為了節省成本,必須要做的就是計算每一筆錢的支出,只有這樣精打細算過後的指出才算一個完整的規劃。
我們要考慮其中的生產成本等等方面,因為假設是計算機硬體產品,它自身的生產就是存在成本的,怎麼樣才能縮短生產成本,這是值得深思的,除此之外還有其中的推銷成本,怎麼樣讓別人使用上你的產品,推銷很重要的

作為一個老總,我們總是要計算多長時間過後才能收回成本的吧,換一種角度就是,究竟要賣出多少產品才能使自己的產品盈利。在這些都弄完了之後,我們要完成的是組建成員,其中就包括找硬體還是軟體的同學一起做專案,或者是找美術系的同學做UI,找數學系的弄演算法,最後找外語系的弄英語文件,經管系的做市場調研和推銷。就這樣我們的團隊搭建好了之後,我們要做的事,就是做需求分析,好的需求分析一定是站在使用者的角度看問題,計算機解決使用者的痛處,解決問題,創新,對使用者群進行分析。

現在我們的專案是進入了快速開發階段,就是需求是可以不斷的修改的,主要是隨著我們認識的不斷深入,然後會不斷的修改需求的。在這個階段就是應用程式先做UI部分,如果UI跟不上的話,再說。彷彿又聽到了,怪我咯。。。

資料庫的設計,其實就是資料結構的設計
流程圖的重要性不言而喻,我們是很看中流程圖的。這是演算法的體現。
軟體測試,功能測試。

今天課上,老唐講了關於APP耗電的設計,這個問題是我之前就有略微的想過的,但是一直不知道怎麼樣才能簡化程式碼,起到減少專案耗電的問題。後面的文章會注意再次提出來的解決的。

提到了go 語言,將會替代C,成為未來開發伺服器的語言
erlang語言,百度和阿里會用到,現在學了也用不上。
使用Linux命令reboot -p來完成立即關機的功能。
使用修改開機項,直接載入那個專用APP。
使用系統自帶的英語,省去的麻煩。
安卓的系統開機時間是很久的,這一部分還沒有接觸到。
怎麼樣實現串列埠通訊,使用視窗助手來除錯。
聊到安卓的刷機技術的應用,就是找bug。
系統無緣無故彈出的報錯對話方塊

以下解決的是如何縮短安卓的開機時間
可以從以下幾個方面來縮短開機時間。
1、Bootloader時間縮減
2、Kernel時間縮減
3、System server時間縮減
4、裁剪apk

一、縮減bootloader的時間。 bootloader用的時間比較少。一般不做修改。
二、縮減kernel時間 縮減系統載入的驅動。去掉那些不用的驅動程式。
三、裁剪載入的system server 裁剪系統自動載入的server。
四、裁剪系統開機apk 根據需求去掉不用的apk,能大大縮短系統的開機時間。
下面是系統常用apk的功能和裁剪記錄。
Apk裁剪記錄

ApplicationsProvider.apk,應用程式儲存、 程式管理器,可裁剪
BackupRestoreConfirmation.apk,設定->備份和重置 可刪除,可刪除
Bluetooth.apk 藍芽,前期可刪除
Browser.apk 瀏覽器 ,可刪除
Calculator.apk 計算器, 可刪除
Calendar.apk日曆, 可刪去
CalendarProvider.apk日曆儲存 ,可刪除
CertInstaller.apk,證書安裝管理,可刪除
ChromeBookmarksSyncAdapter.apk ,Chrome的書籤同步,可刪除
Chrome.apk ,Chrome瀏覽,可刪除
ConfigUpdater.apk ,配置更新, 可刪除
Contacts.apk ,聯絡人, 可刪除
ContactsProvider.apk , 聯絡人儲存 ,可刪除
DefaultContainerService.apk 軟體包訪問 ,刪除後,安裝新apk會有問題,也會影響storage。
DownloadProvider.apk ,下載提供服務 ,可刪除
DownloadProviderUi.apk ,下載管理的UI服務 ,可刪除
DrmProvider.apk ,受保護資料儲存服務 ,可刪除
Email2.apk ,,email ,可刪除
Exchange2.apk ,電子郵件的服務, 可刪除
FaceLock.apk ,人臉解鎖, 可刪除
FileExplore.apk FusedLocation.apk ,4.2新增 ,不可刪除,
Galaxy4.apk ,桌布 ,可刪除
Gallery2.apk ,圖片瀏覽 ,暫時不刪除
GenieWidget.apk ,天氣 ,可刪除
Gmail2.apk ,Gmail, 可刪除
GmsCore.apk ,GMS認證相關 ,可刪除
GoogleBackupTranspo,谷歌備份傳,可刪除
GoogleCalendarSyncAdapter.apk ,Google日曆同步服務 可刪除
GoogleContactsSyncAdapter.apk ,聯絡人同步 可刪除
GoogleLoginService.apk , Google賬號登陸服務 可刪除
GooglePartnerSetup.apk ,谷歌合作伙伴 可刪除
GoogleServicesFramework.apk谷歌服務構架 可刪除
GoogleTTS.apk,文字轉語音(可刪) 可刪除
HoloSpiralWallpaper.apk ,Holo桌布 可刪除
HTMLViewer.apk ,HTML檢視器(可刪) 可刪除
InputDevices.apk ,OTG的U盤以及接入PC後,能夠讓電腦讀出手機儲存卡的一個程式 ,暫時不刪除
KeyChain.apk ,密碼管理服務 可刪除
LatinImeDictionaryPack.apk ,詞典大全(可刪) 可刪除
LatinImeGoogle.apk ,安卓鍵盤(可刪) 可刪除
Launcher2.apk , 主介面, 不可刪除
LiveWallpapers.apk, 動態桌布 可刪除
LiveWallpapersPicker.apk , 動態桌布 可刪除
MagicSmokeWallpapers.apk , 煙霧桌布 可刪除
MediaProvider.apk,媒體儲存 暫時刪除
MusicFX.apk ,音樂音效(可刪)可刪除
NetworkLocation.apk ,提供網路位置(可刪) 可刪除

Android的開機流程
系統引導bootloader
1) 原始碼:bootable/bootloader/*
2) 說明:加電後,CPU將先執行bootloader程式,此處有三種選擇
a) 開機按Camera+Power啟動到fastboot,即命令或SD卡燒寫模式,不載入核心及檔案系統,此處可以進行工廠模式的燒寫
b) 開機按Home+Power啟動到recovery模式,載入recovery.img,recovery.img包含核心,基本的檔案系統,工程模式燒寫
c) 開機按Power,正常啟動系統,載入boot.img,boot.img包含核心,基本檔案系統,正常啟動手機(以下分析正常啟動)

核心kernel
1)原始碼:kernel/*
2) 由bootloader載入

檔案系統及應用init
1) 原始碼:system/core/init/*
2) 配置檔案:system/rootdir/init.rc,
3)init是由核心啟動的使用者級程序,它按照init.rc中的設定執行:啟動服務(指linux底層服務,如adbd提供adb支援,vold提供SD卡掛載等),執行命令和按其中的配置語句執行相應功能

重要的後臺程式zygote
1) 原始碼:frameworks/base/cmds/app_main.cpp等
2) zygote是在init.rc中被指定啟動的服務,該服務對應的命令是/system/bin/app_process
a)建立Java Runtime,建立虛擬機器
b)建立Socket接收ActivityManangerService的請求,用於Fork應用程式
c) 啟動System Server

系統服務system server
1)原始碼:frameworks/base/services/java/com/android/server/SystemServer.java
2)被zygote啟動,通過System Manager管理android的服務(這裡的服務指frameworks/base/services下的服務,如衛星定位服務,剪下板服務等)

桌面launcher
1) 原始碼:ActivityManagerService.java為入口,packages/apps/launcher*實現
2) 說明:系統啟動成功後SystemServer使用xxx.systemReady()通知各個服務,系統已經就緒,桌面程式Home就是在ActivityManagerService.systemReady()通知的過程中建立的,最終呼叫launcher ()啟

解鎖
1)原始碼: frameworks/policies/base/phone/com/android/internal/policy/impl/lock
2) 說明:系統啟動成功後SystemServer呼叫wm.systemReady()通知WindowManagerService,進而呼叫PhoneWindowManager,最終通過LockPatternKeyguardView顯示解鎖介面,跟蹤程式碼可以看到解鎖介面並不是一個Activity,這是隻是向特定層上繪圖,其程式碼了存放在特殊的位置

開機自啟動的第三方應用程式
1) 原始碼: frameworks/base/services/java/com/android/server/am/ActivityManagerService.java
2) 系統啟動成功後SystemServer呼叫ActivityManagerNative.getDefault().systemReady()通知ActivityManager啟動成功,ActivityManager會通過置變數mBooting,通知它的另一執行緒,該執行緒會發送廣播android.intent.action.BOOT_COMPLETED以告知已註冊的第三方程式在開機時自動啟動。

總結:系統層次關於啟動最核心的部分是zygote(即app_process)和system server,
zygote負責虛擬機器的建立,以支援各個應用程式的啟動,
system server管理android後臺服務,啟動步驟及順序。

刷機,提升手機系統性能

一、ROOT: Root許可權同Administrator許可權,Root是Linux等類UNIX系統中的超級管理員使用者帳戶,擁有整個系統至高無上的權利,所有物件他都可以操作,黑客在入侵系統時,都要把許可權提升到root許可權,也就是將自己的非法帳戶新增到root使用者組。 如果沒有ROOT,也就是說獲取root許可權,所有的系統裡面的東西都是鎖死的,不能自由更換,而谷歌自帶的應用我們未必每個都能用到,那些應用又佔用了寶貴的系統資源,可以通過ROOT把自帶的應用刪掉,以便讓手機更流暢,能裝更多軟體。

二、WIPE:清除手機資料
WIDE DATA:恢復出廠資料。 WIPE這項的時候把CACHE(快取)也WIPE了吧
WIDE cache:清除快取。一些軟體的遺留記錄(eg:UC快取)清理掉,機會快一些,建議一個月左右WIPE一下這一項。 不清除快取或出廠資料可能會讓手機資料混亂,從而造成新刷的ROM 出現各種問題,比如FC(強制關閉)、 丟失HTC Senes 的外掛等狀況。因為不同ROM, 引用圖片位置可能不同。

三、手機MOD韌體(或ROM): 安卓平臺手機,經過刷機獲得Root許可權後,會得到新的recovery模式 (破解root的rom裡帶的軟體,獲得root後,可以對其進行升級更新), 通過該模式可以對手機進行類似PC平臺的ghost的備份和刷機。 MOD刷機包即歐洲高手編寫的,通過SamdroidMod軟體修改定製的刷機包。 可定製版本及軟體等,該型別的刷機包可直接在手機的在recovery模式下刷寫手機的韌體。 各種各樣的MOD可以挑喜歡的選擇。

四、Swap分割槽: Swap分割槽即交換區,Swap空間的作用可簡單描述為: 當系統的實體記憶體不夠用的時候,就需要將實體記憶體中的一部分空間釋放出來, 以供當前執行的程式使用。那些被釋放的空間可能來自一些很長時間沒什麼操作的程式, 這些被釋放的空間被臨時儲存到Swap空間中,等到那些程式要執行時, 再從Swap中恢復儲存的資料到記憶體中。這樣,系統總是在實體記憶體不夠時, 才進行Swap交換。 其實,Swap的調整對Linux伺服器, 特別是Web伺服器的效能至關重要。通過調整Swap,有時可以越過系統性能瓶頸, 節省系統升級費用。

五、最常見的刷機的模式——Recovery模式(REC模式): 即在手機上操作的刷機模式。進入方法:需要先ROOT,ROOT後音量減+撥號+開機 (不同機型的進入方法可能有差異,此處為I5700的進入方法) 這裡是一些REC模式裡面的英文的翻譯,不完全,不過大概的都有了:
reboot system now:重啟體系
apply sdcard:update.zip:應用SD卡中的update.zip
wipe data/factory reset:清空數值/設定工場標準樣式
backup rom to sdcard:備份ROM到SD卡
toggle app2sd:觸發APP TO SD
reboot system now:重啟體系。

每一次在recovery標準樣式下完成不論什麼操作都必須要使用到的! apply sdcard:update.zip:應用SD卡中的update.zip。 也就是大家刷機的時候常用到的一個選項! 選擇此項後大家就要特別長的等候一段時間··· wipe data/factory reset:清空數值/設定工場標準樣式。 會把手機裡的所有數值都清除! backup rom to sdcard:備份ROM到SD卡。這個功能近似桌上型電腦上的GHOST, 會把你telephone上所有的數值都備份到SD卡上。 (備份檔案儲存安放位置:SD卡的rombackup資料夾下會以日期開首命名) 恢復的是最後一次備份的記錄。備份出來的檔案件: boot.img,cache.img,data.img,misc.img,rombackup.md5, recovery.img,splash1.img,splash2.img,system.img共九個檔案。 恢復完畢後就無需再進行Gmail賬號的繫結,而且聯絡人等資訊也不要再同步, 完全恢復到備份前的狀態。 restore rom from sdcard:從SD卡還原ROM。 會把原先備份好的ROM從SD卡上還原到手機上。 toggle app2sd:觸發APP TO SD。開啟或關閉APP TO SD這項功能。 當然條件你的SD卡必須要符合APP TO SD的需求。