软件工程第一次结对作业
软件工程第一次结对作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13261 |
这个作业的目标 | 设计一款学校项目合作平台的APP原型 |
学号 | 102202149 |
结对作业由:102202149詹镇壕和102202142黄悦佳结对完成
一、 任务PSP表格
任务描述 | 预估耗时 | 实际耗时 | 备注 |
---|---|---|---|
需求分析 | 2h | 2h | 分析客户描述,确定软件功能和性能要求 |
原型设计 | 5h | 4h | 设计软件界面和用户交互流程的初步原型 |
用户角色定义 | 1h | 1h | 定义不同用户角色和权限 |
注册流程设计 | 1h | 1h | 设计用户注册流程,包括信息验证 |
添加用户流程设计 | 1h | 1h | 设计管理员添加新用户的流程 |
删除用户流程设计 | 1h | 1h | 设计管理员删除用户的流程 |
认证流程设计 | 1h | 1h | 设计用户认证流程,确保安全性 |
系统维护策略 | 2h | 1h | 制定系统维护和更新计划 |
安全性设计 | 5h | 2h | 实现数据加密和安全传输 |
隐私性设计 | 3h | 1h | 确保用户数据的隐私保护 |
界面设计 | 3h | 7h | 完成软件的用户界面设计 |
主要功能设想 | 4h | 4h | 设计程序的主要功能 |
博客编写 | 2h | 2h | 编写作业文档和结对总结 |
总计 | 31h | 28h |
二、原型开发工具、原型展示
界面原型设计连接(Figma)
界面展示连接(Figma)
1、原型图展示:
图片展示
部分功能动图演示
-
登陆界面
-
主界面
-
搜索功能
-
项目发布
-
项目管理
-
管理员选项
2、流程图展示:
程序主要功能实现流程图
graph TD;
A[用户打开平台] --> B{已注册?};
B -- 是 --> C[登录];
C --> D[进入首页];
B -- 否 --> E[注册];
E --> F[输入学号];
F --> G{学号有效?};
G -- 是 --> H[设置账号密码];
H --> I[邮箱辅助验证];
I --> J[学校统一身份认证];
J --> K[注册成功];
K --> D;
D --> L{选择操作};
L --查看相关项目--> M{个人项目页};
M --右上角加号--> MB[发布新的项目];
MB --> NB[进入项目发布页];
NB --> PB[填写相关信息];
PB --> QB[上传相关文件];
QB --> RB[点击发布];
RB --> SB[提交给管理员审核]
M --查看相关的项目--> N{浏览个人项目页};
N --发起的项目--> OA[查看项目详情和申请验证];
N --申请的项目--> OB[查看项目详情和是否同意];
N --已加入的项目--> OC[查看项目消息]
L -- 搜索项目 --> R{进入项目搜索页(首页)};
R -- 浏览页面 --> AY[查看热门项目和最新项目];
AY -->T[进入项目详情页];
R --> S[输入关键词];
S --> SC[显示搜索结果];
SC --> T[进入项目详情页];
T --> U{申请加入?};
U -- 是 --> V[点击加入项目];
V --> W[项目负责人收到申请通知];
W --> X[项目负责人审核申请];
X -- 通过 --> Y[加入项目成功];
X -- 不通过 --> Z[申请被拒];
L -- 查看个人信息 --> AA[进入个人信息页];
AA --> AB{选择操作};
AB --是否是管理员?--> ABA[进入管理员选项];
ABA -->ABB[进入审核项目页];
ABB -->ABC[审核项目];
AB -- 账户安全 --> AC[修改密码];
AC --> AD[修改成功];
AB -- 修改个人信息 --> AE[修改信息];
AE --> AF[保存修改];
功能图片:
UML图
3、文字化方案:
校园跨专业合作平台解决方案 :
一、系统概述
名称:Fzuer协创圈
目标:为大学学生提供一个便捷、安全、封闭的跨专业项目合作平台,帮助学生拓宽知识面、积累人脉、提升综合能力。
二、用户角色
1. 普通学生用户
- 注册:使用学号进行注册,填写个人基本信息(姓名、专业、年级、联系方式(qq,tel,weixin)等)、兴趣爱好、技能特长。
- 添加:可以发布自己的项目需求或者加入感兴趣的项目。在发布项目需求时,详细描述项目内容、所需技能、时间安排等。
- 删除:发起人可以删除自己发布的项目需求或者移除团队成员;团队成员可以申请退出队伍,需要队长同意。
- 认证加入:通过学校的统一身份认证系统进行认证,确保用户身份的真实性。
2. 管理员用户
- 注册:由学校相关部门指定人员或老师担任,使用特定的账号和密码进行注册。
- 添加:可以审核学生发布的项目需求,确保项目内容符合学校规定和法律法规。
- 删除:可以删除不符合规定的项目需求或者违规用户。
- 认证加入:无需认证加入,直接由学校指定。
三、主要界面和功能原型
1.登陆和注册页面
- 输入学号 / 用户名和密码。
- 提供忘记密码的链接。
- 可选择通过学校统一身份认证登录。
- 没有账号,进入注册页面
2. 首页
- 展示热门项目和最新项目。
- 提供搜索功能,学生可以根据关键词(项目名称、专业需求等)搜索项目。
- 显示推荐的合作伙伴和项目,根据学生的兴趣爱好和技能特长进行推荐。
3. 项目发布页
- 学生可以填写项目名称、项目描述、所需技能和专业要求、时间安排、项目目标等信息发布项目需求。
- 可以上传相关文件(项目计划书、图片等)。
4. 项目详情页
- 展示项目的详细信息,包括项目名称、项目描述、所需技能和专业要求、时间安排、项目目标、项目成员等。
- 提供加入项目和联系项目负责人的按钮。
- 简单的聊天窗口
5.个人项目页
- 搜索与己相关项目
- 显示自己发起的项目和最新信息
- 显示自己申请的项目的信息
- 提供消息通知功能,及时接收项目相关的消息
- 显示自己已加入的项目的信息
6. 个人中心
- 显示学生的个人信息。
- 可以修改个人信息和密码。
- 添加兴趣和技能标签,用于智能推荐项目
- 管理员选项,管理员可由此进入审核项目页
7.审核项目页
- 搜索项目
- 查看已审核项目
- 查看待审核项目
- 管理项目
四、流程介绍
1. 学生注册流程
- 学生输入学号和密码进行注册。
- 系统验证学号是否有效,密码是否正确。
- 学生填写个人密码,邮箱辅助认证等。
- 系统进行学校统一身份认证。
- 注册成功。
2. 项目发布流程
- 学生进入个人项目页,点击项目发布。
- 填写项目名称、项目描述、所需技能、时间安排、项目目标等信息。
- 上传相关文件。
- 点击发布按钮。
- 系统将项目需求提交给管理员审核。
3. 项目加入流程
- 学生在首页或搜索结果中找到感兴趣的项目。
- 进入项目详情页。
- 点击加入项目按钮。
- 项目负责人收到申请通知。
- 项目负责人审核申请。
- 审核通过,学生加入项目。
4. 项目删除流程
- 学生进入个人项目页。
- 找到要删除的项目或已加入的项目。
- 点击删除按钮。
- 系统确认删除操作。
- 删除成功。
五、维护方案
1. 使用频率
- 通过数据分析学生的使用习惯和需求,不断优化平台的功能和界面,提高用户体验。
- 定期举办活动,如项目展示大赛、优秀项目评选等,提高学生的参与度和使用频率。
2. 使用便利度
- 提供简洁明了的界面和操作流程,让学生能够快速上手。
- 提供在线文档和反馈功能,方便解决学生的问题。
3. 使用有效性
- 建立项目评价机制,学生可以对参与的项目进行评价,为其他学生提供参考。
- 定期对项目进行跟踪和评估,确保项目的顺利进行。
- 提供项目指导和培训资源,帮助学生提高项目管理和团队协作能力。
4. 安全性
- 采用加密技术保护用户的个人信息和数据安全。
- 建立严格的权限管理机制,确保只有授权用户才能访问敏感信息。
- 定期进行安全漏洞扫描和修复,保障系统的安全性。
5. 隐私性
- 明确隐私政策,告知用户个人信息的收集、使用和保护方式。
- 对用户的个人信息进行严格保密,未经用户同意不得向第三方透露。
- 提供隐私设置功能,用户可以自行选择是否公开个人信息。
6. 时效性
- 定期清理过期的项目需求和无效的用户信息。
- 及时更新平台的内容和功能,保持平台的新鲜感和吸引力。
7. 相对封闭性
- 限制平台的使用范围为学校内部学生,通过学校统一身份认证确保用户身份的真实性。
- 建立严格的审核机制,确保项目内容符合学校规定和法律法规。
三、总结《构建之法》
1、个人能力的衡量与发展:
- 软件工程师的能力包括积累软件开发相关的知识、问题领域的知识和经验、对通用的软件设计思想和软件工程思想的理解、提升职业技能以及取得实际成果等方面。
- 衡量能力的参数包括代码量、解决问题的能力、对团队的贡献等。
- 同时,软件行业需要 “好工程师”,他们应具备专业知识、解决问题的能力、团队合作精神、沟通能力等核心竞争力,并可以通过一个自我评价清单进行自我评估。
- 软件工程师的思维误区:软件工程师可能会陷入分析麻痹、不分主次、过早优化、过早扩大化 / 泛化等思维误区,这些误区会导致项目延迟、资源浪费等问题。
2、软件工程师的职业发展:
- 软件工程师的职业发展可以分为临时的寄托或工作、工作、职业、投身的事业、理想的呼唤等阶段。
- 不同的人对职业的态度和追求不同,会影响他们在职业中的表现和发展。
- 专和精的关系也是软件工程师需要考虑的问题,是成为 “交响乐作曲家” 还是 “演奏家满场奔走” 需要根据个人的兴趣和能力来决定。
- 技能的反面:技能的提升需要不断练习,从低层次的问题解决逐渐上升到高层次的问题解决。通过对比自己不同阶段的技能水平,可以发现自己的进步和不足,从而更好地提升自己的技能。
- 练习与讨论:通过阅读相关论文和博客、讨论性格对合作的影响、思考是否需要有代码规范等问题,可以深入理解软件工程师的成长过程中遇到的各种问题和挑战,并寻找解决问题的方法。
3、软件需求:
- 软件需求包括功能性需求、开发过程需求、非功能性需求和综合需求等。
- 软件团队需要通过获取和引导需求、分析和定义需求、验证需求以及在软件产品的生命周期中管理需求等步骤来满足用户的需求。
- 软件产品的利益相关者:软件产品的利益相关者包括用户、顾客、市场分析者、监管机构、系统 、应用集成商、软件团队、软件工程师等。了解这些利益相关者的需求和期望对于软件团队开发出满足用户需求的软件非常重要。
- 获取用户需求 : 用户调研:常用的用户调研方法包括焦点小组、深入面谈、卡片分类、用户调查问卷、用户日志研究、人类学调查、眼动跟踪研究、快速原型调研、A/B 测试等。这些方法可以帮助软件团队更好地了解用户的需求、行为和态度,从而为软件的设计和开发提供依据。
4、竞争性需求分析的框架:
- NABCD 模型是一个有效的竞争性需求分析框架,包括需求(Need)、做法(Approach)、好处(Benefit)、竞争(Competitors)和推广(Delivery)五个方面。
- 通过这个模型,软件团队可以清晰地阐述自己项目的特点和优势,从而说服别人支持自己的项目。
- 功能的定位和优先级:根据功能分析的四个象限(杀手功能 / 外围功能、必要需求 / 辅助需求),软件团队可以对产品的功能进行定位和优先级排序,从而合理分配资源,提高产品的竞争力。
- 计划和估计:在项目计划中,需要明确目标、估计和决心的区别。通过找出估计后面的假设、提高估计能力等方法,可以提高项目计划的准确性。
- 同时,分而治之的方法(Work Breakdown Structure)可以帮助团队将项目分解为可操作的工作,从而更好地管理项目。
5、NABCD 模型:
- N(Need,需求):了解用户的需求,包括明确的需求和潜在的需求。例如,通过分析移动应用商店中用户对 App 的反馈,发现用户对某些功能的不满,或者挖掘用户尚未表达的需求,如男生在英语学习方面希望快速了解自己的词汇量并与同学比拼的需求。
- A(Approach,做法):提出独特的解决办法,包括技术、商业模式、地域、人脉、行业或成本等方面的优势。例如,拥有人脸识别技术、独特的众包服务模式、对本地公交线路的熟悉、在某个行业的专业资质或更便宜的资源维护网站等。
- B(Benefit,好处):说明产品或服务能给用户带来的好处,如提供更好的用户体验、节省用户时间或成本、满足用户的个性化需求等。同时,要考虑用户的迁移成本,即用户为了获得产品的好处所需要付出的努力和代价。
- C(Competitors,竞争):分析竞争对手的情况,包括市场份额、产品特点、优势和劣势等。了解市场竞争态势,明确自己的产品在竞争中的地位,找到差异化竞争的策略。
- D(Delivery,推广):考虑如何将产品或服务交付给用户,包括选择合适的推广渠道、设计用户易于接受的功能、利用用户的社交网络进行传播等。例如,将产品提交到应用商店、通过广告、公关活动、用户口碑等方式推广产品,或者设计一些功能促进用户自然地成为产品的推广者。
- 通过 NABCD 模型的分析,软件团队可以全面地考虑项目的各个方面,从而更好地满足用户需求,提高产品的竞争力。
四、记录结对过程
1、初步讨论,探讨作业的需求和程序设计
- 文字方案
- 我们进行了深入的交流,对作业的需求进行了详细的梳理。通过文字记录,明确了系统需要实现的功能,包括跨专业项目的发布、匹配、沟通协作、项目管理和资源共享等模块。
- 详细描述了各个功能模块的具体要求,如项目发布时需要填写的项目信息、项目匹配的算法和规则、沟通协作的方式和功能等。
- 流程草图
- 基于对需求的理解,我们共同设计了简单的流程草图。草图直观地展示了系统的工作流程,从项目发布到项目匹配,再到团队成员之间的沟通协作和项目管理,最后到资源共享和项目成果展示。
- 在流程草图中,标注了各个环节的关键节点和交互方式,为后续的程序设计提供了清晰的思路。
- 辅助工具选择
- 经过讨论,我们确定使用Figma作为原型设计工具。
- Figma具有丰富的组件库和强大的交互设计功能,能够帮助我们快速创建直观、易用的用户界面原型。通过使用Figma,我们可以更好地展示系统的功能和用户体验,与团队成员和客户进行有效的沟通和交流。
- 工作分配
- 根据双方的技能和兴趣,我们合理分配了工作任务。
- 我主要负责系统的功能设计和博客编写。在功能设计方面,我将根据需求分析的结果,对程序进行设计。确保系统的各个功能模块能够实现需求。
- 对方主要负责用户界面的原型设计和部分功能的设计。对方将根据系统的功能需求,设计美观、简洁的用户原型界面,确保用户能够方便、快捷地使用系统。
2、对第一阶段的工作进行调整和总结
- 成果验收
- 对方完成第一阶段的工作后,我对其成果进行了认真的验收。
- 我仔细查看了对方设计界面原型设计,检查了是否符合美观、简洁的要求;并提出适当的建议和优化方案。
- 方案调整
- 根据实践后的成果和我的建议,我们对原来的方案进行了调整。
- 我们对系统的功能模块进行了重新梳理和优化,删除了一些不必要的功能,增加了一些新的功能,以更好地满足用户的需求。
- 同时,我们对界面的原型设计进行了优化。
- 细节完善
- 在对整体方案进行调整的基础上,我们对作业上一些细节处进行了补充和完善。
- 我们对程序的一些功能页面进行了优化。
- 我们对系统的安全性进行了讨论,包括用户认证、权限管理等技术,保障用户数据的安全。
- 我们还对系统的界面布局和显示效果进行了微调,使界面更加美观、简洁,提高用户的使用体验。
3、做好收尾工作
- 瑕疵完善
- 在完成界面原型设计后,我们对一些细节上的小瑕疵进行了完善。
- 我们检查了其中的一些问题,并进行了及时的修改。
- 我们对程序的功能文档进行了整理和完善。
- 要点补充
- 我们再次讨论了是否还有补充的要点,确保系统的功能和性能满足用户的需求。
- 我们还对程序的可扩展性进行了考虑,为未来的功能扩展和升级留下了足够的空间。
- 总结经验
- 最后,我们编写了博客,总结了本次结对过程的经验和教训。
- 通过本次结对编程,我们不仅完成了作业任务,还提高了自己的团队协作能力。
- 我们深刻体会到了构建之法中团队合作的重要性,在开发过程中,我们相互学习、相互帮助,共同解决了遇到的问题。
- 同时,我们也意识到了自己在合作过程中存在的不足之处,如对一些技术细节的掌握不够熟练等。我们将在今后的学习和工作中,不断提高自己的能力和水平。
五、总结本次作业
1、技术能力提升
- 工具掌握
在作业中,我熟练运用了Figma这一原型设计工具,充分利用了其丰富的组件库和强大的交互设计功能,成功创建出直观、易用的用户界面原型。通过这个过程,我不仅提高了自己的设计能力,还学会了如何有效地运用工具来表达和实现设计想法。同时,对Axure等工具也有了一定的了解和实践经验,拓宽了自己的技术视野,为今后处理类似的设计和开发任务奠定了坚实的基础。 - 协作过程体验
与队友的结对合作是本次作业的一大亮点。在合作过程中,我们密切配合,充分发挥各自的优势,共同攻克了一个又一个难题。通过分工协作,我负责了系统的功能设计和博客编写工作,而队友则专注于用户界面的原型设计和部分功能的设计。这种分工合作不仅提高了工作效率,还让我们能够从不同的角度审视问题,为项目的成功实施提供了有力的保障。 - 沟通能力锻炼
良好的沟通是团队协作的关键。在与队友的沟通中,我学会了如何清晰地表达自己的想法和观点,让队友能够更好地理解我的意图。同时,我也学会了倾听他人的意见和建议,尊重他人的想法,从而更好地协调双方的工作。通过有效的沟通,我们能够及时解决团队中出现的问题,避免了误解和冲突的发生,确保了项目的顺利进行。
2、问题解决与反思方面
- 问题应对能力
在作业过程中,我们不可避免地遇到了各种各样的问题,如需求理解不清晰、技术实现困难、界面设计不合理等。面对这些问题,我学会了冷静分析,找出问题的根源,并采取有效的措施加以解决。通过不断地尝试和探索,我逐渐掌握了一些解决问题的方法和技巧,提高了自己的问题应对能力。 - 自我反思意识
每次遇到问题,我都会进行自我反思,总结经验教训。我意识到自己在某些方面还存在不足,如对一些技术细节的掌握不够熟练、对用户需求的理解不够深入等。通过反思,我明确了自己今后的努力方向,为不断提高自己的能力提供了动力。
3、不足之处与改进方向
- 技术知识短板
尽管在作业中运用了一些技术知识,但我仍然发现自己在某些技术领域存在不足。这些知识的不足限制了我在解决一些复杂问题时的能力。因此,我将在今后的学习中,加强对这些技术知识的学习和研究,通过阅读相关书籍和实践项目等方式,不断提升自己的技术水平。 - 团队协作优化
在团队协作过程中,我也意识到自己存在一些不足之处,如沟通不够及时、协作不够默契等。这些问题可能会影响团队的工作效率和项目的进度。因此,我将更加注重团队协作,加强与队友的沟通和交流,提高团队协作的效率和质量。我会积极参与团队讨论,分享自己的想法和经验,同时也会认真倾听他人的意见和建议,尊重他人的观点,共同推动项目的进展。 - 时间管理能力提升
在作业过程中,我有时会因为时间安排不合理而导致任务拖延,影响了项目的进度。因此,我将提高自己的时间管理能力,学会合理安排时间,制定详细的工作计划,并严格按照计划执行。同时,我也会学会合理分配时间,确保各项任务都能够得到及时的完成。
总之,这次作业是一次非常宝贵的学习和实践机会,通过完成作业,我不仅提高了自己的知识和技能,还培养了自己的团队协作精神和问题解决能力。在今后的学习和工作中,我将继续努力,不断完善自己,为成为一名优秀的软件工程师而努力奋斗。