這個作業屬於哪個課程 | 軟體工程2024 - 廣東工業大學 |
---|---|
這個作業要求在哪裡 | 團隊作業3--需求改進&系統設計 |
這個作業的目標 | 1.需求&原型改進 2.系統設計 3.Alpha任務分配計劃 4.測試計劃 |
團隊成員
姓名 | 學號 |
---|---|
溫惠蘭(組長) | 3222004641 |
陳靖凱 | 3122004856 |
徐天 | 3121000506 |
黃立韜 | 3122004609 |
劉國浩 | 3122004619 |
張樹程 | 3122004802 |
王喆 | 3122004625 |
1.需求&原型改進
1.1對選題及需求進行修改
-
問題:是否需要支援使用者自定義字型和顏色,如何確保字型顯示在不同作業系統和裝置上的一致性??
-
修改:只提供簡單的字型屬性修改功能,支援常見字型和顏色選擇。
-
問題:如何處理大文字檔案的編輯和效能最佳化?
-
修改:採用延遲載入,只載入當前使用者正在編輯的文字部分,而不是一次性載入整個大檔案。可以根據使用者滾動或游標位置動態載入文字內容,以減少記憶體佔用和提高響應速度。
-
問題:圖片檔案大小和解析度對應用效能的影響大不大?
-
修改:根據圖片在應用中的顯示需求,選擇適當的解析度。不需要顯示高解析度的圖片時,可以使用低解析度的圖片來減少記憶體消耗和載入時間。
1.2修改完善上週提交的需求規格說明書
根據與師兄師姐的交談,我們做出瞭如下改進
不足1:沒有考慮到大檔案對應用效能的消耗及記憶體佔用
改進1:對大檔案進行分類處理,大文字檔案採用延遲載入來解決,大圖片檔案採用調整解析度的方法來解決
不足2:沒有考慮到不同系統之間的差異性,可能造成不同版本作業系統執行的應用產生介面效果的不一致
改進2:只支援常見字型和顏色選擇與修改。
1.3功能分析的四個象限
外圍功能 | 殺手功能 | |
---|---|---|
必要需求 | 開啟檔案,對文字的編輯,文字樣式的修改,將文字內容儲存到檔案 | 程式碼編輯時語法高亮、自動補全,支援在Markdown文字展示數學公式 |
輔助需求 | 介面控制元件設計可以滿足應用的使用 | 支援主題更改,更好地滿足使用者在不同環境下的使用 |
1.4調整任務分解WBS及相應的專案進度計劃
時間 | 安排 |
---|---|
第11周 | 1. 團隊專案Alpha任務分配計劃,團隊成員的各負責模組要完成初步的程式碼實現 |
2. 連續7天的Alpha敏捷衝刺,7 篇 每日Scrum Meeting部落格+程式碼提交 | |
第12、13周 | 1.使用者反饋+測試計劃改進 |
2. 團隊Alpha階段個人總結 | |
3. 團隊專案Alpha部落格:釋出說明、測試報告、展示部落格、專案管理 | |
第14周 | 1. 團隊專案Alpha部落格:事後分析 |
2.系統設計
2.1 架構設計
2.2 初步介面設計
介面呼叫設計
class MainWindow : public QMainWindow {
Q_OBJECT
public:
void initializeUI(); // 初始化UI介面
void setupMenus(); // 設定選單欄
void setupToolbars(); // 設定工具欄
void setupHelp(); // 設定幫助資訊
};
文字基本編輯操作設計
class TextEditor : public QTextEdit {
public:
//設定字型顏色。
void setFontColor(const QColor& color, QTextCursor startCursor, QTextCursor endCursor);
//設定字型型別。
void setFontFamily(const QString& family, QTextCursor startCursor, QTextCursor endCursor);
//設定字型大小。
void setFontSize(int size, QTextCursor startCursor, QTextCursor endCursor);
//設定字型加粗。
void setFontBold(bool bold, QTextCursor startCursor, QTextCursor endCursor);
//設定字型斜體。
void setFontItalic(bool italic, QTextCursor startCursor, QTextCursor endCursor);
//剪下文字
void cutText();
//複製文字
void copyText();
//貼上文字
void pasteText();
//清空文字內容
void clearText();
};
檔案選擇及讀寫設計
class FileManager {
public:
//開啟指定檔案路徑的內容,並載入到TextEditor中
bool openFile(const QString& filePath, const QString& fileType, TextEditor* textEdit);
//將TextEditor儲存到指定檔案路徑中
bool saveFile(const QString& filePath, const QString& fileType, TextEditor* textEdit);
//獲取指定檔案型別的檔案路徑
bool getFilePath(QString& filePath, const QString fileType);
};
程式碼塊設計
class CodeBlock
{
//程式碼補全
QStringList autoCompleteSuggestions(TextEditor* textEdit, QTextCursor Cursor);
//語法高亮設定
void enableSyntaxHighlighting(TextEditor* textEdit, QTextCursor Cursor);
};
主題切換設計
class ThemeManager {
public:
ThemeManager();
void setTheme(const QString& themeName);
};
Markdown渲染設計
class MarkdownOperation{
public:
//渲染Markdown效果
void renderMarkdown(TextEditor* textEdit);
//檢查公式語法
bool checkFormulaSyntax(const QString& latexCode);
};
3.Alpha任務分配計劃
3.1 功能待實現
3.2 分解任務構成Sprint Backlog
3.3甘特圖(擬定迭代衝刺計劃)
4.測試計劃
測試總綱 | 內容 | 時間計劃 | 計劃用時 |
---|---|---|---|
單元測試 | 多組測試資料,單元測試的程式碼覆蓋率達到70% | 團隊成員在完成對應模組時完成 | 1天 |
功能測試 | 確保編輯器最基本的文字編輯功能可以正常使用 | 介面呼叫、文字基本編輯操作完成進行 | 1天 |
介面測試 | 確保介面的所有控制元件都能正確做出相應,以及能滿足使用者的正常使用 | 專案完全整合後進行 | 1天 |
效能測試 | 測試在開啟大檔案時,程式的響應速度,及佔用記憶體的情況 | 專案完全整合後進行 | 1天 |
正確性測試 | 檢驗語法高亮,程式碼補全以及Markdown渲染是否正確 | 專案完全整合後進行 | 1天 |