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