1.前言
本博文是根據本學期的工程實踐項目以及高級軟件工程所學知識,通過需求分析建立用例建模和業務領域建模,以及數據建模,完成一個軟件設計的流程,是一種敏捷統一過程的基本建模方法。
工程實踐項目為學生的選課系統,該系統可以完成學生對於選課與退課的需求,並可以查看課程成績,教師也可以在該系統上對學生成績進行填寫,管理員可以為二者提供相關的權限,以及一定約束。
2.需求分析
所謂"需求分析",是指對要解決的問題進行詳細的分析,弄清楚問題的要求,包括需要輸入什么數據,要得到什么結果,最后應輸出什么。可以說,在軟件工程當中的"需求分析"就是確定要計算機"做什么",要達到什么樣的效果。可以說需求分析是做系統之前必做的。
在軟件工程中,需求分析指的是在建立一個新的或改變一個現存的電腦系統時描寫新系統的目的、范圍、定義和功能時所要做的所有的工作。需求分析是軟件工程中的一個關鍵過程。在這個過程中,系統分析員和軟件工程師確定顧客的需要。只有在確定了這些需要后,他們才能夠分析和尋求新系統的解決方法。需求分析階段的任務是確定軟件系統功能。
2.1 學生用戶功能需求
學生用戶可以輸入學號、密碼登錄系統,查看選課信息,並在相應的選課時間段進行課程選擇。對於已經選上的課程,可以進行課表查看和退課。學生的個人信息可以在信息中心進行修改。教師將課程成績發布后,學生可以在系統上查看成績。
2.2 教師用戶功能需求
教師用戶可以輸入賬號、密碼登錄系統,查看自己的課程安排。教師能夠登錄成績。
2.3 管理員用戶功能需求
管理員用戶可以輸入賬號、密碼登錄系統。管理員可以對選課系統的使用用戶進行管理(添加、刪除、更改權限),也可以對當前的課程、成績進行管理。
3 用例建模
用例(Use Case)的核心概念中首先它是一個業務過程(business process),經過邏輯整理抽象出來的一個業務過程,這是用例的實質。在待開發軟件所處的業務領域內完成特定業務任務(business task)的一系列活動就是業務過程。用例模型主要由以下元素構成:
參與者(Actor) 參與者是指存在於被定義系統外部並與該系統發生交互的人或其他系統,他們代表的是業務領域內的參與者或者業務實體。
用例(Use Case) 用例必須能為特定的參與者完成一個特定的業務任務,用於表示系統所提供的服務。
通訊關聯(Communication Association) 通訊關聯用於表示參與者和用例之間的對應關系。
用例建模的基本步驟
- 從需求表述中找出用例,往往是動名詞短語表示的抽象用例;
- 描述用例開始和結束的狀態,用TUCBW和TUCEW表示的高層用例;
- 對用例按照子系統或不同的方面進行分類,描述用例與用例、用例與參與者之間的上下文關系,並畫出用例圖;
- 進一步逐一分析用例與參與者的詳細交互過程,完成一個兩列的表格將參與者和待開發軟件系統之間從用例開始到用例結束的所有交互步驟都列舉出來擴展用例。
其中第一步到第三步是計划階段,第四步是增量實現階段。
(1)學生例圖

(2)管理員例圖

(3)教師模塊

4 業務領域建模
4.1概念
業務對象模型(也叫領域模型 domain model)是描述業務用例實現的對象模型。它是對業務角色和業務實體之間應該如何聯系和協作以執行業務的一種抽象。業務對象模型從業務角色內部的觀點定義了業用例。該模型為產生預期效果確定了業務人員以及他們處理和使用的對象(“業務類和對象”)之間應該具有的靜態和動態關系。它注重業務中承擔的角色及其當前職責。這些模型類的對象組合在一起可以執行所有的業務用例 。
4.2 基本步驟
第一步,收集應用業務領域的信息。聚焦在功能需求層面,也考慮其他類型的需求和資料;
第二步,頭腦風暴。列出重要的應用業務領域概念,給出這些概念的屬性,以及這些概念之間的關系;
第三步,給這些應用業務領域概念分類。分別列出哪些是類、哪些屬性和屬性值、以及列出類之間的繼承關系、聚合關系和關聯關系。
第四步,將結果用 UML 類圖畫出來。
下表是應用業務領域概念,以及概念的屬性
| 類名 |
屬性 |
| 學生 |
姓名,學號,班級,密碼等 |
| 教師 |
姓名,密碼,賬號,授課等 |
| 管理員 |
賬號,密碼,姓名,用戶管理等 |
| 課程 |
課程號,課程名稱,學分,授課老師,允許選課的學生人數等 |
| 成績 |
課程號,課程名稱,分數 |
UML圖實現業務類圖

5數據模型設計
5.1概念
數據模型(Data Model)是數據特征的抽象,它從抽象層次上描述了系統的靜態特征、動態行為和約束條件,為數據庫系統的信息表示與操作提供一個抽象的框架。數據模型所描述的內容有三部分,分別是數據結構、數據操作和數據約束。
5,.2數據模型
(1)學生
| 字段名稱 |
字段類型 |
字段描述 |
| Student_id |
int |
主鍵 |
| account |
varchar |
賬號 |
| password |
varchar |
密碼 |
| name |
varchar |
姓名 |
| |
varchar |
電子郵件 |
| class |
varchar |
班級 |
| lessons |
set |
課程 |
(2)教師
| 字段名稱 |
字段類型 |
字段描述 |
| Teacher_id |
int |
主鍵 |
| account |
varchar |
賬號 |
| password |
varchar |
密碼 |
| name |
varchar |
姓名 |
| |
varchar |
電子郵件 |
| course |
varchar |
課程 |
(3)管理員
| 字段名稱 |
字段類型 |
字段描述 |
| Administrator_id |
int |
主鍵 |
| Account |
varchar |
賬號 |
| password |
varchar |
密碼 |
| name |
varchar |
姓名 |
| |
varchar |
電子郵件 |
| jurisdiction |
int |
權限 |
(4)課程
| 字段名稱 |
字段類型 |
字段描述 |
| Course_id |
int |
主鍵 |
| Course_name |
varchar |
課程名稱 |
| Course_location |
varchar |
上課地點 |
| Course_time |
varchar |
上課時間 |
| Course_weeks |
varchar |
課程的周數 |
| Course_teacher |
varchar |
授課老師 |
| Course_credit |
int |
課程學分 |
(5)成績
| 字段名稱 |
字段類型 |
字段描述 |
| Course_id |
Int |
主鍵 |
| Course_grade |
set |
成績表 |
| Course_student |
set |
學生表 |
6.概念原型
6.1概念
概念是人對能代表某種事物或發展過程的特點及意義所形成的思維結論。
概念原型是一種虛擬的、理想化的軟件產品形式。
其定義用以下公式描述:
概念原型 = 用例 + 數據模型。
6.2工作過程舉例
學生進行登錄,選擇學生窗口登錄,填入賬號以及密碼進行登錄,系統進行校驗,完成登錄。學生可以在登錄界面點擊修改密碼,通過郵件認證方式進行修改確認;學生可以根據課程名稱,選擇課程,或者推選課程,並可以查看課程成績;教師登錄后,可以查看自己課程信息,如課程地點時間,並對學生打分;管理員掌管對用戶信息以及成績課程數據的增刪改查最高權限。
7.總結
本文參考了軟件工程的相關知識,並結合工程實踐項目,根據老師上課的內容以及ppt內容,完成對於項目的需求分析。在此過程中,我對系統本身業務的理解也更為深刻,也將有利於后續系統的開發。
8.參考文獻
https://gitee.com/mengning997/se/tree/master/ppt
https://baike.baidu.com/item/%E9%9C%80%E6%B1%82%E5%88%86%E6%9E%90/2012709?fr=aladdin 需求分析概念
https://www.cnblogs.com/handson/p/11928113.html 業務領域建模
