軟體開發技術的進步未能滿足發展的要求。在軟體開發中遇到的問題找不到解決的辦法,問題積累起來,形態尖銳的矛盾,導致了軟體危機。
產生原因:
⑴ 軟體規模越來越大,結構越來越複雜。
⑵ 軟體開發管理困難而複雜。
⑶ 軟體包開發費用不斷增加。
⑷ 軟體開發技術落後。
⑸ 生產方式落後,仍採用手工方式。
⑹ 開發工具落後,生產率提高緩慢。
軟體工程就是用科學的知識程和技術原理來定義,開發,維護軟體的一門學科。
軟體工程目標:付出較低開發成本;達到要求的功能;取得較好的效能;開發的軟體易於移植;只需較低的維護費用;能按時完成開發任務,及時交付使用;開發的軟體可靠性高。
軟體工程內容:研究內容包括開發技術和開發管理兩個方面。開發技術主要研究:
軟體開發方法,開發過程,開發工具和環境。開發管理主要研究:軟體管理學,軟體經濟學,軟體心理學。
軟體生存週期:乙個軟體從提出開發要求開始直到該軟體報廢為止的整個時期。包括:可行性分析和專案開發計畫,需求分析,概要設計,詳細設計,編碼,測試,維護。
生存週期模型:描述軟體開發過程中各種活動如何執行的模型。對軟體開發提供強有力的支援,為開發過程中的活動提供統一的政策保證,為參與開發的人員提供幫助和指導,是軟體生存週期模型化技術的基礎,也是建立軟體開發環境的核心。
主要有:瀑布模型,增量模型,螺旋模型,噴泉模型,基於知識的模型,變換模型。
使用早已定義好的技術集及符號表示習慣來組織軟體生產的過程。通過使用成功的軟體開發方法,在規定的投資和時間內,開發出符合使用者需求的高質量的軟體。軟體開發方法是克服軟體危機的重要方面之一,對軟體工程及軟體包產業的發展起了不可估量的作用。
主要有:結構化方法,jackson方法,物件導向開發方法等。
可行研究的任務:首先需要進行概要的分析研究,初步確定專案的規模,目標,約束和限制。分析員再進行簡要的需求分析,抽象出專案的邏輯結構,建立邏輯模型。
從邏輯模型出發,經過壓縮的設計,探索出若干種可供選擇的解決方法,對每種解決方法都要研究它的可行性。
主要從三個方面考慮:
⑴.技術可行性:一般要考慮的情況包括開發的風險即設計出的系統能否達到要求的功能和效能;資源的有效性;相關技術的發展是否支援;
⑵.經濟可行性:進行開發成本的估算以及了解取得效益的評估,確定要開發的專案是否值得投資。
⑶.社會可行性:要開發的專案是否存在任何侵權問題,執行方式在使用者組織內是否可行,現有管理制度﹑人員素質﹑操作方式是否可行。
⑴.確定專案規模和目標;
⑵.研究正在執行的系統;收集﹑研究﹑分析現有系統的文件資料,實地考察系統訪問有關人員,然後描繪現有系統的高層系統流程圖。
⑶.建立新系統的高層邏輯模型;使用資料流圖和資料字典描述資料在系統中的流動和處理情況。
⑷.匯出和評價各種方案;匯出若干較高層次的物理解決方法,根據技術可行性﹑經濟可行性﹑社會可行性進行評估,得到可行的解決方法。
⑸.推薦可行方案;進行成本~效益分析,決定該專案是否值得開發,若值得開發那麼解決方案是什麼,並且說明該方案可行的原因和理由。
⑹.編寫可行性研究報告;將上述可行性過程的結果寫成相應文件,即可行性研究報告。
⑴.專案概述:說明專案的各項主要工作;說明軟體的功能﹑效能;為完成專案應具有的條件;使用者及合同承包者承擔的工作完成的期限及其他條件限制;應交付的程式名稱;所使用的語言及程儲形式;應交付的文件。
⑵.實施計畫:說明任務的劃分,各任務責任人,專案開發進度,專案的預算,各階段的費用支出,各階段應完成的任務,用圖表說明每項任務的開始和完成時間。
⑶.人員組織及分工:所需人員型別﹑數量﹑組成結構。
⑷.交付期限:最後完工日期。
需求分析:開發人員準確地理解使用者的要求,進行細緻的調查分析,將使用者非形式的需求陳述轉化為完整的需求定義,再由需求定義轉換到相應的需求規格說明的過程。
基本任務:
⑴問題識別:雙方確定對問題的綜合需求,這些需求包括功能需求,效能需求,環境需求,使用者介面需求。
⑵分析與綜合,匯出軟體的邏輯模型
⑶編寫文件:包括編寫"需求規格說明書","初步使用者使用手冊","確認測試計畫","修改完善軟體開發計畫"
結構化分析:簡稱sa,面向資料流進行資料分析的方法。採用自頂向下逐層分解的分析策略。
頂層抽象地描述整個系統,底層具體地畫出系統工程的每個細節。中間層則是從抽象到具體的過渡。使用資料流圖,資料字典,作為描述工具,使用結構化語言,判定表,判定樹描述加工邏輯。
sa方法是軟體需求分析中公認的,有成效的,技術成熟,使用廣泛的一種結構化分析方法。較適用於開發資料處理型別軟體的需求分析。利用圖形等半形式化工具表達需求,簡明,易讀,也易於使用。
但也存在一些弱點,表現如下:
⑴sa方法僅是乙個靜態模型,沒有反映處理的順序,即控制流程。
⑵sa方法使用dfd在分析與描述"資料要求"方面是有侷限的,只有與資料庫技術中的實體聯絡圖(er圖)結合起來,才能較完整地描述使用者對系統的需求。
⑶dfd不適合描述人機介面系統的要求,一些人機互動較頻繁的軟體系統。
⑷sa方法要與形式化方法結合起來,才能更精確地描述軟體需求。
⑸要借助需求分析工具,提高需求分析的質量及效率。
把乙個軟體需求轉換為軟體表示時,首先設計出軟體總的體系結構。稱為概要設計或結構設計。
基本任務:
⑴設計軟體系統結構,具體為:
採用某種設計方法,將乙個複雜的系統按功能劃分為模組。
確定每個模組的功能。
確定模組之間的呼叫關係。
確定模組之間的介面(模組之間傳遞的資訊)
評價模組的結構質量
⑵進行資料結構及資料庫的設計
⑶編寫概要設計的文件
主要內容有:概要設計說明書,資料庫說明書(dbms的簡介,概念模型,邏輯設計,結果)使用者手冊,修訂測試計畫(測試的策略﹑方法﹑步驟)
⑷評審:是否完整地實現了規定的功能﹑效能要求。設計方案是否可行。關鍵的處理及內部介面定義的正確性,有效性,各部分的一致性。
⑴模組化:模組是軟體的組成部分,是具有獨立功能且可命名的一段程式,所有模組組成
整體,可以滿足問題的要求。模組化即按照一定的原則,將軟體劃分成若干個模組,每個模組完成乙個特定的功能,然後把這些模組按照某種方法組裝成乙個軟體系統。(可降低複雜度、減少工作量)
模組具有以下幾種特性:
介面:模組的輸入輸出。
功能:指模組實現什麼功能。
邏輯:描述模組內部如何實現要求及所需的資料。
狀態:該模組的執行環境,模組間呼叫與被呼叫關係。
⑵抽象:認識複雜現象過程所使用權的工具,只考慮事物本質的共同特性,忽略細節和其它因素。通過抽象確定組成軟體的過程實體。
⑶資訊隱蔽:將模組實現自身功能的細節與資料"隱蔽"起來。模組間僅交換為完成系統功能所必須的資訊。
⑷模組獨立性:每個模組只完成系統要求的獨立的子功能。
內聚和耦合
內聚:又稱為塊內聯絡,指模組內部各成分之間相互關聯的程度,以高內聚為設計目標。
耦合:也稱塊間聯絡,模組之間相互聯絡程度的度量,聯絡越緊密,耦合性越強,獨立性越差,以低耦合為設計目標。
⑴改進軟體結構,提高模組獨立性首先設計出軟體初始結構,評價該結構,通過模組分解或合併,力求降低耦合提高內聚。
⑵模組的規模應該適中
⑶模組結構的深度、寬度、扇出和扇入應適中
深度:軟體結構中控制的層數
寬度:軟體結構中同一層次上最大模組總數
扇入:某一模組有多少直接呼叫它的上級模組數目(越大越好)
扇出:乙個模組直接控制(呼叫)下級模組的數目。(越少越好,3,4個為宜,不超過9個,
"頂層扇出較高,中間扇出較少,底層模組高扇入多"
⑷乙個模組的作用域(範圍),應處在這個模組的控制域(範圍)之內
模組的作用域:受該模組內乙個判定影響的所有模組的集合
模組的控制域:這個模組本身以及所有直接或間接從屬於它的模組的集合
模組的影響範圍(作用域):受該模組內乙個判定影響的所有模組的集合
模組的控制範圍(控制域):這個模組本身以及所有直接或間接從屬於它的模組的集合
乙個模組的影響範圍(作用域),應處在這個模組的模組的控制範圍(控制域)內。
變換分析設計步驟:
⑴確定變換中心,邏輯輸入和輸出。
⑵設計軟體結構的頂層和第一層--變換結構:頂層的功能是完成所有模組的控制(名稱應是系統名,以體現完成整個系統功能)
第一層至少有三種功能模組:輸入﹑輸出和變換模組
⑶設計中﹑下層模組,對第一層的模組自頂向下分解。
輸入模組由兩部分組成:接收資料﹑轉換成呼叫模組所需資訊。
輸出模組由兩部分組成:將資料轉換成下屬模組所需的形式﹑ 傳送資料
變換模組:對每個基本加工建立一功能模組
⑷設計的優化 :輸入部分求精,每個物理輸入設定專門模組,以體現系統的外部介面。其它輸入模組與轉換資料模組都很簡單時,可將它們合併。
輸出部分求精:每個物理輸出設定專門模組,其它也可適當合併。
變換部分求精:根據設計準則,對模組適當合併。
事務分析的設計步驟:
⑴確定事務中心和加工路徑
⑵設計頂層(事務機構)和第一層頂層模組有兩個功能:接收資料和根據事務型別調動相應處理模組。
軟體工程樣題
軟體工程考試題 一 選擇題,請從四個可選項中選擇正確答案。60分,每題3分 1.軟體與程式的區別是 a.程式 便宜,軟體 昂貴 b.程式是使用者自己編寫的,而軟體是由廠家提供的 c.程式是用高階語言編寫的,而軟體是由機器語言編寫的 d.軟體包括程式 相關資料及其文件,程式是軟體的一部分 2.瀑布模型...
軟體工程課自測題 答案
一 單項選擇題 1.軟體危機具有下列表現 d i.對軟體開發成本估計不準確 ii.軟體產品的質量往往靠不住 iii.軟體常常不可維護iv.軟體成本逐年上公升 a.i ii和iii b.i iii和iv c.ii iii和iv d.以上都正確 2.軟體生命週期一般都被劃分為若干個獨立的階段,其中占用精...
軟體工程範本
測試計畫初稿 這裡所說的測試,主要是指整個程式系統的組裝測試和確認測試。本檔案的編制是為了提供乙個對該軟體的測試計畫,包括對每項測試活動的內容 進度安排 設計考慮 測試資料的整理方法及評價準則。4.實現階段 模組開發卷宗 開始編寫 模組開發卷宗是在模組開發過程中逐步編寫出來的,每完成乙個模組或一組密...