久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

軟件工程

時間:2019-05-12 12:37:17下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《軟件工程》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《軟件工程》。

第一篇:軟件工程

2.2軟件開發的基本策略

人們都有自己的世界觀和方法論,能自然而然地運用于生活和工作中。同樣,程序員腦子里的軟件工程觀念會無形地支配其怎么去做事情。軟件工程三十年的發展,已經積累了相當多的方法,但這些方法不是嚴密的理論。實踐人員不應該教條地套用方法,更重要的是學會“選擇合適的方法”和“產生新方法”。有謀略才會有好的戰術。幾千年前,我們的祖先就在打鬧之際寫下了很多心得體會,被現代人很好地運用于工業和商業。本節講述軟件開發中的三種基本策略:“復用”、“分而治之”、“優化——折衷”。

2.2.1復用

復用就是指“利用現成的東西”,文人稱之為“拿來主義”。被復用的對象可以是有形的物體,也可以是無形的成果。復用不是人類懶惰的表現而是智慧的表現。因為人類總是在繼承了前人的成果,不斷加以利用、改進或創新后才會進步。所以當我們歡度國慶時,要搞清楚祖國遠不止50歲,我們今天享用到的財富還有上下五千年人民的貢獻。進步只是應該的,不進步則就可恥了。

復用的內涵包括了提高質量與生產率兩者。由經驗可知,在一個新系統中,大部分的內容是成熟的,只有小部分內容是創新的。一般地可以相信成熟的東西總是比較可靠的(即具有高質量),而大量成熟的工作可以通過復用來快速實現(即具有高生產率)。勤勞并且聰明的人們應該把大部分的時間用在小比例的創新工作上,而把小部分的時間用在大比例的成熟工作中,這樣才能把工作做得又快又好。

把復用的思想用于軟件開發,稱為軟件復用。據統計,世上已有1000億多行程序,無數功能被重寫了成千上萬次,真是浪費哪。面向對象(Object Oriented)學者的口頭禪就是“請不要再發明相同的車輪子了”。

將具有一定集成度并可以重復使用的軟件組成單元稱為軟構件(Software Component)。軟件復用可以表述為:構造新的軟件系統可以不必每次從零做起,直接使用已有的軟構件,即可組裝(或加以合理修改)成新的系統。復用方法合理化并簡化了軟件開發過程,減少了總的開發工作量與維護代價,既降低了軟件的成本又提高了生產率。另一方面,由于軟構件是經過反復使用驗證的,自身具有較高的質量。因此由軟構件組成的新系統也具有較高的質量。利用軟構件生產應用軟件的過程如圖1.5所示。

軟件復用不僅要使自己拿來方便,還要讓別人拿去方便,是“拿來拿去主義”。面向對象方法,Microsoft公司的COM規范 [Rogerson 1999],都能很好地用于實現大規模的軟件復用。

2.2.2分而治之

分而治之是指把一個復雜的問題分解成若干個簡單的問題,然后逐個解決。這種樸素的思想來源于人們生活與工作的經驗,完全適合于技術領域。軟件人員在執行分而治之的時候,應該著重考慮:復雜問題分解后,每個問題能否用程序實現?所有程序最終能否集成為一個軟件系統并有效解決原始的復雜問題?

圖1.6表示了軟件領域的分而治之策略。諸如軟件的體系結構設計、模塊化設計都是分而治之的具體表現。軟件的分而治之不可以“硬分硬治”。不像為了吃一個西瓜或是一只雞,揮刀斬成n塊,再把每塊塞進嘴里粉碎攪拌,然后交由胃腸來消化吸收,象征復雜問題的西瓜或是雞也就此消失了。

2.2.3優化——折衷

軟件的優化是指優化軟件的各個質量因素,如提高運行速度,提高對內存資源的利用率,使用戶界面更加友好,使三維圖形的真實感更強等等。想做好優化工作,首先要讓開發人員都有正確的認識:優化工作不是可有可無的事情,而是必須要做的事情。當優化工作成為一種責任時,程序員才會不斷改進軟件中的算法,數據結構和程序組織,從而提高軟件質量。

著名的3D游戲軟件Quake,能夠在PC機上實時地繪制高度真實感的復雜場景。Quake的開發者能把很多成熟的圖形技術發揮到極致,例如把Bresenham畫線、多邊形裁剪、樹遍歷等算法的速度提高近一個數量級。我第一次看到Quake時不僅感到震動,而且深受打擊。這個PC游戲軟件的技術水平已經遠勝于我所見識到的國內領先的圖形學相關科研成果。這對我們日益盛行的點到完止的研發工作真是莫大的諷刺。所以當我們開發的軟件表現出很多不可救藥的病癥時,不要怨機器差。真的是我們自己沒有把工作做好,寫不好字卻嫌筆鈍。

就假設我們經過思想教育后,精神抖擻,隨時準備為優化工作干上六天七夜。但愿意做并不意味著就能把事情做好。優化工作的復雜之處是很多目標存在千絲萬縷的關系,可謂數不清理還亂。當不能夠使所有的目標都得到優化時,就需要“折衷”策略。

軟件中的折衷策略是指通過協調各個質量因素,實現整體質量的最優。就象黨支部副書記扮演和事佬的角色:“…為了使整個組織具有最好的戰斗力,我們要重用幾個人,照顧一些人,在萬不得已的情況下委屈一批人”。

軟件折衷的重要原則是不能使某一方損失關鍵的職能,更不可以象“舍魚而取熊掌”那樣拋棄一方。例如3D動畫軟件的瓶頸通常是速度,但如果為了提高速度而在程序中取消光照明計算,那么場景就會喪失真實感,3D動畫也就不再有意義了(如果人類全是色盲,計算機圖形學將變得異常簡單)。

人都有惰性,如果允許濫用折衷的話,那么一當碰到困難,人們就會用拆東墻補西墻的方式去折衷,不再下苦功去做有意義的優化。所以我們有必要為折衷制定嚴正的立場:在保證其它因素不差的前提下,使某些因素變得更好。

下面讓我們用“優化——折衷”的策略解決“魚和熊掌不可得兼”的難題。

問題提出:假設魚每千克10元,熊掌每千克一萬元。有個倔脾氣的人只有20元錢,非得要吃上一公斤美妙的“熊掌燒魚”,怎么辦?

解決方案:化9元9角9分錢買999克魚肉,化10元錢買1克熊掌肉,可做一道“熊掌戲魚”菜。剩下的那一分錢還可建立獎勵基金。

2.3一些不正確的觀念

本節例舉并分析一些不正確的軟件工程觀念,可幫助初學者少犯相似的錯誤。

觀念之一:我們擁有一套講述如何開發軟件的書籍,書中充滿了標準與示例,可以幫助我們解決軟件開發中遇到的任何問題。

客觀情況:好的參考書無疑能指導我們的工作。充分利用書籍中的方法、技術和技巧,可以有效地解決軟件開發中大量常見的問題。但實踐者并不能因此依賴于書籍,這是因為:(1)現實的工作中,由于條件千差萬別,即使是相當成熟的軟件工程規范,常常也無法套用。(2)軟件技術日新月異,沒有哪一種軟件標準能長盛不衰。祖傳秘方在某些領域很吃香,而在軟件領域則意味著落后。

觀念之二:我們擁有最好的開發工具、最好的計算機,一定能做出優秀的軟件。

客觀情況:良好的開發環境只是產出成果的必要條件,而不是充分條件。如果擁有好環境的是一群庸人,難保他們不干出南轅北轍的事情。

觀念之三:如果我們落后于計劃,可以增加更多的程序員來解決。

客觀情況:軟件開發不同于傳統的農業生產,人多不見得力量大。如果給落后于計劃的項目增添新手,可能會更加延誤項目。因為:(1)新手會產生很多新的錯誤,使項目混亂。(2)老手向新手解釋工作以及交流思想都要花費時間,使實際開發時間更少。所以科學的項目計劃很重要,不在乎計劃能提前多少,重在恰如其分。如果用“大躍進”的方式奔向共產主義,只會產生倒退的后果。

觀念之四:既然需求分析很困難,不管三七二十一先把軟件做了再說,反正軟件是靈活的,隨時可以修改。

客觀情況:對需求把握得越準確,軟件的修修補補就越少。有些需求在一開始時很難確定,在開發過程中要不斷地加以改正。軟件修改越早代價越少,修改越晚代價越大,就跟治病一樣道理。

2.4一些有爭議的觀念

本節探討一些有爭議的觀念,目的不在于得出“正確”或“錯誤”的評斷,而在于爭議會激發更多理性的思考。

爭議之一:如果軟件運行較慢,是換一臺更快的計算機,還是設計一種更快的算法?

作者觀點:如果開發軟件的目的是為了學習或是研究,那么應該設計一種更快的算法。如果該軟件已經用于商業,則需謹慎考慮:若換一臺更快的計算機能解決問題,則是最快的解決方案。改進算法雖然可以從根本上提高軟件的運行速度,但可能引入錯誤以及延誤進程。技術狂毫無疑問會選擇后者,因為他們覺得放棄任何可以優化的機會就等于犯罪。

類似的爭議還有:是買現成的程序,還是徹底自己開發?技術人員和商業人士常常會有不同的選擇。

爭議之二:有最好的軟件工程方法,最好的編程語言嗎?

作者觀點:在軟件領域永遠沒有最好的,只有更好的。能解決問題的都是好方法或是好語言。程序員在最初學習Basic、Fortran、Pascal、C、C++等語言時會感覺一個比一個好,不免有喜新厭舊之舉。而如今 的Visual Basic、Delphi、Visual C++、Java等語言各有所長,真的難分優劣。開發人員應該根據客觀條件,選擇自己熟悉的方法和語言,才能保證合格的質量與生產率。

程序設計是自由與快樂的事情,不要發誓忠于某某主義而自尋煩惱。

爭議之三:編程時是否應該多使用技巧?

作者觀點:就軟件開發而言,技巧的優點在于能另辟蹊徑地解決一些問題,缺點是技巧并不為人熟知。若在程序中用太多的技巧,可能會留下隱患,別人也難以理解程序。鑒于一個局部的優點對整個系統而言是微不足道的,而一個錯誤則可能是致命的。作者建議用自然的方式編程,少用技巧。

《狼三則》的故事告訴我們“失敗的技巧通常是技倆”。當我們在編程時無法判斷是用了技巧還是用了技倆,那就少用。《賣油翁》的故事又告訴我們“熟能生巧”,表明技巧是自然而然產生的,而不是賣弄出來的。賣油翁的絕技是可到中央電視臺表演的,而他老人家卻謙虛地說:“沒啥沒啥,用熟了而已”。

爭議之四:軟件中的錯誤是否可按嚴重程度分等級?

作者觀點:在定量分析時,可以將錯誤分等級,以便于管理。微軟的一些開發小組將錯誤分成四個等級 [Cusumano 1996],如表1.1所示。

一級嚴重:錯誤導致軟件崩潰。

二級嚴重:錯誤導致一個特性不能運行并且沒有替代方案。

三級嚴重:錯誤導致一個特性不能運行但有替代方案。

四級嚴重:錯誤是表面化的或是微小的。

表1.1 錯誤的四個等級

上述分類是非常技術性的,并不是普適的。假設某個財務軟件有兩個錯誤:錯誤A使該軟件死掉,錯誤B導致工資計算錯誤。按表1.1分類,錯誤A屬一級嚴重,錯誤B屬二級嚴重。但事實上B要比A嚴重。工資算多了或者算少了,將會使老板或員工遭受經濟損失。而錯誤A只使操作員感到厭煩,并沒有造成經濟損失。另一個示例是操作手冊寫錯,按表1.1分類則屬四級嚴重,但這種錯誤可能導致機毀人亡。

開發人員應該意識到:所有的錯誤都是嚴重的,不存在微不足道的錯誤。這樣才能少犯錯誤。

2.5小 結

軟件工程學科發展到今天,已經有了很多方法和規范,學之不盡。本章只在宏觀上討論了軟件工程的一些

思想,更具體的內容將在后面的章節論述。無論是什么好方法,貴在理解與靈活運用,而不可當成靈丹妙藥,不象“吃了腦黃金或腦白金,就能使一億人先聰明起來”。

3程序員與程序經理

工作在第一線的軟件開發人員是程序員和程序經理,他們決定著軟件的命運。良好的程序員隊伍和出色的管理是軟件項目成功的必要條件。管理不是管制,不是去卡住人家的脖子,因為程序員不是一群野鴨子。管理的目的是讓大家一起把工作做好,并且讓各人獲得各自的快樂和滿足。當一個組織被出色地領導時,雇員甚至不知道他們已被領導。在項目完成時,他們會自豪地說:“看看我們通過努力取得的成績吧”。所以管理者不能老惦記著自己是一個官,而應時刻意識到自己是責任的主要承擔者。

我們經常會聽到有經理頭銜的人在高談闊論:“編程我不會,做個項目還不easy?派個人去搞系統分析,回頭再叫幾個程序員把需求譯成程序,不就OK了嗎?”

不懂英語的人準以為easy和OK是貶義詞。要讓軟件項目失敗很容易,只要符合下列條件之一即可:

(1)項目經理對軟件一無所知;

(2)技術負責人對編程不感興趣;

(3)真真編寫代碼的程序員是臨時雇用的。

如果上述三個條件同時具備,就請放心失敗好了。

讓我們少幻想自己是比爾·蓋茨,先當好程序員和程序經理再說。

3.1了解程序員

早期的程序員干活能從軟件直通硬件,個個生猛無比。又因他們的作息時間、言行舉止與常人不太一樣,久而久之就給人們留下了“神秘”、“孤僻”的印象。如今軟件行業被炒得熱火朝天,有能耐的程序員即便躲在大山岙的軍工廠里也能被挖出來。而更多原本不是程序員的人操起幾本“速成”、“二十一天通”等書籍也加入了這個行業。現在國內號稱有上百萬程序員,這支大軍魚龍混雜,已搞不清那些是正規軍,那些是民兵游擊隊了。

第二篇:軟件工程

1.軟件危機的概念 系統的數據要求,功能需求,性能需求,顯示出程序的輪廓。

軟件危機是指在計算機軟件開發、使用與可靠性需求,可用性需求,出錯處理需求,混合方式

維護過程中遇到的一系列嚴重問題和難接口需求,約束,逆向需求以及將來可能優點:綜合了以上兩種策略的長處 題。提出的需求。9.確認測試

補充: 5.常使用的圖形工具 確認測試又稱有效性測試。有效性測試是

1.軟件危機的表現有哪些? 實體-聯系圖,數據流圖,狀態轉換圖,在模擬的環境下,運用黑盒測試的方法,答:1)對軟件開發成本和進度的估計常層次方框圖,warnier圖,IPO圖。驗證被測軟件是否滿足需求規格說明書常很不準確。第五章 列出的需求。任務是驗證軟件的功能和性

2)用戶對已完成的軟件不滿意1.總體設計的任務 能及其他特性是否與用戶的要求一致。對的現象時有發生。劃分出組成系統的物理元素——程序、文軟件的功能和性能要求在軟件需求規格

3)軟件產品的質量往往是靠不件、數據庫、人工過程和文檔等等 說明書中已經明確規定,它包含的信息就住的。設計軟件的結構。也就是要確定系統中每是軟件確認測試的基礎。

4)軟件常常是不可維護的。個程序是由哪些模塊組成的,以及這些模10.什么是白盒測試,其測試技術有那些,5)軟件通常沒有適當的文檔資塊相互間的關系。覆蓋標準的強弱程度

料。2.模塊化思想 白盒測試是一種測試用例設計方法,盒子

6)軟件成本在計算機系統總成就是把程序劃分成獨立命名且可獨立訪指的是被測試的軟件,白盒指的是盒子是本中所占比例逐年上升。問的模塊,每個模塊完成一個子功能,把可視的,你清楚盒子內部的東西以及里面

7)軟件開發生產率提高的速度這些模塊集成起來構成一個整體,可以完是如何運作的?!鞍缀小狈ㄈ媪私獬绦騼冗h跟不上日益增長的軟件需求。成指定的功能滿足用戶的需求。部邏輯結構、對所有邏輯路徑進行測試。

2.產生軟件危機的原因主要有哪些? 3.衡量模塊獨立的標準(內聚和耦合的白盒測試的測試方法有代碼檢查法、靜態答:1)用戶對軟件需求的描述不精確。含義,種類)結構分析法、靜態質量度量法、邏輯覆蓋

2)軟件開發人員對用戶需求的內聚:標志著每一個模塊內各個元素彼此法、基本路徑測試法、域測試、符號測試、理解有偏差。結合的緊密程度,是信息隱藏和局部化概路徑覆蓋和程序變異。

3)缺乏處理大型軟件項目的經念的自然拓展。偶然內聚,邏輯內聚,時種覆蓋標準:語句覆蓋、判定覆蓋、條件驗。間內聚,功能內聚,順序內聚,通信內聚,覆蓋、判定/條件覆蓋、條件組合覆蓋和

4)開發大型軟件易產生疏漏和過程內聚。路徑覆蓋發現錯誤的能力呈由弱至強的錯誤。耦合:是對一個軟件結構內不同模塊之間變化。

5)缺乏有力的方法學的指導和互連程度的度量。數據耦合,控制耦合,11.什么時候黑盒測試,其測試技術有哪有效的開發工具的支持。特征耦合,公共環境耦合,內容耦合。些,(等價劃分,邊介值分析法)

6)面對日益增長的軟件需求,4.啟發式規則 黑盒測試也稱功能測試,它是通過測試來人們顯得力不從心。1.改進軟件結構提高模塊的獨立性檢測每個功能是否都能正常使用。

2軟件的概念 2.模塊規模應該適中等價類劃分的辦法是把程序的輸入域劃完成特點功能的程序以及數據結構和文 3.深度、寬度、扇出和扇入都應適當 分成若干部分(子集),然后從每個部分檔 4.模塊的作用范圍應在控制范圍之內中選取少數代表性數據作為測試用例

3.軟件工程的基本原理 5.力爭降低模塊接口的復雜程度 邊界值分析是通過選擇等價類邊界的測

1.用分階段的生命周期計劃嚴格管理 6.設計單入口單出口的模塊試用例。邊界值分析法不僅重視輸入條件

2.堅持進行階段評審 7.模塊功能應該可以預測 邊界,而且也必須考慮輸出域邊界。它是

3.實行嚴格的產品控制 5.面向數據流的設計方法把信息流映射對等價類劃分方法的補充。

4.采用現代程序設計技術 成軟件結構 12.軟件調試技術有哪些

5.結果應能清楚地審查 信息流:變換流,事物流 蠻干法,蠻干法可能是尋找軟件錯誤原因

6.開發小組的人員應該少而精 映射:變換分析,事物分析 的最低效的方法,僅當所有其他方法都

7.承認不斷改進軟件工程實踐的必要性失敗的情況下才使用。

4軟件生命周期分成哪幾個階段?各階第六章 回溯法,回溯法是一種相當常用的調試方段的任務是什么? 1.詳細設計的基本任務 法,當調試小程序時很有效。從發現癥

1.問題定義: 1.為每個模塊確定采用的算法。2.確定狀的地方開始,人工沿程序的控制流往回

2.可行性研究:研究問題的范圍,探索這每一模塊使用的數據結構追蹤分析源程序代碼,知道找出錯誤原因個問題是否值得去解決,是否有可行的解3.確定模塊接口的細節,包括對系統外為止。

決方法。部的接口和用戶界面,對系統內部其 原因排除法,對分查找法、歸納法、演繹

3.需求分析:主要是確定目標系統必須具它模塊的接口,以及關于模塊輸入數據、法都屬于原因排除法。

備哪些功能 輸出數據及局部數據的全部細節。13.軟件可靠性(可靠性和可用性的含義)

4.總體設計: 4.為每一模塊設計出一組測試用例。

5.詳細設計:就是把解法具體化,設計出2.程序的三種基本結構

程序的詳細規格說明。順序結構,選擇結構,循環結構

6.編碼和單元測試:寫出正確的容易理解3.詳細設計的工具

容易維護的程序模塊。1.圖形工具

7.綜合測試:通過各種類型的測試使軟件2.表格工具

達到預定的要求 3.語言工具

8.軟件維護:通過各種必要的維護活動使4.jackson方法

系統持久地滿足用戶的需要。(改正性維5.復雜性度量的方法

護,適應性維護,完善性維護,預防性維Halstead方法:它根據程序中運算符和

護)操作數的總數來度量程序的復雜程度

5.瀑布模型,快速原型模型,增量模型,McCabe方法 :McCabe方法根據程序控制

螺旋模型的特點 流的復雜程度定量度量程序的復雜程度,瀑布模型階:段時間具有順序性和依賴第七章

性。推遲現實的觀點。質量保證的觀點。1.選擇程序設計語言應考慮哪些因素

快速原型模型:軟件產品的開發基本上是1.系統用戶的要求

線性順序進行的,本質是“快速”加速軟2.可以使用的編譯程序

件的開發過程,節約軟件開發成本。3.可以得到的軟件工具

增量模型:能在較短時間內向用戶提交可4.工程規模

完成部分工作的產品。逐步增加產品功5.程序員的知識

能,可以使用戶有較充裕的時間學習和適6.軟件可移植性要求

應新產品,從而減少一個全新的軟件可能7.軟件的應用領域

給客戶組織帶來的沖擊。2.良好的編程風格包括哪些方面

螺旋模型:對可選方案和約束條件的強調1.程序內部的文檔2.數據說明 3.語句構

有利于已有軟件的重用,也有助于把軟件造4.輸入輸出 5.效率

質量作為軟件開發的一個重要目標。減少3軟件測試的目標

了過多的測試或測試不足帶來的風險。更目的:(1)測試是為了發現程序中的錯誤

重要的是在螺旋模型中維護只是模型的而執行程序的過程;

另一個周期,在維護和開發之間并沒有本(2)好的測試方案是極可能發現迄今為

質區別。風險驅動的。止尚未發現的錯誤的測試方案;

(3)成功的測試是發現了至今為止尚未

第二章 發現的錯誤的測試。

1.可行性研究的目的 定義:為了發現程序中的錯誤而執行程序

就是用最小的代價在盡可能短的時間內的過程。

確定問題是否能夠解決。補充:

補充: 軟件測試步驟 :

可行性研究的步驟 :(1)模塊測試(2)子系統測試(3)系統

1.復查系統規模和目標。測試(4)驗收測試(5)平行運行

2.研究現有的系統。4.確定測試計劃是在哪個階段制定的3.導出新系統高層邏輯模型。5.黑盒測試和白盒測試的概念

4.進一步定義問題黑盒測試

5.導出和評價供選擇的解法。1把程序看作一個黑盒子,完全不考慮程

6.推薦行動方針序的內部結構和處理過程

7.草擬開發計劃2對程序接口進行測試,檢查程序功能是

8.書寫文檔提交審查 否能按規格說明書的規定正常使用;

程序是否能適當地接受輸入數據并產生

2.系統流程圖的作用 正確的輸出信息;

系統流程圖是描繪物理系統的傳統工具,程序運行過程中能否保持外部信息的完

它用圖形符號來表示系統中的各個部件。整性

它表達了系統中各個元素之間的信息流白盒測試

動的情況。1把程序堪稱裝在一個透明的白盒子里,3.數據流圖的概念 測試者完全知道程序的結構處理算法

數據流圖是一種圖形化技術,它描繪信息2按照程序內部的邏輯測試程序,檢測程

流和數據從移動到輸出的過程中所經受序中的主要執行通路是否都能按的變換。預定要求正確工作

4.數據流圖里面的符號,畫數據流圖。6.測試的步驟及每個步驟形成的文檔

5.數據字典最基本的功能,以及與數據流單元測試:(模塊測試)發現的往往是編

圖的關系。碼和詳細設計的錯誤

最基本的功能:在軟件分析和設計的過程集成測試:著重測試模塊的接口 中給人提供關于數據的描述信息。

關系:數據流圖和數據字典共同構成系統系統測試:發現的往往是軟件設計中的錯的邏輯模型,沒有數據字典,數據流圖就誤,也可能發現需要說明中的錯誤 不嚴格,然而沒有數據流圖,數據字典也驗收測試:(確認測試)往往發現需求說難于發揮作用。只有數據流圖和對數據流明書中的錯誤 圖中每個元素的精確定義放在一起,才能7.漸增式和非漸增式的區別 共同構成系統的規格說明?!胺菨u增式”,即先獨立地測試每一模塊,第三章 然后將所有這些模塊連接到一起運行; 1.需求分析屬于哪一個階段,任務是什“漸增式”,即在已測試過的N個模塊的么?;A上再增加一個模塊,再對N十1個模需求分析是軟件定義時期的最后一個階塊進行測試。段.漸增式比非漸增式優越,因為用漸增式,1.確定對系統的綜合要求(功能需求,性如果是“由頂向下”則可利用前面已測試能需求,可靠性和可用性需求,出錯處理過的模塊,而不必另外準備驅動模塊,如需求,接口需求,約束,逆向需求,將來果是“由底向上”,也可利用已測試過的可能提出的要求)模塊,不必再準備樁模塊。漸增式可以較2.分析系統的數據要求早地發現模塊界面之間的錯誤,有利于排3.導出系統的邏輯模型 錯,檢查比較徹底 4.修正系統開發計劃2.需求分析的產品是什么 8.自頂向下,自下而上,以及混合策略的3.面向過程的分析方法主要是建立三類優缺點 模型 自頂向下數據模型(按照用戶的觀點對數據建立的優點:能較早顯示整個程序的輪廓,向用模型,把用戶的數據要求清楚,準確地描戶展示程序的概貌,取得用戶的理解與支述出來。描述了從用戶角度看到的數據,持。缺點:當測試上層模塊時因使用樁它反應了用戶的現實環境,屬性,聯系),模塊較多,很難模擬出真實模塊的全部功功能模型,行為模型(通過描繪系統的狀能,使部分測試內容被迫推遲,只能等待態及引起系統狀態轉換的事件來表示系換上真實模塊后再補充測試。統的行為)由底向上4.軟件需求規格說明書的內容 優點:測試從下層模塊開始,測試設計用通常用自然語言完整,準確,具體地描述例比較容易。缺點:在測試的早期不能

第三篇:《軟件工程》

《軟件工程》課程分析

本課程是軟件技術專業學生必修的一門專業必修課。根據培養軟件開發人員的需要,本課程的任務是使學生通過本課程的學習,了解軟件項目開發和維護的一般過程,掌握軟件開發的傳統方法和最新方法。能在軟件工程的理論指導下,開發一個小型管理系統,為今后從事軟件工程實踐打下良好的基礎。

一、課程分析

(一)教學計劃的制定和教學內容的選取

根據培養應用技能型人才的總目標,制訂本專業教學計劃,課程的教材配套,教學、實驗、實訓、課程設計大綱和指導書等教學文件齊全,近幾年來引入了現代教學技術手段,已初步建設、形成了具有特色的全套課堂教學和實驗教學課件。

根據該課程的基本教學要求和特點,結合學時的安排,從教材的整體內容出發,有側重地進行取舍,篩選出學生必須掌握的基本教學內容,較好地解決了教學中質量與數量的矛盾。

(二)教學方法分析

由于該課程是用于指導軟件開發的,和實踐聯系非常緊密。所以采用了理論聯系實際的方法進行授課。一方面,讓學生模擬軟件公司的項目小組進行軟件開發;一方面,對學生進行適時的理論指導。既調動了學生的積極性,又讓學生了解了該課程的理論內容,收到了一舉兩得的效果。具體教學過程如下:

第一步:模擬軟件公司的開發項目小組,分組,分設角色(項目經理、用戶、需求人員、設計人員、程序員、測試人員、軟件安裝培訓維護人員),確定開發題。讓每個小組的學生聚在一起,在項目經理的組織下通過調研、討論來制定自己小組的開發題目,大家感覺就象在軟件公司實習一樣,非常新鮮,感興趣。每個學生都積極主動的去完成自己應承擔的那部分工作。

第二步:模擬軟件項目開發全過程的各個階段,進行相關的理論授課和實際開發。即對軟件開發的每一階段,首先按照教材內容進行理論授課,然后讓學生參照授課內容進行實際的軟件開發實踐。

在此階段結束后,每班召開一個模擬方案論證會,由各開發小組選出代表上臺講解本組的開發方案,其他同學模擬用戶對開發方案提出意見。由于大家對模擬方案論證會非常感興趣,發言積極踴躍,論證會結束后,每個小組的設計方案都得到了很好的補充和完善。

第三步:學期末各小組提交各自完成的軟件系統及開發文檔,并進行總結演示,由任課教師進行講評。

抽象理論課的教學應理論聯系實際,讓學生在實際應用中掌握抽象的理論,在興趣中學習,達到我們高職的雙向型培養目標。

二、存在的問題與希望

在上述的教學中,雖然實現了理論聯系實際,但也存在著一些問題,比如每個項目小組中總有個別同學存在依賴心理,不參與項目開發,最后抄襲別的同學的項目成果,自己得不到實際的鍛煉,影響了大三的畢業設計和日后的軟件開發。另外,如果該課程只上課,沒有實訓的話,實驗課時太少,學生很難全面完成一個系統的開發。

第四篇:軟件工程

軟件工程

1.談談你對軟件工具的理解,你用過什么軟件工具

軟件工具是指為支持計算機軟件的開發、維護、模擬、移植或管理而研制的程序系統。它是為專門目的而開發的,在軟件工程范圍內也就是為實現軟件生存期中的各種處理活動(包括管理、開發和維護)的自動化和半自動化面開發的程序系統。

開發軟件工具的最終目的是為了提高軟件生產率和改善軟件的質量。

軟件工具分為六類:模擬工具、開發工具、測試和評估工具、運行和維護工具、性能質量工具和程序設計支持工具。

應該是看對象來選擇測試工具!比如:

功能測試工具:WinRunner

性能測試工具:LoadRunner

內存泄漏測試工具:Purify

單元測試工具:Junit

測試管理工具:TestDirector還有東軟的bugbaseIBM開發的 rational。

2.什么是軟件的可維護性:

軟件可維護性即維護人員對該軟件進行維護的難易程度,具體包括理解、改正、改動和改進該軟件的難易程度。

決定可維護性的因素:

1.系統的大小

2.系統的年齡

3.結構合理性

可維護性的度量:

可理解性

可測試性

可修改性

可移植性

3.軟件開發和寫程序有什么不同?軟件開發的內容是:需求、設計、編程和 測試 維護!

需求分析

軟件需求分析就是回答做什么的問題。它是一個對用戶的需求進行去粗取精、去偽存真、正確理解,然后把它用軟件工程開發語言(形式功能規約,即需求規格說明書)表達出來的過程。本階段的基本任務是和用戶一起確定要解決的問題,建立軟件的邏輯模型,編寫需求規格說明書文檔并最終得到用戶的認可。需求分析的主要方法有結構化分析方法、數據流程圖和數據字典等方法。本階段的工作是根據需求說明書的要求,設計建立相應的軟件系統的體系結構,并將整個系統分解成若干個子系統或模塊,定義子系統或模塊間的接口關系,對各子系統進行具體設計定義,編寫軟件概要設計和詳細設計說明書,數據庫或數據結構設計說明書,組裝測試計劃。

設計

軟件設計可以分為概要設計和詳細設計兩個階段。實際上軟件設計的主要任務就是將軟件分解成模塊是指能實現某個功能的數據和程序說明、可執行程序的程序單元??梢允且粋€函數、過程、子程序、一段帶有程序說明的獨立的程序和數據,也可以是可組合、可分解和可更換的功能單元。模塊,然后進行模塊設計。概要設計就是結構設計,其主要目標就是給出軟件的模塊結構,用軟件結構圖表示。詳細設計的首要任務就是設計模塊的程序流程、算法和數據結構,次要任務就是設計數據庫,常用方法還是結構化程序設計方法。

編碼

軟件編碼是指把軟件設計轉換成計算機可以接受的程序,即寫成以某一程序設計語言表示的“源程序清單”。充分了解軟件開發語言、工具的特性和編程風格,有助于開發工具的選擇以及保證軟件產品的開發質量。

測試

軟件測試的目的是以較小的代價發現盡可能多的錯誤。不同的測試方法有不同的測試用例設計方法。兩種常用的測試方法是白盒法測試對象是源程序,依據的是程序內部的的邏輯結構來發現軟件的編程錯誤、結構錯誤和數據錯誤。結構錯誤包括邏輯、數據流、初始化等錯誤。用例設計的關鍵是以較少的用例覆蓋盡可能多的內部程序邏輯結果。白盒法和黑盒法依據的是軟件的功能或軟件行為描述,發現軟件的接口、功能和結構錯誤。其中接口錯誤包括內部/外部接口、資源管理、集成化以及系統錯誤。黑盒法用例設計的關鍵同樣也是以較少的用例覆蓋模塊輸出和輸入接口。黑盒法。

維護

維護是旨在已完成對軟件的研制(分析、設計、編碼和測試)工作并交付使用以后,對軟件產品所進行的一些軟件工程的活動。即根據軟件運行的情況,對軟件進行適當修改,以適應新的要求,以及糾正運行中發現的錯誤。編寫軟件問題報告、軟件修改報告。

4.什么是軟件設計的”高內聚 低耦合”

內聚:一個模塊內各個元素彼此結合的緊密程度

耦合:一個軟件結構內不同模塊之間互連程度的度量

對于低耦合,(模塊的獨立性)

一個完整的系統,模塊與模塊之間,盡可能的使其獨立存在。也就是說,讓每個模塊,盡可能的獨立完成某個特定的子功能。模塊與模塊之間的接口,盡量的少而簡單。如果某兩個模塊間的關系比較復雜的話,最好首先考慮進一步的模塊劃分。這樣有利于修改和組合.對于高內聚:

在一個模塊內,讓每個元素之間都盡可能的緊密相連。也就是充分利用每一個元素的功能,各施所能,以最終實現某個功能。

5.case在軟件工程中的作用

CASE(Computer Aided(or Assisted)Software Engineering計算機輔助軟件工程。CASE的一個基本思想就是提供一組能夠自動覆蓋軟件開發生命周期各個階段的集成的、減少勞動力的工具。CASE已被證明可以加快開發速度,提高應用軟件生產率并保證應用軟件的可靠品質。CASE工具由許多部分組成,一般我們按軟件開發的不同階段分為上層CASE和下層CASE產品。上層或前端CASE工具自動進行應用的計劃、設計和分析,幫助用戶定義需求,產生需求說明,并可完成與應用開發相關的所有計劃工作。下層或后端CASE工具自動進行應用系統的編程、測試和維護工作。

除非下層CASE和上層CASE工具的供應商提供統一界面,否則用戶必須編寫或重新將所有信息從上層CASE工具轉換到下層CASE工具。獨立的CASE工具供應商愈來愈希望將它們的工具連接在一起建立統一的界面以減少用戶不必要的開發工作。

CASE工具帶來的好處

計算機專業人員利用計算機使他們的企業提高了效率,企業的各個部門通過使用計算機

提高了生產率和效率,增強了企業的競爭力并使之帶來了更多的利潤。

6.為什么要進行軟件測試?常用的軟件測試的方法有哪些?

軟件測試的目的:盡可能發現并改正被測試軟件中的錯誤,提高軟件的可靠性。

軟件測試方法主要包括單元測試,集成測試,系統測試,用戶測試,回歸測試。

還有就是自定而下,和自下而上的方法。

7.談談你對保證軟件質量的技術和方法的認識? 1.作為一個軟件質量保證人員需要良好的溝通能力,因為如果沒有良好的溝通能力,很多問題都沒有辦法解決,原因很簡單,測試人員發現了bug,開發人員或項目經理在怎么不理,但是他們都會想到,萬一測試人員發現了bug而自己忽視了,那么就有可能成為軟件里的一顆不定時地炸彈,那么作為一個開發人員或項目經理對bug的重視程度肯定相對比較高,至少要看測試人員發現的bug,但是QA就不一定了,因為QA保證的流程的正確的執行,相關人員就是認為流程不重要,只要我開發的產品沒有問題那就沒有問題,客戶肯定不會關注我的流程,在加上古人的名言“結果說明了一切”,所以沒有良好的溝通能力,一些問題將很難去解決,做起來就沒有成就感。

2.個人感覺比溝通能力更重要的是,堅持原則,在遇到困難的時候,是不是還能堅持原則,在遇到項目組的種種不理不睬的時候,是不是還能堅持原則,在項目組不按照計劃走的時候,是不是還能堅持原則。

3.個人心態,我工作三年的經歷告訴我,如果開發和測試相比,開發是天堂,測試是地獄的話,但如果測試和QA相比的話,那測試就是天堂,QA就是地獄,所以心態很重要,在三年里我就鍛煉成一個非常好的心態,隨便怎么說CMMI沒用,隨便怎么說CMMI就是寫文檔,隨便怎么說QA真煩人,我笑容依然燦爛,從容面對,而且一個QA要有堅定的信念,如果你都不相信過程能給項目開發帶來好處,那你還指望誰能相信。

8.提高軟件生產率有哪些手段?

1.挑選精干人員(管理 計劃不好 技術搭配不當)

2.提高階段效率 3消除人工階段

4.減少重復勞動 5.建造簡單產品

6.重用軟部件庫(已經存在的軟件功能部件

9.什么是軟件的可靠性和有用性

可靠性就是指軟件運行的穩定性,可用性就是操作的便利性。比如一輛汽車,可靠性好應該歸功于機械部分,可用性好則是內飾和中控系統的功勞。

10什么是軟件規格說明?作用是什么?將其形式化的意義是什么?

11.什么是軟件重用?實現軟件重用的方法有哪些?

軟件重用,是指在兩次或多次不同的軟件開發過程中重復使用相同或相似軟件元素的過程。軟件元素包括程序代碼、測試用例、設計文檔、設計過程、需要分析文檔甚至領域知識。通常,可重用的元素也稱作軟構件,可重用的軟構件越大,重用的粒度越大。

根據軟件開發的不同階段實現軟件重用主要有四個途徑:

抽象:對重用對象概括提煉,從而得到能全面描述側重算法和數據結構的軟件構件的各部分的描述。

選擇:是對重用對象進行存放,匹配和檢索的功能。

實例化:對數據類型中對象進行參數的提供 轉換。

集成:

12.什么是軟件移植?你認為構造一個工具實現windows到Unix的移植有意義嗎?難大不? 軟件可移植性是指代碼可以在不同平臺間移植,我們一般說的軟件的可移植性指的是軟件可移植性,簡單的說就是指源代碼移到不同的平臺下(不同的操作系統,例如從Windows

下移到Linux下)時,需要修改的內容越少,移植性越好。要保證軟件可移植性,就是少用或不用系統特有的東西,比如你用C語言編程,你可以使用C語言本身的庫,但不要用

WindowsAPI函數,因為WindowsAPI函數在Linux下是沒有的,如果想移植到Linux平臺下,使用WindowsAPI函數的部分代碼就要做出修改了。

第五篇:軟件工程

軟件工程—心得體會

摘要

本文結合基層實踐教學的實際情況和現實需要,系統地總結了《軟件工程》實踐教學的特征,詳細分析了實踐教學過程存在的問題,并提出了該課程實踐教學改革的新格式。

關鍵字:軟件工程,教學素質,軟件開發,實踐,實驗

正文

通過這學期的“軟件工程”這門課,我拓寬了知識面,鍛煉了能力,綜合素質得到較大的提高。我覺得在大四安排這門課的學習,其主要目的,在于在課堂中學到的理論知識與實際的結合,尤其是觀察、分析、解決問題的實際工作能力。軟件工程是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟件的學科。它涉及到程序設計語言,數據庫,軟件開發工具,系統平臺,標準,設計模式等方面。在1968年第一次提出了軟件工程的概念,至今軟件工程已經走過了30多年的歷程。在不斷發展的過程中,人類越來越加注重在軟件的開發中應該按工程化的方法進行開發,并注重進行軟件項目工程的管理。在現代社會中,軟件應用于多個方面,典型的軟件比如有電子郵件,嵌入式系統,人機界面,辦公套件,操作系統,編譯器,數據庫,游戲等。同時,各個行業幾乎都有計算機軟件的應用,比如工業,農業,銀行,航空,政府部門等,這些應用促進了經濟和社會的發展,使得人們的工作更加高效,同時提高了生活質量。

中國的軟件行業規模不是很大,有些軟件公司在軟件制作上,也只是采用了一些軟件工程的思想,與大規模的工業化大生產比較還是有一定的差距,原因有管理體制的問題,市場問題,政策問題,也有軟件工程理論不全面和不完善的問題。所以軟件工程的研究和應用,以及中國軟件行業的進一步發展,都需要一定的既有軟件工程的理論基礎和研究能力,又有一定的實踐經驗的軟件工程技術人員來推動。軟件工程的前途是光明的。軟件服務外包屬于智力人才密集型現代服務業。大量著名外包企業落戶寧波。主要就業去向包括軟件外包與服務企業、信息產品與服務企業,擔任程序員、軟件測試員、項目經理等工作崗位

軟件工程是計算機領域發展最快的學科分支之一,國家非常重視軟件行業的發展,對軟件人才的培養給予了非常優惠的政策。本專業培養掌握計算機軟件基本理論知識,熟悉軟件開發和管理技術、能夠在計算機軟件領域中從事軟件設計、開發和管理的高級人才。軟件工程的七條原理:用分階段的生命周期計劃嚴格管理、堅持進行階段評審、實行嚴格的產品控制、采納現代程序設計技術、結果應能清楚地審查、開發小組的人員應少而精、承認不斷改進軟件工程實踐的必要性。根據這幾條原理,不僅要積極采納新的軟件開發技術,還要注意不斷總結經驗,收集進度和消耗等數據,進行出錯類型和問題報告統計。這些數據既可以用來評估新的 軟件技術的效果,也可以用來指明必須著重注意的問題和應該優先進行研究的工具和技術。

下載軟件工程word格式文檔
下載軟件工程.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    軟件工程

    一、名詞解釋 軟件: 指計算機系統中的程序及其文檔。 支持軟件:支持軟件的開發和維護的軟件。 系統軟件:屬于計算機系統中最靠近硬件的一層,其它軟件一般都通過系統軟件發揮作......

    軟件工程

    填好發給我!?。。∫?、填空題: 1.面向對象分析的目的是對客觀世界的系統進行 __________________,對象就是客觀世界的; 2.軟件工程方法學包括:工程環境建立、方法、工具和過程; 3.思想概括......

    軟件工程

    1. 軟件工程:是指導計算機軟件開發和維護的工程學科 2. 軟件危機:是指在計算機軟件的開發和維護過程中所遇到的一系列嚴重問題 3. 軟件過程:是為了開發出高質量的軟件產品所需......

    軟件工程練習題

    練習題 一、判斷題 1. 螺旋模型是在瀑布模型和增量模型的基礎上增加了風險分析活動。(錯) 2. 軟件的模塊數越少,其軟件成本越低。(錯) 3. JAVA語言編譯器是一個CASE工具。(對)。......

    軟件工程報告

    軟件工程實訓(論文) 論文題目 學 院應用數學學院 專業信息與計算科學 年級班別12級2班 學 號3212008007 學生姓名 洪春暉 指導老師 李小英 2015 年12月 對軟件工程的認識......

    軟件工程課件

    題目一:“教務管理系統之子系統——學院課程安排” 1.系統簡介 每個學期的期中,學校教務處向各個學院發出下各學期的教學計劃,包括課程名稱、課程代碼、課時、班級類別(本科、專......

    軟件工程求職信(精選合集)

    軟件工程求職信范文五篇時間是箭,去來迅疾,我們找工作的日子已悄悄來臨,你的求職信寫好了嗎?為了讓您不再為寫求職信頭疼,以下是小編為大家整理的軟件工程求職信6篇,僅供參考,希望......

    軟件工程課程

    軟件工程專業本科生課程設置 時間:2009-03-22 08:47 來源: 作者: 點擊:1059 學院在課程體系制定、課程計劃安排上制定了嚴格的規定與規范的操作程序。課程體系、教學計劃由學院......

主站蜘蛛池模板: 久久天天躁狠狠躁夜夜| 亚洲欧洲国产成人综合在线| 色av专区无码影音先锋| 亚洲精品国产成人精品软件| 欧美牲交a欧美牲交aⅴ久久| 四虎影视久久久免费| 亚洲婷婷综合色高清在线| 亚洲狠狠婷婷综合久久久久图片| 亚洲最大无码av网站观看| 中文字幕精品一区二区精品| 麻豆文化传媒精品一区二区| 亚洲精品国产第一区二区尤物| 国产乱码一区二区三区免费| 国产黄三级高清在线观看播放| 国产精品99久久久久久久久久久久| 天天夜碰日日摸日日澡| 男女啪啪永久免费网站| 苍井空浴缸大战猛男120分钟| 精品免费久久久国产一区| 中文无码成人免费视频在线观看| 国产精品夜夜春夜夜爽久久小| 国产特级毛片aaaaaa高潮流水| 中文字幕亚洲无线码在线一区| 国内精品久久人妻无码网站| 猫咪www免费人成人入口| 久久av无码精品人妻系列果冻| 天天摸夜夜摸摸到高潮| 亚洲色无码专线精品观看| 亚洲国产精品久久青草无码| 波多野美乳人妻hd电影欧美| 国产成人av片无码免费| 国产高清乱码又大又圆| 特级毛片内射www无码| 精品人妻无码一区二区色欲产成人| 国产精品久久久久久亚洲影视| 国产乱子伦60女人的皮视频| 亚洲综合成人婷婷五月网址| 天码人妻一区二区三区| 免费啪视频在线观看视频网页| 国产偷v国产偷v亚洲高清| 国产裸拍裸体视频在线观看|