軟件開(kāi)發(fā)流程知乎(軟件開(kāi)發(fā)詳細流程)
本篇文章給大家談談軟件開(kāi)發(fā)流程知乎,以及軟件開(kāi)發(fā)詳細流程對(duì)應的知識點,希望對(duì)各位有所幫助,不要忘了收藏本站喔。
本文目錄一覽:
- 1、軟件開(kāi)發(fā)時間都(dōu)花在哪兒了 知乎
- 2、怎樣(yàng)從零開(kāi)始學(xué)習安卓軟件開(kāi)發(fā)?
- 3、計算機軟件開(kāi)發(fā)學(xué)習路線是什麼(me)?
軟件開(kāi)發(fā)時間都(dōu)花在哪兒了 知乎
軟件定制開(kāi)發(fā)的主要步驟或環節有:
客戶溝通、需求調研與分析、原型确定、界面(miàn)設計、架構設計、數據庫設計、程序編碼、功能(néng)測試、試運行與産品交付等,每個環節都(dōu)需要花一定的時間,還(hái)有返工的風險。
如果購買軟件産品,中間大部分環節就跳過(guò)了,有利有弊。
怎樣(yàng)從零開(kāi)始學(xué)習安卓軟件開(kāi)發(fā)?
1、Java se基礎
1).Java基本數據類型與表達式,分支循環。
2).String和StringBuffer的使用、正則表達式。
3).面(miàn)向(xiàng)對(duì)象的抽象,封裝,繼承,多态,類與對(duì)象,對(duì)象初始化和回收;構造函數、this關鍵字、方法和方法的參數傳遞過(guò)程、static關鍵字、内部類。
4).對(duì)象實例化過(guò)程、方法的覆蓋、final關鍵字、抽象類、接口、繼承的優點和缺點剖析;對(duì)象的多态性:子類和父類之間的轉換、抽象類和接口在多态中的應用、多态帶來的好(hǎo)處。
5).Java異常處理,異常的機制原理。
6).常用的設計模式:Singleton、Template、Strategy模式。
7).JavaAPI介紹:種(zhǒng)基本數據類型包裝類,System和Runtime類,Date和DateFomat類等。
8).Java集合介紹:Collection、Set、List、ArrayList、LinkedList、Hashset、Map、HashMap、Iterator等常用集合類API。
9).JavaI/O輸入輸出流:File和FileRandomAccess類,字節流InputStream和OutputStream,字符流Reader和Writer,以及相應實現類,IO性能(néng)分析,字節和字符的轉化流,包裝流的概念,以及常用包裝類,計算機編碼。
10).Java高級特性:反射和泛型。
11).多線程原理:如何在程序中創建多線程(Thread、Runnable),線程安全問題,線程的同步,線程之間的通訊、死鎖。
2、android UI編程
1)、Android開(kāi)發(fā)環境搭建:Android介紹,Android開(kāi)發(fā)環境搭建,第一個Android應用程序,Android應用程序目錄結構。
2)、Android初級控件的使用:
TextView控件的使用
Button控件的使用方法
EditText控件的使用方法
ImageView的使用方法
RadioButton的使用方法
Checkbox的使用方法
Menu的使用方法
3)、Android高級控件的使用:
ListView的使用方法
GridView的使用方法
Adapter的使用方法
Spinner的使用方法
Gallary的使用方法
ScrollView的使用方法
RecyclerView
4、對(duì)話框與菜單的使用:
Dialog的基本概念
BlockquoteAlertDialog的使用方法
DatePickerDialog的使用方法
Menu的使用方法
自定義Menu的實現方法
5.控件的布局方法:
線性布局的使用方法
相對(duì)布局的使用方法
6.多Acitivity管理:
AndroidManifest.xml文件的作用
Intent的使用方法
使用Intent傳遞數據的方法
啓動Activity的方法
IntentFilter的使用方法
Activity Group的使用方法
7、自定義控件實現方法:
自定義ListView的實現方法
可折疊ListView的使用方法
自定義Adapter的實現方法
自定義View的實現方法
動态控件布局的上實現方法
上拉刷新下拉加載更多
3、android網絡編程與數據存儲
1).基于Android平台的HTTP通訊:
Http協議回顧
使用Get方法向(xiàng)服務器提交數據的方法
使用POST方法向(xiàng)服務器提交數據的實現方法
使用Http協議實現多線程下載
使用Http協議實現斷點續傳
2).Android數據存儲技術:
SQLite3數據庫簡介
SQL語句回顧
SQLite3編程接口介紹
SQLite3事(shì)務管理
SQLite3遊标使用方法
SQLite3性能(néng)分析
訪問SDCard的方法
訪問SharedPreferences的方法
初級工程師
技術要求:
基本知識點
比如四大組件如何使用、如何創建Service、如何進(jìn)行布局、簡單的自定義View、動畫等常見技術
書籍推薦
《第一行代碼 Android》、《瘋狂Android》
中級工程師
技術要求:
稍微深入的知識點
AIDL、Messenger、Binder、多進(jìn)程、動畫、滑動沖突、自定義View、消息隊列等
書籍推薦
《Android開(kāi)發(fā)藝術探索》、《Android群英傳》
AIDL:熟悉AIDL,理解其工作原理,懂transact和onTransact的區别;
Binder:從Java層大概理解Binder的工作原理,懂Parcel對(duì)象的使用;
多進(jìn)程:熟練掌握多進(jìn)程的運行機制,懂Messenger、Socket等;
事(shì)件分發(fā):彈性滑動、滑動沖突等;
玩轉View:View的繪制原理、各種(zhǒng)自定義View;
動畫系列:熟悉View動畫和屬性動畫的不同點,懂屬性動畫的工作原理;
懂性能(néng)優化、熟悉mat等工具
懂點常見的設計模式
搞懂view的滑動原理
搞懂如何實現彈性滑動
搞懂view的滑動沖突
搞懂view的measure、layout和draw
然後(hòu)再學(xué)習幾個已有的自定義view的例子
最後(hòu)就可以搞定自定義view了,所謂萬變不離其宗
高級工程師
技術要求:
稍微深入的知識點
系統核心機制
基本知識點的細節
設計模式和架構
書籍推薦
《Android開(kāi)發(fā)藝術探索》、《Android 源碼設計模式解析與實戰》、《Android内核剖析》
繼續加深理解”稍微深入的知識點“中所定義的内容
了解系統核心機制:
了解SystemServer的啓動過(guò)程
了解主線程的消息循環模型
了解AMS和PMS的工作原理
能(néng)夠回答問題”一個應用存在多少個Window?“
了解四大組件的大概工作流程
…
基本知識點的細節
Activity的啓動模式以及異常情況下不同Activity的表現
Service的onBind和onReBind的關聯
onServiceDisconnected(ComponentName className)和binderDied()的區别
AsyncTask在不同版本上的表現細節
線程池的細節和參數配置
…
熟悉設計模式,有架構意識學(xué)習方法
-----------------------------------------------------------------
作者:小碼同學(xué)
鏈接:
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
計算機軟件開(kāi)發(fā)學(xué)習路線是什麼(me)?
Java零基礎的小夥伴,我建議看Java的在線教程去學(xué)習。
第一:先學(xué)習Java的核心庫(JavaSE)
JavaSE的内容包括:環境搭建、基礎語法、面(miàn)向(xiàng)對(duì)象、數組、集合、常用類、IO流、反射機制、網絡編程……..
第二:MySQL數據庫
搞定一門數據庫相關的課程,例如:MySQL、Oracle,搞定一個就可以了,目前互聯網公司,例如:京東、阿裡(lǐ)等,他們都(dōu)在使用MySQL,所以建議大家學(xué)習MySQL數據庫,小巧輕盈,免費。
由于互聯網公司的項目訪問量比較大,所以一般會(huì)搭建數據庫的集群,可以一個數據庫不夠,所以需要搭建數據庫集群,爲了應付高并發(fā)。(搭建的比較多的時候,免費就很重要了。)
第三:WEB前端
以後(hòu)從事(shì)Java開(kāi)發(fā),從事(shì)JavaEE開(kāi)發(fā),主要開(kāi)發(fā)的系統結構是B/S結構的,B指的是Browser,S指的是Server。要開(kāi)發(fā)這(zhè)種(zhǒng)系統,B端要會(huì),S端也要精通。WEB前端的學(xué)習就是學(xué)習B端技術。
包括:HTML 、CSS、JavaScript(JS)、jQuery框架(底層對(duì)JS進(jìn)行了封裝)…
第四:JavaWEB
WEB後(hòu)端其實可以是很多種(zhǒng)不同的編程語言,例如:PHP、C、C++、Java,他們都(dōu)可以進(jìn)行WEB後(hòu)端的開(kāi)發(fā),我們既然選擇了比較火爆的Java,那麼(me)我們學(xué)習的後(hòu)端一定是基于Java語言實現的。
包括:Servlet、Filter、Jsp、EL、JSTL、MVC架構模式、數據庫連接池(阿裡(lǐ)巴巴的Druid連接池)、代理模式(動态代理)。另外後(hòu)端學(xué)習了之後(hòu),還(hái)要學(xué)習一個異步編程技術AJAX。(完成(chéng)網頁的局部刷新,AJAX其實不屬于後(hòu)端,是前端浏覽器上的程序。)
學(xué)習到這(zhè)裡(lǐ)爲止,表示Java基本/基礎的技術已經(jīng)學(xué)完了。但是這(zhè)些最基層的技術在實際的開(kāi)發(fā)中不會(huì)使用的,一般爲了開(kāi)發(fā)效率,都(dōu)會(huì)使用大量的提前封裝好(hǎo)的框架。
第五:最好(hǎo)能(néng)夠停留下來,做一個項目。
這(zhè)個項目最好(hǎo)能(néng)將(jiāng)之前所學(xué)全部串起(qǐ)來。(對(duì)以前的知識點進(jìn)行鞏固。)
這(zhè)個項目最好(hǎo)是基于:Servlet + Jsp+AJAX+jQuery+MySQL….
在這(zhè)個項目的開(kāi)發(fā)過(guò)程中:大家一定要記住,目前比較好(hǎo)的項目自動構建工具:Maven是一定要精通的。還(hái)有一個就是團隊協作開(kāi)發(fā):Git/SVN是一定要會(huì)用的。(目前使用Git比較多一些。)
第六:學(xué)習高級框架
Spring、SpringMVC、MyBatis(持久層框架,這(zhè)個框架互聯網公司使用比較多,因爲互聯網項目需要進(jìn)行SQL優化,MyBatis的SQL優化很方便,所以大部分都(dōu)是使用MyBatis)
Struts2(很少使用了,使用這(zhè)個的肯定是很老的項目)、Hibernate(傳統企業,還(hái)有政府等可能(néng)會(huì)使用Hibernate。)
SpringBoot(新項目大部分使用的都(dōu)是boot了。所以在項目中遇到還(hái)在使用SSM的一般都(dōu)是遺留項目。)
當你走到這(zhè)裡(lǐ)之後(hòu),基本上你可以出山了。(去找工作應該問題不大,但前提是你學(xué)得好(hǎo)。學(xué)習的深度夠了,廣度夠了。)
第七:最好(hǎo)能(néng)有一個大型項目是使用框架來完成(chéng)的。
SpringBoot做一個項目。
Spring SpringMVC MyBatis做一個項目。
這(zhè)個項目最好(hǎo)是找幾個人搭夥做一下。體驗一下團隊協作。(尤其是使用一些協作的工具。怎麼(me)溝通,怎麼(me)寫日報,怎麼(me)開(kāi)會(huì),怎麼(me)使用Git,等等….)
第八:如果你的薪資想達到15K的話,你可能(néng)需要還(hái)要學(xué)習一些分布式相關的一些技術。
能(néng)夠應付高并發(fā)的一些技術,例如:分布式框架Dubbo、SpringCloud、MQ、Nginx、Redis…..
最後(hòu)在啰嗦一下,一定要形成(chéng)自己的編程思想。
編程思想的形成(chéng)很難。需要大量代碼的堆積才可以。怎麼(me)形成(chéng)編程思想呢?
千萬别死抄代碼。不要像行屍走肉般的抄代碼,沒(méi)有用。隻能(néng)提高指法速度,無法形成(chéng)編程思路。
1、打好(hǎo)基礎是重中之重
基礎部分可能(néng)很枯燥,但是一定要耐心堅持下去。因爲打基礎好(hǎo)比是在造輪子造汽車,沒(méi)有打好(hǎo)基礎在後(hòu)面(miàn)的學(xué)習就好(hǎo)比走路,可以說後(hòu)面(miàn)遇到的百分之七八十的問題都(dōu)是基礎沒(méi)學(xué)好(hǎo)造成(chéng)的。
2、多看官方文檔多讀源碼
一定要看JDK相關類庫、常用框架各種(zhǒng)功能(néng)的源碼,去了解其底層實現的原理。總的來說這(zhè)個也是在打基礎的部分,Java基礎非常紮實才能(néng)看懂,在我們學(xué)習一個類的源碼時,肯定會(huì)衍生出其他各種(zhǒng)各樣(yàng)的問題,供我們來了解和學(xué)習,這(zhè)也就是我們下一步學(xué)習的目标和方向(xiàng)。慢慢的,我們就會(huì)學(xué)習更多的知識,并積累更多的經(jīng)驗。
3、系統性學(xué)習,循序漸進(jìn)
不要急于求成(chéng),每個知識點都(dōu)要看,并且每個知識點都(dōu)要勤加練習。有的同學(xué)在學(xué)習過(guò)程中覺得這(zhè)個知識點簡單,就跳著(zhe)學(xué)習,其實這(zhè)是個很大的問題,知識點細節必須要了解。我們學(xué)習Java需要循序漸進(jìn),一步一步來,不能(néng)操之過(guò)急。
4、遇到問題
遇到不會(huì)做的問題,當然不能(néng)置之不理。先在網上查,目前網絡上針對(duì)很多問題都(dōu)有完美的解決方案,如果網上沒(méi)有類似的問題,那可能(néng)是你犯了什麼(me)小錯誤。也不要在這(zhè)個問題上花費太多時間,這(zhè)需要一定的學(xué)習技巧。Java中的知識有很強的相關性,有不懂的地方,可以用其他周邊相關知識再回過(guò)頭來理解,這(zhè)樣(yàng)既不會(huì)耽誤學(xué)習進(jìn)度,又能(néng)理解自己不懂的地方
1)jvm有很多種(zhǒng),其實jvm是一個标準,sun做的那個叫(jiào)hotspot,作者就是後(hòu)來v8的作者lars bak,其他公司也做過(guò)jvm,其中做得比較好(hǎo)的有bea的jrockit,其他的包括ibm的r9,apple的jvm等在内,都(dōu)做得不行,所以jvm主要是整合淘汰掉這(zhè)些做得不好(hǎo)的jvm(s),整合成(chéng)一個統一的openjdk。
2)java是典型的oop語言,其執行效率的優化,最早就是lars bak等人從smalltalk等長(cháng)期優化的經(jīng)驗中總結出來并apply到hotspot上去滴,而smalltalk在早期apple機上搞出了那種(zhǒng)拖拖拽拽就開(kāi)發(fā)出app的做法,後(hòu)來vc,delphi之類的其實都(dōu)是抄襲或者說借鑒apple的smalltalk的做法,jobs說微軟從頭到尾都(dōu)在抄襲apple是空穴來風,這(zhè)裡(lǐ)空穴來風跟王垠使用的空穴來風是一個意思,有趣的是,java的gui并沒(méi)有繼承這(zhè)種(zhǒng)搞法,反而對(duì)這(zhè)種(zhǒng)拖拖拽拽就作出app的做法批判有加,到今天,其實java的gui都(dōu)還(hái)不能(néng)真正做到拖拖拽拽就作出來,問題很多,個人建議對(duì)于純java的gui開(kāi)發(fā),還(hái)是以寫代碼爲主。
3)jee也是一個或者說是一堆标準,知乎上有些人把maven,jenkins都(dōu)算做jee是不對(duì)滴,jee的标準核心是ejb,其實就是一個xml配置化的java文件,這(zhè)個标準在4的時候,達到了頂峰狀态,幾乎所有的挨踢大廠都(dōu)主動支持該标準,之後(hòu)開(kāi)始走下坡路,支持的廠越來越少。
4)java和javascript的關系比很多人認爲的要密切,javascript裡(lǐ)面(miàn)的java這(zhè)四個字母可不是白叫(jiào)的,比如js的版權和商标都(dōu)控制在oracle手裡(lǐ),oracle對(duì)于js的支持甚至超過(guò)其對(duì)java的支持,并且喜歡捆綁銷售,比如jvm裡(lǐ)面(miàn)就有一個js引擎。
5)jvm裡(lǐ)面(miàn)除了js engine以外還(hái)有一個浏覽器排版引擎webkit,就是apple safari和google chrome用的那個那個。
6)java支持絕大多數腳本語言,你能(néng)叫(jiào)得上名字的腳本語言,幾乎都(dōu)可以在jvm上執行,比如常見的js,ruby,python,甚至php,lua,隻不過(guò)除了js以外你需要找到相關的腳本引擎。
7)spring的版權被(bèi)控制在vmware手裡(lǐ),其實spring的那一大堆東西,本質上是一個非标準的jee實現,比如在jee裡(lǐ)面(miàn)用的inject,在spring裡(lǐ)面(miàn)就是autowire,當然spring曾經(jīng)深刻滴影響了jee,所以有些東西比如di标準,是spring影響下制定出來的,所以spring的做法會(huì)比較特例一點。
8)maven上的jars數量前兩(liǎng)天突破800萬,其他語言的類庫,排名第二的是npm,大概數量是maven的十分之一,也就是幾十萬,不知道(dào)現在突破100萬沒(méi)有,然後(hòu)是gem,也就是ruby那個,大概是十幾萬,下來是python的module,大概數量級是幾萬,沒(méi)突破十萬。
9)java的标準是由一個叫(jiào)做jcp的組織制定的,所有标準需要經(jīng)過(guò)jcp的執行委員會(huì)通過(guò)方可執行,jcp幾乎包括了你所知道(dào)的絕大多數知名挨踢公司和組織,比如google,apple,ibm,intel,arm,red hat,twitter等,還(hái)有一些教育機構,比如我國(guó)的北京大學(xué),阿裡(lǐ)最近一次申請jcp執行委員會(huì)成(chéng)員資格,似乎投票不通過(guò),最近一次執行委員會(huì)新增兩(liǎng)個成(chéng)員是arm和jetbrains。
10)微軟也曾經(jīng)是jcp甚至是java的主要貢獻者,但是利益驅使下,想擴展java,從而破壞java跨平台的特性,所以跟sun鬧翻,其本質原因就是想讓客戶寫的java代碼跟windows綁定,sun堅決不同意,鬧翻,今天回頭看這(zhè)個結果,隻能(néng)說:雙輸,sun挂了,微軟的ria也離挂不太遠了,silverlight已經(jīng)放棄了,比起(qǐ)當年ie自帶有jvm的支持來說,那完全就是兩(liǎng)回事(shì)。
11)除了微軟以外,jcp還(hái)缺少一個重要組織apache,因爲apache跟oracle也鬧翻了,oracle似乎并不在乎開(kāi)源組織,而更在意商業公司的支持。
12)java曾經(jīng)有一個内置的數據庫,9之後(hòu)被(bèi)剝離。
13)j2me是j2se的子集。
14)vert.x作者tim fox最早在vmware做spring時候看到了node.js,萌生出了制作支持多核的node.x的想法,并在離開(kāi)vmware後(hòu)加入red hat將(jiāng)其實現,vmware看到後(hòu)開(kāi)始耍無賴,claim node.x後(hòu)來改叫(jiào)vert.x的版權,不惜跟red hat打官司,後(hòu)來各方妥協,將(jiāng)其交給eclipse foundation。
15)oracle在收購bea之前,一開(kāi)始的目标并不是bea和bea的weblogic,而是jboss,但是jboss表現出了極爲有種(zhǒng)的一面(miàn),在oracle收購成(chéng)功之前,投入了red hat的懷抱,因爲都(dōu)是開(kāi)源組織,從此jboss成(chéng)了red hat的一個子部門,oracle收購jboss失敗之後(hòu),轉向(xiàng)bea,莊思浩氣死了,但是沒(méi)用,最後(hòu)還(hái)是被(bèi)惡意收購。
16)sun在玩不下去之前最早嘗試接觸的目标是ibm,ibm嫌太貴,放棄之後(hòu),被(bèi)轉手給了oracle。(Java學(xué)習交流QQ群:589809992 我們一起(qǐ)學(xué)Java!)
17)vert.x的作者tim fox在離開(kāi)red hat之前曾經(jīng)發(fā)過(guò)twitter抱怨,外人比如我們,猜測是因爲red hat内部已經(jīng)有了一個jboss,所以跟vert.x在應用上有了重疊,所以導緻tim fox的出走,但是出走之後(hòu),red hat答應對(duì)vert.x做持續性的戰略投入,所以vert.x core的幾個developers,其實拿的是red hat的工資,但是vert.x的版權并不在red hat手裡(lǐ),而在eclipse foundation手裡(lǐ)。
18)vert.x的幾個核心開(kāi)發(fā)人員都(dōu)是google summer of code的導師,每年年初時候會(huì)招收在校大學(xué)生搞項目。
19)教育機構相關:scala的作者馬丁是德國(guó)人,eth的博導,groovy的主要領導人是法國(guó)人,jruby背後(hòu)是東京大學(xué),jboss的作者是法國(guó)大學(xué)校x的校友,x就是伽羅瓦考不進(jìn)去的那所大學(xué),伽羅瓦進(jìn)不了x,所以改讀巴黎高師,tim fox畢業于帝國(guó)理工,主席去的那個,netty作者trustin lee是acm銀牌,現在line工作,畢業于sky裡(lǐ)面(miàn)的延世大學(xué),kotlin是毛子公司jetbrains的作品,看linkedin,很多人畢業自聖彼得堡大學(xué),spring作者rod johnson是悉尼大學(xué)的音樂博士,hibernate作者gavin king是澳洲莫那什大學(xué)的數學(xué)本科畢業生,james gosling這(zhè)種(zhǒng)cmu和calgory的估計爛大街了,sun是斯坦福大學(xué)網絡的意思,夾帶兩(liǎng)個私貨,aspectj有一個維護小組在mcgill,hbase跟waterloo關系密切。
20)java早期被(bèi)人認爲慢,跟java堅持不用硬件加速渲染有關,死活就是不肯接入directx和opengl,7之後(hòu)總算開(kāi)竅,搞了一個圖形引擎接入了directx/opengl。
21)casssandra是facebook做失敗的項目,被(bèi)貢獻給了apache之後(hòu)老樹開(kāi)花。
22)groovy被(bèi)貢獻給了apache,現在叫(jiào)做apache groovy,ceylon被(bèi)貢獻給了eclipse,現在叫(jiào)做eclipse ceylon。
23)netflix現在是java shop,之前是用.net的。
先想到這(zhè)麼(me)多,有空再寫。
軟件開(kāi)發(fā)流程知乎的介紹就聊到這(zhè)裡(lǐ)吧,感謝你花時間閱讀本站内容,更多關于軟件開(kāi)發(fā)詳細流程、軟件開(kāi)發(fā)流程知乎的信息别忘了在本站進(jìn)行查找喔。