软件工程第一次结队作业

软件工程第一次结队作业

软件工程 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 模型这把放大镜,仔细探寻问题,如同寻找宝藏线索,明晰用户需求及解决之道。从功能到界面,从大框架到小细节,遵循“先主后次,逐步完善”的原则,让项目稳步前行。
谈及功能页面,我们仿佛小小建筑师,先绘制出“项目与伙伴的梦幻推荐区”“项目发起的大平台”“合作伙伴的交流空间”“个人风采展示区”这四大模块的蓝图,如同四颗璀璨宝石嵌入软件模型。随后逐步添砖加瓦,确保每一步坚定而有趣,避开“分析陷阱”“过度优化”“盲目扩张”等阻碍,使项目之路畅通无阻。
在软件风格设计方面,我们化身时尚达人,紧跟用户审美潮流,打造出简约而不失个性的界面。软件界面如同穿着得体又活泼的伙伴,让人一眼就能感受到其实用与魅力。而且,特意将软件难度调整得恰到好处,如同稍踮脚尖就能摘到的苹果,让我们在挑战中成长并满载成就感。
最后,这真是一场酣畅淋漓的学习之旅!

posted @ 2024-09-27 22:20  关忆南北  阅读(21)  评论(0编辑  收藏  举报