个人作业——final

  • 对M1M2的一个总结

  我特别感谢我们组的PM。以前我觉得女生学计算机这个专业,跟男生比差太远了。总觉得我们女生就是上上课写写作业考考试还行,但是一到开发什么项目啊,实战之类的,总觉得自己的能力和男生比差太远。但是自从加入到了这个团队,PM一直引导着我们,从什么都不会,到可以分工合作,一起做一个项目。这个经历对我来说十分难得,也让我收获了很多。这种收获不仅仅是知识上的技术上的,而是了解了整个软件开发的概念和流程。

  每次scrum meeting,PM都会给我们分配任务,然后把我们做这个任务的技术难点大概和我们说了一下。让我们有一种师傅领进门的感觉。然后我们就可以各自开工啦。对于我们组来说,PM是一个特别灵魂的任务。大家遇到任何问题,都会先跟PM商量。

  总体来说我们对我们的软工项目最终成果挺满意的。毕竟母不嫌子丑嘛~但是这个学期大作业实在太多,导致我们基本都是靠刷夜完成的大作业。所以希望软工在时间上能有所调整就更好啦~


  • Silver Bullet? Yes or No.

在这一学期亲身经历了软件开发的过程后,我更加深刻地意识到软件复杂的本性,使得这样一颗silver bullet不存在。那么那些所谓的软件工程的方法论能起到什么样的作用呢?我觉得长期以来人们总结出的软件工程的管理方法,开发方法,核心目的就是一个,控制复杂度。既然软件不可避免的复杂,而人们对软件的要求又不断升级,为了能开发出能跟上时代的软件,我们的方法论必须注重于控制复杂度。具体做法是将软件的功能分层,在上一层隐藏其下一层的细节,做好模块化,并写详细的开发文档。核心思想是团队合作,并尽量将复杂的功能分步分层完成,分而治之。

  • 大泥球,the Cathedral and the Bazaar和worse is better:

即使遵循最好的软件工程方法论和核心思想,软件中也总是有很多bug或者不好的设计。如果在开发的过程中,突然发现这个软件最基本的设计应该用一种更加有效的方法,这时怎么办?教堂的做法是重新设计,力求做到最优的设计。这样必然会增加开发成本和投入的时间与精力,但也往往会迎来革命性的性能提升。而集市的做法更加保守,它比较偏向于在以后的设计和实现基础上修改,并在一定程度上解决问题。这样做的好处则是更新快,成本低,但会让以后的维护更加困难。这种代码复杂程度的增大和维护成本相应的提高叫大泥球现象。即一些quick and dirty的代码越滚越大,最终让代码结构混乱。但是集市的这种方法也不一定会导致大泥球现象,比如GNU Emacs就是用集市这种做法管理的很成功的开源项目。

而我们在软件开发过程中,由于受限于时间精力和成本,我们也用的是集市的做法,对于开发过程中发现的一些比较根本的设计问题,我们也没有办法重新设计,只能做一定程度的修改。我们感受到集市的做法也不是没有好处。第一,它更保守,保留了所有的开发版本,每一个新的版本都建立在旧版本的基础上,很少重新设计实现程序。虽然有的泥球越滚越大,但是源代码的版本的完整性对维护反而有帮助。第二,它充分利用了所有组员的能力,让每个人都在原来的基础上可以进行修改。大部分时候,大家的想法集思广益,是可以让软件向着更好的方向进化的。第三,它的容错性比较高,由于源代码版本版本的完整,很多修改之后出现的新bug可以通过回到原来的版本来实现。而教堂由于抛弃了以前的设计,在实现中出现的新错误会更加难以处理。

  • 敏捷开发:

集市的这种做法在敏捷开发的思想里也能看到影子。敏捷开发强调在较短的周期中,发布新版本的软件。而教堂的一大特点则是软件更新周期较长,许多版本只供内部测试使用。我觉得敏捷开发这样的原因是相信通过频繁发布软件的新版本,观察用户的反馈,来调整今后开发的重点。教堂的做法在确定开发目标这一方面上就比较有劣势,因为有可能设计者觉得基本设计存在漏洞,决定重新设计,但是即使重新设计完成了,却发现用户的使用要求不高,并不需要设计者的重新设计。这时就很尴尬,设计者虽然设计出比原来更好的软件,但是由于软件投放市场的时间和版本数量都不够,导致对用户要求的错误估计,结果这次优化其实是并没有必要的。这就体现出敏捷开发的主要优势,即通过不断的用户选择,让市场需求来指导软件的优化与升级,这种做法更加实用,有效。

总的来说,我在这个学期的软件开发过程中,体会了软件内在的复杂度,并运用了将底层软件功能抽象化来完成了对软件复杂度的控制。我们采用了集市的开发形式和敏捷开发的开发周期,不断地完成可用的新版本,并进行测试,得到反馈,从而确定新的开发目标。我们深刻体会了软件开发方法论的重要性和实际应用,以及不同方法论的效果之间的对比,收获良多。

时间: 2024-11-08 19:08:58

个人作业——final的相关文章

个人阅读作业 final

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

Final 个人最终作业。

1.对软件工程M1/M2做一个总结 在M1阶段,我在C705组.M1阶段我与黄漠源同学结对,一起完成提取关键词算法的优化.最初我们一起测试提取关键词算法功能的实现效果,随后我主要负责从网络上搜寻并整理提取关键词算法,黄漠源同学负责测试算法的BUG.随后我接受整合算法的工作,测试已有的整合算法,并尝试作出改进. 在M2阶段,我在sixsix组.M2阶段我主要负责管理博客和TFS.我对TFS的功能有了许多认识,主要负责整理大家的工作情况,同时发布博客,说明大家的任务分配以及出现的种种情况.熟悉了TF

第十八周个人作业--The Final

项目计划   完成这个项目需要的时间:5-7天项目开发  需求分析:    作为一名排球赛事管理者,我希望能够根据比赛查询每场比赛的结果,以便于确定每支球队的比赛名次.  设计文档    由排球比赛用户故事的需求分析可知,此程序是用来统计各个队伍的比分和积分情况,并加以排名.  计划复审 目前在进行中 public partial class Form1 : Form{ Action action = new Action(); public void INSERT() {Model q = n

作业备忘

作业提交截止时间 20161201 09:00. 加分项目 加分的内容包括不限于: 读书报告.个人项目和结对项目中未完成的功能.产品对比分析.教师将根据完成质量加分.如果你对想写的内容是否加分有疑虑,可以与教师联系后再投入精力.所有同学无论成绩高低均可以做加分项提高自己的成绩. 补的作业如果超出截止期限1周,不计成绩:补的作业如果未超过截止期限1周,把此前给的负分改为0分. 问:关于加分作业的读书报告,为什么有的人分数高,有的人分数低 答: 作业要求中提到"加分的内容包括不限于: 读书报告.个人

作业调度算法

先来先服务.短进程优先算法 一.实验目的 通过使用c对先来先服务.短进程优先算法的实现,进一步理解并掌握调度算法的逻辑过程,以及每种算法分别在进程调度和作业调度中的的处理方法. 二.实验原理 先来先服务:该算法在每次调度中,都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为他们分配资源.创建进程,然后放入就绪队列.在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,位置分配处理机,使之投入运行.该进程一直运行到完成或发生某事件而阻塞后才放

第三次作业 计算器

需求分析:用户选择计算类型,然后由软件随机生成数据,然后用户给出运算结果,运算软件要判断是否正确,并在软件结束时显示统计结果. (1):做一个计算器窗口,添加上所有控件和运算符,便于用户输入和计算: public static void main(String[] args) {  Frame frame = new Frame("计算器");  frame.setSize(300, 200);  frame.setLocation(300, 200);  frame.addWindo

java作业3

一.构造方法 1.源代码 public class Test{ public static void main(String[] args){ Foo obj1=new Foo(); } } class Foo{ int value; public Foo(int initValue){ value=initValue; } } 2.程序截图 3.结果分析 若构造方法已提供,则系统不再提供默认构造方法. 二.JAVA字段初始化 1.源代码 public class InitializeBlock

JobTracker作业启动过程分析

在Hadoop中,启动作业运行的方式有很多,可以用命令行格式把打包好后的作业提交还可以,用Hadoop的插件进行应用开发,在这么多的方式中,都会必经过一个流程,作业会以JobInProgress的形式提交到JobTracker中.什么叫JobTracker呢,也许有些人了解Hadoop只知道他的MapReduce计算模型,那个过程只是其中的Task执行的一个具体过程,比较微观上的流程,而JobTrack是一个比较宏观上的东西.涉及到作业的提交的过程.Hadoop遵循的是Master/Slave的

普林斯顿算法课Part2第二周作业_SeamCarving

作业地址:http://coursera.cs.princeton.edu/algs4/assignments/seamCarving.html 作业难点: 1.如何获取图形的RGB属性? 需要研习下Picture.Color类等,使用getRGB().getRed().getGreen().getBlue()等函数; 2.如何计算从顶端到底部的最低energy曲线(即最短路径)? 使用课上讲的Dijkstra算法求解即可: 3.是否将findHorizontalSeam和findVertica