第一次结对作业
这个作业属于哪个课程 | 软件工程2024 |
---|---|
这个作业要求在哪里 | 2024秋软件工程结对作业(第一次之需求分析和原型设计) |
这个作业的目标 | 学习使用原型软件,辅助完成软件工程的前期任务 |
学号 | 102201427 |
结对成员学号:102201427、102201426
原型链接:Find You Team
一、阅读《构建之法》后的成果
1、第3章软件工程师的成长
通过阅读第三章,我学会了评价软件工程师的水平的主要方法,技能的反面,TSP对个人的要求,软件工程师的思维误区等。
对于Individual Contributor (IC)而言,在团队中的流程如下:
-
理解问题或任务
-
提出多种解决办法并估计工作量
- 其中包括寻找以前的解决方案,因为很多工作是重复性的 – 例如实现某些类似的web页面。
-
与相关角色交流解决问题的提案, 决定最终方案
-
执行, 把想法变成实际中能工作的代码,同时验证方案的可行性和其他特性
-
团队合作,测试案例,修复缺陷
-
对结果负责
一名初级软件工程师,可以通过以下的方式成长:
-
积累软件开发相关的知识,提升技术技能(如对具体技术的掌握,动手能力).
- 我们要对提高对python语言的掌握,学会调试器的使用
-
积累问题领域的知识和经验
- 本次是实现一个让用户可以自由组队完成项目的app,我们要对项目的完成流程有一定的了解,有利于我们的软件设计
-
对通用的软件设计思想和软件工程思想的理解
-
提升职业技能(区别于技术技能)
- 与技术技能不一样,职业技能包括:自我管理的能力,表达和交流的能力,与人合作的能力,按质按量完成任务的执行力,等等,在结对过程中这些能力也很重要
-
实际成果
- 行胜于言,无论我们的想法与设计在我们看来多么好,最终的评价还是要来自于用户群体的反馈
软件工程师的思维误区
-
分析麻痹:想弄清所有细节、依赖关系再动手,不想修复问题
-
不分主次,想解决所有依赖问题:想动手修复所有问题,达到“完美”目标,不是找“足够好”的方案
-
过早优化:陷在某个局部问题中
-
过早扩大化 / 泛化:程序员在写程序时要明白某一些做法的必要性、难度和时机,不要总是豪情万丈,但不去深入思考其可行性。
2、第8章的NABCD模型
NABCD模型分析(Need、Approach、Benefit、Competitors、Delivery)
N(Need)需求
大学里的许多学生希望通过发起或参与跨专业的项目来提升综合能力、拓宽知识面和积累人脉。但由于人脉积累有限、难以找到志同道合的合作伙伴、不同专业间课程和时间安排不同等原因,跨专业合作的机会非常有限。因此,需要一个平台来帮助学生们找到合适的合作伙伴,进行高效的跨专业项目合作。
A(Approach)方法
我们设计了一款APP——“Find You Team”,包含项目发布、人才匹配、聊天交流和项目管理等功能。通过该APP,学生们可以便捷地发布项目需求,找到合适的合作伙伴,并进行高效的沟通和项目管理。
B(Benefit)好处
- 为学生提供跨专业合作的平台:使学生能够便捷地找到合适的合作伙伴。
- 提升项目合作效率:通过项目管理和沟通工具,提高项目合作的组织和管理效率。
- 积累人脉和资源:参与平台活动的学生能够拓宽人脉,积累更多的资源和经验。
C(Competitors)竞争
当前市场上存在类似功能的APP,例如一些社交媒体和校园内的微信公众号等,但这些工具通常更加注重社交,而非专注于跨专业项目合作。而“校园合作”APP则专注于解决这一具体需求,通过专业认证、完善的项目管理工具等特点,形成差异化竞争优势。
D(Delivery)交付
通过设计和实现一个用户友好、功能丰富的APP,我们能够将上述设想变为现实。接下来,我们详细介绍APP的设计方案。
解决方案概述
我们设计了一款应用程序(APP)“Find Your Team”专门解决学生跨专业合作的困难。这款APP通过信息化流程,让学生能够更便捷地找到合作伙伴、分享项目、管理项目进度,并提供交流和认证功能,以确保安全和隐私。
二、主要功能和界面原型
我们使用摹客RP进行原型设计,原型链接:Find You Team
原型及设计过程展示:
流程图
用例图
演示图
三、主要界面与功能包括:
1. Logo
2. 登录
- 可以跳转到注册页面
- 登录后需认证
- 从左向右分别为登录、注册、设置密码
3. 认证
4. 首页
- 顶部搜索栏
- 包含“项目总库”和“人才林”
- 底部导航栏:
首页
、聊天
、仓库
、我的
5. 项目总库
- 展示所有项目,可搜索
6. 人才林
- 展示人才信息,包括认证的身份、以及用户设置的标签
- 可按照标签进行搜索,与不同专业的同学或老师交流
7. 我的
- 编辑“我的人才树”
- 进入聊天页面或查看好友
8. 仓库
- 展示账号相关项目
- 创建项目
四、用户角色和操作流程
1. 用户注册和认证
- 用户通过手机号注册。
- 注册后进行身份认证,通过人脸验证来确认身份。
2. 用户登录
- 使用手机号及密码登录。
- 验证成功后进入首页。
3. 项目发布与管理
- 在“项目总库”中发布新项目,填写项目名称、描述、所需技能等信息。
- 在“仓库”中管理已发布项目,包括修改项目信息、删除项目等。
4. 找寻合作伙伴
- “项目总库”中浏览其他人发布的项目并参与。
- “人才林”中按专业或技能找寻合作伙伴。
5. 沟通与协作
- 使用“聊天”功能与合作伙伴实时沟通。
- 在“我的”页面管理好友列表。
五、系统维护与安全
1. 使用频率和便利度
- 每次登录验证身份,确保用户身份真实性。
- 提供数据备份和恢复功能,防止数据丢失。
2. 安全性和隐私性
- 用户数据加密存储,防止泄露。
- 用户可设定个人信息的公开范围。
- 所有通信加密传输,确保信息安全。
3. 时效性和封闭性
- 人脸认证,确保用户群体限于校园内学生。
- 对过期项目和长期不活跃账号进行定期清理。
六、PSP表格
PSP阶段 | 预估耗时(小时) | 实际耗时(小时) |
---|---|---|
计划 | 1 | 1.5 |
需求分析 | 2 | 2.5 |
设计 | 4 | 5 |
实现 | 3 | 4 |
测试 | 2 | 2 |
总计 | 12 | 15 |
七、个人总结
个人
在这个项目中,我学到了团队合作的重要性和如何进行有效的交流与分工,最重要的是学习了如何设计原型,如何将想法付诸于实践,并在实践中不断发现理论中疏漏的部分,加以改正。过程虽然有些挑战,但成就感十足。
团队
-
沟通与协作:在结对编程中,我学会了如何与搭档有效沟通,包括清晰地表达自己的想法、倾听对方的意见,并共同解决问题。这种紧密的协作模式要求我们在编码过程中不断交流,确保双方对代码的理解和预期目标保持一致。
-
时间管理与任务分配:在有限的时间内完成共同的任务,我们需要合理规划时间,并有效地分配任务。我学会了如何根据搭档的专长和当前的工作状态来分配任务,以确保项目的顺利进行。
-
共同成长:通过充分的沟通和交流,统一意见扬长避短,最终得到的结果比执一家之词要好得多。相互学习、相互启发,在编程技能、问题解决能力和团队协作能力等方面都有了显著的提升。
-
挑战与机遇并存:团队合作过程中不可避免地会遇到各种挑战和困难,但正是这些挑战让我们有机会展现自己的能力和特长,也让我们在克服困难的过程中不断成长和进步。
-
人际关系的重要性:通过这次团队合作,我更加深刻地认识到了人际关系在工作中的重要性。良好的人际关系有助于增强团队的凝聚力,提高工作效率,促进个人和团队的共同发展。
在这个项目中,我深刻体会到了团队合作的重要性,以及如何进行有效的交流与分工。