軟體工程第一次結隊作業

关忆南北發表於2024-09-27

軟體工程第一次結隊作業

軟體工程 https://edu.cnblogs.com/campus/fzu/SE2024
作業要求 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13261
作業目標 設計一款方便參加專案的app
學號 102202136
合作伙伴 102202122張誠坤

一、《構建之法閱讀成果》

1. 1. 內容回顧

《構建之法》是一部深刻剖析軟體工程領域的經典之作。在書中,作者不僅分享了軟體工程師成長的寶貴經驗,還詳細介紹了一種創新的軟體產品分析模型——NABCD模型。

1. 1.第3章:軟體工程師的成長之路

第3章深入探討了軟體工程師的個人成長和職業發展。在個人能力方面,作者強調了技術能力的重要性,這不僅包括程式設計技能的精進,還涵蓋了演算法和資料結構的深入理解。同時,作者也指出,職業技能的培養同樣重要,如自我管理和時間管理能力,這些能力有助於工程師更高效地完成任務。此外,良好的溝通能力對於團隊協作至關重要,它能夠確保資訊的準確傳遞,減少誤解。

在職業發展路徑上,作者描述了從初級工程師到高階工程師,再到技術領導的各個階段。每一階段都需要不同的技能和經驗積累。作者特別強調了持續學習的重要性,認為只有不斷學習和提升自己,工程師才能在不斷變化的技術環境中保持競爭力。

1. 2. 第8章:NABCD模型的深度解析

第8章中提出的NABCD模型,為軟體產品或專案的分析和規劃提供了一種系統的方法論。

需求(N):作者指出,深入理解使用者需求是產品成功的前提。這要求工程師不僅要關注使用者的直接需求,還要洞察使用者背後的痛點和期望。透過使用者調研和市場分析,可以收集到寶貴的需求資訊,為產品的後續設計提供指導。

做法(A):在滿足需求的具體做法上,作者提到了技術選型、功能設計和架構設計等方面。正確的做法能夠確保產品穩定、高效地執行,並滿足使用者的核心需求。作者還強調了解釋選擇這些做法的原因,以及它們如何有效解決問題的重要性。

好處(B):產品的好處是吸引使用者的關鍵。作者建議明確闡述產品如何提高效率、降低成本或增加便利性。同時,與競爭對手相比,產品的獨特優勢應該被清晰地傳達給使用者。

競爭(C):在競爭分析方面,作者認為了解市場上的競爭對手和他們的產品是至關重要的。這有助於確定產品的競爭策略,找到差異化的優勢,並在市場中脫穎而出。

推廣(D):最後,作者討論了產品的推廣策略。如何讓使用者瞭解產品,以及如何吸引使用者使用產品,是產品成功的關鍵。作者建議採用多種推廣方式,包括市場營銷、社交媒體和口碑傳播等。

NABCD模型是一個全面的思考框架,它不僅幫助工程師理解使用者需求,還指導他們如何設計、實現和推廣產品。透過這個模型,工程師可以確保他們的產品不僅能夠滿足使用者的需求,還能在激烈的市場競爭中脫穎而出,並最終實現成功的市場推廣。

二、NABCD模型

1. 1. 需求分析 (N - Need)

1. 2. 關鍵功能與介面設計 (A - Approach)

  1. 主頁面
    介面要素:
    個人中心,優秀個人及專案展示,個人/專案搜尋引擎,專案輔助(待啟專案,導師,專案管理)

    功能:專案同伴搜尋,優秀資源共享,個人資訊查詢,個人專案輔助

  2. 個人中心介面
    介面要素:賬號相關資訊及登入註冊頁面

    功能:進行個人專屬賬號設計及登入註冊

    (以下頁面從個人中心進入)

  3. 登入介面
    (個人中心進入)
    介面要素:賬號,密碼,註冊

功能:進行登入

  1. 註冊介面

    介面要素:註冊學號,註冊密碼

      功能:實現新使用者賬號註冊
    
  2. 搜尋介面
    介面要素:搜尋欄,歷史記錄,相關搜尋推薦

    功能:按使用者要求尋找/推送同要求匹配的使用者/專案

  3. 優秀專案/個人頁面

    頁面要素:專案型別, 專案獎項

    功能:優秀專案進行資源共享

  4. 待啟專案推薦頁面

    頁面要素:進行中專案列表

    功能:其餘團隊在做專案的快捷查詢

  5. 專案具體頁面

    頁面要素:負責人,專案資訊,時間安排,人員需求,加入連結

(其中每個頁面要素均有相關具體頁面,由於篇幅限制,並不贅述)

  功能:方便心儀專案的查詢
  1. 導師資訊頁面

    頁面要素:教師姓名,學科領域,科研成果,專案經歷

    功能:用於適合導師的篩選

  2. 具體專案頁面

頁面要素:負責人,專案資訊,時間安排,人員需求,加入連結

  功能:用於專案的加入

(三)、解決方案的優勢

  1. 跨學科知識共享與協作:促進不同學科學生之間的知識交流和合作。
  2. 個人技能提升和展示:提供實戰經驗積累和技能展示的平臺。
  3. 專案生命週期管理:提供從專案啟動到結束的全週期管理。
  4. 個性化推薦演算法:智慧推薦合適的專案和合作夥伴。
  5. 跨專業溝通工具與協作最佳化:提供專門的溝通和協作工具。
  6. 反饋與評估系統:提供合作完成後的反饋和評估機制。

(四)、競爭分析 (C - Competition)

  1. 現有替代方案:人際網路、導師介紹、社交媒體、校園社團和活動。
  2. 競爭優勢:系統化匹配、平臺資源支援、導師支援。

(五)、推廣策略 (D - Delivery)

  1. 在學校互助群表白牆宣傳:利用校園內的社交網路進行推廣。
  2. 成立工作室、招收工作室成員:負責軟體的維護和運營。
  3. 擴大市場,開放原始碼:吸引更多學校參與,建立校園生態圈。

透過這樣的設計,您的軟體系統將能夠有效地滿足學生在校園中進行跨學科合作的需求,提供一系列關鍵功能和介面設計,確保使用者體驗的同時,也具備了市場競爭力和推廣潛力。

三、UML用例圖

使用工具為plantuml

生成程式碼如下

點選檢視程式碼
@startuml
left to right direction
skinparam packageStyle rectangle

actor 學生 as student
actor 老師 as teacher
actor 管理者 as manager

rectangle 專案管理系統 {
  class 專案 {
    +專案步驟及完成情況: List
    +開始日期: Date
    +截至日期: Date
    +工作安排: List
    +專案資訊: String
    +訪問許可權: String
    +導師資訊: 導師
  }

  class 導師 {
    +姓名: String
    +專業領域: String
    +聯絡方式: String
    +匹配專案: 專案
  }

  student --> 專案 : 檢視專案資訊
  teacher --> 專案 : 管理專案
  manager --> 專案 : 分配資源

  student --> 專案 : <<extend>> 檢視專案步驟
  teacher --> 專案 : <<extend>> 設定專案步驟
  manager --> 專案 : <<extend>> 稽核專案步驟

  專案 "1" o-- "多" 導師 : <<關聯>> 匹配合適的導師

  usecase 檢視專案資訊 as UC1
  usecase 管理專案 as UC2
  usecase 分配資源 as UC3
  usecase 檢視專案步驟 as UC4
  usecase 設定專案步驟 as UC5
  usecase 稽核專案步驟 as UC6
  usecase 搜尋專案 as UC7

  student --> UC1
  teacher --> UC2
  manager --> UC3
  student --> UC4
  teacher --> UC5
  manager --> UC6
  student --> UC7
  teacher --> UC7
  manager --> UC7
}

note right of student : 僅檢視許可權
note right of teacher : 讀寫許可權
note right of manager : 所有許可權

note right of UC7 : 根據學科和時間搜尋專案

@enduml

四、流程圖

點選檢視程式碼 使用工具為websequencediagrams
@startuml
left to right direction
skinparam packageStyle rectangle
skinparam backgroundColor LightYellow
skinparam shadowing false
skinparam roundcorner 20
skinparam actorBackgroundColor LightBlue
skinparam rectangleBackgroundColor Wheat
skinparam usecaseBackgroundColor LightGreen

actor 學生 as student
actor 老師 as teacher
actor 管理者 as manager

rectangle 專案管理系統 {
  rectangle 專案 as project
  rectangle 導師 as tutor

  student --> project : 發起操作
  teacher --> project : 發起操作
  manager --> project : 發起操作

  project --> tutor : 關聯導師
}

usecase 檢視專案資訊 as viewProjectInfo
usecase 管理專案 as manageProject
usecase 分配資源 as allocateResource
usecase 檢視專案步驟 as viewProjectSteps
usecase 設定專案步驟 as setProjectSteps
usecase 稽核專案步驟 as reviewProjectSteps
usecase 搜尋專案 as searchProject

student --> viewProjectInfo : 使用許可權
teacher --> manageProject : 使用許可權
manager --> allocateResource : 使用許可權
student --> viewProjectSteps : 使用許可權
teacher --> setProjectSteps : 使用許可權
manager --> reviewProjectSteps : 使用許可權
student --> searchProject : 使用許可權
teacher --> searchProject : 使用許可權
manager --> searchProject : 使用許可權

note right of student : 僅具有檢視專案資訊和檢視專案步驟的許可權,以及根據學科和時間搜尋專案的許可權。
note right of teacher : 具有管理專案、設定專案步驟以及根據學科和時間搜尋專案的許可權。
note right of manager : 擁有分配資源、稽核專案步驟以及根據學科和時間搜尋專案的許可權。
note right of searchProject : 可依據學科和時間進行專案搜尋。
@enduml1. 

五、效果演示

1. 設計頁面

2. 主頁面

3. 分頁面之個人中心

  • 點選登入

  • 點選註冊!

    1. 3
  • 點選專案經歷

    1. 4
  • 點選正在參加的專案

  • 專案發起

4. 分頁面之待啟專案

  • 點選進入專案

      1. 點選負責人
    1. 3
  • 點選專案資訊

    1. 4
  • 點選時間安排

  • 點選人員需求

*4.6
點選自我介紹

5 分頁面之搜尋頁面

6 分頁面之個人專案管理

*6. 1.
點選我管理的專案

*6.2.
點選專案資訊

*6.3.
點選專案分工

*6.4.
點選專案程序

七、psp表格

八、總結

張誠坤

這次作業整體進展頗為順利,閱讀《構建之法》後收穫頗豐。我們先考量自身水平,明確已掌握的技能以及完成專案可學習的技能,從宏觀方向著手,逐步規劃。先是運用 NABCD 模型分析問題,剖析使用者需求及解決方案,從功能到介面,由大框架至細節,均基於先解決核心問題再擴充方案的思路。如功能頁面,先構建“專案與夥伴推薦”“專案發起”“合作伙伴交流”“個人資料呈現”這四個模組的大框架來設計軟體模型,而後逐步細化,避免陷入“分析麻痺”“過早最佳化”“過早擴大化”等誤區,保障專案順利推進。在軟體風格設計上,結合受益人群審美,將風格極簡且不失美觀,使軟體側重功能使用。軟體主體設計難度略高於我們現有能力,讓我們在實現過程中有新的成長。

總體而言,我們二人任務分工合理,計劃執行順暢,促使專案順利開展。

洪金舉

這次作業十分奇妙!翻開《構建之法》這本寶典,我們猶如小魔法師般汲取了豐富知識,整個人都煥發光彩!
首先,我們像超級偵探一樣進行“能力自查”,瞭解自身已具備的技能以及透過專案能解鎖的新技能。接著,拿起 NABCD 模型這把放大鏡,仔細探尋問題,如同尋找寶藏線索,明晰使用者需求及解決之道。從功能到介面,從大框架到小細節,遵循“先主後次,逐步完善”的原則,讓專案穩步前行。
談及功能頁面,我們彷彿小小建築師,先繪製出“專案與夥伴的夢幻推薦區”“專案發起的大平臺”“合作伙伴的交流空間”“個人風採展示區”這四大模組的藍圖,如同四顆璀璨寶石嵌入軟體模型。隨後逐步添磚加瓦,確保每一步堅定而有趣,避開“分析陷阱”“過度最佳化”“盲目擴張”等阻礙,使專案之路暢通無阻。
在軟體風格設計方面,我們化身時尚達人,緊跟使用者審美潮流,打造出簡約而不失個性的介面。軟體介面如同穿著得體又活潑的夥伴,讓人一眼就能感受到其實用與魅力。而且,特意將軟體難度調整得恰到好處,如同稍踮腳尖就能摘到的蘋果,讓我們在挑戰中成長並滿載成就感。
最後,這真是一場酣暢淋漓的學習之旅!

相關文章