热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

第17周个人阅读与项目总结

本文总结了软件工程课程M1和M2阶段的个人收获,包括项目开发中的技术学习、团队协作及管理经验。同时,对《构建之法》一书中的相关问题进行了理解和分析。
一、软件工程M1/M2总结

1. M1阶段个人总结

我们开发的项目是北航社团平台,旨在促进社团与学生之间的信息交流,简化社团管理和运营。在M1阶段,我最大的收获是对网站后台搭建和前后端交互流程的理解。我主要负责后端开发,使用Rails框架进行迭代开发,通过API实现前后端逻辑分离。尽管我对网站开发的基础知识几乎为零,但通过查阅资料逐步掌握了Ruby语法、Rails的MVC机制和HTTP请求格式。在这个过程中,我遇到了许多问题,但最终对网站后台搭建有了较为深入的认识。

在团队管理方面,我们做得不够好。团队管理工具仅使用了TFS,代码由三人共同编写,没有使用GitHub等源代码管理工具。文档编写和bug记录也不够重视,这是我们在M1阶段的主要不足。此外,团队成员在API设计和数据库设计上有时会有分歧,需要通过沟通达成一致。团队合作的关键在于相互理解和尊重,倾听他人意见,这样才能高效地推进项目。

2. M2阶段个人总结

M2阶段主要完善了M1阶段的功能,并新增了站内信、评论和通知等功能。由于有了M1阶段的经验,后端开发效率较高,未遇到重大问题。M2阶段的最大收获是对团队管理和代码质量管理的理解。我们改进了团队管理,使用GitHub进行源代码管理,对文档和bug进行记录。每个人在自己的账号编写代码,再推送到远程仓库。虽然初期存在代码冲突问题,但我们通过分枝开发和专人负责冲突解决,最终保证了代码的稳定性和质量。

在文档编写方面,我们编写了详细的API说明文档,确保前后端对接顺利。代码质量管理方面,我们进行了单元测试、黑盒测试、兼容性测试和压力测试。这些测试对项目的成功至关重要,使我深刻理解了测试的重要性。此外,M2阶段的工作压力较大,时间管理成为关键。由于前期进展缓慢,导致后期高强度加班,未能达到最佳目标。这次经历教会了我时间管理和规划的重要性。

通过M1和M2阶段的迭代开发,我亲身体验了软件开发的全过程,收获颇丰。特别感谢我的团队——窝窝头,大家共同努力,完成了令人骄傲的项目。

二、《构建之法》相关问题的理解和分析

1. 需求与软件设计的关系

在北航社团平台的需求分析中,我们详细列出了社团管理和活动发布的需求,如用户通信、团费收缴和社团商品展示等。但由于实现难度大和开发时间有限,部分设计被取消。我们在迭代过程中重点关注了主要需求,如活动发布和报名、社员管理等。软件设计时应关注核心需求,次要需求可在后续迭代中逐步实现。

2. 团队开发模式的效率

以迭代为核心的敏捷开发模式比瀑布模型更高效,能更好地应对需求变更。我们的项目分为两轮迭代,每轮发布一个新版本。在迭代过程中,我们可以调整和优化需求。例如,M1阶段主要实现了活动发布和报名功能,但在M2阶段我们发现社员管理功能非常重要,因此进行了加强。

3. PM所需能力的重要程度

PM的能力包括观察、理解和快速学习能力,分析管理能力,专业能力和自省能力。我认为最重要的能力是分析管理能力。在M1阶段,PM通过TFS进行无监督管理,导致项目进度缓慢。作为团队负责人,PM应监督每个成员的工作,确保项目按计划进行。

4. 处理用户不满意的方法

用户需求必须满足。例如,Aloha阶段的用户反馈中提到活动报名后无法退出、社团导出名单等功能,我们将这些反馈记录并纳入下一轮迭代任务中。

5. 极限编程的利弊

极限编程的优点是效率高,代码编写和复审同步进行,保证代码质量。缺点是对结对编程的要求较高,两人需相处融洽且技术水平相当。否则,极限编程的效果可能不如单独开发。

三、软件工程论文和博客再体会

1. 大泥球问题

在M2阶段,我们使用GitHub管理源代码,后端代码总量达2200行,其中controller层代码量较大,存在冗余。Rails框架希望我们将主要逻辑封装到model层,使controller层简洁。但由于缺乏经验,我们在controller层编写了大量代码,导致程序冗长且难以维护。未来应重视代码重用,将常用方法封装到模型内部,使代码结构清晰。

2. Worse is Better,简单压倒一切

M2阶段我们设计了许多新功能,如论坛、社团钱包、商城和社团推荐等,但因时间不足和学习成本高,这些功能被取消。相反,我们集中实现了通知系统和社团管理系统,这些功能更符合用户的核心需求。将资源集中在用户最需要的功能上,可以提高用户体验。

3. 敏捷开发

在项目开发过程中,我们每周进行一次Scrum会议,冲刺阶段每天进行一次。这种做法有助于监督团队成员的进度,及时调整设计和想法,确保项目朝着正确方向发展。

四、实践中的收获

1. 需求

了解了获取用户需求的方法,并用NABC模型进行分析。

2. 设计

设计阶段的重点是API接口设计,形成API文档。后期修改时,务必同步更新API文档,避免前后端对接问题。

3. 实现

学习了Rails框架的各种组件和MVC机制的原理。

4. 测试

主要使用了单元测试、黑盒测试、兼容性测试和压力测试。压力测试和兼容性测试是软件发布前的重要条件。

5. 发布

发布前必须确保版本正确,经过全面测试。不要为了赶时间发布有缺陷的版本,这会对用户推广造成负面影响。

6. 维护

及时处理用户反馈的BUG,确保软件的稳定性和用户体验。


推荐阅读
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • Spring Cloud学习指南:深入理解微服务架构
    本文介绍了微服务架构的基本概念及其在Spring Cloud中的实现。讨论了微服务架构的主要优势,如简化开发和维护、快速启动、灵活的技术栈选择以及按需扩展的能力。同时,也探讨了微服务架构面临的挑战,包括较高的运维要求、分布式系统的复杂性、接口调整的成本等问题。最后,文章提出了实施微服务时应遵循的设计原则。 ... [详细]
  • 本文深入探讨了JavaScript中实现继承的四种常见方法,包括原型链继承、构造函数继承、组合继承和寄生组合继承。对于正在学习或从事Web前端开发的技术人员来说,理解这些继承模式对于提高代码质量和维护性至关重要。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 构建首个Spring MVC应用程序
    本指南将指导您如何从零开始创建一个简单的Spring MVC应用,涵盖项目模块创建、依赖管理、核心配置及控制器开发等关键步骤。 ... [详细]
  • 本文详细介绍了如何使用JavaScript实现数据的双向绑定,包括MVVM架构的基本概念、不同框架下的实现方式以及具体的代码示例。 ... [详细]
  • 本文探讨了Java编程中MVC模式的优势与局限,以及如何利用Java开发一款基于鸟瞰视角的赛车游戏。 ... [详细]
  • 基于Spring 4.1.3与MyBatis等技术构建的企业级管理平台
    本文介绍了一款采用Spring 4.1.3、Spring MVC、MyBatis 1.2.3、Ehcache、Shiro、POI及EasyUI 1.4.1等技术框架开发的企业级管理平台。 ... [详细]
  • 本文详细探讨了Xshell6评估版到期后无法使用的常见问题,并提供了有效的解决方案,包括如何合法购买授权以继续使用。 ... [详细]
  • 本文探讨了如何在 Spring 3 MVC 应用程序中配置 MySQL 数据库连接,通过 XML 配置实现 JDBC 直接操作数据库,而不使用 Hibernate 等额外框架。 ... [详细]
  • 本文分享了作者从Java开发者转型为PHP开发者的经历,包括学习过程中的挑战与心得,以及如何通过实践快速适应新环境。 ... [详细]
  • 本文详细介绍了在使用FAPlayer的编译脚本时遇到的Ruby依赖问题,并提供了在Cygwin环境下安装Ruby的具体步骤。 ... [详细]
  • 本文详细解析了 MySQL 中的 ibdata1 文件,探讨其存储内容、快速增长的原因及解决策略。 ... [详细]
  • PHP服务器搭建的重要性及方法
    本文深入探讨了为什么在开发PHP应用之前需要搭建服务器环境,以及如何选择和搭建适合的PHP服务器。 ... [详细]
author-avatar
mobiledu2502868653
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有