1.軟件工程無(wú)處不在
2.軟件開(kāi)發(fā)介紹
軟件已經(jīng)深入到我們生活的方方面面,了解軟件工程,了解軟件工程的屬性。
- 軟件=程序+數(shù)據(jù)+文檔
- 程序;計(jì)算機(jī)接受我們給出的指令,運(yùn)行時(shí)候能提供所要求的功能與性能。
- 數(shù)據(jù):程序能夠適當(dāng)?shù)牟僮餍畔⒌臄?shù)據(jù)結(jié)構(gòu)
- 文檔:描述程序的研制過(guò)程、方法和使用的圖文資料。
3.軟件開(kāi)發(fā)本質(zhì)特征
軟件開(kāi)發(fā)具有復(fù)雜性、一致性、可變性、不可見(jiàn)性。
- 軟件開(kāi)發(fā)是一種人類高度抽象的活動(dòng),軟件是復(fù)雜的,像那些高級(jí)云計(jì)算,Google、Amazon、阿里云 所需要的服務(wù)器超過(guò)100萬(wàn)臺(tái),里面的數(shù)據(jù)調(diào)用非常復(fù)雜。
- 軟件不可能獨(dú)立的存在,它需要依附一定的硬件、網(wǎng)絡(luò)、操作系統(tǒng),一個(gè)軟件的應(yīng)用的調(diào)用很有可能會(huì)同時(shí)用到幾個(gè)服務(wù)器共同執(zhí)行,這幾個(gè)服務(wù)器的地址甚至都不在一起。軟件與不同服務(wù)器之間的接口是需要統(tǒng)一的。
- 軟件是需要不斷快速更新?lián)Q代的,因?yàn)橛脩舻男枨蟛粩嗟脑僮儭?/li>
- 軟件是一種看不到摸不到的邏輯實(shí)體,沒(méi)有形體,在開(kāi)發(fā)過(guò)程程序員只能看到程序代碼,并不能直接看到軟件開(kāi)發(fā)后的效果,所以給開(kāi)發(fā)管理增加了很大的困難。
4.軟件開(kāi)發(fā)產(chǎn)生與發(fā)展
- 1956-1967 史前時(shí)代
軟件開(kāi)發(fā)沒(méi)有方法可循,軟件的設(shè)計(jì)實(shí)在開(kāi)發(fā)人員頭腦中的隱藏過(guò)程,60世紀(jì)中期發(fā)生過(guò)軟件危機(jī)。
- 1968-1982 瀑布過(guò)程模型
1968提出“軟件工程”概念,使用結(jié)構(gòu)化開(kāi)發(fā)方法,瀑布式軟件生命周期模型成為典型。
- 1983-1995 質(zhì)量標(biāo)準(zhǔn)體系
提出了面向?qū)ο箝_(kāi)發(fā)方法,軟件過(guò)程改進(jìn)運(yùn)動(dòng),CMM/ISO9000/SPICE等質(zhì)量標(biāo)準(zhǔn)體系。
- 20世紀(jì)90年代至今
敏捷開(kāi)發(fā)方法流行起來(lái),快速迭代、增量開(kāi)發(fā),配以更緊密的團(tuán)隊(duì)協(xié)作,能有效應(yīng)對(duì)需求變化。
5.軟件工程
為了增加軟件的質(zhì)量、提高開(kāi)發(fā)速度,人們開(kāi)始采用搞工程的方法來(lái)搞軟件開(kāi)發(fā)。
這里面包含三方面,開(kāi)發(fā)過(guò)程、開(kāi)發(fā)方法策略、開(kāi)發(fā)工具。
5.1 開(kāi)發(fā)過(guò)程
- 首先開(kāi)發(fā)商拿到用戶需求,然后根據(jù)用戶需求寫軟件需求規(guī)格說(shuō)明,看看用戶具體需要哪些功能,談好每個(gè)功能具體價(jià)格,簽字畫(huà)押,然后開(kāi)工。
- 開(kāi)發(fā)商做好軟件 設(shè)計(jì)模型、體系結(jié)構(gòu)、詳細(xì)設(shè)計(jì)文檔,把設(shè)計(jì)圖給軟件工程師。
- 軟件工程師按照設(shè)計(jì)圖寫代碼,不同的程序員寫不同的模塊,最后將模塊進(jìn)行匯總為一個(gè)統(tǒng)一的軟件。
- 軟件做好后,交給測(cè)試工程師進(jìn)行測(cè)試,最后出報(bào)告。(單元測(cè)試、集成測(cè)試、用戶測(cè)試)
5.2 開(kāi)發(fā)方法
從下到上有四步,面向過(guò)程,面向?qū)ο?,面向服?wù)。所謂的面向,就是為了解決系統(tǒng)在從簡(jiǎn)單到復(fù)雜過(guò)程中,大家采用的解決方法。
知乎李黃河的回答
- 小企業(yè)-大企業(yè)-集團(tuán)-跨國(guó)集團(tuán)
- 小企業(yè)(簡(jiǎn)單的面向?qū)ο缶幊?,?shù)據(jù)庫(kù)+服務(wù)端+瀏覽器)
- 大企業(yè)(面向組件,把一個(gè)個(gè)比較獨(dú)立的業(yè)務(wù)模塊約定好接口,開(kāi)發(fā)成組件。以后再有類似的功能模塊,直接調(diào)用這個(gè)組件,即節(jié)省開(kāi)發(fā)成本,又容易維護(hù)。)
- 集團(tuán)(SOA,單點(diǎn)登陸,有了portal,有了搜索服務(wù),有了知識(shí)庫(kù))
- 跨國(guó)集團(tuán)(雙機(jī),熱備,負(fù)載均衡,以前用的IBM的主機(jī)+Oracle數(shù)據(jù)庫(kù)+EMC的存儲(chǔ),再后來(lái)買更貴的性能更好的。慢慢的你發(fā)現(xiàn),企業(yè)掙的錢都他媽的給了IOE。你開(kāi)始考慮分布式,開(kāi)始考慮使用開(kāi)源產(chǎn)品。)去ioe01 去ioe02
5.3 開(kāi)發(fā)策略
- 不重復(fù)造輪子(庫(kù)函數(shù)、類庫(kù)、文檔模板、網(wǎng)頁(yè)模板、設(shè)計(jì)模式、組件、框架)
- 將一個(gè)復(fù)雜大問(wèn)題,拆分為若干簡(jiǎn)單小問(wèn)題,最后在組裝。
- 將軟件看做生命,功能從簡(jiǎn)單到復(fù)雜,小步快跑,快速迭代。
- 各個(gè)軟件質(zhì)量特征看總體性價(jià)比。
5.4 開(kāi)發(fā)工具
5.5 開(kāi)發(fā)人員素質(zhì)要求
- 良好讀寫代碼的能力
- 較強(qiáng)責(zé)任感,自我提升,自我反省總結(jié),要對(duì)自己寫的代碼負(fù)責(zé)任,要對(duì)自己的代碼所造成的用戶體驗(yàn)* 負(fù)責(zé)任。
- 職業(yè)道德:對(duì)代碼品質(zhì)的保證,對(duì)公司秘密的保護(hù)等等 容易與人交流
更多建議: