SE(軟件工程)
軟件工程的概念在導論這門課介紹的比較清楚。這個地方,咱們回想這幾個概念,有個本身的理解就好:編程
- 理解軟件工程
- 爲何學軟工?
- 軟工的知識體系
- 若干重要概念
- 軟工的演變與趨勢
OOAD
閱讀書上第1章app
幾個課外的概念
- software crisis:
- is a term used in the early days of computing science for the difficulty of writing useful and efficient computer programs in the required time
- Constructive Cost Model(COCOMO):
- an algorithmic software cost estimation model developed by Barry W. Boehm. The model uses a basic regression formula with parameters that are derived from historical project data and current as well as future project characteristics.
- 必需要了解software engineering body of knowledge中本課涉及的KA(knowledge areas)
- software requirements, software design, software construction,software development process, software engineering models and methods
- 必須瞭解三種開發生命週期的特色
- Waterfall development: 試圖在編程以前詳細定義全部或大部分需求
- 優點1: 定義了軟件開發基本流程,創意階段描述問題、市場、關鍵技術等,分析階段調查問題與需求
- 劣勢1: 人力資源問題,知識技能需求不一樣,人員數量要求不一樣
- 劣勢2: 容錯問題能力,再後期發現需求問題,工做量難接受
- 劣勢3: 先後依賴問題,前面需求模糊,後面工做沒法開展
- Iterative and incremental developmen:容許在不完整的工做、不完美的知識儲備下開始
- 優點1: 逐步趨向穩定
- 優點2: 有效管理需求變化
- 優點3: 持續集成
- 優點4: 儘早接觸整個系統
- 優點5: 在線風險評估
- Agile development:
- 軟件企業的評價指標Capabilty Maturity Model Integration(CMMI)中的5個等級
- Initial: 無序,自發生產模式
- Managed: 創建了基本的項目管理,制定了必要的過程紀律
- Defined:將軟件管理和工程過程文檔化、標準化
- Quantitatively Managed: 定量理解與控制, 定量預測性能
- Optimizing:工程量化反饋,不斷改進
書本基本概念
- Analysis:
- 對問題和需求的調查, 在問題域中發現關鍵的概念類, 「概念」
- Design
- 知足需求的概念上的一個解決方案,將概念類映射到軟件類,在問題域外發現實現所須要的類設計框架等, 「協做」
UML, 一種可視化語言
- 三種應用UML的方式:
- 草圖:普通的使用方式, agile modeling 強調的
- 藍圖:逆向工程-根據源碼生成UML類圖、包圖, 前向工程-根據UML圖生成源碼
- 編程語言: 自動生成可執行代碼
- 三種應用UML的perspective
- conceptual perspective:描述現實世界
- Specification perspective(少用): 描述軟件中的實現,可是不說明技術
- implementation perspective: 特定技術(如C++)中的軟件實現
- 不一樣perspective 中的類的概念
- conceptual class: 真實世界中的概念
- software class:過程或方法中,表示軟件實現的類
- implementation class: 特定語言中的類
Iterative, evolutionary, and agile
閱讀書上第2章框架
Unified Process
- UP
- the process is scalable, effective, improves productivity, Iterative and incremental approach 容許從不完整的工做和不完備的知識開始
- UP workflow:定義了一系列要執行的活動:
- Business Modeling:定義問題等,創建用力模型
- Requirements Analysis: 定義領域模型等
- Design: 創建設計模型,設計用例在物理上的實現
- Implementation: 編碼
- Test and Integration
- Use Case Driven
- 意味着團隊從編程和測試中收集發現的需求,應用use case
- Architecture Centric
Iterative and Evolutionary
- Agile Methods and Attitude
- 優先級最高的是,經過早期和持續交付有價值的軟件來知足客戶
- 歡迎變動需求,即便在開發後期
- 等等等等
- Agile Modeling
- 採用敏捷方法不是意味着不建模
- 建模的目的主要是爲了理解和溝通,不是爲了交文檔
- 不要對全部軟件都建模
- 全部模型均可能不許確,最終代碼和設計會與模型有差別
- Worker參與系統的開發,Actor是使用系統的人,
- stakeholder包括了workers和actors
- Artifacts(製品),包括用例模型、領域模型、源碼等等
- Activities 表示的是工做流中要完成的任務,包括:迭代計劃、找到用例和actors、執行迭代測試