热门标签 | 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,确保软件的稳定性和用户体验。


推荐阅读
  • 在寻找轻量级Ruby Web框架的过程中,您可能会遇到Sinatra和Ramaze。两者都以简洁、轻便著称,但它们之间存在一些关键区别。本文将探讨这些差异,并提供详细的分析,帮助您做出最佳选择。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • MongoDB的核心特性与架构解析
    本文深入探讨了MongoDB的核心特性,包括其强大的查询语言、灵活的文档模型以及高效的索引机制。此外,还详细介绍了MongoDB的体系结构,解释了其文档、集合和数据库的层次关系,并对比了MongoDB与传统关系型数据库(如MySQL)的逻辑结构。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • Struts与Spring框架的集成指南
    本文详细介绍了如何将Struts和Spring两个流行的Java Web开发框架进行整合,涵盖从环境配置到代码实现的具体步骤。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • Java项目分层架构设计与实践
    本文探讨了Java项目中应用分层的最佳实践,不仅介绍了常见的三层架构(Controller、Service、DAO),还深入分析了各层的职责划分及优化建议。通过合理的分层设计,可以提高代码的可维护性、扩展性和团队协作效率。 ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 深入解析Spring Boot自动配置机制
    本文旨在深入探讨Spring Boot的自动配置机制,特别是如何利用配置文件进行有效的设置。通过实例分析,如Http编码自动配置,我们将揭示配置项的具体作用及其背后的实现逻辑。 ... [详细]
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社区 版权所有