团队项目-总结
这个作业属于哪个课程 |
https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1 |
这个作业要求在哪里 |
https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/3379 |
团队名称 |
机你太美 |
这个作业的目标 |
将这学期的学习做一次总结
|
姓名 | 学号 |
李博 | 201731062327 |
蒋东航 | 201731062328 |
黄宇杰 | 201731062326 |
唐弋力 | 201731062330 |
李博201731062327
博客链接:https://www.cnblogs.com/cadaver/p/11081120.html
博客内容:
1.
3.3软件工程师的职业发展
书中在这一章节提到了“全栈工程师”的概念,那究竟是向某一方向领域一直发展下去还是向“全栈”的方向发展更有利呢?
答:我现在觉得全栈工程师应该是最有利的方向,但是某一领域研究至深也未必会差到哪儿去。
2.
4.5结对编程
我觉得这种编程方法在大佬带新人的时候可能有效,但是在两个都是编程“老鸟”的情况下这种方法未必好吧?
答:都有利都有弊吧,大哥带小弟的模式可能会说编程水平不一致,小弟拖后腿跟不上,但是小弟如果跟上节奏会进步的很快;
两个“老鸟”一起结对编程很容易产生分歧和冲突,但是两人编程水平都很高,编程快,还能相互交流技术。
3.
4.7练习与讨论
书中在这里讨论到了阅读别人的代码,阅读别人的代码是一件不容易的事情,那么除了多写注释之外还有那些技巧和方法能让自己的代码更容易让别人读懂呢?
答:代码规范,写的代码要按一定方式对齐排列;命名规范,变量名函数名要通俗易懂,见名知意。
4.
8.1软件需求
这一章节讲到了获取软件需求,那么如何分析和验证用户提出的需求是否可行或者在所能承受的制作成本内?
答:多进行走访调研,有其他类似的软件可以搜集他们的资料等。
5.
9.2.1交流成本问题
书中在这里提到了团队间的交流,那么当这个团队极其庞大的时候如何能保证团队中的正常交流?
答:这就需要管理层来执行,每日开会,将任务计划由上至下分配到每个人。
总结和收获
经过这学期的学习,我掌握了一个软件项目从开始到验收所要经历的过程和工作,这是通过本学期实际的软件项目开发经历学习并掌握的。
同时,在软件开发过程中,通过上网找资料自学,我学会了简单的网站编程和web服务器搭建。
这些学期进行的软件项目开发,使我对“团队”这个概念有了新的认识,认识到团队的强大和在项目开发中团队的重要性。同时,自己的编程技能也提高了,对C#winform编程更加熟练,对数据库的操作指令进行了复习和学习。更重要的是有了这次宝贵的团队项目开发的实战经验。
蒋东航201731062328
博客链接:
博客内容:
问题解答:
问题一:2.4 实践——设计有实际意义的工程作业-书中说现在的软件作业离实际软件还差的很远,那这些作业除了要求学生掌握基本的编程知识,还应该需要些什么?
回答:在这门课之前,大多的专业课作业就是编程练习,就是为了让我们掌握基本的编程知识和一些编程规范。而在这次课程之后,我觉得作业不仅是一个练手的机会,也是让我们养成一种软件编程时的思想,就是软件不只是编写程序,它还包括许多方法,例如在完成一个项目之前我们应对这个项目做出分析判断,并不需要我们盲目的进行编程,完成一个软件也是有程序的。
问题二:6.1 敏捷流程-书中列出了敏捷流程的12个原则,对于这么多的原则什么时候更加适合选择这个敏捷流程?
回答:说实话,对于敏捷流程,我认为在合适的时候并不是一定就完全的满足敏捷流程的12条原则,所以在大体上满足所需原则时就可以使用敏捷流程。
问题三:13.2 各种测试方法-在这个节里,提出了许多种测试方法,那么这些测试方法除了测试程序中的bug,是否能够测试程序的更多性能?
回答:通过这次课程的学习,以及团队项目的完成,发现在进行测试时不一定是需要去找出程序的bug,当然一个程序是必定有bug的,测试可以测试软件的健壮性,可靠性等,也可以测试软件运行的效率这些。
问题四:15.1从代码到发布-本章节里提到了会诊小组这个概念,但在编程过程中已经有一个代码的复审流程,这样会诊小组是否会增加工作时间?
回答:小组会诊不仅是进行代码的复审,也可以对团队情况进行总结汇报,以便对后面的流程进行安排,所以小组会诊不同于代码复审流程,所以小组会诊在一个完整的软件开发流程中是有必要存在的,所以不会耽误工作时间。
问题五:16.1 创新的迷思-在IT行业,一个团队在进行创新时,如何正确的把握创新方向?
回答:创新方向的把握时需要顺应时代发展方向的,例如现在的大数据,信息共享等。
总结:
这个学期,通过学习这门课程让我对软件工程是想有了一定的了解,开发软件是一个工程化的过程,并不是拿着键盘一顿操作。在完整的软件项目开发过程中,我们需要做好对我们项目的定位,分析,每个环节,每个步骤都是需要我们尽力尽心的。另外,软件项目通常是由一个团队合作完成的,所以一个团队往往是能够方便问题解决的。在团队中,需要做好团队任务的分工,每个人都有每个人的角色和任务,一个人的问题,可以在团队中一起解决。这次通过这个课程让我受益良多。
黄宇杰201731062326
博客链接:https://www.cnblogs.com/hyj990908/p/11082339.html
博客内容:
问题1:个人开发流程的目的就是记录工程师实现需求的效率,但是这个方法在我看来非常的费时费神,同时这个方法非常的依赖数据,如果数据不准确或缺失可以说就白费了那么多时间。既然这个方法事倍功半同时还存在许多的不确定因素,我们为什么还要用这个方法?
回答:我认为这个方法虽然有些许瑕疵,但还是非常的实用。就程序员个人而言,这个方法可以直观的让我们看到自己的优缺点,这样一来程序员就可以找到自己的不足之处并加以改正,以此来提高我们的工作效率。所以我们还要用这个方法。
问题2:我认为结对编程是建立在驾驶员与领航员能够默契配合的前提下,这样的一对人在工作中可能比较少。我在想怎么能让结对编程更为大众化。如果驾驶员与领航员在编程的过程中发生了分歧又该怎么办?
回答:我认为首先,结对编程可以促进参与项目的程序员自身的提高,一对程序员工作的时候,水平较低的一方会潜移默化地受水平略高的程序员影响,学到一些新的东西。而水平高的一方同样因为不断地把自己的想法说出来而整理了自己的思路。其次,一定时间周期地打乱配对,让参与项目的人员相互转换位置,使得维护繁杂的文档变得不那么重要。大家分组打乱后,口头的交流很容易让所有人都熟悉每个模块。
问题3:组织之间的交流方式会极大的影响系统的设计,那么怎样才能让这种影响最小化甚至消除影响呢?
回答:
问题4:书中建议我们倾斜资源设计功能,但我觉得这样只留住了有特殊需求的用户。用游戏来举个例子,A游戏在游戏的视觉上做的特别好,B游戏做的非常的均衡,我想大部分的用户还是会选择B游戏。
问题:我觉得这种情况可以使用NABCD分析方法,通过这个方法可以分析出用户的需求,自己软件的好处,这就可以分析出我们是否需要倾斜资源,向什么功能倾斜功能。
问题5:如果这个功能不是客户强制要求的功能,但是这个功能却可以吸引部分用户,那到底是砍掉这个功能还是继续完成?我们怎么去衡量到底是砍掉还是继续完成?
问题:我觉得这种情况应该与客户进行沟通,因为我们首先应该满足客户的需求,如果客户不需要这个功能我们就没必要在这种额外的功能上花费时间。
收获:了解了许多设计软件的方法,了解并掌握了Git的一些简单操作。通过这门课程第一次了解并参与了制作软件的许多步骤。通过这门课程我知道了,如果想要做一个好的程序员,不仅仅需要会打代码,我们还应该多与他人进行沟通。我们也需要多从网上学习我们不知道的编码知识以备不时之需。这门课程给了我许多重要的经验对未来打好了基础,使我受益匪浅。
唐弋力201731062330
博客链接:https://www.cnblogs.com/TANGYILI/p/11079391.html
博客内容:
一、第一次个人作业中对于软件工程课程的想象和提出的问题
提问题的博客:https://www.cnblogs.com/TANGYILI/p/10555496.html
二、对问题的解答
问题一、
《构建之法》1.2.4软件工程的目标章节提到”It's not a bug,it's a feature(这不是缺陷,这是一个功能)”是为什么
解答:很多人认为有BUG就是质量不合格,没有BUG就是质量完美,其实这也未必。所以不能消除所有的BUG 是因为软件工程的重要任务,实在是时间,成本等多种约束条件下决定一个软件在什么时候能“足够好”,可以发布,更多的是在各种要求内做出符合用户需求的软件,且是可以维护和继续发展的,在客户有限时间内,只能尽量的消除BUG,满足使用要求,这才是最重要的。
问题二、
书中3.1写到“软件开发流程不光指团队的流程,还包括个人开发流程,因为软件团队是由个人组成的“
解答:软件团队就如同足球队一样,拥有个人流程,对于一些特定的角色,还有独特的技术要求,教练和球员之间,球员和球员之间都有很频繁的交流,有战前的计划和训练,有时候的总结和分析,当然还有争论,软件团队和团队中的工程师也是这样,软件系统的绝大部分模块都是由个人开发或维护的,因此同样需要和团队中的其他角色合作,通过交流,提出多种解决办法来实行。
问题三、
《构建之法》3.2软件工程师的误区中提到的“过早扩大化”问题
解答:在写一个程序的时候,让一个函数处理所有可能的类型,想法固然是很美好的,但身为程序员,一定要了解必要性,难度和时机,因为软件工程的重要任务,是满足用户的需求,追求完美可以,但一定要考虑实际
问题四、
《构建之法》8.5中提到的功能的定位和优先级问题
解答:一个团队的资源是有限的,因此可以进行划分,在功能上分为杀手功能和外围功能,杀手功能可以在竞争中取得优势,另外,需求分为必要需求和辅助需求,这样进行分析,有了这些分析,就可以决定怎么处理不同类型的功能,怎样分配资源,这样的产品可以脱颖而出,获得用户的亲睐
问题五、
书中9.4中提到的高效的团队讨论,要带着感情去讨论问题吗?在分析问题的时候要提不同意见吗?直觉和详细分析的矛盾?
解答:会议的组织者应该其最大作用,组织者应该明确会议目的,推动会议进程,促使与会者在每一个阶段做合适的事情,并让会议的参加者通过一系列有序的思维活动来分析问题,包括理清事实,表达直觉和感情,从乐观的角度分析问题,从悲观的角度分析问题,从创意角度分析问题,这样会议就变成了有序的会议,就可以避免抱怨,争吵,伤感情的现象出现。
三丶学到了什么
1.Web服务器编程
2.C#窗体设计
3.Github的操作
四、总结
通过这个课程,学习到了一个成熟软件的开发流程应该是怎样的,从需求分析到程序开发到软件测试,Alpha,Beta版本的推出,学习到团队应该如何协作 ,在课程作业的完成中,体会到了团队编程的好处,可以互相学习,互相帮助,互相监督,同时也学习到了不少新的知识,受益良多
团队项目资料整理
团队项目github地址:https://github.com/bibubu/-
提交资料目录: