一、軟件的概念
1、軟件:是計算機系統中與硬件相互依存的部分,它包括程序、數據及相關(guān)文檔的完整集合。其中
? 程序-是按照事先設計的功能和性能的要求執行的指令序列
? 數據-是使程序正常操縱信息的數據結構
? 文檔-是程序開(kāi)發(fā)、維護和使用有關(guān)的圖文資料
2、軟件分類(lèi)(按功能劃分)
? 系統軟件:如操作系統、數據庫管理系統、設備驅動(dòng)程序等
? 支撐軟件:協(xié)助用戶(hù)開(kāi)發(fā)軟件的工具性軟件,如微軟可視化開(kāi)發(fā)平臺工具
? 應用軟件:為特定目的服務(wù)的軟件,如財務(wù)管理軟件。
二、軟件工程和軟件開(kāi)發(fā)
1、軟件工程
? 一系列完善的工程化原則。
軟件工程是為經(jīng)濟地獲得能夠在實(shí)際機器上有效運行的可靠軟件而建立和使用的一系列完善的工程化原則。
? 軟件工程是開(kāi)發(fā)、運行、維護和修復軟件的系統方法。
1983年,IEEE(電氣和電子工程師學(xué)會(huì ))作出定義,軟件工程是開(kāi)發(fā)、運行、維護和修復軟件的系統方法。軟件定義為:計算機程序、方法、規則、相關(guān)的文檔資料以及在計算機上運行時(shí)所必須的數據。
? 主要思想是強調軟件開(kāi)發(fā)過(guò)程需要英語(yǔ)工程化的原則。
一個(gè)軟件從開(kāi)始到最后一共需要以下幾個(gè)流程:1、計劃2、分析3、設計4、編碼5、測試6、維護1、計劃對所要解決的問(wèn)題進(jìn)行總體定義,包括了解用戶(hù)的要求及現實(shí)環(huán)境,從技術(shù)、經(jīng)濟和社會(huì )因素等3個(gè)方面研究并論證本軟件項目的可行性,編寫(xiě)可行性研究報告,探討解決問(wèn)題的方案,并對可供使用的資源(如計算機硬件、系統軟件、人力等)成本,可取得的效益和開(kāi)發(fā)進(jìn)度作出估計,制訂完成開(kāi)發(fā)任務(wù)的實(shí)施計劃。
2、分析軟件需求分析就是對開(kāi)發(fā)什么樣的軟件的一個(gè)系統的分析與設想。它是一個(gè)對用戶(hù)的需求進(jìn)行去粗取精、去偽存真、正確理解,然后把它用軟件工程開(kāi)發(fā)語(yǔ)言(形式功能規約,即需求規格說(shuō)明書(shū))表達出來(lái)的過(guò)程。
本階段的基本任務(wù)是和用戶(hù)一起確定要解決的問(wèn)題,建立軟件的邏輯模型,編寫(xiě)需求規格說(shuō)明書(shū)文檔并最終得到用戶(hù)的認可。 需求分析的主要方法有結構化分析方法、數據流程圖和數據字典等方法。
本階段的工作是根據需求說(shuō)明書(shū)的要求,設計建立相應的軟件系統的體系結構,并將整個(gè)系統分解成若干個(gè)子系統或模塊,定義子系統或模塊間的接口關(guān)系,對各子系統進(jìn)行具體設計定義,編寫(xiě)軟件概要設計和詳細設計說(shuō)明書(shū),數據庫或數據結構設計說(shuō)明書(shū),組裝測試計劃。 在任何軟件或系統開(kāi)發(fā)的初始階段必須先完全掌握用戶(hù)需求,以期能將緊隨的系統開(kāi)發(fā)過(guò)程中哪些功能應該落實(shí)、采取何種規格以及設定哪些限制優(yōu)先加以定位。
系統工程師最終將據此完成設計方案,在此基礎上對隨后的程序開(kāi)發(fā)、系統功能和性能的描述及限制作出定義。3、設計軟件設計可以分為概要設計和詳細設計兩個(gè)階段。
實(shí)際上軟件設計的主要任務(wù)就是將軟件分解成模塊是指能實(shí)現某個(gè)功能的數據和程序說(shuō)明、可執行程序的程序單元。可以是一個(gè)函數、過(guò)程、子程序、一段帶有程序說(shuō)明的獨立的程序和數據,也可以是可組合、可分解和可更換的功能單元。
模塊,然后進(jìn)行模塊設計。概要設計就是結構設計,其主要目標就是給出軟件的模塊結構,用軟件結構圖表示。
詳細設計的首要任務(wù)就是設計模塊的程序流程、算法和數據結構,次要任務(wù)就是設計數據庫,常用方法還是結構化程序設計方法。4、編碼軟件編碼是指把軟件設計轉換成計算機可以接受的程序,即寫(xiě)成以某一程序設計語(yǔ)言表示的“源程序清單”。
充分了解軟件開(kāi)發(fā)語(yǔ)言、工具的特性和編程風(fēng)格,有助于開(kāi)發(fā)工具的選擇以及保證軟件產(chǎn)品的開(kāi)發(fā)質(zhì)量。 當前軟件開(kāi)發(fā)中除在專(zhuān)用場(chǎng)合,已經(jīng)很少使用二十世紀80年代的高級語(yǔ)言了,取而代之的是面向對象的開(kāi)發(fā)語(yǔ)言。
而且面向對象的開(kāi)發(fā)語(yǔ)言和開(kāi)發(fā)環(huán)境大都合為一體,大大提高了開(kāi)發(fā)的速度。5、測試軟件測試的目的是以較小的代價(jià)發(fā)現盡可能多的錯誤。
要實(shí)現這個(gè)目標的關(guān)鍵在于設計一套出色的測試用例(測試數據與功能和預期的輸出結果組成了測試用例)。 如何才能設計出一套出色的測試用例,關(guān)鍵在于理解測試方法。
不同的測試方法有不同的測試用例設計方法。兩種常用的測試方法是白盒法測試對象是源程序,依據的是程序內部的的邏輯結構來(lái)發(fā)現軟件的編程錯誤、結構錯誤和數據錯誤。
結構錯誤包括邏輯、數據流、初始化等錯誤。 用例設計的關(guān)鍵是以較少的用例覆蓋盡可能多的內部程序邏輯結果。
白盒法和黑盒法依據的是軟件的功能或軟件行為描述,發(fā)現軟件的接口、功能和結構錯誤。其中接口錯誤包括內部/外部接口、資源管理、集成化以及系統錯誤。
黑盒法用例設計的關(guān)鍵同樣也是以較少的用例覆蓋模塊輸出和輸入接口。 6、維護維護是指在已完成對軟件的研制(分析、設計、編碼和測試)工作并交付使用以后,對軟件產(chǎn)品所進(jìn)行的一些軟件工程的活動(dòng)。
即根據軟件運行的情況,對軟件進(jìn)行適當修改,以適應新的要求,以及糾正運行中發(fā)現的錯誤。編寫(xiě)軟件問(wèn)題報告、軟件修改報告。
一個(gè)中等規模的軟件,如果研制階段需要一年至二年的時(shí)間,在它投入使用以后,其運行或工作時(shí)間可能持續五年至十年。 那么它的維護階段也是運行的這五年至十年期間。
在這段時(shí)間,人們幾乎需要著(zhù)手解決研制階段所遇到的各種問(wèn)題,同時(shí)還要解決某些維護工作本身特有的問(wèn)題。做好軟件維護工作,不僅能排除障礙,使軟件能正常工作,而且還可以使它擴展功能,提高性能,為用戶(hù)帶來(lái)明顯的經(jīng)濟效益。
然而遺憾的是,對軟件維護工作的重視往往遠不如對軟件研制工作的重視。而事實(shí)上,和軟件研制工作相比,軟件維護的工作量和成本都要大得多。
在實(shí)際開(kāi)發(fā)過(guò)程中,軟件開(kāi)發(fā)并不是從第一步進(jìn)行到最后一步,而是在任何階段,在進(jìn)入下一階段前一般都有一步或幾步的回溯。 在測試過(guò)程中的問(wèn)題可能要求修改設計,用戶(hù)可能會(huì )提出一些需要來(lái)修改需求說(shuō)明書(shū)等。
軟件開(kāi)發(fā)是生產(chǎn)制造軟件;軟件測試是驗證開(kāi)發(fā)出來(lái)軟件的質(zhì)量。
類(lèi)比傳統加工制造企業(yè),軟件開(kāi)發(fā)人員就是生產(chǎn)加工的工人,軟件測試人員就是質(zhì)檢人員。關(guān)系應該是:1、沒(méi)有軟件開(kāi)發(fā)就沒(méi)有測試,軟件開(kāi)發(fā)提供軟件測試的對象。
2、軟件開(kāi)發(fā)和軟件測試都是軟件生命周期中的重要組成部分3、軟件開(kāi)發(fā)和軟件測試都是軟件過(guò)程中的重要活動(dòng)。4、軟件測試是保證軟件開(kāi)發(fā)產(chǎn)物質(zhì)量的重要手段。
###嗨,這個(gè)還用問(wèn)么,軟件測試是軟件開(kāi)發(fā)的一個(gè)子過(guò)程,軟件在經(jīng)歷了“業(yè)務(wù)前景分析”、“需求分析”、“總體設計”、“詳細設計”、“實(shí)現”后緊接著(zhù)就是“測試”、“發(fā)布”、“維護”等等軟件測試現在也成了軟件工程的一個(gè)方向,也有很多這方面的考試和崗位。###一個(gè)是創(chuàng )造一個(gè)是找毛病###軟件開(kāi)發(fā)的內容是:需求、設計、編程和測試!軟件開(kāi)發(fā)包括測試又不全包括。
有毅力可以自學(xué),沒(méi)有得到還是報個(gè)班吧(青鳥(niǎo)什么的),報班有老師教和解答問(wèn)題,有同學(xué)烘托氣氛,學(xué)的快。
自學(xué)的話(huà)先從C或C++開(kāi)始吧,選學(xué)學(xué)基礎的邏輯。
學(xué)完基礎就要想想學(xué)什么語(yǔ)言了,現在比較多的是Web,可以學(xué)Java,.net,Php等,還要學(xué)Html和JScript等網(wǎng)頁(yè)界面語(yǔ)言。
也可以學(xué)C/S的,如QQ、360這樣的軟件,語(yǔ)言有C++和C#,都不錯,只不過(guò)WEB的越深越偏向現實(shí)的業(yè)務(wù)邏輯,什么ERP、OA之類(lèi),而C/S越深一般越偏向架構,因為C/s的架構和傳輸大多都是自己寫(xiě)的。
之后還有驅動(dòng)和算法之類(lèi)的,做這個(gè)的掙的比較多,也比較有難度,但是招的人少,沒(méi)工作經(jīng)驗很難找到好點(diǎn)的工作。
沒(méi)有基礎的人,如何學(xué)習軟件開(kāi)發(fā)? 軟件開(kāi)發(fā)之路是充滿(mǎn)荊棘與挑戰之路,也是充滿(mǎn)希望之路。軟件學(xué)習也是如此,沒(méi)有捷徑可走。
今天我們來(lái)談?wù)勅绾螌W(xué)習,希望大家"不走彎路,就是捷徑"。
一般學(xué)習軟件開(kāi)發(fā)都會(huì )首先學(xué)習一門(mén)語(yǔ)言,Java被稱(chēng)為最好的面向對象語(yǔ)言,讓我們來(lái)看看Java的學(xué)習路線(xiàn)。
1 基礎語(yǔ)法及JAVA原理
基礎語(yǔ)法和JAVA原理是地基,地基不牢靠,猶如沙地上建摩天大廈,是相當危險的。學(xué)習JAVA也是如此,必須要有扎實(shí)的基礎,你才能在J2EE、J2ME領(lǐng)域游刃有余。
2 OO思想的領(lǐng)悟
掌握了基礎語(yǔ)法和JAVA程序運行原理后,我們就可以用JAVA語(yǔ)言實(shí)現面向對象的思想了。面向對象,是一種方法學(xué);是獨立于語(yǔ)言之外的編程思想;是基于組件開(kāi)發(fā)的基礎;屬于強勢技術(shù)之一。現在還有AO技術(shù)。是OO技術(shù)的一種補充。
3 基本API的學(xué)習
進(jìn)行軟件開(kāi)發(fā)的時(shí)候,并不是什么功能都需要我們去實(shí)現,也就是經(jīng)典名言所說(shuō)的"不需要重新發(fā)明輪子"。我們可以利用現成的類(lèi)、組件、框架來(lái)搭建我們的應用,如SUN公司編寫(xiě)好了眾多類(lèi)實(shí)現一些底層功能,以及我們下載過(guò)來(lái)的JAR文件中包含的類(lèi),我們可以調用類(lèi)中的方法來(lái)完成某些功能或繼承它。那么這些類(lèi)中究竟提供了哪些方法給我們使用?方法的參數個(gè)數及類(lèi)型是?類(lèi)的構造器需不需要參數?總不可能SUN公司的工程師打國際長(cháng)途甚至飄洋過(guò)海來(lái)告訴你他編寫(xiě)的類(lèi)該如何使用吧。
4 開(kāi)發(fā)工具的用法
在學(xué)習基礎語(yǔ)法與基本的面向對象概念時(shí),從鍛煉語(yǔ)言熟練程度的角度考慮,我們推薦使用的工具是Editplus/JCreator+JDK,這時(shí)候不要急于上手JBuilder/Eclipse等集成開(kāi)發(fā)環(huán)境,以免過(guò)于關(guān)注IDE的強大功能而分散對JAVA技術(shù)本身的注意力。過(guò)了這一階段你就可以開(kāi)始熟悉IDE了。JAVA開(kāi)發(fā)使用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans等幾種;而Eclipse、JBuilder占有的市場(chǎng)份額是最大的。
5 學(xué)習開(kāi)源軟件的設計思想
JAVA領(lǐng)域有許多源代碼開(kāi)放的工具、組件、框架,JUnit、ANT、Tomcat、Struts、Spring、Jive論壇、PetStore寵物店等等多如牛毛。這些可是前輩給我們留下的瑰寶呀。入寶山而空手歸,你心甘嗎?對這些工具、框架進(jìn)行分析,領(lǐng)會(huì )其中的設計思想,有朝一日說(shuō)不定你也能寫(xiě)一個(gè)XXX框架什么的,風(fēng)光一把。分析開(kāi)源軟件其實(shí)是你提高技術(shù)、提高實(shí)戰能力的便捷方法。
6 不局限于JAVA
JAVA不要孤立地去學(xué)習,需要綜合學(xué)習數據結構、OOP、軟件工程、UML、網(wǎng)絡(luò )編程、數據庫技術(shù)等知
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:2.609秒