201671030106 何启芝 实验十四 团队项目评审&课程学习总结
项目 | 内容 |
---|---|
这个作业属于哪个课程 | >>2016级计算机科学与工程学院软件工程(西北师范大学) |
这个作业的要求在哪里 | >>实验十四 团队项目评审&课程学习总结 |
课程学习目标 | 1.掌握软件项目评审会议流程;2.对本学期所有知识进行回顾和梳理; 3.通过所学知识对之前所存在的疑惑进行再次思考并尝试解答。 |
一、对实验一所提问题的回答
对实验一 读《构建之法》后的疑惑问题的回答:
Q1:
书上说,软件=程序+软件工程,那么现在已经学了一学期的软件工程了,软件应该如何理解呢?软件是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为编程语言、系统软件、应用软件和介于这两者之间的中间件。正如前面的公式所讲,软件等于程序加软件工程,程序又等于数据结构加算法,而软件工程包括用户体验、用户界面设计等,一些软件开发活动如构建管理、源代码管理、软件设计、软件测试、项目管理等相关内容是软件工程的核心部分。现在再回头看这些问题,不难得出,程序(算法、数据结构)是基本功,在算法和数据结构之上,软件工程又决定了软件的质量。
Q2:关于团队和领导力,以前我是不太接触的,所以不太懂,因为以前我们的学习很少有这种团队合作的经历,但是这学期我们的很多课程尤其是软件工程这门课都是小组合作学习的,所以现在学完软件工程,可能比较更能理解团队和领导力。在一个团队中,我们讲求人员的少而精,也就是说我们的团队不需要很多成员,但是每一个成员都得有自己负责的模块,要都尽自己的一份力,但是经过实践才发现,事实要做成这样非常困难。因为几乎每个小组里面肯定总有那么几个不干活的,他加入小组只是让自己不落单,甚至不挂科。所以,在小组的学习当中,我们就要好好地去权衡,比如分配任务应该怎么分配才会更加合理。在我看来,每个人的能力是不一样的,肯定有我们人人都羡慕的那种学习好的“学霸”的存在,当然肯定也有“学渣”的存在(并没有针对个人,只是举个例子),那么在小组分配任务的时候,我觉得可以稍微不公平一点,因为我们既要学习还要帮助同学,我们可以给学习稍微差一点的同学分配一些他自己能做的会做的工作,我们也不比较这个任务量少还是不少难度大还是不大,我们要因人而异,应该给他们更多的机会,带动学习能力稍微差一点的同学,这样才能大家一起走向更高更远的地方,毕竟小组是一个团体,就要有团结的氛围以及行动,大家一起进步才是共赢的局面。
Q3:学生在学习阶段,比如说我作为计算机专业的一名学生,自从上了大学读了这个专业,每天就会面对很多名专业课,几乎每天都跟编程脱离不了关系,我们学过Python、C语言、Java和汇编语言等等语言。所以说在学习阶段,可以说具体编码上花费的时间是非常多的,甚至要比工程师还多。但是,自从学了软件工程这门课之后,我们也知道,除了编码,需求分析以及相关的一些文档也是极其重要的。但是我们之前一直注重编码的工作而丢了其他的学习,到用的时候就是一片空白。而反观工程师们,他们在需求分析和测试上花的时间是比较多的,所以说,跟我们一对比,好像感觉两个都是极端,是比较相反的。因此,我认为作为一名学生,我们在学习的时候一定要抓重点,不能只学一样东西而丢了其他的,不能因为学某一个知识而只学这个知识却跟别的知识脱节,我们的学习都是相通的,包括各学科之间也是有着各种联系的,因此自己在学的时候做一个平衡,一起学,而不是分开学把它们一刀两断。
二、总结知识点
软件开发的过程主要包括可行性分析、需求分析、概要设计、详细设计、实现、运行和维护七大步骤:
- 可行性分析:可行性分析是通过对项目的市场需求、资源供应、建设规模、工艺路线、设备选型、环境影响、资金筹措、盈利能力等方面的研究,从技术、经济、工程等角度对项目进行调查研究和分析比较,并对项目建成以后可能取得的财务、经济效益及社会环境影响进行科学预测,为项目决策提供公正、可靠、科学的软件咨询意见。主要从经济、技术、社会环境等方面分析所给出的解决方案是否可行,当解决方案可行并有一定的经济效益和/或社会效益是才开始真正的基于计算机的系统的开发。
- 需求分析:需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。任务是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么”的问题。分析系统的数据要求,导出系统的逻辑模型,修正系统的开发计划。
- 概要设计:描述了软件的总的体系结构就是概要设计,概要设计阶段要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求,并将设计的结果反映在“设计规格说明书”文档中,所以软件设计是一个把软件需求转换为软件表示的过程。
- 详细设计:详细设计是对概要设计的一个细化,就是详细设计每个模块实现算法和所需的局部结构。详细设计的主要任务是设计每个模块的实现算法、所需的局部数据结构。详细设计的目标有两个:实现模块功能的算法要逻辑上正确和算法描述要简明易懂。
- 实现:软件实现就是将代码利用编译器编译生成的软件。
- 运行和维护:软件维护主要是指根据需求变化或硬件环境的变化对应用程序进行部分或全部的修改,修改时应充分利用源程序.修改后要填写程序改登记表,并在程序变更通知书上写明新旧程序的不同之处。包括正确性维护、适应性维护、完善性维护和预防性维护。
- 测试:软件测试是使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completeness)和质量(quality)的软件过程;是SQA(software quality assurance)的重要子域。
- 项目验收:项目的验收是软件开发结束后用户对软件产品投入实际应用以前进行的最后一次质量检验活动。它要回答开发的软件产品是否符合预期的各项要求以及用户能否接受的问题。由于它不只是检验软件某个方面的质量,而是要进行全面的质量检验,并且要决定软件是否合格,因此验收测试是一项严格的正式测试活动。需要根据事先制订的计划,进行软件配置评审、功能测试、性能测试等多方面检测。项目开发方应该提供《需求分析说明书》、《概要设计说明书》、《详细设计说明书》、《数据库设计说明书》、《测试计划》、《测试报告》、《程序维护手册》、《用户操作手册》、《项目总结报告》等一系列的文档说明。
三、心得体会
- 个人项目:在我的个人项目中,我完成了词频统计软件。其实就我个人而言,编程能力是比较薄弱的,所以从一开始上这个课真的挺吃力的,在做这个软件的过程中,我一直都遇到各种自己没法解决的困难。所以,第一个项目是比较迷茫的,也不知道有些地方为什么这样做,也没有更多地去思考。
- 结对编程:结对编程是跟令外一名同学合作完成的,在结对编程中,有了第一次的个人项目,再加上合作的同学对我的指导与帮助,慢慢地我开始理解软件工程是什么样的一套流程,需要做什么东西,有什么步骤,在编码前要准备些什么。随着两人的合作,对软件工程的了解也在加深。
- 团队项目:软件工程这门课这学期的重头戏就数我们的团队项目了。我们五个人为一小组,做了一个宿舍管理系统,相比前面的个人项目和结对项目而言,这个就显得比较复杂比较难。在五个人的合作过程中,我们一直都是在合作中共同学习又“各司其职”,一个团队的合作很重要,但是我觉得分工也必不可少。在整个系统开发过程中,我们的团队力量就显得非常重要,毕竟一个团队的灵魂就是团队的力量,只有大家一起合作才能让团队发挥出巨大的力量。
四、总结和提升
1.在软件工程实践中我完成的代码###
在软件工程实践中我大概完成了两千多行代码
2.在软件工程的各次作业中所花的时间###
3.印象最深刻的一次作业###
我印象最深刻的一次作业是《队长说得队》第八次团队作业Alpha冲刺,这次作业是我们《队长说得队》小组共同完成的,这次作业的要求是任选连续的五天进行Alpha冲刺,每天发一篇博客,每天都分配任务。我们小组正好五个人,原本计划的是五个人每天一个人负责发博客(但是工作大家都要做),但是实际上我们那几天的作业不管是博客也好还是下来做的项目任务也好,从头到尾都是我们五个人一起完成的,我们一起讨论、一起学习、一起进步。通过这次的作业让我感受到了团结就是力量,并且真正地诠释了什么是“团队”。我们是一个团队,是不可分割的一个整体。时间飞快,一学期已经结束了,但是我相信,我们《队长说得队》会一直都在,会一直进步,越来越好!
4.在软件工程上累计花的时间以及每周花的时间###
在这学期的软件工程开发上我累计花费的时间是48h,平均每周话费的时间是2.6h。
5.学习和掌握的新语言、新平台###
在这学期的学习过程中,我学习和掌握的新语言是JavaWeb,学习到的新平台是博客园、GitHub、中国大学MOOC、Markdown、雨课堂
6.总结软件工程的开发工具、开发方法和建模方法###
软件开发工具、软件管理工具 | 软件开发方法 | 软件建模方法 |
---|---|---|
Github,MyEclipse,MySQL,墨刀,mockplus | 面向对象方法,Jackson方法,软件重用,原型方法 | 数据流图,数据库建模,面对对象建模,结构化建模 |
7.其他方面的收获和提升###
通过这一学期的学习,我学习到的额外的收获就是利用MOOC网进行自主学习,也体会到了老师的翻转课堂教学模式。
五、对课程的建议
一学期的课程很快结束了,在学习软件工程这门课的过程中,我学到了很多。首先,我觉得代老师是非常认真负责的一位老师,而且教学方式也非常新颖,真正做到了翻转课堂。还有几位助教老师也很负责任,尽心尽力地为我们批改作业,任务量很大,但是他们真的是尽职尽责,认真地给每位同学评论,这让我很敬佩,感谢老师们的指导与帮助。其次,这门课的学习可能花费的时间是比较多的,因为作业的任务量比较大比较耗时间,但是在这个过程中我学到的知识也是很多的。但是我觉得一学期下来,老师的翻转课堂对我们来讲,可能真的不是很适合,也可能是我们一时适应不了,但是感觉效果不是很好。总之,感谢代老师这一学期的教导!