一、定義 軟件工程一直以來(lái)都缺乏一個(gè)統一的定義,很多學(xué)者、組織機構都分別給出了自己的定義: Boehm:運用現代科學(xué)技術(shù)知識來(lái)設計并構造計算機程序及為開(kāi)發(fā)、運行和維護這些程序所必需的相關(guān)文件資料。
IEEE在軟件工程術(shù)語(yǔ)匯編中的定義:軟件工程是:1.將系統化的、嚴格約束的、可量化的方法應用于軟件的開(kāi)發(fā)、運行和維護,即將工程化應用于軟件;2.在1中所述方法的研究 Fritz Bauer在NATO會(huì )議上給出的定義:建立并使用完善的工程化原則,以較經(jīng)濟的手段獲得能在實(shí)際機器上有效運行的可靠軟件的一系列方法。 目前比較認可的一種定義認為:軟件工程是研究和應用如何以系統性的、規范化的、可定量的過(guò)程化方法去開(kāi)發(fā)和維護軟件,以及如何把經(jīng)過(guò)時(shí)間考驗而證明正確的管理技術(shù)和當前能夠得到的最好的技術(shù)方法結合起來(lái)。
《計算機科學(xué)技術(shù)百科全書(shū)》中的定義:軟件工程是應用計算機科學(xué)、數學(xué)及管理科學(xué)等原理,開(kāi)發(fā)軟件的工程。軟件工程借鑒傳統工程的原則、方法,以提高質(zhì)量、降低成本。
其中,計算機科學(xué)、數學(xué)用于構建模型與算法,工程科學(xué)用于制定規范、設計范型(paradigm)、評估成本及確定權衡,管理科學(xué)用于計劃、資源、質(zhì)量、成本等管理。 二、軟件工程學(xué)的內容 軟件工程學(xué)的主要內容是軟件開(kāi)發(fā)技術(shù)和軟件工程管理. 軟件開(kāi)發(fā)技術(shù)包含軟件工程方法學(xué)、軟件工具和軟件開(kāi)發(fā)環(huán)境;軟件工程管理學(xué)包含軟件工程經(jīng)濟學(xué)和軟件管理學(xué)。
三、軟件工程基本原理 著(zhù)名軟件工程專(zhuān)家B.Boehm綜合有關(guān)專(zhuān)家和學(xué)者的意見(jiàn)并總結了多年來(lái)開(kāi)發(fā)軟件的經(jīng)驗,于1983年在一篇論文中提出了軟件工程的七條基本原理。 (1)用分階段的生存周期計劃進(jìn)行嚴格的管理。
(2)堅持進(jìn)行階段評審。 (3)實(shí)行嚴格的產(chǎn)品控制。
(4)采用現代程序設計技術(shù)。 (5)軟件工程結果應能清楚地審查。
(6)開(kāi)發(fā)小組的人員應該少而精。 (7)承認不斷改進(jìn)軟件工程實(shí)踐的必要性。
B.Boehm指出,遵循前六條基本原理,能夠實(shí)現軟件的工程化生產(chǎn);按照第七條原理,不僅要積極主動(dòng)地采納新的軟件技術(shù),而且要注意不斷總結經(jīng)驗。 軟件工程(SoftWare Engineering)的框架可概括為:目標、過(guò)程和原則。
(1)軟件工程目標:生產(chǎn)具有正確性、可用性以及開(kāi)銷(xiāo)合宜的產(chǎn)品。正確性指軟件產(chǎn)品達到預期功能的程度。
可用性指軟件基本結構、實(shí)現及文檔為用戶(hù)可用的程度。開(kāi)銷(xiāo)合宜是指軟件開(kāi)發(fā)、運行的整個(gè)開(kāi)銷(xiāo)滿(mǎn)足用戶(hù)要求的程度。
這些目標的實(shí)現不論在理論上還是在實(shí)踐中均存在很多待解決的問(wèn)題,它們形成了對過(guò)程、過(guò)程模型及工程方法選取的約束。 (2)軟件工程過(guò)程:生產(chǎn)一個(gè)最終能滿(mǎn)足需求且達到工程目標的軟件產(chǎn)品所需要的步驟。
軟件工程過(guò)程主要包括開(kāi)發(fā)過(guò)程、運作過(guò)程、維護過(guò)程。它們覆蓋了需求、設計、實(shí)現、確認以及維護等活動(dòng)。
需求活動(dòng)包括問(wèn)題分析和需求分析。問(wèn)題分析獲取需求定義,又稱(chēng)軟件需求規約。
需求分析生成功能規約。設計活動(dòng)一般包括概要設計和詳細設計。
概要設計建立整個(gè)軟件系統結構,包括子系統、模塊以及相關(guān)層次的說(shuō)明、每一模塊的接口定義。詳細設計產(chǎn)生程序員可用的模塊說(shuō)明,包括每一模塊中數據結構說(shuō)明及加工描述。
實(shí)現活動(dòng)把設計結果轉換為可執行的程序代碼。確認活動(dòng)貫穿于整個(gè)開(kāi)發(fā)過(guò)程,實(shí)現完成后的確認,保證最終產(chǎn)品滿(mǎn)足用戶(hù)的要求。
維護活動(dòng)包括使用過(guò)程中的擴充、修改與完善。伴隨以上過(guò)程,還有管理過(guò)程、支持過(guò)程、培訓過(guò)程等。
(3)軟件工程的原則是指圍繞工程設計、工程支持以及工程管理在軟件開(kāi)發(fā)過(guò)程中必須遵循的原則。 四、軟件工程必須遵循什么原則 圍繞工程設計、工程支持以及工程管理已提出了以下四條基本原則: (1)選取適宜的開(kāi)發(fā)模型 該原則與系統設計有關(guān)。
在系統設計中,軟件需求、硬件需求以及其它因素間是相互制約和影響的,經(jīng)常需要權衡。因此,必需認識需求定義的易變性,采用適當的開(kāi)發(fā)模型,保證軟件產(chǎn)品滿(mǎn)足用戶(hù)的要求。
(2)采用合適的設計方法 在軟件設計中,通常需要考慮軟件的模塊化、抽象與信息隱蔽、局部化、一致性以及適應性等特征。合適的設計方法有助于這些特征的實(shí)現,以達到軟件工程的目標。
(3)提供高質(zhì)量的工程支撐 工欲善其事,必先利其器。在軟件工程中,軟件工具與環(huán)境對軟件過(guò)程的支持頗為重要。
軟件工程項目的質(zhì)量與開(kāi)銷(xiāo)直接取決于對軟件工程所提供的支撐質(zhì)量和效用。 (4)重視軟件工程的管理 軟件工程的管理直接影響可用資源的有效利用,生產(chǎn)滿(mǎn)足目標的軟件產(chǎn)品以及提高軟件組織的生產(chǎn)能力等問(wèn)題。
因此,僅當軟件過(guò)程予以有效管理時(shí),才能實(shí)現有效的軟件工程。 軟件工程是指導計算機軟件開(kāi)發(fā)和維護的工程學(xué)科。
采用工程的概念、原理、技術(shù)和方法來(lái)開(kāi)發(fā)與維護軟件,把經(jīng)過(guò)時(shí)間考驗而證明正確的管理技術(shù)和當前能夠 得到的最好的技術(shù)方法結合起來(lái),這就是軟件工程。 軟件工程強調使用生存周期方法學(xué)和各種結構分析及結構設計技術(shù)。
它們是在七十年代為了對付應用軟件日益增長(cháng)的復雜程度、漫長(cháng)的開(kāi)發(fā)周期以及用戶(hù)對軟件產(chǎn)品經(jīng)常不滿(mǎn)意的狀況而發(fā)展起來(lái)的。人類(lèi)解決復雜問(wèn)題時(shí)普遍采用的一個(gè)策略就是。
計算機導論
內容提要:為新學(xué)生提供一個(gè)關(guān)于計算機科學(xué)與技術(shù)學(xué)科的入門(mén)介紹,使他們對該學(xué)科有一個(gè)整體的認識,并了解該專(zhuān)業(yè)的學(xué)生應具有的基本知識和技能以及在該領(lǐng)域工作應有的職業(yè)道德與應遵守的法律準則。
數字電路與數字邏輯
內容提要:介紹數字邏輯與數字系統的基本概念、分析方法和設計原理,包括開(kāi)關(guān)理論基礎、組合邏輯、時(shí)序邏輯、可編程邏輯器件、數字系統等。
計算機組成原理與匯編語(yǔ)言
內容提要:以馮諾依曼計算機模型為出發(fā)點(diǎn),介紹計算機的組織結構和工作原理,剖析計算機的運算器、存儲器、控制器和輸入輸出設備的結構、工作原理和相互關(guān)系;介紹 80X86指令系統、匯編語(yǔ)言與匯編指令、匯編程序與匯編過(guò)程、簡(jiǎn)單匯編程序設計、匯編語(yǔ)言與高級語(yǔ)言的接口、宏匯編等。
計算機網(wǎng)絡(luò )
內容提要:介紹數據通信的基本概念和計算機網(wǎng)絡(luò )的基本原理,包括計算機網(wǎng)絡(luò )的體系結構、數據通信的基本方法和協(xié)議、計算機網(wǎng)絡(luò )的主要應用協(xié)議;同時(shí)介紹計算機網(wǎng)絡(luò )系統的安全和管理知識,使學(xué)生對數據通信和計算機網(wǎng)絡(luò )有一個(gè)全面理解。
計算機體系結構
內容提要:研究計算機系統結構的基本概念、基本原理、基本結構和基本分析方法,使同學(xué)在具有一定的軟硬件知識基礎上能綜合認識計算機系統的軟硬件功能分配與各種不同結構類(lèi)型機器的特性和性能評價(jià)方法。為研究、開(kāi)發(fā)、應用高級計算機系統打下基礎。確立全面、系統的觀(guān)點(diǎn)和學(xué)會(huì )定量分析問(wèn)題的方法。
離散數學(xué)
內容提要:包括集合論、數理邏輯、圖論、組合數學(xué)等內容,形式化的數學(xué)證明貫穿此課程。
高級程序設計語(yǔ)言
內容提要:分別以 C、C#或JAVA為例,介紹程序設計和語(yǔ)言,程序的基本數據結構、類(lèi)型定義、簡(jiǎn)單類(lèi)型和結構化類(lèi)型、程序的基本控制結構、結構化程序設計、面向對象的程序設計等。
算法分析與設計
內容提要: 本課程延續數據結構課程的學(xué)習,從算法分析和設計的角度出發(fā),除去傳統的分類(lèi)查找算法和一般的設計方法外,主要內容包括如下幾個(gè)部分:算法研究的理論基礎,遞歸分析技術(shù),基本算法設計策略(幾類(lèi)經(jīng)典算法學(xué)習), 多項式運算與 FFT ,串匹配,概率分析算法。 希望通過(guò)這一課程的學(xué)習,使學(xué)生能對現代的算法設計及分析的基本工具能有較全面的掌握。
數據結構
內容提要:介紹線(xiàn)性表及其鏈接存儲結構與算法、數組與矩陣、堆棧與隊列、廣義表的存儲結構與多元多項式表示、串與文本編輯、排序、樹(shù)、圖、文件結構。
數據庫系統原理
內容提要:介紹數據庫系統的基本概念、原理、方法及應用,主要包括數據庫系統概論、數據庫管理系統實(shí)現技術(shù)、數據庫存儲結構及其他類(lèi)型的數據庫系統。
編譯技術(shù)
內容提要:介紹編譯原理的理論和實(shí)踐,包括編譯程序設計、詞法分析、語(yǔ)法分析、符號表、聲明和存儲管理、代碼生成以及優(yōu)化技術(shù)。
操作系統
內容提要:介紹操作系統的設計與實(shí)現,包括操作系統各組成部分的概述、互斥性和同步性、處理器實(shí)現、調度算法、存儲算法、設備管理和文件系統。
軟件工程師需要學(xué)習以下知識:
(1) 熟悉計算機系統的基礎知識;
(2) 熟悉網(wǎng)絡(luò )操作系統的基礎知識;
(3) 理解計算機應用系統的設計和開(kāi)發(fā)方法;
(4) 熟悉數據通信的基礎知識;
(5) 熟悉系統安全和數據安全的基礎知識;
(6) 掌握網(wǎng)絡(luò )安全的基本技術(shù)和主要的安全協(xié)議與安全系統;
(7) 掌握計算機網(wǎng)絡(luò )體系結構和網(wǎng)絡(luò )協(xié)議的基本原理;
(8) 掌握計算機網(wǎng)絡(luò )有關(guān)的標準化知識;
(9) 掌握局域網(wǎng)組網(wǎng)技術(shù),理解城域網(wǎng)和廣域網(wǎng)基本技術(shù);
(10) 掌握計算機網(wǎng)絡(luò )互聯(lián)技術(shù);
(11) 掌握TCP/IP協(xié)議網(wǎng)絡(luò )的聯(lián)網(wǎng)方法和網(wǎng)絡(luò )應用服務(wù)技術(shù);
(12) 理解接入網(wǎng)與接入技術(shù);
(13) 掌握網(wǎng)絡(luò )管理的基本原理和操作方法;
(14) 熟悉網(wǎng)絡(luò )系統的基本性能測試和優(yōu)化技術(shù),以及可靠性設計技術(shù);
(15) 理解網(wǎng)絡(luò )應用的基本原理和技術(shù);
(16) 理解網(wǎng)絡(luò )新技術(shù)及其發(fā)展趨勢;
(17) 了解有關(guān)知識產(chǎn)權和互聯(lián)網(wǎng)的法律、法規;
(18) 正確閱讀和理解本領(lǐng)域的英文資料。
如果本科的軟件工程是注重學(xué)習理論吧,本科都這樣。
拿自己來(lái)說(shuō)吧。
我現在就是讀軟件工程的大二學(xué)生,而且是學(xué)校開(kāi)設的省級示范軟件學(xué)院的軟件工程。
每個(gè)學(xué)期學(xué)一門(mén)編程語(yǔ)言,然后下一個(gè)學(xué)期或者期求就會(huì )開(kāi)設實(shí)踐課程要求你做一個(gè)使用該語(yǔ)言開(kāi)發(fā)的軟件。
而除了開(kāi)發(fā)語(yǔ)言,輔助理論知識是計算機組成原理,計算機網(wǎng)絡(luò ),操作系統,數據庫之類(lèi)的通通要學(xué)。
因為軟件工程屬于理科類(lèi),所以理工科要學(xué)的高等數學(xué),線(xiàn)性代數,離散結構,概率論之類(lèi)的也一概要學(xué)。
如果你對編程語(yǔ)言真的有興趣的話(huà),學(xué)起來(lái)是很簡(jiǎn)單的。每一門(mén)課之間的關(guān)聯(lián)也很大。非常容易上手。
個(gè)人來(lái)說(shuō)學(xué)習還是蠻輕松的啦。
下面給你看一下我們專(zhuān)業(yè)的方向介紹哦。
專(zhuān)業(yè)培養目標:軟件工程專(zhuān)業(yè)推行較高層次、實(shí)用型、復合式的工程科學(xué)技術(shù)教育,強調人才培養的實(shí)用性和專(zhuān)業(yè)性,培養具有良好的綜合素質(zhì)、良好的職業(yè)道德、扎實(shí)的軟件理論和軟件工程專(zhuān)業(yè)基礎知識,并且具有良好的軟件設計與實(shí)現能力、良好的項目管理能力、良好的交流與組織協(xié)調能力、較強的參與國際競爭能力和創(chuàng )新能力的計算機軟件專(zhuān)業(yè)人才。
業(yè)務(wù)培養要求:本專(zhuān)業(yè)學(xué)生主要學(xué)習計算機科學(xué)、軟件理論和軟件工程專(zhuān)業(yè)方面的基本知識,接受科學(xué)思維和科學(xué)實(shí)驗的基本訓練;系統地學(xué)習最新的軟件思想和軟件開(kāi)發(fā)技術(shù);以實(shí)用型工程能力為培養導向,理論學(xué)習與實(shí)踐緊密結合,加強英語(yǔ)水平、交流能力、團隊精神和創(chuàng )新意識的培養,通過(guò)案例教學(xué)和實(shí)習使學(xué)生掌握軟件開(kāi)發(fā)技能和軟件組織方法。
畢業(yè)后適合于到在科研部門(mén)、教育部門(mén)、企事業(yè)、技術(shù)和行政管理部門(mén)等單位能夠從事計算機軟件領(lǐng)域的科學(xué)研究、技術(shù)開(kāi)發(fā)、教學(xué)及管理等工作。也可以繼續攻讀計算機科學(xué)與技術(shù)、軟件工程或相關(guān)技術(shù)學(xué)科、交叉學(xué)科的碩士學(xué)位。
畢業(yè)生應獲得以下幾方面的知識和能力:
1.掌握計算機科學(xué)、計算機軟件和軟件工程等方面的基本理論和基本知識。
2.掌握最新的軟件思想和軟件開(kāi)發(fā)技術(shù)。
3.具有良好的軟件設計與實(shí)現能力。
4.具有一定的項目管理能力、良好的交流與組織協(xié)調能力。
5.得到科學(xué)研究的訓練,初步掌握科學(xué)研究的基本方法。
6.熟練掌握一門(mén)外語(yǔ)。能獲取信息和應用信息。
學(xué)位主干課程:離散數學(xué)、數據結構、數字電路與邏輯設計、高級語(yǔ)言程序設計、操作系統、計算機網(wǎng)絡(luò )、數據庫系統、面向對象的程序設計、軟件工程、軟件體系結構、面向對象的分析與設計、軟件需求分析、軟件質(zhì)量保證與測試、軟件設計實(shí)例分析、軟件項目管理等。
主要實(shí)踐性教學(xué)環(huán)節:教學(xué)實(shí)習,課程設計,畢業(yè)實(shí)習,課外創(chuàng )新訓練與社會(huì )實(shí)踐。
主要專(zhuān)業(yè)實(shí)驗:專(zhuān)業(yè)主干課程均安排實(shí)驗,部分安排課程設計。
從0開(kāi)始如何自學(xué)軟件工程師?現在各行各業(yè)都需要用到電腦軟件輔助工作,所以技術(shù)好的軟件工程師的就業(yè)前景是很好的。
自學(xué)軟件工程師不是說(shuō)不能學(xué)會(huì ),而是比較難,而且要求自學(xué)者有足夠的自制力,肯自己用心專(zhuān)鉆研。 還有就是,學(xué)的時(shí)候沒(méi)老師教,很多問(wèn)題都要自己去摸索答案,學(xué)習會(huì )事倍功半,學(xué)習時(shí)間也會(huì )長(cháng)很多的;而你自己學(xué)的將來(lái)找工作也不知有沒(méi)有用,有沒(méi)有企業(yè)需要你的技術(shù)。
從0開(kāi)始如何自學(xué)軟件工程師?目前軟件工程師這個(gè)職位還是不錯的,最一般的軟件工程師也都能拿到7000-8000 如果好一點(diǎn)的上萬(wàn)是肯定沒(méi)問(wèn)題的,面對這么高薪的職位?而且又不想去培訓學(xué)校,如何學(xué)呢? 從0開(kāi)始如何自學(xué)軟件工程師?先買(mǎi)本最基本的書(shū)先啃啃吧 .NET C# 語(yǔ)言, 圖書(shū)館里好像就有這本書(shū)《.NET從新手到入門(mén)》還是很不錯的,建議你多看看,因為軟件工程師主要是語(yǔ)言,開(kāi)發(fā)模式,先把這個(gè)弄懂了就好說(shuō)了,把思路搞清了,如果買(mǎi)了書(shū)還是看不明白,那是很正常的,呵呵,不過(guò)不要急,我這又好辦法,現在很多大網(wǎng)站上面都有他們寫(xiě)過(guò)的軟件源碼,你可以把它們下載下來(lái),看清他們用什么語(yǔ)言寫(xiě)的,然后根據他們的語(yǔ)言下載這個(gè)語(yǔ)言的平臺,然后模仿他們的代碼自己寫(xiě)一份出來(lái),在根據查看書(shū)籍,以及問(wèn)朋友等,你就會(huì )明白這里奧秘了,軟件工程師就是對于數據庫的增刪改查,或別的等等一些功能,來(lái)編寫(xiě)不用的語(yǔ)言代碼,這個(gè)道理很簡(jiǎn)單,不過(guò)要學(xué)起來(lái)還要看你自己勤學(xué)苦練,不管學(xué)什么也好,要有恒心,還要喜歡這行,還要勤學(xué)苦練,準能成功。 從0開(kāi)始如何自學(xué)軟件工程師?1.確定目標:自己適不適合干這行,自己是否有恒心,勤學(xué)苦練。
2.買(mǎi)最基本的書(shū)籍入門(mén),先掌握最基本知識。3.上網(wǎng)和網(wǎng)友們一起研究,找源代碼記錄下來(lái),根據他們的代碼模仿一份。
4.多實(shí)踐,多用功。呵呵,祝你早日成功。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:3.686秒