示例-软件构架文档
http://ir.hit.edu.cn/~car/programming/rup/examples/course_reg/elaboration/ex_sadoc.htm
?
課程注冊系統
軟件構架文檔
?
版本 1.0
修訂歷史記錄
| 日期 | 版本 | 說明 | 作者 |
| 21/March/1999 | 1.0 | 使用 SoDA 模板和 Rose 模型生成軟件構架文檔。 | S. Johnson |
?
?
目錄
1. 簡要說明
2. 參考
3. 構架表示方式
4. 構架目標和約束
5. 用例視圖
6. 邏輯視圖
7. 進程視圖
8. 部署視圖
9. 大小和性能
10. 質量
?
軟件構架文檔
軟件構架文檔提供了課程注冊系統構架方面的綜合概述。課程注冊系統是 Wylie College 為支持聯機課程注冊而進行開發的。
本文檔從利用 Rose 實施的課程注冊分析設計模型中直接生成。大部分章節都是使用 SoDA 和軟件構架文檔模板從 Rose 模型中摘錄而來。
適用的參考資料包括:
本文檔以一系列的視圖表示構架,包括用例視圖、流程視圖、部署視圖和實施視圖。這些視圖表示為 Rose Model 并使用統一建模語言 (UML)。
有一些重要的需求和系統約束對構架有重大的影響。它們分別是:
關于軟件構架用例視圖的說明。對于所選擇的場景集和(或)作為迭代焦點的用例集,用例視圖是很重要的輸入。用例視圖描述那些代表了某些重要的核心功能的場景集和/或用例集。它還要描述那些在構架方面的涉及范圍很廣(使用了許多構架元素)的場景集和/或用例集,或者那些強調或闡明了構架的某一具體的細微之處的場景集和/或用例集。
課程注冊用例包括:
- 登錄 (Login)
- 課程注冊 (Register for Courses)
- 維護學生信息 (Maintain Student Information)
- 維護教授信息 (Maintain Professor Information)
- 選擇要講授的課程 (Select Courses to Teach)
- 提交成績 (Submit Grades)
- 查看成績報告單 (View Report Card)
- 結束注冊 (Close Registration)
這些用例由學生、教授或者注冊員主角啟動執行。此外,還與外部主角交互;同時還有課程目錄和收費系統。
圖名:在構架方面具有重要意義的用例
?
簡要說明:本用例允許注冊員結束注冊流程。開設的課程如果沒有足夠學生則將被取消。每門開設課程必須至少有三名學生。每門沒有被取消的課程按各個學生的情況通知收費系統,這樣就可以根據該門課程對學生進行收費。本用例主要的主角是注冊員。收費系統是本用例中包含的一個主角。
?
簡要說明:本用例描述了用戶如何登錄到課程注冊系統。啟用此用例的主角為學生、教授和注冊員。
?
簡要說明:本用例允許注冊員維護注冊系統中的教授信息。其中包括添加、修改和從系統中刪除教授信息。本用例的主角是注冊員。
?
簡要說明:本用例允許教授從課程目錄里選擇他(她)在新學期適合任教而且也愿意講授的課程(課程的時間和日期將在以后安排)。教授是開始本用例的主角。課程目錄系統是用例中包含的一個主角。
?
簡要說明:本用例允許學生注冊本學期的課程。如果在學期開始的選/退課期間情況發生一些變化,那么學生也可以修改或刪除自己所選的課程。所有的注冊更新都會通知給收費系統。課程目錄提供一個本學期所有課程的列表。本用例主要的主要主角是學生。課程目錄系統是用例中包含的一個主角。
?
簡要說明:本用例允許學生查看他(她)在上一個結束學期的成績報告單。本用例的主角是學生。
?
簡要說明:本用例允許教授提交在上個學期結束授課的一個或多個班的學生成績。本用例的主角是教授。
?
簡要說明:本用例允許注冊員維護注冊系統中的學生信息。其中包括添加、修改和從系統中刪除學生信息。本用例的主角是注冊員。
關于構架的邏輯視圖的說明。該視圖說明了最為重要的類、它們在服務包和子系統中的組織以及如何將子系統組織為多個層。還說明了最重要的用例實現(例如,構架的動態方面)。類圖還可以用來說明在構架方面具有主要意義的類、子系統、包和層相互之間的關系。
課程注冊系統的邏輯視圖由三個主要的包組成:用戶界面、業務服務和業務對象。
用戶接口包包含主角用來同系統通信的各種形式的類。邊界類用于支持登錄、維護課程表、維護教授信息、選擇課程、提交成績、維護學生信息、結束注冊和查看成績報告單。
業務服務包包含與財務系統交互、控制學生注冊和管理學生評估的控制類。
業務對象包包含大學工件(例如,課程、課程表)的實體類以及同課程目錄系統交互的邊界類。
?
?
層
用戶界面層包含所有表示用戶看到的應用程序屏幕的邊界類。該層依賴于流程對象層,它跨越了客戶機和中間層之間的界限。
層
業務服務流程層包括代表驅動應用程序行為的用例管理器的所有控制器類。該層代表從客戶機到中間層的邊界。業務服務層依賴于流程對象層;它跨越了客戶機和中間層之間的分界。
層
業務對象層包括表示應用程序領域內“事物”的所有實體類。這些實體類駐留在服務器上,并利用服務類來協助完成它們的職責。
層
系統類在面向對象的系統和由底層系統庫支持的功能行為之間提供緩沖區。系統層包括所有支持安全訪問課程注冊系統及其數據的類。
層
中間件層支持對關系型 DBMS 和面向對象的 DBMS 的訪問。
Java 包包括的類支持與遠程對象交互的接口、多線程執行和可運行代碼。
基本復用包包括支持列表功能和模式的類。
關于構架進程視圖的說明。描述了系統運行時涉及到的任務(進程和線程)以及它們之間的交互和配置。還描述了各種任務的對象和類的分配。
進程模型說明了按可執行進程進行組織的課程注冊類。進程用于支持學生注冊、教授功能、結束注冊以及對外部財務系統和課程目錄系統的訪問。
圖名稱:進程
該進程管理對遺留課程目錄系統的訪問。它可以為多個注冊課程的用戶所共享。該進程還允許將最近所檢索的課程存儲到高速緩沖區以提高性能。
CourseCatalog 進程內部的獨立線程(即 CourseCache 和 OfferingCache)用于異步檢索遺留系統的項目。
分析機制:
- 遺留接口
需求的可追蹤性:
- 設計約束:系統將與現有的遺留系統(課程目錄數據庫)集成。
?
一個關于課程的完整目錄,包括所有課程科目以及大學在以前各個學期所開設的課程。
該類起到適配器的作用(請參照 Gamma 模式)。它的作用就是確保能夠通過子系統的 ICourseCatalogIt 接口訪問 CourseCatalogSystem。
?
對每一個當前正在注冊課程的學生,都會產生該進程的一個實例。
?
其支持的用例允許學生注冊本學期的課程。如果在學期開始的選/退課期間情況發生一些變化,那么學生也可以修改或刪除自己所選的課程。
分析機制:
- 分布
?
管理學生功能,包括處理用戶界面和同業務流程進行協作。
對每一個當前正在注冊課程的學生,都會產生該進程的一個實例。
?
控制學生申請的界面。控制學生使用的一系列表單。
?
本進程同外部財務(收費)系統進行通信以啟動對學生收費的任務。
?
結束注冊進程在注冊周期結束時啟動。本進程與控制財務系統訪問的進程進行通信。
?
財務系統支持提交本學期的學生注冊課程收費單。
分析機制:
- 遺留接口
?
結束注冊控制器控制對財務系統的訪問。
分析機制:
- 分布
?
圖名稱:設計元素的進程
管理學生功能,包括處理用戶界面和同業務流程進行協作。
對每一個當前正在注冊課程的學生,都會產生該進程的一個實例。
?
控制學生申請的界面。控制學生使用的一系列表單。
?
對每一個當前正在注冊課程的學生,都會產生該進程的一個實例。
?
其支持的用例允許學生注冊本學期的課程。如果在學期開始的選/退課期間情況發生一些變化,那么學生也可以修改或刪除自己所選的課程。
分析機制:
- 分布
?
結束注冊進程在注冊周期結束時啟動。本進程與控制財務系統訪問的進程進行通信。
?
結束注冊控制器控制對財務系統的訪問。
分析機制:
- 分布
?
本進程同外部財務(收費)系統進行通信以啟動對學生收費的任務。
?
財務系統支持提交本學期的學生注冊課程收費單。
分析機制:
- 遺留接口
?
大學提供的某一門課。
分析機制:
- 永久性
- 遺留接口
一個關于課程的完整目錄,包括所有課程科目以及大學在以前各個學期所開設的課程。
該類起到適配器的作用(請參照 Gamma 模式)。它的作用就是確保能夠通過子系統的 ICourseCatalogIt 接口訪問 CourseCatalogSystem。
課程高速緩沖線程用于異步檢索遺留課程目錄系統的項目。
該進程管理對遺留課程目錄系統的訪問。它可以為多個注冊課程的用戶所共享。該進程還允許將最近所檢索的課程存儲到高速緩沖區以提高性能。
CourseCatalog 進程內部的獨立線程(即 CourseCache 和 OfferingCache)用于異步檢索遺留系統的項目。
分析機制:
- 遺留接口
需求的可追蹤性:
- 設計約束:系統將與現有的遺留系統(課程目錄數據庫)集成。
OfferingCashe 線程用于異步檢索遺留課程目錄系統的項目。
?
某一課程的具體開設情況,包括一周上課的天數和時間。
分析機制:
- 永久性
- 遺留接口
圖名稱:主框架
本進程同外部財務(收費)系統進行通信以啟動對學生收費的任務。
?
結束注冊進程在注冊周期結束時啟動。本進程與控制財務系統訪問的進程進行通信。
?
財務系統支持提交本學期的學生注冊課程收費單。
分析機制:
- 遺留接口
?
結束注冊控制器控制對財務系統的訪問。
分析機制:
- 分布
?
對每一個當前正在注冊課程的學生,都會產生該進程的一個實例。
?
其支持的用例允許學生注冊本學期的課程。如果在學期開始的選/退課期間情況發生一些變化,那么學生也可以修改或刪除自己所選的課程。
分析機制:
- 分布
?
管理學生功能,包括處理用戶界面和同業務流程進行協作。
對每一個當前正在注冊課程的學生,都會產生該進程的一個實例。
?
控制學生申請的界面。控制學生使用的一系列表單。
?
該進程管理對遺留課程目錄系統的訪問。它可以為多個注冊課程的用戶所共享。該進程還允許將最近所檢索的課程存儲到高速緩沖區以提高性能。
CourseCatalog 進程內部的獨立線程(即 CourseCache 和 OfferingCache)用于異步檢索遺留系統的項目。
分析機制:
- 遺留接口
需求的可追蹤性:
- 設計約束:系統將與現有的遺留系統(課程目錄數據庫)集成。
?
一個關于課程的完整目錄,包括所有課程科目以及大學在以前各個學期所開設的課程。
該類起到適配器的作用(請參照 Gamma 模式)。它的作用就是確保能夠通過子系統的 ICourseCatalogIt 接口訪問 CourseCatalogSystem。
?
圖:進程模型與設計模型間的依賴關系
?
圖名稱:實施進程
控制教授申請的界面。控制教授使用的一系列表單。
管理學生功能,包括處理用戶界面和同業務流程進行協作。
對每一個當前正在注冊課程的學生,都會產生該進程的一個實例。
對每一個當前正在注冊課程的學生,都會產生該進程的一個實例。
結束注冊進程在注冊周期結束時啟動。本進程與控制財務系統訪問的進程進行通信。
本進程同外部財務(收費)系統進行通信以啟動對學生收費的任務。
* 遠程接口用來確認所有的遠程對象。任何作為遠程對象的對象都必須直接或者間接地實施該接口。只有在遠程接口中指定的方法才能遠程使用。
* 實施類可以實施任何數目的遠程接口,還可以擴展其它遠程實施類。
* 如果一個類的實例確定由某個線程來執行,那么應該由該類來實現 Runnable 接口。該類必須定義一個稱為 run 的不調用任何參數的方法。
* 該接口設計用于為在那些在活動狀態時執行代碼的對象提供一個公用的協議。例如,Runnable 由類 Thread 實現。
* 活動狀態只不過表示一個線程已經開始,但還沒有被停止。
OfferingCashe 線程用于異步檢索遺留課程目錄系統的項目。
該進程管理對遺留課程目錄系統的訪問。它可以為多個注冊課程的用戶所共享。該進程還允許將最近所檢索的課程存儲到高速緩沖區以提高性能。
CourseCatalog 進程內部的獨立線程(即 CourseCache 和 OfferingCache)用于異步檢索遺留系統的項目。
分析機制:
- 遺留接口
需求的可追蹤性:
- 設計約束:系統將與現有的遺留系統(課程目錄數據庫)集成。
* thread 是在程序中的執行線程。Java 虛擬機允許一個應用程序同時運行多個線程。
* 每一線程都有其相應的優先級。較高優先級的線程要先于較低優先級的線程被執行。每一個線程可以被標記為一個守護進程,但也可以不這樣做。如果在某個線程中運行的代碼創建了一個新的線程對象,則將新線程的優先級最初需要設置為與它的父線程的優先級相同,而且當且僅當父線程是守護進程時它才也是一個守護進程。
課程高速緩沖線程用于異步檢索遺留課程目錄系統的項目。
構架部署視圖的有關說明。描述了最常用平臺配置的不同物理節點。還描述了如何將任務(從流程視圖)分配到物理節點。
該部分按照物理網絡配置進行組織;在利用部署圖說明每個這樣的配置后,接著映射每個處理器的進程。
圖名稱:部署視圖
學生利用連接到大學服務器的外部臺式 PC 通過 internet 撥號上網進行課程注冊。
學生利用通過 LAN 直接連接到大學服務器的本地臺式 PC 進行課程注冊。教授也利用這些本地 PC 來選擇課程和提交學生成績。注冊員則利用這些本地 PC 來維護學生和教授信息。
注冊服務器是大學校園的 UNIX 主服務器。所有的教師和學生都可以通過校園 LAN 來訪問該服務器。
課程目錄系統是一個包含有完整課程目錄的遺留系統。通過大學服務器和 LAN 即可對它進行訪問。
收費系統(也稱為財務系統)是一個遺留系統,它生成每個學期的學生收費單。
所選的軟件構架支持關鍵性的關于大小確定和時機選擇的需求,這一點在補充規約 [15] 中已有規定。
所選的構架通過客戶機服務器構架的實施來支持關于大小確定和時機選擇的需求,客戶機部分在本地校園 PC 或遠程撥號 PC 上實現。構件設計用于確保 PC 客戶機部分需要最少的磁盤空間和內存。
軟件構架支持質量需求,這一點在補充規約 [15] 中已有規定。
總結
- 上一篇: Hibernate Reference
- 下一篇: 软件架构设计最佳实践