个人总结阅读作业

一、团队开发总结

我在窝窝头团队中担任网站后端dev,从事数据库相关工作。

一)            M1阶段

M1是第一次接触团队开发与敏捷流程,诸多地方都有很深的感触。

  1. 对网站开发的初次尝试

我们的项目是北航社团平台管理网站,是以学生和社团之间的交流为需求的网站。这也是自己首次参与开发网站,一开始自然对网站开发一窍不通。初期学习成本巨大,外加自己的学习效率偏低,进度一直是小组中最慢的。这也导致自己在M1阶段贡献比较低。但随着开发过程的深入,自己也慢慢理解了网站前后端的交互,了解了ruby on rails,了解了API文档的作用。M1的一个月可以说是一个真正的拓展网站开发经验,锻炼能力的经历。

2. 团队开发

依然是第一次参与软件团队开发。之前虽然有和其他人共同进行课程实验或者简单参与过项目开发,但参与这样有严格审核标准、有软件开发理论模型支持的开发流程的确是让自己领略到了软件开发中的大学问。现在的大环境下,团队开发在软件开发中会占据越来越重要的位置。这门课程无疑为自己提供了一个宝贵的实践机会。

同时,开发过程让自己明白了做任何事,规范化与理论背后的支持都是不可少的,也对软件团队模式(功能团队模式)以及团队开发流程(敏捷流程)有了初步的了解与实践。

3. 敏捷流程的实践

从事敏捷开发的感触贯穿整个学期。Sprint、Backlog、Scrum meeting、PM这些之前接触极少的词汇伴随自己这几个月。这段时间的实践让自己明白了及时应对需求变化在软件开发中的地位,让自己看到成员之间的迅速沟通、面对面交流是怎样提高团队开发效率的。

自己在开发过程负责了很长时间的Scrum管理工作(也就是所谓的Scrum master),经过每天整理scrum的体验后,感受到了这一形式的重要作用。每天强制抽出时间,让成员报告进度,迫使大家把问题摆在明面上;同时通过燃尽图与TFS任务真是有效地反映当前进度;让时间驱动冲刺阶段,让可见的数据驱动开发。这种做法在我看来能有效避免开发过程的中盲目与低效,同时有利于根据需求变化及时调整

4. 文档的重要性

开发中采用API文档作为前后端交互标准,无疑省去了大量的麻烦。再一次体现了规范的意义。

二)            M2阶段

这个阶段最直观的体会就是时间紧&累。

有了第一轮迭代的基础,几乎不再需要新的学习成本,对整个开发模式也已经较为了解。但M2过后却感觉并不太满意。主要就是严重低估了外部因素对软件开发的影响——其他学科的课程实验与考期对软工开发的巨大冲击,严重到在长达2周多的时间内开发进度处于近乎停滞的状态。

但这轮迭代仍然有一些好的收获:应对需求变化更加及时灵活,团队协作更加流畅,对代码管理工具的应用更充分当然还有自己对后端API的实现更加熟练更加有效率。

二、重看开学时提出的问题

问题地址  http://www.cnblogs.com/wcysoftware/p/4837147.html

2、4、6未解决,其他已解决

已解决

  1. 个人认为“大马哈洄游“的确是学习软工课程的一个有效办法。学习应该与真正的现实开发区分开来,一如课本中的软件工程师的发展,先由下往上继而一泻千里。这不仅是通过看课本得来,更是在两轮迭代后的直观感觉,在没有基础的情况下进入一个新领域,从最基础层做起肯定是最合理的。

3.    这两种开发方式这学期都尝试过了,自然就对这个问题有了感悟。结对与团队最大的不同,就应该是名字上体现的——两人开发与多人开发完全是不同的概念。结对编程中的两人角色往往可以互换,而在功能团队模式中这就显得不切实际。结对编程两人合作一般更加方便,诸如开会甚至开发时完全可以找到共同时间选一个场合一起开发;但在团队开发中,要找到一个所有人都能出席的时间并不容易。但同时,团队开发中的完善功能区分以及诸如敏捷流程中的scrum都是结对编程无法实现的。所以个人认为就是结对编程适合较小且周期较短的项目,团队开发适合工程量大且开发周期长的项目,可以讲它不如结对编程灵活的弊端降到最低,同时能发挥功能全面、规范化强的特点。

5.    依然是在两轮迭代中得来的体会。PM最重要的两点特质:对所作项目的理解与整体把控、管理团队与保持团队平衡的能力。代码开发能力不是PM的必备能力,PM应该是那个能为团队指明方向并且在遇到困难时能进行调整带领团队前进的人。

7.    极限编程的特点主要体现在4点:加强交流;从简单做起;寻求反馈;勇于实事求是

所以极限编程是十分灵活且能真是反映用户需求的。但这一切都建立在开发者是否操作得当上。缺乏经验往往是致命的,尤其是在寻求反馈上,未能及时调整项目目标的话会造成效率的低下。除此之外,面对大型工程采用这种方式未免显得压力太大。

未解决

  1. 未接触这门课之前,可能会脱口而出答案:创新。但经过学习后,却不再清晰。软件团队模式,开发流程乃至软件工程中的各种理论与方法论,哪个才是推动软件生产力发展的决定因素?正如那篇有关“银弹“的文章,可使软件工程的生产力真正提升的关键在哪里依然存在争议与疑问。

4.  纸上得来终觉浅,绝知此事要躬行。我们现在只尝试过功能团队模式和敏捷流程开发,其他的团队模式以及开发流程的开发效率没有经过实践无法做出定论。

6.  在两轮迭代中,我们的主要用户是学生以及社团,是与我们的生活十分贴近的实体。这让我们在分析用户需求时显得极为简单——只需将自己带入情景,进行情景分析,就可知道用户最想要什么。但如果涉及到我们不了解的领域和行业,想真正做到立足于用户,就需要大力度的调研与分析,这是我目前不了解的地方。

新问题

如何对任务时间做出精确的评估?包括开发周期乃至每个任务的耗时

这是在迭代过程中经常遇到的问题,在做规划时制定出的任务时间往往与实际花费差距巨大。甚至到了后期计划时间完全没有参考意义。

三、阅读文章新体会

Agile Method – by Martin Fowler

你的团队在开发中用了那些敏捷的思想和做法?

经过两轮完整的迭代,对敏捷开发有了更深的体会。但这次主要是我们团队做的不好的2点。

  1. 开发原则1:尽早并持续地交付有价值的软件以满足顾客需求

个人认为其实是敏捷流程的核心——寻求反馈。开发的目标不是以在截止日期做出一版能满足基本需求的产品,而是能够高效的做出产品交付给用户并根据反馈不断进行调整更改,使之尽可能符合用户需求。这一点我们明显做的不够。我们的发布日期过于晚,获取用户反馈的时间很短,根本无法做到敏捷的这一原则。产品似乎只是为我们开发者量身定做,而不是为用户准备的。因为绝大多时间,这款产品只是被我拿来不断使用。

2. 开发原则2:欢迎需求的变化,并利用这种变化来提高用户的竞争优势

这种需求的变化,个人认为可以是根据外界情况做出的目标调整。团队在开发过程中(还未交付用户)发现之前的设计有不周全或者多余的地方,及时调整计划就是一种欢迎需求变化的体现。在第一轮迭代中,一开始设想的商城、网盘、消息推送之类的功能,在开发中期就被认定为是”非迫切的“需求;但直到第二轮才真正的舍弃掉。导致M2初期仍花费了时间去学习,影响了效率。无法大胆地迎合需求变化,调整计划,是我们这次迭代存在的一个巨大问题。

四、各阶段学到的知识点

1.  需求:NABCD模型需求分析方法

2.设计:典型用户与场景分析——这是用来分析设计产品功能非常有效的办法;实体关系图(E-R图)——设计模块、交互的直观化的工具

3.  实现:结对编程中的实现部分——灵活、有效的编程方式,不但可提高效率,其复审制度更能提高代码规范度以及代码质量

4.  测试: 压力测试与黑盒测试——对于网站而言,压力测试必不可少,而黑盒测试则可以看成新用户刚接触产品时各种操作的另一种形式

5.  发布:敏捷开发中的持续交付,经常发布——发布只是为了更好的迎合需求的变化,从而发布更好的产品

时间: 2024-10-05 09:25:00

个人总结阅读作业的相关文章

软件工程M1/M2总结及阅读作业总结

一.软件工程M1/M2总结 写下这篇总结的时候,我们的软件项目尚未完工.虽然尝试申请了延期答辩,但最终未能成功.这意味着,我们的项目能否正常发布已经处于了一个微妙的状态.可能可以,也可能不可以.只能尽力而为了. 整个一学期的开发下来,我在软件工程方面体会最深的是成本问题以及技术债.以前写的项目往往没有特别严格的deadline,很多是个人的随兴而写的东西,写不动了就不写了.又或者是作业,最多也就那么一千行,怎么都是可以写完的.而软件工程这门课的团队项目,7个人,一个完整的网站,特别是对于我们这个

个人阅读作业 final

前两次阅读作业链接: http://www.cnblogs.com/SteelPillar/p/4027877.html http://www.cnblogs.com/SteelPillar/p/4096145.html 请说明哪些问题现在自己已经清楚了,请阐明一下,是如何通过看书,实践,或者讨论弄清楚的: 在实践过程中,我最终发现写成文档类的沟通是比较有效的.比如说,我和前端的负责人谈论她所需要的接口,如果少的话,在企鹅上一句两句就可以解释明白,但如果需求多的话,可能就要写一份需求的说明,我会

个人阅读作业二

http://www.cnblogs.com/Coolio/p/4027701.html  以前的个人阅读作业,提出了一些问题. 一 如何提高代码开发的效率? 通过这个学期的学习和实验,我觉得要提高代码开发的效率,必须使代码变得流畅有组织,同时,团队合作也能提高代码效率. 二 什么是过程模型? 这是软件开发过程中的一种策略,遵循一定的过程模型路线有助于及时交付高质量的产品. 三 软件神话的害处 会使很多人受到误导,从而产生错误的管理和技术行为.会使人们把软件神话当作事实,开发软件的过程中忽略实际

第二次阅读作业

一开始看到阅读作业的时候我感觉老师给的时间还是很充裕的,但是在阅读的过程中我还是感觉不是很充分,其中一个很重要的原因就是由于自己的英语水平有限,在阅读的过程中需要经常性的去查单词,造成阅读中的一些中断,以至于思维不是很连续.但是还好,由于时间较充分且我开始的较早,这一个问题还是被自己克服了,没有造成太大的影响.首先我先说一说自己对于这些文章的理解吧.第一篇文章是No Silver Bullet: Essence and Accidents of Software Engineering.在这篇文

软工个人阅读作业3

M1/M2阶段总结: 从M1阶段开始到现在已有几个月,不知不觉我参与这个高大上的团队完成app的工作已经有这么久了,从刚开始的手足无措到现在的完美结束,期间有任务压身的紧迫感,也有做出成果的激动和欣慰.下面分享一下这一段时间我的思想与感悟. 对于我自己: 1 这两次的团队作业我收获最大的就是又学会了另一种爬虫方法,相对我之前了解的另一种爬取网页的机制,这次学到的方法更加简洁易懂,学起来也很快,了解了其中的机制之后就觉得这种方法很神奇,很有趣. 2 软工课的团队作业也是我参加过的为数很少的多人合作

个人阅读作业+总结

个人阅读作业+总结 关于银弹 关于银弹我比较认同Frederick P. Brooks, Jr.的观点,软件开发过程中没有银弹.文章中提到 But, as we look to the horizon of a decade hence, we see no silver bullet. There is no single development, in either technology or in management technique, that by itself promises

个人阅读作业与总结

个人阅读作业与总结 Silver Bullet I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation. Frederick P. Brooks, Jr.在

软件工程网络15个人阅读作业1

软件工程网络15个人阅读作业1 Task1:博客账号 http://www.cnblogs.com/mz201521044152/ Task2:码云账号 https://gitee.com/mxz0/events Task3:完成博客-阅读与思考 ##阅读参考材料,并回答下面几个问题: (1)回想一下你初入大学时对网络工程专业的畅想 当初你是如何做出选择网络工程专业的决定的? 你认为过去两年中接触到的课程是否符合你对网络工程专业的期待,为什么? 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗?

软工网络15个人阅读作业1

软工网络15个人阅读作业1 Task1:注册个人博客账号 博客园地址:齐畅 http://www.cnblogs.com/qichang/ Task2:注册码云账号 目的:管理你的项目,记录(源码.文档,历次版本变更,bug发现与修复)等信息. 码云地址:https://gitee.com/hudkahfk/ Task3:完成博客-阅读与思考 阅读参考材料,并回答下面几个问题: (1)回想一下你初入大学时对网络工程专业的畅想 当初你是如何做出选择网络工程专业的决定的? 答:听专家意见报的志愿,他

软件工程网络15个人阅读作业1(201521123045 郑子熙)

软工15 个人阅读作业1 1.个人账号信息 (1)学号姓名 201521123045 郑子熙 (2)博客地址 https://home.cnblogs.com/u/zhengizixi/https://home.cnblogs.com/u/zhengizixi/ (3)码云地址 https://gitee.com/zhengzixi/events 2.阅读与思考 阅读参考材料,并回答下面几个问题: (1)回想一下你初入大学时对网络工程专业的畅想 当初你是如何做出选择网络工程专业的决定的? 当初报