软件工程第一次结对作业

news/2024/11/19 5:28:29/文章来源:https://www.cnblogs.com/pear-09/p/18432614
这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13261
这个作业的目标 分析客户需求困扰,设计一个项目满足客户需求;绘制原型图
姓名及学号 黎曼 102201140
结对成员及学号 黄俊瑶 102201138

目录
  • 0.Markdown编辑器
  • 1.阅读成果
    • 第三章
    • 第八章
  • 2.需求分析(NABCD模型)
    • 2.1需求 (Need)
      • 问题研究:
      • 用户需求:
    • 2.2方法 (Approach)
      • 解决方案:
      • 独特性:
    • 2.3 好处 (Benefit)
    • 2.4竞争 (Competitors)
      • 现有竞争对手
      • 竞争策略:
    • 2.5交付 (Delivery)
      • 实施策略:
  • 3.设计理念
  • 4.功能模块介绍
      • 1. 用户注册与登录
      • 2. 项目发布
      • 3. 项目筛选与申请
      • 4. 团队组建与管理
      • 5. 实时聊天功能
      • 6. 用户个人资料管理
      • 7. 安全与隐私设置
    • 点击效果演示
        • 动态效果:
      • 1. 整体界面展示
      • 2. 用户注册与登录演示
      • 3. 项目发布流程演示
      • 4. 项目浏览与申请功能演示
      • 5. 实时聊天功能演示
      • 7. 用户个人资料管理演示
      • 8. 安全与隐私设置演示
  • 5.流程分析
    • 流程图
  • 6.合作过程
    • 6.1初期探讨
    • 6.2绘制原型图
    • 6.3协同优化
  • 7.PSP表格
  • 8.个人总结
    • 黎曼
    • 黄俊瑶

0.Markdown编辑器

1.阅读成果

第三章

  《构建之法:现代软件工程》这本书的第三章主要关注软件工程师的职业发展。作为一名大学生,这一章节为我提供了一个关于如何规划自己的职业生涯、如何提升个人技能和如何在软件工程领域取得成功的全面指导。
首先,第三章强调了软件工程的综合性,它不仅包括软件开发,还涵盖了运营和维护。这意味着作为一名软件工程师,你不仅要掌握编程技能,还需要了解项目管理、团队协作、沟通和问题解决等多方面的能力
其次,第三章讨论了团队与个人流程的重要性。在团队中,每个成员都有自己的角色和职责,而个人流程则关注如何高效地完成个人任务。这包括理解需求、设计解决方案、编码、测试和维护。大学生应该学会如何在团队中发挥作用,同时也要提高自己的个人工作效率
第三章还探讨了如何衡量和证明个人能力。虽然传统的认证考试(如计算机等级考试)可以提供能力证明,但实际的项目经验、用户评价和市场占有率是更重要的衡量标准。大学生应该重视实践经验,通过参与项目来提升自己的能力
因此,第三章为我提供了一个关于如何在软件工程领域成长的蓝图,强调了技术技能、实践经验、团队合作和持续学习的重要性。

第八章

《构建之法:现代软件工程》的第八章主要聚焦于软件需求和分析。以下是我的阅读成果:

  • 软件需求分析的重要性
    核心地位:需求分析是软件开发过程中的核心环节,它决定了软件的功能、性能和用户体验。
    避免问题:忽视或错误地进行需求分析,容易导致软件功能不符合用户需求,进而影响软件的使用效果和用户体验。
  • 需求获取的步骤
    获取和引导需求:软件工程团队需要找到软件的利益相关者,通过访谈、问卷调查、参观用户现场等方式,了解和分析他们对软件的需求。
    分析和定义需求:团队需要对收集到的需求进行分析和调整,从多个角度对需求进行量化,确保需求的准确性和完整性。
    验证需求:与利益相关者沟通,实时跟进他们的需求变化,并通过报告、调查等方式验证团队对需求的理解是否正确。
    管理需求:在软件产品的生命周期中,持续管理需求,确保需求与技术的发展同步,并不断提升团队的能力。
  • 需求分析的方法
    需求访谈:与利益相关者进行面对面的交流,深入了解他们的需求和期望。
    问卷调查:设计问卷,广泛收集利益相关者的意见和建议。
    用户场景模拟:通过模拟用户的使用场景,预测和发现潜在的需求和问题。
  • 需求规格说明书
    功能说明书:从用户的角度描述软件的功能、输入、输出、界面、效率、国际化等方面。
    技术说明书:描述开发中如何实现某一功能的设计方案,为开发团队提供技术指导。
  • 常见的需求分析问题及解决方案
    问题:需求不稳定、需求冲突、需求过多等。
    解决方案:需求优先级划分、需求评审、需求管理等,确保团队在需求分析过程中能够了解需求变化和最终目标,同时避免过多的需求被混淆。
  • 团队角色与项目经理
    项目经理:负责带领团队形成团队目标,管理软件的具体功能的生命周期,创建并维护软件的规格说明书,代表客户和用户利益,收集用户反馈,分析和带领成员解决缺陷。
    能力要求:项目经理需要具备观察、理解和快速学习能力,分析管理能力,以及自省能力等。
    因此,第八章详细阐述了软件需求分析在软件开发中的重要性、步骤、方法以及常见问题的解决方案,并强调了团队角色和项目经理在需求分析过程中的关键作用。

2.需求分析(NABCD模型)

进行开发之前,需要先进行需求分析,以详细了解客户的需求。

2.1需求 (Need)

问题研究:

  • 许多学生希望通过参与跨专业的项目来提升自己,但因为缺乏有效的平台和资源,很难找到合作伙伴。
  • 当下无论是竞赛还是科研,项目的类型多样化,可能涉及设计、编程、市场营销等不同领域,学生难以找到相匹配的合作伙伴。
  • 由于校园范围较大,难以直接通过个人人脉找到合适的队友。并且由于不同专业、年级的学生由于时间安排和项目目标上的差异,合作难度较大。

用户需求:

  • 一个易于使用、能够根据兴趣和专业技能匹配合作伙伴的在线平台。
  • 同时可以为同校学生交流经验等提供窗口。
  • 同时可以为寻找指导老师等提供平台。

2.2方法 (Approach)

解决方案:

我们的解决方案是设计一个应用程序或小程序,帮助大学生跨专业寻找合适的合作伙伴。该平台不仅可以匹配不同专业的学生,还可以根据项目类型、时间安排等因素来优化推荐,具体功能包括:

  • 注册和认证系统:用户可以通过学号、专业等信息注册,确保用户的真实性。不同角色如项目发起人和项目参与者可以通过审核加入项目。
  • 项目发布和筛选:发起人可以发布项目,说明所需的技能和目标,参与者可以筛选感兴趣的项目,查看匹配的合作者。
  • 即时沟通和协作:内置聊天和日程功能,方便用户沟通和安排时间。
  • 项目反馈和评分系统:项目结束后,用户可以相互评分和反馈,为未来的合作积累信誉。

独特性:

该平台将利用智能匹配算法,根据学生的技能、兴趣和可用时间来推荐最佳合作伙伴。学生可以根据自己合适的时间以及掌握的技能来参与合适的项目。

2.3 好处 (Benefit)

  • 发现机会:学生可以轻松找到跨专业的合作机会。
  • 提高合作效率:学生可以快速找到符合要求的合作伙伴,避免了通过人工介绍或社交渠道寻找的繁琐过程。同时也为社交圈小的同学提供可以发现伙伴的平台。
  • 项目获益:通过多专业同学的交流合作,项目能够得到不同学科的交叉融合,并为参与者提供了项目管理和团队合作的体验。
  • 多学科融合:促进不同学科知识的融合和创新。
  • 资源优化:更好地利用校园内外的资源。

2.4竞争 (Competitors)

现有竞争对手

  • 在大学校园中,学生寻找合作伙伴和项目机会通常依赖于社交媒体群组、学校公告板或者通过个人人脉。这些方式虽然有一定的效果,但效率不高,且覆盖面有限。此外,一些专业的在线论坛和职业社交平台虽然可以提供更广泛的连接机会,但它们往往缺乏专注于校园内部跨专业合作的专门功能。

竞争策略:

为了在竞争中脱颖而出,需要做到以下几点:

  • 用户界面友好:提供直观、易用的用户界面,确保用户可以快速上手。
  • 强化社区功能:建立一个积极的社区氛围,鼓励用户之间的互动和交流。
  • 持续迭代更新:根据用户反馈不断优化产品功能,提升用户体验。
  • 校园合作伙伴:与学校官方、社团和教师合作,增加平台的可信度和使用率。

2.5交付 (Delivery)

实施策略:

  • 校园推广:通过学校社团、活动和课堂进行推广。
  • 用户反馈:上线初期收集用户反馈,持续优化产品。
  • 隐私性和封闭性:平台采用严格的学号认证和项目审核机制,确保信息的隐私性和用户的可信度。
  • 用户友好性:界面简洁,流程清晰,操作方便。无论是老师、助教,还是学生用户,都能轻松上手。
  • 安全性:通过加密通信和权限管理,确保用户数据的安全。

3.设计理念

基于上述NABCD模型的分析,我们决定设计一款如下网页,来满足客户的需求:

  • 用户需求导向
    网页设计始于对用户需求的深入理解。通过小组讨论,我们在网上收集了学生在寻找跨专业合作时遇到的挑战和需求。这包括对合作机会的发现、合作伙伴的筛选、项目沟通和进度跟踪等方面的需求。

  • 简洁性
    在设计网页时,我们追求简洁直观的用户界面。我们相信,清晰的布局和直观的导航可以降低用户的学习曲线,让用户快速找到他们需要的功能。

  • 功能性
    这个网页不仅仅是一个连接学生的平台,它还提供了项目管理工具,如日程管理等。这些功能旨在帮助团队更有效地协作和管理他们的项目。

  • 社区感
    我们希望这个网页能够成为一个社区,而不仅仅是一个工具。大家可以在平台上分享他们的项目、经验和知识。通过建立用户档案和展示项目成果;并且在项目结束后可以评价打分,为其他同学寻找同伴提供参考。我们希望学生能够在这里找到归属感和激励。

4.功能模块介绍

1. 用户注册与登录

  • 描述:用户可以通过学工号和密码注册登录平台。
  • 功能要点
    • 分别实现学生和教师注册时不同基本信息的登记
    • 用户输入基本信息(姓名、专业、联系方式等)。
    • 验证用户身份(邮箱验证)。
    • 提供记住密码、找回密码的功能。

2. 项目发布

  • 描述:用户可以创建和发布自己的项目,吸引其他用户加入。
  • 功能要点
    • 输入项目标题、描述、需求技能和截止日期。
    • 设置项目的可见性(公开或私密)。
    • 提供项目预览功能。

3. 项目筛选与申请

  • 描述:用户可以浏览平台上的各类项目,并申请参与感兴趣的项目。
  • 功能要点
    • 提供筛选和搜索功能(按专业、项目类型、时间安排等)。
    • 显示项目详细信息(发起人、成员、状态等)。
    • 申请加入项目的功能。

4. 团队组建与管理

  • 描述:项目发起人可以管理项目团队,邀请或添加成员。
  • 功能要点
    • 发起人可以查看申请者并选择合适的团队成员。
    • 提供成员管理功能(添加、移除成员)。
    • 显示团队成员的角色和贡献。

5. 实时聊天功能

  • 描述:团队成员之间可以通过聊天功能进行实时沟通。
  • 功能要点
    • 提供单独聊天和团队聊天的功能。
    • 发送文字、图片和文件。
    • 聊天记录存储和查看功能。

6. 用户个人资料管理

  • 描述:用户可以管理自己的个人资料和项目参与情况。
  • 功能要点
    • 编辑个人信息(头像、联系方式、技能等)。
    • 查看参与的项目和角色。
    • 提供用户评价和反馈功能。

7. 安全与隐私设置

  • 描述:用户可以设置隐私和安全选项,确保个人信息保护。
  • 功能要点
    • 设置账户安全选项(双重验证、密码强度设置)。
    • 管理数据共享权限(与谁共享个人信息)。



点击效果演示

动态效果:

    在我们的项目中,特别注重用户体验和界面的动态效果,以提升互动性和视觉吸引力。我们实现了流畅的连接跳转效果,使用户在不同页面之间的导航更加顺畅。此外,动态下拉悬浮框的设计使得功能选项更为直观,用户只需轻轻悬停即可快速访问所需功能。同时,我们还在按钮上加入了鼠标悬浮变色的效果,增强了界面的互动感和视觉反馈。这些细致的设计不仅提升了使用便捷性,也让整个平台显得更加生动活泼,吸引用户的关注和参与。

1. 整体界面展示

  • 描述:展示平台的整体布局和设计风格。
  • 内容
    • 首页界面截图
    • 项目列表展示
    • 用户导航栏和功能菜单展示

2. 用户注册与登录演示

  • 描述:演示用户如何注册和登录平台、找回密码。
  • 内容

3. 项目发布流程演示

  • 描述:演示用户如何发布项目。
  • 内容

4. 项目浏览与申请功能演示

  • 描述:展示用户如何浏览项目并申请参与。
  • 内容
    • 项目浏览界面截图
    • 申请加入项目的操作截图
    • 申请成功后的通知信息

5. 实时聊天功能演示

  • 描述:展示团队成员如何进行实时聊天。
  • 内容
    • 聊天界面截图
    • 发送消息的演示截图
    • 聊天记录查看功能展示

7. 用户个人资料管理演示

  • 描述:演示用户如何管理个人资料。
  • 内容
    • 个人资料管理界面截图
    • 编辑个人信息的操作步骤截图
    • 保存成功后的反馈信息

8. 安全与隐私设置演示

  • 描述:展示用户如何设置隐私和安全选项。
  • 内容
    • 隐私设置界面截图
    • 设置双重验证的步骤截图
    • 提交设置后的反馈信息

5.流程分析

流程图

graph TDA[开始] --> B[访问平台]B --> C{用户类型}C -->|学生| D[注册/登录]C -->|教师| E[注册/登录]C -->|管理员| F[登录]D --> G[发现项目]E --> H[发布项目]F --> I[管理用户]G --> J{找到合适项目?}J -->|是| K[申请加入项目]J -->|否| L[创建新项目]K --> M{申请批准?}M -->|是| N[项目团队]M -->|否| O[等待/搜索其他项目]L --> P[项目审核]P --> NN --> Q[项目执行]Q --> R[项目结束]R --> S[反馈评价]S --> T[结束]

6.合作过程

6.1初期探讨

  • 我们先对作业要求进行初步探讨,将要求分为设计要求和博客要求。同时,根据作业要求进行阅读《构建之法:现代软件工程》中第三章以及第八章部分。并且对网页原型图绘制进行分工:


6.2绘制原型图

  • 我们通过腾讯会议进行线上交流,共享屏幕。并且利用墨刀的团队协作,互相实时进行设计


  • 同时,墨刀可以实现批注,对于需要修改的部分我们可以进行交流。



6.3协同优化

  • 我们线下进行讨论,演示原型图修改细节部分。

7.PSP表格

PSP 表格 校园合作网页设计项目
项目名称 网页设计
开发者姓名 黎曼
开发者姓名 黄俊瑶
日期 2024年9月23日至2024年9月26日
任务/活动 估算(小时)
需求分析 2
原型设计 5
用户界面设计 12
博客书写 2
总计 21

备注:

  • 需求分析:研究用户需求,确定功能和性能要求。
  • 原型设计:设计网页的初步原型,包括布局和关键功能。
  • 用户界面设计:设计用户界面,包括颜色、字体和图像。
  • 博客书写:将开发过程和结果详细分析呈现。

8.个人总结

黎曼

  在参与这次结对作业的过程中,我深刻体会到了团队协作的力量以及设计思维的重要性。

  首先是项目的前期准备。在这次结对作业的初期,我们先对《构建之法》进行了阅读,这让我们明白后续如何一起开发。根据阅读得到的收获,我们先进行了客户的需求分析和用户研究。确保在项目初期将需求尽可能的完善,避免后期增减。

  其次是团队协作方面。其一是沟通交流;结对开发的核心在于有效的沟通。我们通过线上会议,不仅明确了作业的整体任务,还通过细致的交流解决了设计过程中的诸多分歧。我学会了如何更好地在合作过程中表达自己的想法,同时也学会了倾听并尊重对方的意见,这种双向的沟通模式极大地提升了设计效率和质量。其二是合理的分工;我们将不同功能模块的完成进行了划分。在合作过程中我学习了如何使用原型设计工具,如墨刀,来创建网页原型。加深了对设计原则的理解,如一致性、对齐、对比和亲密性。通过我和搭档频繁的沟通和设计反馈,完成了用户界面设计和原型图的绘制。

  因此,通过这次结对作业,我不仅学会了如何运用设计思维来解决问题,从用户的角度出发进行设计,还增加了自己的团队协作能力,懂得如何与搭档有效沟通交流。受益匪浅!

黄俊瑶

在这次结对作业中,我不仅在技术层面上收获颇多,也在团队协作、需求分析和项目管理等方面得到了宝贵的经验。

1. 技术收获
通过这次作业,我进一步巩固了对于原型设计工具的掌握,尤其是在墨刀中实现了多个动态效果,包括页面跳转、下拉悬浮框以及按钮的颜色变换等,使原型设计更具互动性和表现力。这次项目让我意识到,原型设计不仅仅是一个简单的展示工具,更是产品实现的重要步骤,它能帮助我们在开发前识别和解决潜在的用户体验问题。

在功能模块的实现过程中,我通过与搭档的合作和反复的讨论,逐步优化了需求,并针对每个模块进行了详细的规划。在编码过程中,我们注重细节,从前期的需求确认到后期的代码实现,每一个环节都反映了对软件质量的重视。

2. 团队协作
本次作业让我进一步体会到团队协作的重要性。虽然是结对作业,但每个成员的贡献和参与度都是项目成功的关键。在我们团队中,我们通过高效的沟通和任务分工,确保了项目的顺利进行。在协作中,我们定期检查项目进展,互相提出反馈,并根据需要调整工作计划。通过这一过程,我学会了如何在团队中更好地协作,如何高效地沟通以及如何处理分歧和问题。
3. 需求分析与项目管理
结合《构建之法》第8章的内容,我在需求分析方面有了更深刻的理解。在项目初期,我们通过头脑风暴的方式明确了项目的核心功能,随后利用NABCD模型对项目进行分解与定位。这一过程帮助我们理清了功能的优先级,确保我们在有限的时间内完成了最重要的功能模块。
与此同时,我学会了如何合理估计开发时间并分解任务。通过任务的细化和阶段性的目标设定,整个项目的开发过程变得更加有序和可控,避免了无效的加班和重复工作。分而治之的策略让我们能够高效完成各自的任务,同时又能保证模块间的协调一致。

4. 遇到的挑战与解决方案
在项目进行过程中,我们也遇到了不少挑战。特别是在功能细节的实现上,需求变更时常导致我们需要不断调整设计和开发计划。在面对这些问题时,我们通过频繁的沟通和灵活的调整,及时解决了项目中的不确定因素。这让我认识到,项目中的变化是不可避免的,关键是如何快速响应和合理调整。

总的来说,这次结对作业给了我一个宝贵的实践机会,不仅巩固了我的技术基础,也帮助我在项目管理和团队合作方面获得了更深的理解。我期待能在未来的学习和工作中,将这些经验应用到更多的实际项目中去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/804283.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BIO,NIO和AIO的区别

BIO,NIO和AIO的区别 一.Java的I/O演进之路 Java共支持3种网络编程的I/O模型:BIO,NIO,AIO BIO: 同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销。NIO:…

vue 的v-bind和v-model

1.vue中存在很多绑定的操作,常见的操作为:2.这次主要学习v-bind,v-model. v-bind,用来绑定标签,v-model用来绑定表单. 使用message来绑定了一个图片作为效果图.同时使用url来绑定input 的txt输入,并且将url和超链接的href链接达到可以跳转网页的效果点击说走就走:修改链接,点击…

如果没有真实数据,如何评估 RAG

当您有可以比较的真实数据时,评估检索-增强生成(RAG)模型要容易得多。但是如果你没有呢?这就是事情变得有点棘手的地方。然而,即使在缺乏基本事实的情况下,仍然有一些方法可以评估 RAG 系统的性能。下面,我们将介绍三种有效的策略,从零开始创建 ground truth 数据集的方法…

一些历史遗留问题(确信)

由于之前一直在语雀上做笔记,但是语雀的笔记直接移植到博客园上好麻烦,在这里直接贴上语雀的链接,可以点进去链接查看之前的笔记( https://www.yuque.com/u41076977/kuw531?# 《PWN》

WaterCloud:一套基于.NET 8.0 + LayUI的快速开发框架,完全开源免费!

前言 今天大姚给大家分享一套基于.NET 8.0 + LayUI的快速开发框架,项目完全开源、免费(MIT License)且开箱即用:WaterCloud。可完全实现二次开发让开发更多关注业务逻辑。既能快速提高开发效率,帮助公司节省人力成本,同时又不失灵活性。项目介绍 WaterCloud是一套基于ASP…

SEA-RAFT: Simple, Efficient, Accurate RAFT for Optical Flow

SEA-RAFT: Simple, Efficient, Accurate RAFT for Optical FlowYihan Wang, Lahav Lipson, and Jia Deng一种比RAFT更简单、有效、准确率高的光流算法,比起来RAFT, sea-raft训练时用了一种新的loss,拉普拉斯混合。SEA-RAFT 是现有方法的2.3倍快,同时保持精确具有可比性。在…

HuggingChat macOS 版现已发布

Hugging Face 的开源聊天应用程序 Hugging Chat,现已推出适用于 macOS 的版本。主要特点 Hugging Chat macOS 版本具有以下亮点:强大的模型支持: 用户可以一键访问多个顶尖的开源大语言模型,包括 Qwen 2.5 72B、Command R+、Phi 3.5、Mistral 12B 等等; 丰富的功能: 应用内置…

Setup Factory API

SetupFactory中可以通过其API控制很复杂的业务需求。下图中展示了其内置的API种类与具体分类函数。序号API名称 API说明1 Application.Exit 退出安装程序,并返回一个可选的返回代码2 Application.GetInstallLanguage 返回一个包含当前安装语言的表格3 Application.GetLastErro…

使用duxapp开发 React Native App 事半功倍

Taro的React Native端开发提供了两种开发方式,一种是将壳和代码分离,一种是将壳和代码合并在一起开发壳是用来打包调试版或者发版安装包使用的 代码是运行在壳上的js代码 Taro壳子的代码仓库https://github.com/NervJS/taro-native-shellduxapp中更进一步,你不需要太关注壳子…

package.json依赖包漏洞之nodejs-glob-parent正则表达式拒绝服务漏洞

背景 有个安全扫描的流水线,扫描了负责的项目之后,发现一些漏洞。 需要说明的是,这个扫描只是针对package.json文件,扫的是依赖树,而不是项目源代码,也不是打包后的代码。 但既然是漏洞,都是可以好好学习下的。nodejs-glob-parent正则表达式拒绝服务漏洞(CVE-2020-28469…

[转]线性代数库介绍

1、BLAS基础线性代数程序集(Basic Linear Algebra Subprograms),基于Fortran实现的基本向量乘法,矩阵乘法的一种科学计算函数库,也是一组向量和矩阵运行的接口规范标淮,规范向量之间的乘法、矩阵之间的乘法等,BLAS实际上是将复杂的矩阵、向量运算简化成类似加减乘法一样…

资本(生成函数)

$\quad $ 其中 $n\le 1e3 $ 、$ m\le 1e9 $ 、 $ T\le 10 $。 $\quad $ 这是一个排列问题,所以我们可以考虑指数型生成函数,这里我们称 \(x ^n\) 的系数为 \(\frac{x ^n}{n!}\) 之前的系数,下文记作 \([x ^n]\) 。 $\quad $ 我们定义函数 \(f _{k}(x)=\sum _{n=0}^{k}\frac{…