SE颜值队再谈软件工程的认知与理解
10周的软件工程导论课程已经接近尾声,10周的学习感触颇多,第一次尝试团队写代码的解决问题的模式,对于一个项目的展开有了颇多理解。期间保存了不少大家讨论问题的截图,当自己回看这些讨论内容的时候总感觉学习生活变得充实了许多。之前也写过一个关于初学软件工程的感悟,今天就来谈一谈10周的学习过后对于软件工程又有了怎样理解。
周同学:曾经以为程序就是软件,软件就是程序。学习这门课程第一个收获是,知道了二者的不同之处。我想也是程序的不断复杂化导致了软件危机的发生,使得人们不得不探索新的解决方法。经过郑老师的讲解,理解了软件工程,就是一套用于软件的团队开发,以提高软件质量和程序员工作效率为目的的规范。其核心就是, 对于软件开发的5个重要组成部分:需求分析,设计,编码,调试,维护,如何组织这5个部分的工作,以及如何完成每一个工作。起初,对软件工程处于一知半解的状态, 分工比较混乱。在划分模块后明确了各自分工,渐渐形成良性循环。在学习过程中,知道了团队合作十分重要,争议固然存在,但通过讨论、协商,群策群力, 在不断磨合中能够达成一致与默契。团队成员中能力各有高下, 互相尊重, 各取所长, 不宜妄自菲薄。组长多加协调,组员积极配合,才能合作愉快。我们为什么需要软件工程呢?上面已经给出了一些原因。专业点讲,软件工程最终是为了实现“软件制造业”的社会化,工业化大生产,提高其劳动生产效率。只有如此,软件业才能实现社会化,工业化大生产,才能“做大做强”。没有管理的设计是失败和混乱的设计,没有设计指导的编程是无序的忙碌的。根据开发的软件的规模,应该适当程度的运用软件工程化的思想,需要灵活,毕竟我们开发的软件大多数是中小型的,大型的并不多见(我是这么认为的)。但只要涉及人员间的交流和沟通,或多或少都要需要软件工程才能更有效率,工作成果更稳定。其实开发软件,就像是解决一个逻辑问题。想想自己平时是怎样写程序的。首先是要有一个想法, 即我写的这个程序是要干什么的;然后就是对要实现的核心功能大概构思一种或多种实现方法,并从中选出一种自认为是较好的;接下来就是将涉及的各种主要或次要功能分成各个模块;最后就是分模块来编码和修改BUG。在我看来,除了第一步外,其余的步骤应该是一个循环的过程。在编码的过程中, 你总是需要不断地回过头来修改原先的模块设计,甚至最初选定的实现算法。
拱同学:在未接触软件工程之前,我认为这和以前学过的c、c++一样,是一门学习编程的课程。但是经过这门课的学习,我认识到,软件工程是用工程的思想来开发一个软件 ,有着工程学的系统性。对于传统的零散的编程来说,更容易形成产业链,加速整个软件行业的发展。在这段时间的学习中,我明白了一个完整的项目规划须包括,软件的定义,可行性分析报告,项目开发计划,软件需求说明书,概要设计说明书,详细设计说明书,用户操作手册,测试计划,测试分析报告等多个文档 软件工程这门课在我们毕业之后,是我们实际要运用的一项非常有用的技能,这门课让我意识到理论学习很重要,而实践更重要,实践是检验真理的唯一标准,只有实践和理论相结合,才能使效益最大化。软件工程的课虽然快要结束了,但是我对软件工程的学习才刚刚开始,有了这些基本知识做铺垫,在以后做项目的时候将会是解决问题的有效措施。
杨同学:通过十周学习软件工程导论这门课程,我获益匪浅。第一节课了解了老师的培养模式,自荐当上了软件工程导论这门课老师的四个助教之一,在之后的学习中不仅学习到了与课程有关的知识,老师还让我们助教锻炼写报告分析的评分模板,然后老师在我们模板的基础上进行完善,我们助教根据模板给同学们的报告或者博客进行评分。在这门课上老师首先是让完成个人项目,然后是双人项目,最后是团队项目。这个过程提升了我们团队意识,负责意识,培养了我们组织能力,管理能力等。
在课程中了解了软件开发的生命周期,问题定义、可行性、需求分析、概要设计、详细设计、程序设计、测试文档、技术支持和售后服务都是缺一不可的。特别注意的是,可行性的分析要从经济、技术、法律和社会四个方面考虑。软件过程改进中,软件能力成熟度模型划分为初始级、可重复级、已定义级、已定量管理级和优化级五个等级。项目进度管理的可视化工具中甘特图能直观地表明计划在什么时候进行,及实际进展与计划要求的对比,缺点是:没有指出影响项目寿命周期的关键所在。而任务网络图能比较直接地反映出依赖关系。以上是比较概念的知识点。需求分析方法中结构化分析方法是十分重要的。首先是由“数据流、加工、数据存储和外部实体”构成的数据流图,体现了系统的逻辑模型或者说是功能建模。再来是,面向过程的结构化设计,模块独立的独立性主要采用耦合和内聚进行衡量,其标准是:低耦合,高内聚。比如说,内容耦合的耦合性高模块独立性弱,这是需要避免的耦合;至于内聚,偶然内聚、逻辑内聚和时间内聚都是低内聚,模块独立性弱,也是需要避免的。其次是结构化软件设计中,从数据流转换成数据模块图,要用到变换流以及事务流的分析方法。最后,软件测试中要注意的是测试用例,其中,输入数据和预期结果这两方面内容尤其重要。面向对象的开发方法,其特征包含封装性、唯一性、抽象性、继承性和多态性。其统一建模语言是:UML。UML的视图由:用例图、静态图、行为图、交互图和实现图组成。
学习这门课程收获良多,从对软件工程的一知半解到如今的基本认识,进一步了解软件工程的核心。最后我们分组进行软件开发项目的实验课程,我们选择使用面向对象的开发方法来进行项目开发银行存储系统。囊括了项目计划、需求分析(用例图和类图)和设计(类图、顺序图、活动图和部署等)。在合作的过程中每个人都有很大的进步,对于软件工程专业有了深刻的了解,对自己以后的道路的安排也有了深刻的认识。上课的日子总是很快,不知不觉中遍结了课,我感到如梦初醒,因为我们才敲开软件知识的大门。路漫漫其修远兮,吾将上下而求索。不经历风雨怎能见彩虹。我要时刻保持一颗清醒的头脑,随时为自己的目标而奋斗。其实,每个人心中都有一幅画,描述着理想、信念、追求、抱负;每个人心中都有一片森林,承载着鸟语花香的甜蜜、阴森恐惧的彷徨。个人,若要获得成功,必须拿出勇气付出努力、拼搏、奋斗、成功。机遇不同情眼泪的忧伤、不相信颓废的绝望,只期待爱打拼、时刻准备着的人。
孟同学:整一个学期下来,总的来说还是学到了很多东西的,有很多地方是值得肯定的,其实在我看来,软件工程与其说是一门课程,不如说是一门思想。是一个如何去分析和处理问题的过程,应该说其范畴已经远远不止局限于该门课程,成为了一个综合的一个能够解决问题的思想集合。软件开发特别是大型软件是一项浩大的工程,需要几个人、十几个人、几十个人甚至几百个人合作开发几个月、十几个月甚至几年。要保证系统的协调性、统一性和连续性,就需要在开发之前制定严格、详细的开发规范。开发规范的制定需要花费一定的时间和精力,但是"磨刀不误砍柴功",它相当于把今后开发过程中开发人员都要遇到的问题提其次,这门课程教给了我们在完成一个实际项目时的一般程序及过程,我认为这是一份非常具有实际意义的教学内容。当我们在毕业之后,这是我们实际要运用的一项非常有用的技能,而且不仅仅局限于软件工程的范畴,我们即使是从事与其它行业,不也是要从需求获取开始,一直有条有理地到最后成品的出炉吗?应该说这就是这门课的价值所在。《软件工程导论》课程既强调基本概念和基本知识的理解和掌握,又侧重软件项目的分析、设计、实现和维护的基本技能。比较注意“点”和“面”的结合。我还是蛮喜欢这门课的,通过对这门课的学习让我意识到理论学习很重要,实践更重要,实践是检验真理的唯一标准,只有将理论与实际结合,才更能发挥我们所学的知识的作用。
栾同学:通过对软件工程导论十周的学习,我对软件工程从略知一二到逐渐熟悉,自己的动手实践能力和从整个大体分析系统开发的逻辑性思维也明显增强。这门课上我们做了几次项目,从单人项目对个人的磨练使我的代码能力和开发能力都有了很大提升。然后是双人项目,让我对合作有了一定的认识,比起自己单打独斗更让人感到轻松和愉快。最后是一个团队的大项目,突如其来的压力让我们本来并不熟悉的七个人聚在了一起。我们一起克服了许许多多的问题,一人一段代码,组长给每个人合理分配报告任务,期间也遇到了很多问题,但是经过我们七个人的互相帮助共同努力我们终于过了一个个大坎。郑老师通过上课认真的传授与我们,剩下的实践就需要我们用更多的课下时间去摸索。同时,开通博客对于我来说是一次新的体验,又多了一个地方可以记录我学习的点滴。我想这对以后的学习也会有很大帮助。最后是这次的代码展示,让我们看到了别的团队的出色的展示成功,也发现了我们的不足,之后我们会借鉴其他队的优点完善自己,也会对自己的不足进行改正,相信我们会越来越好,未来加油!
王同学:软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。经过了这十周的学习,收获颇多,给了还在学校学习,尚未毕业的我很多启示。软件的开发,特别是大型软件的开发是一项规模巨大,开发周期特别长的过程。协调统筹,发挥所长,建立适当的模型,并对所学知识进行应用,这不管对个人而言还是对团队而言都是不小的挑战。但是只要团队建立好了一套完善的规章制度,一套合理的代码规范并严格执行,就会起到事半功倍的效果。这就是软件工程这门学科所带来的高效率。即使以后没有从事软件工程相关的工作,这种思考模式和管理方式依旧能给我今后的工作生活带来一定的启示作用,它让我思考怎么在团队之中更好的发挥自己的最大效率,将所学的知识,理论体系和实践相结合,最终取得最优异,最高效的成果。
我们在不断完成银行储蓄系统的同时了解了关于软件开发的所有方面,写出的报告也等同于一个软件小型策划案。其中包括软件需求报告、需求分析、代码测试报告、技术说明书等。而其中又有很多小的知识比如类图,数据流图、层次图的画法。这些都是实验课所学习的内容。通过这次的团队开发彻底让我们学会了怎么去设计一个自己软件的这些类图等。在每一个部分都出现问题的时候,也是对这一部分加深印象理解的时候,光听老师对于理论的讲解的时候还是一脸迷惑的状态,代码也是不断地改进从最初的只能用控制台表现出来到现在的已经有自己的界面和功能。其中令我印象最深刻的就是最初的代码没有办法连接数据库,不断地改进数据库连接文件到后来直接重新设置数据库密码,让我们队数据库的理解加深了许多。现在我们已经能对软件开发这个方面的问题给出自己相应的见解,无论是我们最后软件工程的成绩如何那都是努力后成果,知识已经根深蒂固的生长在我们这些团队成员之中。在软件工程导论这节课的学习中我们互相激励着。有人问软件工程我们能学到什么,答:学到合作、学到思考、学到担当。或许这太笼统,但是这门学科确实如此与众不同。

浙公网安备 33010602011771号