软件工程第一次结对作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13261 |
这个作业的目标 | 完成作业 |
学号 | 022204045、102202133 |
原型展示:https://modao.cc/proto/qwEB5Vimskd2m0YR6mA1qz/sharing?view_mode=read_only
(一)构建之法阅读收获
第3章 软件工程师的成长
在《构建之法》中,软件工程师成长的几个阶段通常被描述为从初级工程师到高级工程师,再到架构师或技术领导者的逐步发展过程。每个阶段的工程师都需要不断地学习和适应,以跟上技术的发展和业务的变化。同时,除了技术技能的提升,沟通能力、团队合作、项目管理等软技能同样重要,它们对于工程师在职业道路上的进一步发展至关重要。
一.软件工程师应该如何成长:
持续学习和技能提升
掌握基础知识:确保对计算机科学的基础知识有扎实的理解,包括数据结构、算法、操作系统、网络等。
学习新技术:不断跟踪和学习新技术、新工具和新框架,保持自己的技能与行业发展同步。
实践应用:通过实际项目应用所学知识,加深理解并提升解决实际问题的能力。
技术深度与广度
深化专业技能:在特定领域(如前端、后端、数据科学、人工智能等)深入研究,成为该领域的专家。
拓宽技术视野:了解软件工程的其他方面,如用户体验设计、产品管理、项目管理等,以获得更全面的视角。
软技能的发展
沟通能力:有效沟通是团队协作和项目成功的关键。学习如何清晰表达想法、倾听他人意见,并进行有效协商。
团队合作:在团队中扮演积极角色,学会领导和跟随,理解团队动态,促进团队合作。
问题解决:培养分析问题和解决问题的能力,学会从不同角度思考问题,寻找创新的解决方案。
项目管理和领导力
项目管理技能:学习如何规划、执行和监控项目,确保项目按时、按预算和按质量完成。
领导力培养:无论是成为团队领导还是技术领导,都需要培养领导力,包括决策能力、激励团队和处理冲突的能力。
职业规划和目标设定
明确职业目标:设定短期和长期的职业目标,并制定实现这些目标的计划。
灵活适应:随着行业和技术的变化,保持灵活和适应性,随时准备调整职业路径。
二.职业技能与技术技能的区别
职业技能与技术技能是软件工程师成长和成功的关键组成部分,但它们各自关注的领域和作用有所不同。下面详细解释这两者之间的区别:
1.技术技能是指个人在特定领域内完成具体任务所需的专业知识和操作能力。对于软件工程师来说,这包括:
编程语言:如Java、Python、C++等。
开发工具:如IDEs(集成开发环境)、版本控制系统(如Git)、调试工具等。
软件开发流程:包括敏捷开发、持续集成/持续部署(CI/CD)、测试驱动开发(TDD)等。
系统架构:理解不同类型的系统架构,如微服务、单页应用(SPA)、云原生应用等。
数据库管理:掌握SQL和NoSQL数据库的使用和优化。
网络知识:了解网络协议、安全性、API设计等。
2.技术技能是软件工程师完成日常工作的基础,是他们专业能力的直接体现。随着技术的不断进步,软件工程师需要不断学习和更新自己的技术技能库。
职业技能,又称软技能,是指个人在工作中与他人互动、解决问题、管理时间和资源等方面的能力。对于软件工程师而言,重要的职业技能包括:
沟通能力:清晰地表达想法、倾听他人意见,并能有效地进行书面和口头交流。
团队合作:在团队中有效协作,尊重他人观点,共同解决问题。
领导力:无论是正式的领导角色还是非正式的领导,都需要能够激励团队、指导他人和处理冲突。
问题解决:分析问题、创造性思考和找到有效解决方案的能力。
时间管理:合理安排任务,优先处理重要事项,有效管理截止日期和工作压力。
适应性和灵活性:适应变化,灵活处理突发事件和新挑战。
职业技能对于软件工程师来说同样重要,因为它们影响着个人如何与团队成员、其他部门以及客户互动,以及如何管理自己的工作和职业发展。
3.技术技能和职业技能相辅相成。技术技能让软件工程师能够高效地完成技术任务,而职业技能则帮助他们在团队环境中更有效地工作,提升项目成功率。一个成功的软件工程师不仅需要具备扎实的技术基础,还需要良好的沟通、团队合作和领导能力,以适应不断变化的工作环境和业务需求。
三.团队合作
团队是完成项目任务的核心单元,由具有不同技能和经验的成员组成,他们共同协作以达成共同目标。一个有效的团队通常具备以下特点:
1.多样性:团队成员应具有不同的技能、背景和观点,这有助于创新和问题解决。
2.协作:团队成员之间需要有良好的沟通和协作机制,确保信息流畅传递和任务有效协调。
3.角色和责任:明确每个成员的角色和责任,确保团队成员了解自己的任务和期望。
4.领导力:团队需要有明确的领导或领导团队,以指导方向、解决冲突和推动决策。
5.信任和尊重:建立信任和相互尊重的环境,鼓励开放交流和建设性反馈。
6.共同目标:团队成员应共享并致力于实现共同的目标和愿景。
四.总结
在阅读关于软件工程师成长的章节后,我深刻认识到持续学习和技能提升的重要性,包括对新技术的掌握和基础知识的深化。同时,我也意识到发展软技能、项目管理能力和领导力对于职业成功同样关键。此外,建立个人品牌、参与网络建设、明确职业规划以及保持工作与生活的平衡也是软件工程师成长过程中不可或缺的部分。这些收获让我明白,成为一个全面发展的软件工程师需要在技术深度、广度和人际交往能力上不断进步和适应。
第八章需求分析
需求分析的重要性
需求分析是软件开发的基石,它确保开发团队能够准确把握用户和业务的实际需求。这一过程不仅涉及技术层面,更深入到业务战略和用户体验的层面。通过细致的需求分析,项目团队能够避免资源浪费,减少后期的返工,从而提高项目的成功率。
需求收集方法
需求收集是需求分析的基础,采用多种方法可以确保从不同角度和层面获取需求信息。例如,访谈和问卷调查可以获取用户的直接反馈,观察法可以捕捉用户在实际使用中的行为模式,而原型法则允许用户在产品开发早期阶段就进行体验和反馈。这些方法的综合运用有助于构建一个全面、准确的需求视图。
需求分类和优先级
需求分类有助于团队更好地组织和理解需求,而优先级的确定则为项目规划和资源分配提供了明确的指导。通过区分功能性需求和非功能性需求,并根据业务价值、实现难度等因素进行排序,团队可以更有效地集中资源解决最关键的问题。
需求规格说明
清晰、详细的需求规格说明书是确保项目团队对需求有共同理解的关键文档。它不仅为开发工作提供了明确的指导,而且在项目验收阶段,作为衡量产品是否满足需求的重要依据。编写良好的需求规格说明书可以显著减少误解和沟通成本。
需求验证和管理
需求验证是确保需求正确性和可行性的关键步骤。通过原型测试、模拟运行和用户反馈等方式,团队可以验证需求的合理性,并及时调整。需求管理是一个动态的过程,需要团队持续关注需求的变化,及时更新需求文档,确保项目始终与业务目标和用户需求保持一致。
沟通和协作
有效的沟通和协作是需求分析成功的关键。与利益相关者的紧密合作可以确保需求的准确性和完整性,同时,跨部门协作有助于从不同角度审视需求,确保需求分析的全面性和深度。良好的沟通机制可以促进信息的流通,减少误解和冲突,为项目的顺利进行打下坚实的基础。
NABCD模型
需求 (Need)
识别问题或机会:学生需要一个平台来寻找跨专业的合作伙伴,以支持他们的创业和学术项目。
用户痛点:学生难以找到合适的合作伙伴,合作过程中存在时间安排、目标和沟通方式的差异。
应用 (Application)
解决方案:开发一个校园内的跨专业合作平台,提供项目发布、成员招募、沟通协作和资源共享等功能。
产品/服务特性:平台可以包括个人资料展示、项目匹配算法、在线协作工具、时间管理工具等。
可行性分析:技术可行性可以通过现有的社交网络和项目管理工具来评估;市场可行性基于学生的需求;财务可行性需要考虑开发成本和潜在的盈利模式。
好处 (Benefit)
用户好处:学生可以更容易地找到合作伙伴,提高项目成功率,同时提升自己的综合能力。
竞争优势:相比于现有的校园论坛或社交媒体群组,该平台提供更专业的服务和更高效的匹配机制。
竞争 (Competition)
市场定位:定位为校园内的跨专业合作专家,服务于有创业和学术需求的学生。
竞争优势:提供个性化推荐、专业的项目管理工具和丰富的资源共享。
市场差异化:通过算法匹配和专业的项目管理功能,提供比现有解决方案更高效的服务。
应对策略:持续优化算法,增加用户粘性,建立良好的口碑。
交付 (Delivery)
实施计划:分阶段开发和推广平台。
时间表和里程碑:设定开发、测试、推广和评估的各个阶段的时间表。
NABCD模型的应用
这个模型帮助我们从需求出发,明确了产品的目标用户、提供的解决方案、预期的好处、面临的竞争以及如何交付产品。通过这个模型,我们可以确保产品设计和市场策略的一致性,提高产品的市场接受度。
(二)APP主要功能和原问题分析解决
1.主界面:
展示推荐项目:帮助学生发现感兴趣的项目,鼓励跨专业参与。
搜索栏:允许学生根据兴趣、技能或项目类型搜索项目,便于找到匹配的合作机会。
发布项目按钮:方便学生发起自己的项目,吸引不同专业的学生加入。
我的项目集:让学生跟踪和管理自己感兴趣的项目。
个人中心:提供个人资料编辑、项目管理等功能,便于学生维护自己的合作档案。
2.新项目详情页:
展示项目信息:详细说明项目目标、需求等,帮助学生了解项目详情。
加入按钮:简化加入流程,鼓励学生快速参与感兴趣的项目。
3.已参加的项目页面:
成员列表:展示项目团队成员,便于了解团队构成和专业背景。
项目广告:提供项目宣传空间,增加项目的可见度。
当前项目任务和完成情况:帮助团队成员了解项目进度和各自的责任。
4.用户个人中心:
展示个人资料:便于其他学生了解个人技能和兴趣,促进合作。
已加入的项目:方便学生管理自己的项目参与情况。
5.注册流程:
用户选择角色:明确用户在平台中的定位,如发起者、参与者等。
填写必要信息:收集用户信息,便于后续的项目匹配和审核。
等待审核通过:确保平台质量,避免无效或不合适的项目发布。
6.项目发布流程:
填写项目名称、描述、技能需求等:详细说明项目需求,吸引合适的人才。
发布项目,等待其他用户响应:便于不同专业的学生发现并加入项目。
7.管理项目页面:
处理学生报名:方便项目发起者管理团队成员,确保团队多样性。
8.发起项目页面:
填写项目描述:帮助发起者清晰表达项目意图和需求。
发布按钮:简化发布流程,鼓励学生积极发起项目。
通过这些功能,该应用程序为学生提供了一个方便的平台,以发现、发起和参与跨专业的项目合作。它解决了学生在寻找合作机会时面临的困难,如人脉限制、时间安排差异、沟通障碍等问题。此外,平台的集中化管理有助于提高合作效率,促进不同专业学生之间的交流和知识共享,从而有效支持跨专业项目的持续发展。
(三)流程图
(四)界面展示
1.原型设计
采用墨刀作为原型开发工具,原型链接:https://modao.cc/proto/qwEB5Vimskd2m0YR6mA1qz/sharing?view_mode=read_only
2.注册与登录
用户通过学号姓名手机号注册
3.发布项目
用户可以发起新项目,填写项目详情,寻找合作伙伴。
4.寻找项目
用户可以寻找感兴趣的项目报名参与。
5.通讯与协作
平台提供公告和任务分配功能,方便项目沟通协作,另外可以通过用户在个人简介中留下的联系方式进行通讯。
6.安全与隐私
数据加密:所有用户数据加密存储。
访问控制:基于角色的访问控制,确保数据隔离。
审计日志:记录所有操作,用于安全审计。
总体展示
(五)工作过程
1.需求分析阶段:
确定目标用户群体(大学生)和他们的需求(跨专业合作、提升综合能力、拓宽知识面、积累人脉)。
分析现有合作模式的局限性(人脉限制、时间安排差异、沟通障碍)。
确定app的核心功能和目标(促进跨专业项目合作、提供项目管理工具)。
2.构建原型模型阶段:
设计app的用户界面和体验流程。
创建原型模型,包括主界面、项目详情页、已参加项目页面、个人中心等。
通过用户测试反馈迭代原型,确保设计符合用户需求。
3.项目准备工作阶段:
完成技术选型,包括开发工具(墨刀)、框架和服务器等。
制定详细的开发计划和时间表。
分配开发任务给团队成员。
4.开发阶段:
前端开发:实现界面设计,确保良好的用户体验。
后端开发:构建服务器逻辑,处理数据存储、用户认证、项目管理等。
集成测试:确保前后端协同工作无误。
成员交流沟通:使用QQ进行实时交流反馈问题讨论方法
5.调试和修改阶段:
对app进行系统测试,包括单元测试、集成测试和性能测试。
根据测试结果进行调试,修复发现的问题。
6.测试阶段:
进行全面的测试,包括用户接受测试(UAT),确保app满足用户需求。
收集反馈并进行必要的调整。
7.复盘与总结阶段:
分析整个开发过程,总结经验教训。
记录成功案例和需要改进的地方。
(六)个人总结
通过本次作业,我深刻体会到了需求分析以及NABCD模型在软件开发中的重要作用,也锻炼了在项目开发和团队协作方面的能力。
(七)PSP表格
阶段 | 预估耗时(小时) | 实际耗时(小时) |
---|---|---|
阅读《构建之法》 | 4 | 3 |
需求分析 | 1 | 3 |
构建原型模型 | 10 | 8 |
项目准备工作 | 1 | 3 |
调试和修改 | 1 | 1 |
测试 | 1 | 3 |
复盘与总结 | 1 | 2 |