软工造梦厂团队总结

作业课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience/homework/10121
作业要求 https://www.cnblogs.com/harry240/p/11524252.html
团队名称 C#软工造梦厂
作业目标 总结团队开发项目的经验
GitHub地址 https://github.com/shisan9527

一、队员列表

姓名 学号
张旭(组长) 201731024123
周成杰 201731024136
邹扬锋 201731024134
赵俊安 201731024121
黄涛 201731024119
陈欣 201731024102
马芸慧 201731024104
马昊妍 201731024107

二、正文

姓名 张旭
学号 201731024123
博客地址 http://home.cnblogs.com/u/shisan9527/
第一篇博客地址 https://www.cnblogs.com/shisan9527/p/11512084.html

提出的问题
1.好的想法会赢
关于这个问题我还是保持了刚开始的想法,好的想法当然会赢,只是这个“好”体现在哪个方面,如果在某一领域这个想法无法获得成就那就说明这个想法在这个领域其实是不算好的。好是一个相对的形容词而不是一个绝对性的评语。
2.黑箱测试的存在意义
现在认为黑箱存在的意义基本就是能够快速地找出程序存在问题的大体方向,再通过白箱测试来找出具体方面。具体还是通过看书和查资料了解到的。
3.敏捷测试
敏捷测试主要体现一个快字,快不一定是最好的,但速度确实得到了提升。就比如我们团队发布项
目时的冲刺阶段,项目存在很多问题,但发布更新的速度得到了很大的提升,所以敏捷测试所体现的方面主要就是不断地修正质量指标,正确建立测试策略,确认客户的有效需求能得以圆满实现和确保整个生产的过程安全的、及时的发布最终产品。

4.关于单元测试
单元测试我们在作业时也做过,现在基本能够理解单元测试的概念,就是对整个程序的不同部分进行测试,而且对于我们所使用的C#语言是比较方便的,因为面向对象嘛。简单来理解就好像一个产品在发布之前,要对它的每个零件等等进行测试,是否有问题。
暂无新问题提出
掌握的技能
我觉得对自己来说更多的技能首先就是 博客的写作吧,作为小组长应该是所有人当中使用博客数量最多的了;再一个就是程序的编写与改正上面,通过团队项目,自己也写了代码,也改了bug,相比以前有所提升。
深刻的体会
最深刻的体会就是做一个项目真的好难,不仅发现自己的专业能力相对薄弱,也发现对于开发这一块的理解没有深入。有这样一个开发经验,觉得以后对开发会有更系统的理解;还有团队合作的重要性,确实这样一个项目不可能一两个人把所有事情都揽完,这是一个十分辛苦和复杂的过程,在这里也感谢我的队友,大家都尽了自己的力了。

————————————————————分割线————————————————————

姓名 邹扬锋
学号 201731024134
博客地址 https://www.cnblogs.com/z1024/p/11508766.html
1、回望过去

  一开始进入学习这门课程的时候,真的什么都不知道,遇到的都是问题,现在来看也还是稍显稚嫩,现在也在最后选择性回答其中两个问题:

  1. 在6.4.1提到了“极限编程”,那么“极限编程”应该怎么达到,优点和缺点又是什么?
      实现方法:1、团队协作;2、规划策略;3、结对编程;4、测试驱动开发;5、重构;6、简单设计;7、代码集体所有权;8、持续集成;9、客户测试;10、小型发布;11、每周40小时工作制;12、编码规范;13、系统隐喻
      优点:1、重视客户的参与;2、重视团队合作和沟通;3、制定计划前要做出合理预测;4、让编程人员参与软件功能的管理;5、重视质量;6、简单设计;7、高频率的重新设计和重构;8、高频率及全面的测试;9、递增开发;10、连续的过程评估;11、对过去的工作持续不断的检查
      缺点:1、以代码为中心,忽略了设计;2、缺乏设计文档,局限于小规模项目;3、对已完成工作的检查步骤缺乏清晰的结构;4、质量保证依赖于测试;5、缺乏质量规划;6、没有提供数据的收集和使用的指导;7、开发过程不详细;8、全新的管理手法带来的认同度问题;9、缺乏过渡时的必要支持
  2. 第二章讲到了单元测试的重要性以及各种标准,但是对于我们专业很少在课堂内容外接触到其他编程内容,并不知道单元测试是什么,如何操作,以及它的作用原理和作用到底是什么?
      是指对软件中的最小可测试单元进行检查和验证。经常与单元测试联系起来的另外一些开发活动包括:代码走读、静态分析、动态分析。前面两个不需要对代码进行编译和执行。动态分析就是通过观察软件运行的的动作,来提供执行跟踪,时间分析,以及测试覆盖度方面的信息。单元测试是开发者编写的一小段代码,其实我们每天都在做单元测试,写了一个函数,除了极简单的外,总是要执行一下,看看功能是否正确,这可以叫临时单元测试,这种测试很不完整,代码覆盖率超过70%都很困难。
2、产生的新问题
  1. 如何实现人机交互?
  2. 如何建立网络数据库?
  3. 如何对所做程序进行联网操作?
3、掌握的新技能
  1. GIT的使用
  2. 博客的编写
  3. C#窗体运用开发程序
  4. 团队协作完成项目开发
    通过几次布置的作业,以及代码开发过程中慢慢查资料,实践学习到的
4、收获与总结

  通过课程的学习,我真的收获到了很多,最显而易见的就是编程能力的提升,通过几次作业的代码练习,增加了我编写的代码量,对于C#编程熟练了不少。最重要的是学会了团队合作开发项目,以及一个项目要开发好所需要的各种工作流程都不再陌生了。在团队中,需要做好团队任务的分工,每个人都有每个人的角色和任务,一个人的问题,可以在团队中一起解决。这就是我的收获。
————————————————————分割线————————————————————

姓名 陈欣
学号 201731024102
博客地址 https://home.cnblogs.com/u/niuerduo/
第一篇作业博客 https://www.cnblogs.com/niuerduo/p/11506967.html

一.提问与解答
1.【第一章 1.1软件=程序+软件工程】文中提到了软件工程和计算机科学的关系和区别,到底是怎样的呢?
①计算机科学中理论研究部分大多可以从形式上证明,与数学、离散数学、数理逻辑密切相关,计算机科学中与实践相关的部分,
都和数据以及其他科学发生关系。软件工程则和人的行为有关,软件工程的研究目标(软件的开发与维护)等都与人有关,
可能是项目的使用者,也可能是开发者,这是与计算机科学中很不相同的一部分。
②在任何科学领域都有偏理论和偏实践的部分,当偏应用的部分得到长足的发展时,就会被大家更多地熟知。
③计算机中的理论发展,比如对程序的正确性分析,会帮助软件工程,反过来,软件工程的发展能够帮助计算机去做更多的探索。
2.【第十二章 12.1用户体验的要素】一个合格的软件工程师应该注重代码的可读性还是更注重用户的体验?
在学了这门课程之后,对于这个问题我有了解答。我认为在两者权衡之中,用户的体验更重要。软件是用来干嘛的?是用来给人服务的,为人们的生活带来便利,所以不论怎样,用户的体验性应该放在第一位。因为只有这个样子,你的软件才会吸引人,才会有人来用。当然,软件代码的重要性也是不容忽视的,因为总是需要代码来完成这个软件。准确的来说,代码应该是服务于用户的。在尽量保证代码完整的前提下,应该更注重用户的体验。
3.【第四章 4.4代码复审】面对复杂的代码怎样才能真正的读进去?
①扫一遍源码:当你拿到框架的源码的时候,你可以大致把源码的每个包,以及每个包下面的文件扫读一遍。扫读并不需要你弄清楚每一行代码的意思,只需要让你知道源码每一部分的作用。
②找到入口:阅读任何一个框架的源码,首先就是要找到框架的入口。通过上面扫读源码,你应该能够发现一些入口的迹象。
③通读源码:找到入口之后,下一步就是通读所有源码了,就是把源码的每个文件每一行都看一遍。在这个阶段不求完全弄懂细致的业务逻辑,但是要形成一个大概的框架,知道这个框架是如何设计的,有哪些大致的模块,这些模块是如何设计的。
④梳理框架:在通读源码的过程中,你就会对框架有许多新的认识,会知道这个框架大致分为哪几个部分,每个部分的作用是什么,这个模块用了什么设计理念等等。
4.【第十六章】第十六章我看到都在讲创新,其中提到了创新要自上而下,那对于我们刚毕业的大学生出来创业,创新是个可以出头的点,但是毫无基础的我们真的可以颠覆某个东西吗?
可以,但是只是少数。大多数大学生创业都失败,究其根本是只有创意和空想没有经验、只会纸上谈兵。想法是不错的,甚至实践出来效果也可能是颠覆性的,但是只是缺少天时地利人和。为什么说要自上而下,我想我现在明白了。上,是一个平台,你无法创造这个平台,就要依靠生活中已经存在的平台。但是你的才华如果很多的话,后面也是可以自己发展起来的。只是大学生刚刚出社会在阅历经验资源等等,都无法为美好的愿景提供帮助时,首要做的就是先在生活中积攒经验,先强大自己,再去和社会毒打迎面宣战。一鼓作气,再而衰,再而竭,再揭竿起之。
5.【第一章 1.2软件工程是什么】文中说软件的行为和用户期望值不一样,就叫做BUG,但是每个人的观点都不同,那BUG到底是不是一个确定性的东西?
所谓"(Bug)",是指电脑系统的硬件、系统软件(如操作系统)或应用软件(如文字处理软件)出错。硬件的出错有两个原因,一是设计错误,一是硬件部件老化失效等。软件的Bug,狭义概念是指软件程序的漏洞或缺陷,广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节、或与需求文档存在差异的功能实现等。
二.新问题
在找寻需求时,如何评判这个需求是否值得花费人力,物力,财力去开发一款软件,如果这个需求受众范围很小,但却对他们有很大帮助,还值得开发吗?
三.掌握的技能
1、运用GITHUB上传自己的代码资源或是下载所需的资料
2、文档撰写能力有提升,在撰写项目选题计划书、详细结构体系方面已经初有门路
四.总结
通过本学期对这门课的学习,我了解了什么叫做“软件工程 ”并且加深了对其的认识,也明白了什么是多人合作和如何进行多人合作。此外,这门课也让我明白软件开发是一个艰辛且漫长的过程,在这个过程中开发人员必须得有充足的耐心和足够的细心并且对于每个功能模块要不断地精益求精、尽可能的消灭BUG以确保软件在交付给用户的时候质量是过关的。同时,我也初步领会了如何合理正确的开展进行“软件工程”的工作 。
除开我对这门课的理解之外,这门课带给我最大的收获就是敦促我不断的去自我学习然后自我实践与尝试,这可以说是本门课给我培养的能力,在本门课开始之初,我有很多知识盲区,要完成平常的作业若是靠我已有的知识可以说基本不可能,为了完成平时的作业我必须不断地去搜索查阅资料然后消化吸收变成自己的东西再继续完成作业,从最开始的结对编程再到后来的团队合作,任何一个作业对我来说开头都是十分困难的,但正是因为它十分困难,在此过程中其总是会逼迫我去不断拓展自己的知识,不论这个是不是我主动的,但是本门课的确培养且加强了我独立自主学习的能力。
————————————————————分割线————————————————————

姓名 马昊妍
学号 201731024107
博客地址 马昊妍 - 博客园
https://www.cnblogs.com/klaus123/

1.我对软件工程的想象:
软件工程就是创建一个软件,并将这个软件应用起来。
2.第一次作业提出的问题:
(1)我看了【3章,3.3.4,职业成长——自我评估】,我有这个问题:那我们在发展自我时,到底应该选择攻克先进、创新的项目,还是应该做好最基础的信息系统?
(2)我看了【5章,5.2,软件团队的模式】,我有这个问题:在我开发一个项目时,应该怎样选择合适的团队开发模式呢?
(3)我看了【7章,7.2.5,重视商业价值,提供渐进的价值】,我有这个问题:当我成为了软件工程师以后,工作当中理想热情重要还是创造利益重要?
(4)我看了【8章,8.3,获取用户需求——用户调研】,我有这个问题:该做些什么来提高大众对这一行的认知程度?
(5)我看了【16章,16.1,创新的迷思】,我有这个问题:那创新的真正含义是什么?
[第一次作业] https://www.cnblogs.com/klaus123/p/11507708.html
3.解答
1:应该先做好最基础的信息系统
2:根据具体情况,灵活变动
3:我认为创造利益重要
4:教育是必不可少的
5:做别人没做过的,或者超脱自己以往的
4.总结
这门课程确实是一个新的领域,有很多有趣的地方,比如自己做一个APP这样子,感觉很有意思。就是从来没有接触过,所以做起来有些许的吃力,难度也比较大,更多的还是仰仗组内的同学。同样这次学习,让我明白我自己对这方面并没有兴趣和热情,可能以后不会做这方面的工作。不过在学习的过程中,肖老师很风趣幽默,助教也非常非常认真负责,同组的同学也非常团结,让我在整个学习过程非常的愉悦。
————————————————————分割线————————————————————

姓名 马芸慧
学号 201731024104
个人博客地址 https://www.cnblogs.com/Bottfek/
第一次作业地址 https://www.cnblogs.com/Bottfek/p/11508360.html

1.【第二章】文中提到为了确保团队成员是合格的软件工程师得先普及一些基本概念和技术
如何能让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证?
既然是一个开发团队,那么绝大部分的软件都是由多人合作完成的,大家的工作相互有依赖关系。所以需要单元测试来保证整个开发过程各个模块的正确性,单元测试可以保证自己负责的模块功能定义尽量正确,模块内部的改变不会影响其他模块,而且模块的质量能够得到稳定的、量化的保证。
2.【第四章】两人合作时,有一节代码复审,提出为什么一定要进行代码复审?首先代码复审中发现的问题,绝大多数都可以由开发者独立发现的吗
首先代码复审中发现的问题,绝大多数都可以由开发者独立发现。从这一意义上说,复审者是在替开发者干开发者本应该干的事。
3.【第九章】提到了这样一句“没有风险,就是最大的风险。” 这句话该如何理解呢?
风险会从多方向来袭,企图缩短软件的生命周期,而所谓“没有风险”只是没有预见风险,并且没有对其未来的风险情况。
4.【第十一章】有下面这样一段内容 “ 写好代码后,小飞对照设计文档和代码指南进行自我复审,重构代码。” 对于代码重构不是很清楚。重构是对于旧的架构进行修改,来满足新的需求吗?
重构在“软件系统的过程, 它不会改变代码的外部行为, 同时改善其内部结构。 这是一种严格的清理代码的方法, 它可以最大限度地减少引入错误的可能性。 本质上, 当重构代码时, 是在编写代码之后改进它的设计”。
5.【第十六章】我们谈到了创新,谈到了创新的迷思,时机和招数等。列举了一些产品的创新,比如对于一个魔方的销售,针对不同的用户使用了一些不一样的商业模式。我还是不太了解在软件工程领域中创新是什么样子的呢? 新的设计模式属于软件工程领域的创新么? 他是否像其他自然学科那样存在某些规律等待着我们去发现呢?重构呢?评估呢?
还是不清楚
总结:通过课上的学习与作业项目的完成过程,了解到软件开发由项目的确定到项目的需求分析,再到概要,详细设计,代码设计以及开发完成后软件的测试等等这一完整的软件开发流程。学习上面每一个步骤中的相关方法和工具。学完后应初步具备具备管理整个软件开发流程的能力。从而提高软件的质量与生产率,最终实现软件的社会化生产。在给定成本,进度的前提下,开发出具有可修改性的,可靠性的,可维护性的,可移植性的,可重用性的并且满足用户需求的软件产品。
————————————————————分割线————————————————————

姓名 赵俊安
学号 201731024121
第一次个人作业博客地址 作业链接

一、回望第一次个人作业
1当刚接触软件工程时,通读课本后提出了几个问题。
问题一:在课本第5章中,列举了许多不同种类的团队组建方式,有一窝蜂模式、主治医师模式、明星模式、社区模式等等,作为一名初学者,应该选择哪种模式才能更好地学到知识?
我现在的理解是:一窝蜂模式的效率最低,不适合采用。而主治医师模式和明星模式比较具有浓厚的个人色彩,可以用众星拱月来形容,所以也不适合初学者。因此,社区模式最适合我们初学者,大家通过兴趣一起讨论,共同完成项目的创建。
问题三:第9章还提到了风险管理这个高危的职业,任何一个项目,都要面临各式各样的风险,所以显然风险越低越少就越好,但文章最后指出:没有风险,就是最大的风险。这又是为什么?
我的理解是:在项目中我们会遇到很多风险,虽然我们会尽力减少这些风险的产生,但风险存在的同时也表示一些机遇。而当一个项目始终没有出现风险时,这就是最需要多加注意的时候,因为更大的风险很有可能在下一秒到来。
二、产生的新问题
尽管项目已经完成,但在软件的美观程度和用户体验方面,还希望做的更好。
许多玩家认为游戏有些单调,所以希望能进一步提高可玩性。
三、掌握的新技能
1、学会了如何使用git。
2、又重温了此前学过的编码知识。
四、总结体会
经过一个学期的学习,对软件的开发有了更深刻的理解。我非常感谢我们整个团队的存在,个人的力量永远比不过团队的力量,尽管我们会存在不同的观点,但经过沟通和讨论后,大家总是能找到最合适的解决方案。总结最后,希望所有老师、助教和同学们能继续努力,越来越好。
————————————————————分割线————————————————————

学号 201731024119
姓名 黄涛
第一次作业链接 链接
1、问题
  • 关于代码复审,代码复审的形式是什么样,只是检查bug吗,复审的注重点是什么,要不要需要检查注释?

(1)更正明显的错误。
(2)对于无法很快更正的错误,要把它们记录下来。
(3)把所有的错误记在自己的一个“我常犯的错误”表中,作为以后自我复审的第一步。

  • 提到颠覆性的创新的未来的市场和可以带来的效益是无法预测的或者说预测的准确度很低,那对于这些创新者来说是硬着头皮干还是以观望的姿态来缓慢推进项目?

这种还是要以市场调查为准,并不以预测准确性的不确定而止步不前,反而要不间断了解行业内情和市场走向,来指定自己项目的发展规划。

  • 作者讲了很多关于创新的迷思,对于我们大学生现在如何去理解创新和要怎么做才能避免错误的创新?

在创新过程中,并不可能一帆风顺,或者说百分百的正确。历史上惊人的创新也是有从错误中总结出来的,重要的是汲取经验教训和不断的探索才能成功。

2、提出新的问题

1、开发软件工程项目时,有不同的软件需求,不同的开发工具,开发人员能力强弱,对待这个项目的态度等问题,应该如何把握其中的尺度?

3、总结

  这学期接触到了软件工程这门课程,让我了解到了什么是“软件工程”,从模糊的概念变得清楚。随着实验的进行也体会到了软件开发的过程和团队人员之间的相互合作的乐趣,遇到困难时的迷茫和解决困难后的成就感都有体会过,总之从软件工程这门可学到很多,感觉对我以后的帮助很大,希望以后有机会把内化的知识外化成优秀的产品。
————————————————————分割线————————————————————

姓名 周成杰
学号 201731024136
第一次博客地址 地址

1.问题解答

(1)第四章讲到了两人合作,如果有的人想法固执,是不是我们可以进行尝试性的屈服让事实证明一下结果,不必进行解体?

在这一次的团队项目中,我们出现了这样的问题,队友的意见不同,我们最终采取了实验各种意见,得到最好的方法。作为一个团队,意见不同是很正常的事情,但是不能因为这种小事情就解体。

(2)关于16章创新的问题,个人创新能力弱,如何培养创新能力,没有创新能力对以后的工作有何影响?

在这个问题上,我在这一次的项目中就只是负责的前期的算法,后期对于我们这个项目的完善与美化,都由队友完成的,我就全程学习他们的各种想法。在团队中自己的创新能力较弱,也要积极的去融入,用自己的强项去弥补这些不足,同时学习队友的创新想法,以此来提高自己。

2.个人体会

在这一次的项目中,我觉得我完成的部分还是比较轻松容易的,因为黄金点这个游戏软件的代码在网上特别的多,我也借鉴了,但是还是问题不少,比如负数消除等小问题还是存在,所以我在编写算法这方面还存在着不小的问题,要多学习,队友的强势方面我也应该多去学习,更多的去提升自己。

posted @ 2019-12-08 15:12  卤肉饭9527  阅读(249)  评论(0编辑  收藏  举报