[系分]SE&OOAD&UP

SE(軟件工程)


軟件工程的概念在導論這門課介紹的比較清楚。這個地方,我們回想這幾個概念,有個自己的理解就好:

  • 理解軟件工程
  • 爲什麼學軟工?
  • 軟工的知識體系
  • 若干重要概念
  • 軟工的演變與趨勢

OOAD



幾個課外的概念

  • 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

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、執行迭代測試
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章