经过了一学期的学习,我收获了什么

222200235夏合扎提 2025-01-03 22:07:57
这个作业属于哪个课程软件工程实践
这个作业要求在哪里软件工程实践总结&个人技术博客
这个作业的目标软件工程实践总结
其他参考文献《构建之法》

目录

  • 第一部分:课程回顾与总结
  • 1.问题回顾
  • 1.1 问题再回答
  • 1.2 是否原来的问题还不明白?
  • 1.3 是否产生了新的问题?
  • 2.实践中学习
  • 2.1 阶段收获
  • 2.1.1 需求阶段收获
  • 2.1.2 设计阶段收获
  • 2.1.3 实现阶段收获
  • 2.1.4 测试阶段收获
  • 2.1.5 发布阶段收获
  • 2.2 项目经历的理解或心得(个人项目/结对编程/团队项目)
  • 2.2.1 个人项目
  • 2.2.2 结对编程
  • 2.2.3 团队项目
  • 2.3 七大课程目标的自我评分(掌握程度)
  • 2.3.1 目标1
  • 2.3.2 目标2
  • 2.3.3 目标3
  • 2.3.4 目标4
  • 2.3.5 目标5
  • 2.3.6 目标6
  • 2.3.7 目标7
  • 第二部分:个人技术总结
  • 第三部分:软件开发模式
  • 1. 项目开发过程
  • 1.1 项目目标
  • 1.2 主要技术栈
  • 1.3 遇到的挑战和解决方案
  • 2.软件开发模式的思考
  • 2.1 分析所采用的软件开发模式
  • 2.2 对软件开发模式选择的思考与建议

第一部分:课程回顾与总结

1.问题回顾

软件工程实践第一次作业博客

1.1 问题再回答

Q1:为什么读了书之后我提出的问题那么少?

A1:读书多了,精神世界变得丰富,构筑了自己的小世界。沉浸在自己的世界里,不再需要向别人输出自己的想法,从而减少了提问的需求‌

Q2:学生该如何做到像健身学员一样找到自身定位点,把握老师身上的那套健身资源,朝自己的目标前进呢?

A2:进行自我评估,了解自己当前的水平和能力。这就像健身前的体测,了解自己的体重、体脂率等数据。识别并利用老师提供的资源,比如课堂讲解、辅导时间、额外的阅读材料等。这就像健身学员利用健身房的器械和教练的指导。保持积极的心态,就像健身学员需要自我激励来克服训练中的困难。

Q3: 在一个被认定为“足够好”的软件发布后,得到的用户反馈中,哪些是有用的?什么时候才能将这个软件优化到相对稳定的版本?

A3:功能需求和建议,报告,用户体验问题,性能问题,安全和隐私问题是比较重要的。而优化需要多个因素如问题解决速度:软件优化到稳定版本的速度取决于开发团队解决问题的效率,包括bug修复、性能优化和功能改进

用户反馈的处理:持续收集和分析用户反馈,并根据反馈进行产品迭代是达到软件稳定性的关键

Q4:在项目或程序比较复杂的情况下,如何高效率的进行程序理解?

A4:面对复杂的项目或程序时,高效率地进行程序理解可以采取以下步骤:首先,从项目文档入手,了解整体架构和关键功能;接着,分析代码结构,识别核心模块和文件;然后,通过运行单元测试和集成测试来验证代码行为;最后,利用调试工具逐步执行代码,追踪关键路径,从而深入理解程序的工作原理。这个过程需要结合代码审查、团队讨论和工具辅助,以确保全面而准确地把握程序的细节。

Q5:程序员是否有必要为满足小部分人的需求去做软件,或者为软件添加某些功能?

A5:我认为这取决于多种因素,包括市场需求、项目目标、资源限制和长期战略。如果这些特定需求能够带来商业价值、增强用户体验或符合产品的发展方向,那么考虑这些需求是有意义的。然而,如果这些功能会分散开发资源,影响核心功能的完善,或者与产品愿景不符,那么可能需要重新评估其优先级。最终,决策应基于对项目成功最有利的考量。

1.2 是否原来的问题还不明白?

经过了知识积累而且问题并不是特别的精细,所以没有不明白的

1.3 是否产生了新的问题

在课程过程中产生了不少新问题:

  1. 在个人项目中由于本身学习能力不足,会导致接受新知识的反馈会很慢,会有挫败感,导致学习动力降低,从而导致学习效率下降。

  2. 双人协作过程中容易出现意见分歧,沟通不当,或者技术能力不在同一水平而导致的拖后腿会导致合作效率低下。

  3. 团队协作中可能会遇到团队成员协作不力、需求变更频繁、任务分配不均等问题可能导致进度延迟或质量下降,还可能出现版本管理混乱的情况。

2.实践中学习

2.1 阶段收获

2.1.1 需求阶段收获

  • 学会了与客户沟通以明确需求,深入理解需求的模糊性和多样性。
  • 熟悉了需求文档的撰写格式。
  • 认识到需求变更的不可避免性以及需求管理的重要性。

2.1.2 设计阶段收获

  • 学会了 UML(统一建模语言)设计类图、用例图、活动图等。
  • 表达能力得到了提升。
  • 意识到设计的可扩展性和可维护性的重要性。

2.1.3 实现阶段收获

  • 技术技能提升: 通过实际编码,加深了对编程语言、框架和工具的理解和应用能力。
  • 问题解决能力:在实现过程中遇到的问题迫使开发者思考和寻找解决方案,增强了解决问题的能力。
  • 代码质量意识:学习如何编写可读性高、可维护性强的代码,以及如何进行代码重构。

2.1.4 测试阶段收获

  • 学会了设计测试用例,并理解了功能测试、性能测试和边界测试的基本方法。
  • 实践了单元测试、集成测试和系统测试,意识到全面测试的重要性。
  • 通过测试发现并修复了多个隐蔽性 Bug。

2.1.5 发布阶段收获

  • 学会了基本的发布流程。
  • 理解了用户反馈的重要性并能处理反馈。
  • 体会到后期维护的重要性。

2.2 项目经历的理解或心得(个人项目/结对编程/团队项目)

2.2.1 个人项目

  • 自我管理能力提升,包括时间管理、任务优先级排序和自我激励。
  • 技术不断进步,个人项目让我意识到持续学习的重要性,以保持技术知识的更新。

2.2.2 结对编程

  • 由于有两个人实时审查代码,结对编程有助于减少错误和缺陷,提高代码质量。
  • 在结对编程过程中,需要不断与搭档沟通想法、解释代码和讨论问题,这有助于提高我的沟通能力和表达能力。

2.2.3 团队项目

  • 在项目中与团队成员共同解决了实际问题,增强了团队合作意识。
  • 初步理解了敏捷开发方法对项目管理的辅助作用。

2.3 七大课程目标的自我评分(掌握程度)

2.3.1 目标1

  • 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。
  • 评分:85/100
    • 理解了社会责任,例如信息安全和用户隐私。
    • 学会了从社会影响的角度考虑软件的设计和实现。

2.3.2 目标2

  • 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。
  • 评分:90/100
    • 熟练掌握了需求分析工具和模型构建(如用例图),能够规范表达需求。
    • 在客服多样化需求上有不足。

2.3.3 目标3

  • 掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。
  • 评分:87/100
    • 理解了从架构到构件设计的基本过程。
    • 对较为复杂的系统设计还有不足。

2.3.4 目标4

  • 能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。
  • 评分:80/100
    • 能够初步进行评测和评判。
    • 创新设计意识薄弱。

2.3.5 目标5

  • 遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。
  • 评分:90/100
    • 熟悉了主要开发文档的撰写标准。
    • 对一些特定行业标准的文档要求还需进一步学习。

2.3.6 目标6

  • 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。
  • 评分:95/100
    • 团队沟通技巧良好,能够高效表达。
    • 在团队合作编程方面缺少经验。

2.3.7 目标7

  • 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。

  • 评分:90/100

    • 初步掌握了项目规划工具的使用。
    • 对于复杂项目的资源分配和风险管理理解还需深入。

    第二部分:个人技术总结

  • 个人技术博客

  • 概述:Axios 是一个基于 Promise 的 HTTP 客户端,用于发送网络请求。请求拦截器是一种技术,可以在请求发送前或响应返回后对请求或响应进行统一处理。

第三部分:软件开发模式

1. 项目开发过程

1.1 项目目标

  • 目标描述:一款旅游APP,包含各种实用功能
  • 具体要求
  • 用户注册与登录:用户能够通过手机号码或第三方社交账号(如微信、支付宝)进行注册和登录。
  • 个人信息管理:用户可以查看和编辑自己的个人信息,包括头像、昵称、性别、年龄、联系方式等。
  • 旅游目的地搜索与浏览:用户可以通过关键词、地理位置、热门推荐等方式搜索旅游目的地,并浏览目的地的详细信息,如景点介绍、美食推荐、住宿信息等。
  • 行程规划与管理:用户可以创建自己的旅行行程,添加景点、酒店、餐厅等信息,并对行程进行编辑、删除和分享。
  • 旅行攻略查看与分享:用户可以查看其他用户分享的旅行攻略,并对攻略进行点赞、评论和收藏。同时,用户也可以自己发布旅行攻略,分享自己的旅行经验和心得。
  • 订单管理:用户可以查看和管理自己的订单,包括酒店预订、门票购买、租车服务等。
  • 消息通知:用户可以接收系统消息和其他用户的私信通知,及时了解旅行相关的信息和动态。

1.2 主要技术栈

  • 前端

    • HTML、CSS、JavaScript
    • Vue.js
  • 后端

    • springboot
  • 数据库

    • MySQL
  • 版本控制

    • Git(通过华为云平台进行代码托管)

    1.3 遇到的挑战和解决方案

  • 需求变更频繁

    • 持续与客户沟通,设立需求冻结点,并在敏捷中灵活处理新需求。

团队协作问题

  • 定期举行 Scrum 站会,明确分工并解决障碍。

2.软件开发模式的思考

2.1 分析所采用的软件开发模式

采用的模式敏捷开发模式(Agile Development)

  • 基于 Scrum 框架,团队以迭代为周期(每个迭代持续两周)。
  • 每次迭代结束后,发布可用版本并与客户评审改进。
  • 使用每日站会、Burn-down Chart(燃尽图)跟踪任务进展。

2.2 对软件开发模式选择的思考与建议

  • 选择依据

    • 如果需求明确且变更较少,传统的瀑布模型更适合。
    • 如果需求频繁变化且需要快速交付,敏捷模式是更优选择。
  • 模式结合

    • 可以结合瀑布和敏捷模式的优点。例如,在需求分析阶段使用瀑布模型的规范化流程,而在实现和测试阶段使用敏捷模式的迭代方式。
...全文
43 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

240

社区成员

发帖
与我相关
我的任务
社区管理员
  • FZU_SE_teacherW
  • 助教赖晋松
  • D's Honey
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧