个人阅读作业

个人阅读作业

对于M1/M2的总结:

由于M1和M2中间的人员转会的要求,我在M1和M2两阶段的团队项目中属于不同的团队,在两个团队中都有一定的收获。

M1阶段我在sevens这个团队里,我们做的是关于北航MOOC的安卓客户端。我们拿到的代码是学长学姐给的IOS客户端的代码,由于相关知识的缺乏,阅读学习起来比较困,请学长给我做了讲解。另外,我们对安卓客户端的开发也是第一次接触,所以在开发的过程中遇到了不少的困难,我们积极的交流讨论,学习相关知识,并积极寻求帮助,努力的解决问题,是项目更好的完成。我在这个团队中的任务比较轻,主要是一些界面的设计编写工作和一些辅助工作,在确定转会人员的讨论中,其他组员都不想转会,我觉得我的工作不涉及项目核心部分,交接十分的容易,就主动提出了转会。

M2阶段我所在的团队是dxteam团队,自选题目,做的是安卓客户端的美食应用“吃了么”。由于转会,接触核心部分来不及,我本身编程能力也不强,所以在团队中我的任务比较轻,也是关于界面方面的,由于任务性质和M1阶段类似,感觉不是非常的困难。

在M1/M2的团队合作项目中,编程方面我主要学习了安卓客户端的界面编程,不仅学了新知识,编写代码的能力也有一定的提高,是我有所收获。在两个阶段中,我的任务都是比较外围的比较轻的任务,但是我并不认为我的工作不重要,可有可无,不管多细小的任务,都应该好好完成,一个轻微的懈怠就可能降低整个项目的质量,脱整个团队的后退,团队每一个成员都努力才能完成好的项目。daily scrum是一个很好的团队交流和监督方式,使团队成员之间更好的沟通,更高效的完成项目。我性格比较内向,不太善于交流,在团队中相互交流与沟通,是我得到了一定的锻炼,但是我觉得自己做得还不够,我的发言相对还是比较少,我应该更多的表达自己的观点,更多的为团队贡献。

快速阅读作业是关于《代码大全》的阅读:http://www.cnblogs.com/dengym/p/4027891.html

当时提的问题与书本内容联系较紧,通过仔细阅读书籍和查阅资料已基本解决:

1.从“代码大全”这个名字来看,这本书似乎是各种各样代码的集合,但是粗略翻了翻此书之后,我发现并非如我所想,那么这本书到底讲了些什么内容?“代码大全”这个书名是不是不太合适?

《代码大全》这本书确实不是各种各样代码的集合,这是一本关于编程风格和软件构建的指导书,主要讲了如何编写高质量的代码,如何构建高质量的软件,还将了如何称为一名优秀的程序员。本书的原名为“code complete”,直译为“编码完成”,由于第一版以“代码大全”为译名出版,影响深夜,第二版就保留了这个无伤大雅的错误,因为对“code complete”的理解并不会影响读者对整本书的理解。

2.本书第二章讲述了隐喻对于软件开发理解的重要意义,并举了一些软件隐喻的例子。软件开发中的隐喻的含义是什么?如何判断软件开发中的隐喻是否合适?如何避免过度引申?

软件工程中隐喻一词并没有什么特别的含义,就和语文中隐喻的含义相同。我们可以通过在日常生活中无意识获得的基本隐喻系统,在软件开发过程中,受到关联性的启发和影响,使得主观经验和感觉经验相互匹配,然后通过概念融合而形成具有启示意义和指导意义的软件隐喻,借助这些隐喻,我们能更深刻的理解软件开发过程。判断隐喻是否合适和避免过度引申,要求我们认真分析,仔细考察原意和引申意义。

3.软件构建是软件工程中的核心,占较大比例,对软件构建作前期准备是十分必要的。前期准备工作的具体内容有哪些?我们如何判断前期准备是否完成?

软件开发的前期工作主要有需求分析和项目规划,首先要明确所要开发的软件的类型,在序列式开发和迭代开发之间作出选择,然后明确所要解决的问题,进行需求分析,最后要确定软件的架构,进行项目的规划。关于如何判断前期准备是否完成,书中给出了需求和架构及前期准备的核对表,我们可以对照核对表中列举的要求,看前期准备是否完成。

4.开发商业系统的项目往往受益于高度迭代的开发方法,而性命攸关的系统往往要求采用更加序列式的方法。迭代开发法和序列式的开发方法具体指什么?我们如何从两种方法中选择合适的方法?

在迭代式开发方法中,整个开发工作被组织为一系列的短小的、固定长度的小项目,被称为一系列的迭代,每一次迭代都包括了需求分析、设计、实现与测试。序列式的开发方法就是按照需求分析、设计、实现与测试的顺序依次实现。当需求相当稳定,设计直接了当而且理解透彻,开发团队对于这一应用领域非常熟悉,项目风险很小,“长期可预测性”很重要,后期改变需求、设计和编码的的代价很可能较昂贵时适用序列式开发。若需求并没有被理解透彻,或者出于其他理由你认为它是不稳定的;设计很复杂,或者有挑战性,或者两者兼具;开发团队对于这一应用领域不熟悉;项目包含许多风险;“长期可预测性”不重要;后期改变需求、设计和编码的代价很可能较低,则迭代式开发更适合。

5.编程语言的选择从多个方面影响生产率和代码质量,编程语言影响程序员的思维,我们再用一种陌生的编程语言写代码时,应当如何减少或避免熟悉的编程语言对我们思维的影响?我们是否应当尽可能多的熟悉各种编程语言?

书中说,使用熟悉的编程语言比使用陌生的编程语言效率更高,当我们使用一种新的编程语言时,熟悉的编程语言或多或少都会对我们产生影响。我想我们可以在开发重要项目之前,更加深入的学习理解和练习新的编程语言,使之由陌生的编程语言变成熟悉的编程语言,来提高生产效率。

关于8篇软件工程相关的论文或博客,经过一个学期的学习,我的体会更加深刻了。团队定期进行daily scrum,进行交流,检查和分配任务,这是一个比较有效的团队沟通和监督方式,敏捷开发中的SCRUM方法论给我们的团队项目提供了很好的指导。还有我们在写代码之前一定要理清思路、设计好代码的架构,不然很容易将代码写成泥球,给后续的工作带来不便。

软件工程这门课确实是一门“做中学”的课程,我对老师上课讲的内容印象并不是十分的深刻,感觉这门课重点就是我们的团队项目,一下是我们在六个阶段中所学:

需求:做好需求分析是我们做好团队项目的基础,我们应到做充分的调研和分析,这方面我们学了竞争性需求分析框架NABCD模型。

设计:我们应当设计好整个软件的构架,这也是软件工程前期工作必须要做好的,我们可以写一些设计文档、规格说明书等。

实现:实现时,每个成员都应当明确自己的任务并即时完成,应当定期的交流,即使反映问题,根据实际情况,做适当的调整。

测试:测试不仅需要对代码进行正确性等的测试,还要从用户角度,进行使用和体验方面的测试,我们学习了多种测试方法,并且有许多测试的工具可供我们学习和使用。

发布:发布时要对软件进行必要的说明,如运行环境、安装方法、版权、联系方式等。

维护:发布之后应获取用户的反馈信息,对软件进行维护和完善。

原文地址:https://www.cnblogs.com/dengym/p/4215960.html