Try   HackMD
tags: SA

chapter 2 物件導向系統分析設計

章節 大綱
2-1 物件與物件導向概念
2-2 UML與物件基本原理
2-3 物件導向分析設計工具
2-4 物件導向分析設計程序

物件與物件導向分析設計程序

程序

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

物件導向發展程序就是使用物件導向方法論、統一程序和物件導向方法及工具的一連串發展軟體步驟。
  • Step1 訪談並確認利害關係人的目標或利益
    需求訪談要整理需求成為利害關係人目標表(Stakeholder-goal list)。通過編碼、需求、來源、備註可成為事後核定內容。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Step3 描述使用案例並繪製使用案例圖
    • 描述時將系統看成一個黑箱,只描述參與者要求系統進行工作,系統如何處理工作並回應訊息給參與者即可,也就是角色要在系統中做的事。
    • 此步驟的類別稱之概念類別,找出系統所需要的類別,即是進入定義領域模型的工作。
    • 通常使用案例與事件找出系統涉及哪些類別,通常利害關係人與行為者都可能是主要類別,此外餐廳、庫存、運送等工作項目也有可能。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Step4 尋找概念類別並描繪初步類別圖
    可通過使用腦力激盪、名詞片語法,畫出概念性類別圖。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Step5 循序圖

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • Step6 擬定合約
    將事件已前置條件和後置條件的方式詳細的描述

軟體SOP(Standard Operation Process)

工作步驟

  • Step1 需求
    訪談用戶需求,了解用戶對於軟體目標和軟體幫助他解決什麼事情。 範例:需求修改紀錄-客戶許願清單
  • Step2 分析
    通過訪談內容與合約,描述系統內的規格內容與限制。
  • Step3 設計
    產出內容包括
    • 角色
    • 架構:通過 Function Map

tags: SA

chapter2 何謂物件導向系統分析設計 old

章節 大綱
2-1 物件與物件導向概念
2-2 UML與物件基本原理
2-3 物件導向分析設計工具
2-4 物件導向分析設計程序

2-1 物件與物件導向概念

物件(thing)可以指人事物或文件.ex:房子、桌子、椅子、杯子、客戶、訂單、產品規格、產品

  • 實體的東西
  • 營業交易
  • 產品或服務
  • 地點或角色
  • 交易項目
  • 產品規格
  • 組織單位
  • 容器或容器元素

物件與程式之間的關聯:系統由物件組成,物件又由程式組成

  • 系統到系統是由一個一個東西所組成
  • 軟體系統他模擬現實環境所構建構而成的模型,故他是由一個一個物件類別組成
  • 程式物件寫成程式碼構成了軟體系統

例如:真實世界物件包含貓、人、狗、車,物件方式轉換成貓、人、狗、車類別,在講貓、人、狗、車的程式要怎麼寫。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

一般事先宣告類別在形成物件

類別定義:
指具有相同特性和相同行為的一組物件的集合

物件屬性:學生
範例1
學生>>物件物件內容>>>物件屬性:學生姓名、學生學號、學生班級
三位學生>>>類別:學生 的概念
一個類別可以產生非常多物件

物件或是名稱:學生妹
屬性(attribue):姓名、類別、科系、學號、年級
物件行為或是方法(method):會做的事情. 打招呼、自我介紹、問資料、邀約

物件:小弟弟
屬性:藍衣服、黑頭髮
行為:跑步、游泳

從以上可以整理出,類別是一個集合體的概念故稱之為物件類別(Object Class),個別的物件稱之為物件實體(Object Instance)

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

範例2:汽車
汽車類別 tayota、susuki
物件屬性

故在物件導向概念中:

系統由模組行程>模組由物件組成>物件由程式組成

系統是一群物件的組成
- 設計系統時要把系統看成是一群物件的組成
- 先從需要處理的事情和內容中找出物件,然後由物件交互作用和交換訊息即可。

目標若為已物件導向概念設計系統

  1. 找出系統由什麼模組組成()
  2. 模組包含哪些物件(跟客戶訂單相關的物件、跟客戶訂單相關的類別)
  3. 物件
    例如1:處理客戶訂單的系統可能包括客戶訂單的物件(簡單)或類別(詳盡)
    類別:產品、訂單、客戶、產品類別
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
先決定系統所需要的物件
- 尋找系統所需的物件比設計系統的功能步驟重要
- 先決定系統所需要的物件,再決定系統所要處理的事情,由哪幾個物件合作完成。物件之間如何互動。

例如2: 小吃店、飯店、五星飯店系統,物件互動會不一樣
點餐系統類別?屬性有哪些?如何互動

先單一物件功能完整且獨立
- 現實環境的東西大都有各自獨立的屬性和功能
- 決定物件時,應盡可能讓單一物件功能完整且獨立,與其他物件關聯程度要降到最低
- 軟體物件擁有自己的資料屬性,要完成某件事時,可以獨立完成

補充:
內聚力cohesion
純水
耦合力
水變成飲料

完成一件複雜的工作若是要多個物件合作,物件間的合作不需要牽涉操作其他物件的內部運作,只需透過訊息的傳達即刻。不干涉另一個物件內部運作,保持每個物件的獨立性。

會說 有很高的內聚力和很低的耦合力,好的系統要有此特徵。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

善用物件封裝、繼承與多行的特性
- 封裝:物件內的資料不允許被其他物件直接存取,保持了物件的獨立性
- 繼承:可以將定義好的屬性和方法為他類別使用,增加在用性與簡化設計
- 多類:不同類別中可以存在相同方法名稱,增加物件導向彈性設計

範例:



2-2 UML 與物件基本原理

2-2-1 UML

UML定義:

  • 為一個描述物件導向方西設計的圖形化工作
  • 被定義14種圖示(diagram):
    靜態>圖示結構式圖示
    動態>行為式圖示

靜態範例(類別圖)

動態範例(循序圖)

UML符號:

  • 使用一條線連結有訊息傳遞的類別,稱為關聯(association)。
  • 多個物件產生關聯,必須用數字在連結兩端將其標示稱之多重性(multiplicity)。
在連結臉端各標示1,為一對一的關係
在一方需要多個物件,為一對多的關係.可標示為 1..* 或 0..*

名稱 特性 定義
使用案例圖 Use Case Diagram 靜態圖形 表現系統所有使用案例與環境間的關係
活動圖 Activity Diagram 動態圖形 用法1:描述使用案例內的運作流程
用法2:描述使用案例內的程式流程
循序圖 Sequence Diagram 動態圖形 描述使用案例中如何透過物件間訊息的傳遞有次序的完成系統事件
溝通圖Communication Diagram 動態圖形 比循序圖更能表現物件間互動溝通關係
類別圖Class Diagram 靜態圖形 將類別和類別間的關係以關聯符號來表現

sample
1.使用案例圖
最陽春選課案例
延伸選課案例
2.活動圖
維基百科說明
3.循序圖
菜鳥工程師教你怎麼畫
4.溝通圖/合作圖
學習筆記-合作圖型
5.類別圖
軟體路上不孤單-陽春案例教學

2-2-2 基本原理

  1. 封裝
    概念指每一個物件就像一塊IC板,單一物件功能完整且獨立,與其他物件關聯程度進量降到最低。物件之間若要通訊則就像由電路角等其他媒介通電。
    是一群相關的屬性和操作所組成的型態。

封裝概念延伸:資訊隱藏
定義:將困難的設計或是可能改變設計要傳遞的主資訊部分做隱藏。比如手錶由齒輪構成。

  1. 繼承
    讓已經寫過程式碼,別再重複。
    是指類別所定義的屬性和方法可以被其他的類別所使用。
    所以通常只需宣告父類別,使用繼承的方式

概念延伸:

  • 特殊化:先有父類別、再有子類別
    使用繼承的方式來繼承原有的類別,僅加上不同的屬性和方法的設計方式。
  • 一般化:先有子類別、將子類別相似地方歸納成父類別
    在一群類別中將共通的部分抽離出來形成另一個類別的設計方式。
  1. 多型
    指不同類別中,可以存在相同的方法名稱,但其操作內容可以不同。每個子類別有其獨特性。
    覆載(Overrride)是多型的另一個性質:子類別繼承了父類別的方法與屬性,在使用子類別時以子類別的屬性與方法為主

2-3 物件導向分析設計工具

物件導向與設計的做法:

  • 使用案例:使用文字來描述參與者(actor)與系統互動的過程。描述人做哪些事稱之

*參與者是指與系統互動的人或個體
*互動過程是參與者與系統之間一連串動作的敘述稱之情節(Scenario),情節包含成功與失敗
*可以簡單分成簡略、中等、完整三種層次

  • 初步類別圖(Preliminary Class Diagram)
    別稱叫做領域模型(domain model),是將系統所需要的類別以徒刑的方式表示出來

  • 系統循序圖
    將使用案例所敘述的步驟轉為一個個操作步驟稱之
    將使用者文字敘述的需求轉變為系統操作的第一步驟
    將使用案例表現成外部參與者與系統間操作次序之訊息傳遞的圖形

合約:

  • 操作(Operation):操作名稱和參數
  • 交互參照(Cross References):使案例名稱,操作所發生的地方作為前後參考
  • 前置條件:操作成立的條件,也就是操作執行前的系統狀態
  • 後置條件:操作執行後的系統狀態
  • 互動圖(interaction diagram)
    包括溝通圖與循序圖,用不同方式表達同內容:
    (1)溝通圖:用類似網路方式描述物件互動,物件可被擺設在圖中任何位置
    (2)循序圖:以類似柵欄的方式描述物件的互動,每加一個新物件就加入到圖的右邊

  • 類別圖:用來描述整體系統的個別內容和類別之間的關係圖,表達出整體系統的靜態結構

  • 設計類別圖:清楚說明屬性與操作,稱之設計類別圖
    (1)必須在類別中增加類別操作
    (2)類別間必須增加導覽箭頭
    (3)在墓地物件的導覽箭頭下加上角色名稱relename
    (4)在目的物件表現出多重性
    (5)去除關聯名稱

詞彙補充
概念類別conceptual class