0. 前言
本文主要基於高軟課程中的《從需求分析到軟件設計》課件[1],結合學院安排的工程實踐項目,體會如何在項目中進行需求分析,在頭腦風暴中提取有用信息(如需求分析、用例建模、業務類圖等),從而為最終的軟件設計打下基礎。
本項目為學生選課管理系統[2],可以為不同用戶提供不同的功能,如學生用戶的選課、退課、查看成績等服務,教師用戶查看課表、添加成績等服務,管理員可以總體的管理課程、成績,統籌維護系統。
1. 需求分析
1.1 需求分析概述
需求分析也稱為軟件需求分析、系統需求分析或需求分析工程等,是開發人員經過深入細致的調研和分析,准確理解用戶和項目的功能、性能、可靠性等具體要求,將用戶非形式的需求表述轉化為完整的需求定義,從而確定系統必須做什么的過程[3]。下面我們將就本項目提取需求,分析該選課系統應該具備的功能。
1.2 學生用戶功能需求
學生用戶可以輸入學號、密碼登錄系統,查看選課信息,並在相應的選課時間段進行課程選擇。對於已經選上的課程,可以進行課表查看和退課。學生的個人信息可以在信息中心進行修改。教師將課程成績發布后,學生可以在系統上查看成績。
1.3 教師用戶功能需求
教師用戶可以輸入賬號、密碼登錄系統,查看自己的課程安排。教師能夠登錄成績。
1.4 管理員用戶功能需求
管理員用戶可以輸入賬號、密碼登錄系統。管理員可以對選課系統的使用用戶進行管理(添加、刪除、更改權限),也可以對當前的課程、成績進行管理。
2. 項目用例建模
2.1 用例建模簡介
用例的核心概念中首先它是一個業務過程,經過邏輯整理抽象出來的一個業務過程,這是用例的實質。在待開發軟件所處的業務領域內完成特定業務任務的一系列活動就是業務過程。
在需求中提取一個用例的通用方法如下:
①從需求表述中找出用例。
②描述用例的開始和結束的狀態。
③對用例按照子系統或者不同方面進行分類。
④進一步逐一分析用例和參與者的交互過程。
用例的准確提取是至關重要的,業務任務的動名詞短語往往可以非常精簡的指明一個用例。判斷一個動名詞和動名詞短語是不是用例的標准是需要滿足以下四個必要條件:
必要條件1:它是不是一個業務過程?
必要條件2:它是不是由某個參與者觸發開始?
必要條件3:它是不是顯式或者隱式地終止於某個參與者?
必要條件4:它是不是為某個參與者完成了有用的業務工作?
下面我們以本管理系統中的部分學生需求提取用例:學生用戶可以登錄系統,查看選課信息,並在相應的選課時間段選擇課程。在這里我們可以看到,這段話中我們可以提取出三個動名詞短語:
登錄系統、查看選課信息、選擇課程
這三個動名詞短語都是系統的業務過程,均由學生這個參與者觸發,並且顯式地終止於學生這個參與者。登錄系統,查看選課信息,選擇課程,這些都為參與者提供了信息和服務,完成了有用的業務工作,所以他們都是用例。
2.2 項目中的用例建模
根據上述分析,我們不難得到如下用例建模:
(1)學生用例圖
(2)教師用例圖
(3)管理員用例圖
3. 項目業務類圖
3.1 業務領域建模簡介與方法
業務建模是以軟件模型方式描述企業管理和業務所涉及的對象和要素、以及它們的屬性、行為和彼此關系,業務建模強調以體系的方式來理解、設計和構架企業信息系統[3]。業務領域建模是開發團隊用於獲取業務領域知識的過程。
業務領域建模的基本步驟如下:
①收集業務領域的信息。
②頭腦風暴。列出業務領域概念、屬性、關系。
③將這些業務領域概念分類為類、屬性和關系。
④用UML圖繪制上屬關系。
3.2 項目中的業務建模
根據我們在需求分析和用例分析中得到的結果,我們不難可以提出下面五個類:學生、教師、管理員和課程。列出他們的屬性如下:
類名 |
屬性 |
學生 |
學號,密碼,姓名,學院,專業等 |
教師 |
賬號,密碼,姓名,學院,任課課程等 |
管理員 |
賬號,密碼,姓名,權限,課程管理、用戶管理、成績管理等 |
課程 |
課程ID,課程名,任課教師,學分等 |
成績 |
課程ID,學生名單,成績名單等 |
3.3 UML圖實現業務類圖
根據上述分析,我們可以繪制出如下五個類的業務類圖。
4. 項目數據模型
4.1 數據模型簡介
數據模型是數據特征的抽象,它從抽象層次上描述了系統的靜態特征、動態行為和約束條件,為數據庫系統的信息表示與操作提供一個抽象的框架。數據模型所描述的內容有三部分,分別是數據結構、數據操作和數據約束[5]。
4.2 教學管理系統中的數據模型
根據上述對於用例圖、業務類圖的分析,我們不難可以提取出各個類中的數據模型,具體如下所示:
(1) 學生表
數據名 |
數據類型 |
數據長度 |
能否NULL |
是否為主鍵 |
備注 |
student_id |
bigint |
16 |
N |
Y |
學生id |
account |
varchar |
20 |
N |
N |
賬號 |
password |
varchar |
20 |
N |
N |
密碼 |
name |
varchar |
20 |
N |
N |
姓名 |
college |
varchar |
20 |
N |
N |
所屬學院 |
major |
varchar |
20 |
N |
N |
專業 |
phonenumber |
bigint |
16 |
Y |
N |
電話 |
|
varchar |
20 |
Y |
N |
郵箱地址 |
lesson |
set |
1000 |
Y |
N |
所選課程 |
(2) 教師表
數據名 |
數據類型 |
數據長度 |
能否NULL |
是否為主鍵 |
備注 |
Teacher_id |
bigint |
16 |
N |
Y |
教師id |
account |
varchar |
20 |
N |
N |
賬號 |
password |
varchar |
20 |
N |
N |
密碼 |
name |
varchar |
20 |
N |
N |
姓名 |
phonenumber |
bigint |
16 |
Y |
N |
電話 |
|
varchar |
20 |
Y |
N |
郵箱地址 |
college |
varchar |
20 |
Y |
N |
所屬學院 |
lesson |
set |
1000 |
Y |
N |
教學課程 |
(3) 管理員表
數據名 |
數據類型 |
數據長度 |
能否為NULL |
是否為主鍵 |
備注 |
account_id |
bigint |
16 |
N |
Y |
管理員id |
account |
varchar |
20 |
N |
N |
賬號 |
password |
varchar |
20 |
N |
N |
密碼 |
name |
varchar |
20 |
N |
N |
姓名 |
jurisdiction |
int |
16 |
N |
N |
權限等級 |
phonenumber |
bigint |
16 |
Y |
N |
電話 |
|
varchar |
20 |
Y |
N |
郵箱地址 |
(4) 課程表
數據名 |
數據類型 |
數據長度 |
能否為NULL |
是否為主鍵 |
備注 |
lesson_id |
bigint |
16 |
N |
Y |
課程id |
lesson_time |
varchar |
20 |
N |
N |
課程時間 |
lesson_name |
varchar |
20 |
N |
N |
課程名 |
teacher_id |
bigint |
16 |
N |
N |
教師id |
credit |
bigint |
16 |
N |
N |
學分 |
(5) 成績表
數據名 |
數據類型 |
數據長度 |
能否為NULL |
是否為主鍵 |
備注 |
lesson_id |
bigint |
16 |
N |
Y |
課程id |
student_set |
set |
1000 |
N |
N |
學生列表 |
grade_set |
set |
1000 |
N |
N |
成績列表 |
5. 概念原型
5.1 概念原型簡介
概念是人對能代表某種事物或者發展過程的特點及其意義所形成的思維結論,而概念原型是一種虛擬化的、理想化的軟件產品形式。我們可以得到這樣的公式:概念原型=用例+數據模型。
5.2 項目中的概念原型
概念原型需要結合具體的用例與數據模型去分析,就好像程序是由算法和數據結構兩部分組成的。
本項目中運用到了學生用例、教師用例和管理員用例。涉及的數據模型為學生、教師、管理員、課程和成績表。
學生用戶輸入學號和密碼,登錄系統,可以點擊個人中心修改個人信息(登錄密碼、郵箱、出生年月、聯系方式等);在選課允許的時間內,選擇和退選課程,查看課表和成績,這些都是業務操作的結果。在教師用例下,教師用戶登錄后,可以查看自己的課程安排,在期末的時候也能對學生的課程進行成績評定。而對於管理員用例來說,具有最高的權限,統籌課程、用戶和成績的管理,對於這些信息進行全局的維護與增刪改查,完成相關業務工作后,管理員即可退出系統。
6. 總結
本文結合了課堂上的高軟課程和工程實踐項目,具體的分析了基於學生選課系統,如何從需求分析,到最后實現了一個軟件系統的工作過程。由於項目還在初級階段,本人理解也不是很到位,難免存在紕漏,若是能拋磚引玉就不甚榮幸。
7. 參考文獻
[1] https://gitee.com/mengning997/se/tree/master/ppt,從需求分析到軟件設計
[2] https://github.com/fuzui/StudentInfo,基於SSM的學生信息管理系統
[3]https://baike.baidu.com/item/%E9%9C%80%E6%B1%82%E5%88%86%E6%9E%90/2012709?fr=aladdin,需求分析
[4]https://baike.baidu.com/item/%E4%B8%9A%E5%8A%A1%E5%BB%BA%E6%A8%A1/6812236?fr=aladdin,業務建模
[5]https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E6%A8%A1%E5%9E%8B/1305623?fr=aladdin,數據模型