不管是手機(jī)的APP還是電腦上的各種應(yīng)用程序,其本質(zhì)上都是一種軟件。隨著互聯(lián)網(wǎng)的不斷發(fā)展,市場對(duì)軟件開發(fā)的需求也愈發(fā)旺盛。因此不少人都想從事這個(gè)高薪且就業(yè)面十分廣泛的工作。那么,軟件開發(fā)需要學(xué)什么?從事軟件開發(fā)的必備技能有哪些?軟件開發(fā)的流程又是怎樣的呢?本期專題就讓我們一起了解下軟件開發(fā)的相關(guān)知識(shí)吧。
軟件開發(fā)是根據(jù)用戶要求建造出軟件系統(tǒng)或者系統(tǒng)中的軟件部分的過程。軟件開發(fā)是一項(xiàng)包括需求捕捉、需求分析、設(shè)計(jì)、實(shí)現(xiàn)和測試的系統(tǒng)工程。軟件一般是用某種程序設(shè)計(jì)語言來實(shí)現(xiàn)的。通常采用軟件開發(fā)工具可以進(jìn)行開發(fā)。軟件分為系統(tǒng)軟件和應(yīng)用軟件,并不只是包括可以在計(jì)算機(jī)上運(yùn)行的程序,與這些程序相關(guān)的文件一般也被認(rèn)為是軟件的一部分。軟件設(shè)計(jì)思路和方法的一般過程,包括設(shè)計(jì)軟件的功能和實(shí)現(xiàn)的算法和方法、軟件的總體結(jié)構(gòu)設(shè)計(jì)和模塊設(shè)計(jì)、編程和調(diào)試、程序聯(lián)調(diào)和測試以及編寫、提交程序。
1、基礎(chǔ)知識(shí)
學(xué)習(xí)軟件開發(fā)需要大量與數(shù)學(xué)、英語打交道,所以需要有一定的數(shù)學(xué)、英語基礎(chǔ)。有了這個(gè)基礎(chǔ),學(xué)起來可以事半功倍。當(dāng)然,對(duì)數(shù)學(xué)、英語的要求也沒有想象中的那么高。
2、基礎(chǔ)編程語言
編程語言是學(xué)軟件開發(fā)的鑰匙,初學(xué)者好根據(jù)自身的喜好或者職業(yè)規(guī)劃選擇語言。目前主流的編程語言包括Java、PHP、.net、C#語言等,新手建議從C語言開始,是基礎(chǔ)也實(shí)用的語言,之后也可以慢慢擴(kuò)展。其實(shí)很多編程語言之間有所互通,比如數(shù)據(jù)類型、變量、常量等。在學(xué)習(xí)實(shí)踐過程中,了解編程內(nèi)涵,養(yǎng)成編程思維,這樣跨語言學(xué)習(xí)會(huì)非???。
3、數(shù)據(jù)庫(SQL Server)知識(shí)
除了基礎(chǔ)學(xué)習(xí),數(shù)據(jù)庫相關(guān)的也是必不可少的。數(shù)據(jù)的存儲(chǔ)、調(diào)用在軟件開發(fā)運(yùn)行過程中必不可少。
4、web相關(guān)知識(shí)
主要分為HTML、CSS、JavaScript。
經(jīng)過這四個(gè)階段,基本就掌握了完整的開發(fā)基礎(chǔ)了。很多人可能會(huì)說,內(nèi)容太多,無法全部掌握怎么辦?不用擔(dān)心,現(xiàn)在專業(yè)的軟件開發(fā)公司,也是團(tuán)隊(duì)分工協(xié)作,跨語言、跨崗位非常少。如果有一些計(jì)算機(jī)編程基礎(chǔ),3個(gè)月就能打開軟件開發(fā)的大門,如果是零基礎(chǔ),少需要一個(gè)月,而且軟件開發(fā)更新速度比較快,需要跟著時(shí)代不斷學(xué)習(xí)進(jìn)步。
1、熟練一門語言
熟練一門語言可以幫助你看懂前人的代碼,熟悉語言的特性,用更好的方式實(shí)現(xiàn)功能,同時(shí)避免一些意外并且你認(rèn)為神奇的錯(cuò)誤??偠灾炀氁婚T語言是你進(jìn)入開發(fā)的第一步。
2、面向?qū)ο笤O(shè)計(jì)
為了應(yīng)對(duì)軟件開發(fā)中的面向?qū)ο笤O(shè)計(jì)思想,開發(fā)人員也需要學(xué)習(xí)一種面向?qū)ο蟮恼Z言。
面向?qū)ο笤O(shè)計(jì)是一種設(shè)計(jì)復(fù)雜程序的方法,它將代碼分成了單獨(dú)的類和對(duì)象(類的實(shí)例),這些類和對(duì)象封裝了一些特定的功能。
3、Linux基礎(chǔ)
開發(fā)都是基于類Unix系統(tǒng)的,所以Lunix必定需要接觸,命令通用;而且?guī)缀跛械暮蠖朔?wù)器用的都是Lunix系統(tǒng),同時(shí)即使你只做前端,也需要很多的接觸系統(tǒng)相關(guān)的東西。
4、源代碼管理
管理源代碼是任何軟件開發(fā)項(xiàng)目不可或缺的組成部分。在使用源代碼之前,應(yīng)該有一個(gè)網(wǎng)絡(luò)來共享項(xiàng)目的所有文件。
源代碼管理工具最基本的功能,是保留軟件項(xiàng)目中對(duì)文件所做更改的歷史記錄。它還允許多個(gè)開發(fā)人員同時(shí)處理相同的代碼, 并將這些處理代碼融合在一起。
所有的開發(fā)人員都應(yīng)該知道如何使用源代碼管理工具,以便能夠檢查代碼并從多個(gè)來源融合代碼。
5、調(diào)試
對(duì)于軟件開發(fā)人員來說,經(jīng)常會(huì)花費(fèi)90%左右的時(shí)間,來弄清楚自己的代碼為什么不起作用了。不論你從事任何語言的代碼開發(fā),代碼調(diào)試都是開發(fā)過程中不可缺少的一部分。
6、數(shù)據(jù)庫
主要有兩種數(shù)據(jù)庫技術(shù):關(guān)系數(shù)據(jù)庫和文檔數(shù)據(jù)庫。
開發(fā)人員應(yīng)該對(duì)于關(guān)系數(shù)據(jù)庫很熟悉,當(dāng)然同時(shí)對(duì)文檔數(shù)據(jù)庫也應(yīng)該有所了解。
在軟件開發(fā)中,數(shù)據(jù)庫通常用于存儲(chǔ)應(yīng)用程序的數(shù)據(jù)。
1、軟件需求工具:包括需求建模工具和需求追蹤工具。
2、軟件設(shè)計(jì)工具:用于創(chuàng)建和檢查軟件設(shè)計(jì),因?yàn)檐浖O(shè)計(jì)方法的多樣性,這類工具的種類很多。
3、軟件構(gòu)造工具:包括程序編輯器、編譯器和代碼生成器、解釋器和調(diào)試器等。
4、軟件測試工具:包括測試生成器、測試執(zhí)行框架、測試評(píng)價(jià)工具、測試管理工具和性能分析工具。
5、軟件維護(hù)工具:包括理解工具(如可視化工具)和再造工具(如重構(gòu)工具)。
6、軟件配置管理工具:包括追蹤工具、版本管理工具和發(fā)布工具。
7、軟件工程管理工具:包括項(xiàng)目計(jì)劃與追蹤工具、風(fēng)險(xiǎn)管理工具和度量工具。
8、軟件工程過程工具:包括建模工具、管理工具和軟件開發(fā)環(huán)境。
9、軟件質(zhì)量工具:包括檢查工具和分析工具。
1、可視化編程
掌握程序設(shè)計(jì)方法及可視化技術(shù),精通一種可視化平臺(tái)及其軟件開發(fā)技術(shù)。獲取Delphi程序員系列、Java初級(jí)或VB開發(fā)能手認(rèn)證。 就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等可視化編程程序員。
2、WEB應(yīng)用程序設(shè)計(jì)
具有美工基礎(chǔ)和網(wǎng)頁動(dòng)畫設(shè)計(jì)能力,掌握交互式網(wǎng)頁程序的設(shè)計(jì)技術(shù),能進(jìn)行網(wǎng)站建設(shè)和維護(hù)。獲取Macromedia多媒體互動(dòng)設(shè)計(jì)師或Delphi初級(jí)程序員或Delphi快速網(wǎng)絡(luò)開發(fā)工程師認(rèn)證。 就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等WEB應(yīng)用程序員。
3、軟件測試
掌握軟件測試的基本原理、方法和組織管理,精通軟件測試工具。獲取ATA軟件測試工程師或Delphi初級(jí)程序員或Java初級(jí)程序員認(rèn)證。 就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等軟件測試員。
4、數(shù)據(jù)庫管理
能應(yīng)用關(guān)系范式進(jìn)行數(shù)據(jù)庫設(shè)計(jì),精通SQL語言,勝任數(shù)據(jù)庫服務(wù)器管理與應(yīng)用工作。獲取Oracle數(shù)據(jù)庫管理或SQL Server數(shù)據(jù)庫應(yīng)用或Windows XP應(yīng)用認(rèn)證。 就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等部門的中、大型數(shù)據(jù)庫管理員。
5、圖形圖像制作
精通國際上流行的圖形/圖像制作工具(如CorelDraw、Photoshop、Pagemaker等)。獲取平面設(shè)計(jì)師相關(guān)的認(rèn)證。 就業(yè)方向:廣告制作公司、建筑設(shè)計(jì)公司、包裝裝璜設(shè)計(jì)公司、居室裝修公司、出版印刷公司。
6、網(wǎng)絡(luò)構(gòu)建技術(shù)
熟悉網(wǎng)絡(luò)結(jié)構(gòu)和組網(wǎng)方式,掌握建網(wǎng)方法,能利用工具分析和排除常見網(wǎng)絡(luò)故障。獲取Cisco路由配置或華為網(wǎng)絡(luò)工程或AMP應(yīng)用工程師認(rèn)證。 就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等網(wǎng)絡(luò)構(gòu)建工程師。
7、網(wǎng)絡(luò)系統(tǒng)管理
掌握網(wǎng)絡(luò)系統(tǒng)管理的基本知識(shí)與應(yīng)用技能,能進(jìn)行網(wǎng)絡(luò)系統(tǒng)的安全設(shè)置。獲取Window2000 Server或TurboLinux TLCE或Cisco路由配置專家認(rèn)證。 就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等網(wǎng)絡(luò)系統(tǒng)管理員。
8、多媒體制作
具有多媒體程序設(shè)計(jì)與多媒體制作策劃的能力。基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)與建模、造型設(shè)計(jì)、場景設(shè)計(jì)、分鏡頭原理等技能。獲取多媒體設(shè)計(jì)師相關(guān)的認(rèn)證。 就業(yè)方向:多媒體設(shè)計(jì)與制作公司、動(dòng)畫美術(shù)制作出版公司、廣告制作公司。
9、計(jì)算機(jī)辦公應(yīng)用
精通辦公自動(dòng)化應(yīng)用與管理,熟悉服務(wù)器的安裝、管理和維護(hù),基于應(yīng)用服務(wù)器的相關(guān)服務(wù)和軟件系統(tǒng),具備對(duì)服務(wù)器的網(wǎng)絡(luò)安全設(shè)置、郵件、網(wǎng)頁發(fā)布、FTP、OA、BBS等系統(tǒng)的應(yīng)用和維護(hù)能力。 就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等系統(tǒng)管理。
1、市場需求大
Internet、游戲產(chǎn)業(yè)、手機(jī)、通信等行業(yè)的實(shí)現(xiàn),都是需要軟件的。這些載體越發(fā)達(dá),對(duì)軟件人才的需求越大。
2、就業(yè)范圍廣
軟件是Internet、游戲產(chǎn)業(yè)、無線通信(如4G等)的靈魂。沒有軟件,他們無法運(yùn)營。所以軟件工程師可以在軟件的相關(guān)行業(yè),比如軟件編寫、軟件培訓(xùn)師、軟件測試、項(xiàng)目經(jīng)理等職位應(yīng)聘職位,就業(yè)的范圍非常廣。
3、薪資起點(diǎn)高
因?yàn)檐浖瞬旁贗T行業(yè)里地位高,崗位重要,所以薪資也比較高。而且軟件在IT行業(yè)里是利潤最高的部分,最大的成本就是人工工資成本。
1、需求分析
(1)相關(guān)系統(tǒng)分析員向用戶初步了解需求,然后用相關(guān)的工具軟件列出要開發(fā)的系統(tǒng)的大功能模塊,每個(gè)大功能模塊有哪些小功能模塊,對(duì)于有些需求比較明確相關(guān)的界面時(shí),在這一步里面可以初步定義好少量的界面。
(2)系統(tǒng)分析員深入了解和分析需求,根據(jù)自己的經(jīng)驗(yàn)和需求用WORD或相關(guān)的工具再做出一份文檔系統(tǒng)的功能需求文檔。這次的文檔會(huì)清楚列出系統(tǒng)大致的大功能模塊,大功能模塊有哪些小功能模塊,并且還列出相關(guān)的界面和界面功能。
(3)系統(tǒng)分析員向用戶再次確認(rèn)需求。
2、概要設(shè)計(jì)
首先,開發(fā)者需要對(duì)軟件系統(tǒng)進(jìn)行概要設(shè)計(jì),即系統(tǒng)設(shè)計(jì)。概要設(shè)計(jì)需要對(duì)軟件系統(tǒng)的設(shè)計(jì)進(jìn)行考慮,包括系統(tǒng)的基本處理流程、系統(tǒng)的組織結(jié)構(gòu)、模塊劃分、功能分配、接口設(shè)計(jì)、運(yùn)行設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)和出錯(cuò)處理設(shè)計(jì)等,為軟件的詳細(xì)設(shè)計(jì)提供基礎(chǔ)。
3、詳細(xì)設(shè)計(jì)
在概要設(shè)計(jì)的基礎(chǔ)上,開發(fā)者需要進(jìn)行軟件系統(tǒng)的詳細(xì)設(shè)計(jì)。在詳細(xì)設(shè)計(jì)中,描述實(shí)現(xiàn)具體模塊所涉及到的主要算法、數(shù)據(jù)結(jié)構(gòu)、類的層次結(jié)構(gòu)及調(diào)用關(guān)系,需要說明軟件系統(tǒng)各個(gè)層次中的每一個(gè)程序(每個(gè)模塊或子程序)的設(shè)計(jì)考慮,以便進(jìn)行編碼和測試。應(yīng)當(dāng)保證軟件的需求完全分配給整個(gè)軟件。詳細(xì)設(shè)計(jì)應(yīng)當(dāng)足夠詳細(xì),能夠根據(jù)詳細(xì)設(shè)計(jì)報(bào)告進(jìn)行編碼。
4、編碼
開發(fā)者根據(jù)《軟件系統(tǒng)詳細(xì)設(shè)計(jì)報(bào)告》中對(duì)數(shù)據(jù)結(jié)構(gòu)、算法分析和模塊實(shí)現(xiàn)等方面的設(shè)計(jì)要求,開始具體的編寫程序工作,分別實(shí)現(xiàn)各模塊的功能,從而實(shí)現(xiàn)對(duì)目標(biāo)系統(tǒng)的功能、性能、接口、界面等方面的要求。
5、測試
測試編寫好的系統(tǒng),交給用戶使用,用戶使用后一個(gè)一個(gè)的確認(rèn)每個(gè)功能。測試同樣是項(xiàng)目研發(fā)中一個(gè)相當(dāng)重要的步驟,對(duì)于一個(gè)大型軟件,3個(gè)月到1年的外部測試都是正常的,因?yàn)橛肋h(yuǎn)都會(huì)有不可預(yù)料的問題存在。完成測試后,完成驗(yàn)收并完成最后的一些幫助文檔,整體項(xiàng)目才算告一段落。當(dāng)然日后少不了升級(jí),修補(bǔ)等等工作,只要不是想通過一錘子買賣騙錢,就要不停的跟蹤軟件的運(yùn)營狀況并持續(xù)修補(bǔ)升級(jí),直到這個(gè)軟件被徹底淘汰為止。
6、軟件交付
在軟件測試證明軟件達(dá)到要求后,軟件開發(fā)者應(yīng)向用戶提交開發(fā)的目標(biāo)安裝程序、數(shù)據(jù)庫的數(shù)據(jù)字典、《用戶安裝手冊(cè)》、《用戶使用指南》、需求報(bào)告、設(shè)計(jì)報(bào)告、測試報(bào)告等雙方合同約定的產(chǎn)物。
7、驗(yàn)收
用戶驗(yàn)收。
8、維護(hù)
根據(jù)用戶需求的變化或環(huán)境的變化,對(duì)應(yīng)用程序進(jìn)行全部或部分的修改。