翻云覆雨二手城小组软件工程心得

1、郭栋梁——项目负责人

经过了一个学期的努力,项目总算汇报验收了。经虽然不能称得上完美,但起至少为这段旅程画上了一段完整的句号。不管结局怎样,经历和收获是独一无二的。

在上软件工程之前,我们虽然已经学过c++,基于C语言的数据结构以及本学期正在学习的数据库,但我们还是基本上局外人。虽然老师每节课都有任真的备课,但每次上课我总是被数不尽的定义和图高的头晕脑胀,加上天热,有的时候很想直接回到宿舍睡一觉。但很感激身边同学的不断鼓励让我坚持到了最后。

在第一次听到老师说每一个组都要完成项目设计时,我觉得做出一个小程序应该很容易。因为我之前一直负责学院公众号,我觉得公众号和小程序登录界面都一样,应该不会差太多。而且我一有一个编程大佬的姐姐,有什么不懂的可以远程咨询。但实际开发和想象中的完全不是一回事。

首先在需求、概要、详细规格书的制作上漏洞百出。以前我觉得这些文书都没什么用,是完全可以省略的步骤,作为整个项目的负责人,我的态度也影响了整个小组的积极性。每次规格书都是各做各的,最后汇总一下就匆忙交上去了,基本上都是在敷衍了事。但后来我明白了,需求规格书确定开发软件的方向,我们要根椐需求规格说明书确定的功能需求去开发软件。概要设计说明书给出了整个体系结构的框架,详细设计则是对每个结构进行详细描述,这是一个完整的流程,中间任何一步的出错都会影响最终结果。在1970年,GTE、TRW、IBM三家公司研究发现,软件开发时,一个错误发现的越晚,为改正他付出的代价就越大。维护阶段检查和修复一个错误付出的代价是编码阶段的20倍!

在离项目验收还剩三天的时候,我们将规划书拿给老师定评时,我们发现了自己在制作过程中存在的各种各样的问题,最主要原因就是之前小组缺乏交流,一部分人采用结构化方法,一部分人采用面向对象方法,而微信小程序的开发在微信开发者工具上进行,只能使用面向对象语言——JavaScript进行编译。因此项目的开发只能被迫中止甚至回炉重造。接下来的几天,我每天只休息6个小时,睁眼闭眼都是项目,最后一天更是连续十几个小时没合眼。

项目之初我们的设想是我来做前端,另一名同学做后端。我们的设想已经写入规格书,也找到了如何将后端数据库与前端连接的方法,但是到了最后的是实施时刻。前端设计一直出现error,看起来很基础的一个设置,到了开发却要不断调试与配置。甚至有的时候语法没有错误,因为计算机习惯而报错。比如在制作底部导航栏时,我借鉴了ColorUI的组件。将app.js界面的Page添加form页,下面的windows中的tabar同步添加form,运行后form页空白不显示。明明与其他page的配置相同为什么会出错?在同学的帮助指正下才知道必须先在page界面添加page/form/form.json,编译保存,再向windows的tabar文件夹中添加组件form,然后再编译,就能正常显示了。这样一个问题改了很久,然而这只是整个项目制作过程的一个缩影,还有太多这样奇奇怪怪的问题,最后不得已放弃了数据库的制作,大家一起纠错,最终赶在汇报前做出了大致的界面。

未接触软件工程之前,培养方案上注意到了这门课程,觉得软件工程很高大尚。学了一个学期的软件工程课,感觉越学越觉得学不会,总有一种牛头不对马嘴的感觉。在今后的学习中要认真温习老师讲的ppt,并在CSDN、博客园等网站学习讨论,应用于今后的实践。

最后发生了一个小点意外,就是我的电脑主板烧坏了,不通电。而整个项目的源代码和全部规格书都在我电脑上,因此项目提交可能要搁置一段时间。由此给老师造成的麻烦感到十分抱歉。虽然项目不止在我一个人这里开展的,但规格书和源代码的汇总及修改都是在我电脑上进行的,所以其他人只有零碎的、未调整过的部分文件。这次事故给我们带来了惨痛的教训,就是重要文件一定要及时备份并上传,同时不能整个项目只交由一人保存,一定要重视团队合作。

 

2、银培曜

一开始以为的软件工程课程和之前的C++、数据结构课程一样注重编程、写代码,然而第一次课老师就打消了这个“顾虑”,让我初步了解到这门课程内容针对软件项目开发,更加侧重于分析、设计、管理。就像数据流图自顶向下逐层细化一样,课程教授的内容就是属于顶层数据流部分,起着一个统领全局的作用。从结构化方法再到面向对象的方法,我领会到不同的方法虽是“殊途同归”,但因项目不同,方法的适用程度不同。我们小组的二手小程序开发工作就更加适合面向对象的方法。在整个小组合作的过程中,我感受到“统一”这两个字的重要意义。多人协作必须保证统一,在与计算机相关的课程中更是如此。比如数据库表中的主键、外键、参照关系以及软件工程项目设计中的数据字典,都是为保证统一而存在、设定的。同时,小组工作加深了人与人之间交流的意义,小组成员之间交流必不可少,尤其是有效的交流,组员齐坐面对面讨论、完成项目就是有意义的交流,这一点在课程最后的实验课程部分体现得尤为明显。统筹方面,组长的组织也十分重要,很庆幸我们小组有一位宽容、负责的组长,让大家能够有目的地工作。最后,感谢可爱的组员们的合作和老师的辛勤付出,是大家共同的努力让课程顺利进行成为可能。

 

3、陆宇乔

我正好有一个同学所学专业就是软件工程,所以第一次看见课表上的这门课程时感到很惊奇:怎么别人的专业在我这里变成了一门课程?然而,经过一个学期的学习后,事实应证了韩愈的《师说》中“术业有专攻”一句。虽然我和其他团队成员学习了一学期的理论课知识,加上课余时间的讨论与设计,但是最后还是很难拿出一个完整的软件设计项目。

我们的团队名为“翻云覆雨二手城”,设计的项目名为“华农二手城平台”小程序,在最后结课时,我们的详细设计说明书还有一点缺陷,测试计划也不完整。所幸王颖老师通情达理,多给了一个星期时间让我们继续修改完善,并且强调我们应该追求软件设计过程中的学习和进步,而不是过分看重结果的呈现。仔细一想,这样是有道理的,因为我们毕竟不是软件工程专业的学生,而当它作为一门课程时,它的意义就是让信息衍生专业的我们初步了解软件工程化的总体过程和详尽步骤。

通过课程,我们从软件需求分析、结构化分析和设计、面向对象分析和设计、软件设计、软件测试、软件维护、软件项目管理等多个部分学习了软件工程的内容,并且我们团队基本完成了项目的成功实现和软件的简单设计。期间经老师指导和提醒,我们较晚但及时地发现了说明书中结构化与面向对象的冲突,在两天团队成员的协作工作下,高效高速地统一了分析和设计部分及其图表,使三份说明书更加清晰明确。

在软件分析和设计中,绘制图表是比较重要的一步,虽然我们团队的分工是将说明书各部分分给个人,但是我们都有一起讨论过各个图表,每一张图表是在所有团队成员的共同思考下得到的。为了图例格式和风格上的一致性,所有图例是由银培曜同学统一使用Microsoft Visio Drawing绘制的。

在编码阶段,由于代码编写的困难性和复杂性,主要由郭栋梁同学和徐梓睿同学负责,我们其余人在旁边跟着学习,或者帮忙寻找学习资料和代码范例。这是我在本次项目设计和学习中的遗憾和缺陷之一。

总体来说,与我的团队共同学习这一个学期,让我受益匪浅。我不是项目负责人,但是在负责人认真指导下,我认真完成每一项任务,并及时向负责人汇报进展和困难,使得我能够了解到项目负责人的工作内容和重要性。另外在王颖老师的教学和指导下,我基本了解了软件定义、开发、运行的流程和内容,以及项目组所需做的事情和需完成的工作。现在我对软件工程的了解更加深刻,并且积累了一定的知识储备,相信对我今后在信息方面的学习或者工作有莫大且不可忽视的作用和奠定基础。

 

4、李秉坤

在这几个月的软件设计项目工作中学到了很多的理论知识,能够将课堂上的理论知识运用到自己设计的小程序中,能够增加实践的经验。结合软件工程的实际运用范围,了解了软件制作过程中的环节链条,学习了各个环节中的应该完成的工作,加深了对软件项目过程中各个方面的理解。

在软件工程团队中我认真负责的对待每一项工作。从开始的经验不足和认识不够,到之后和项目成员之间互相交流,互相鼓励,共同完成项目,找到了自己的工作定位。

在项目设计过程中,我认识到了团队的团结协作的重要性。团队的目的是共同进步。团队成员聚成一股绳,相互合作,团队就会齐心协力,成为一个强有力的集体。

从3月份开始建立项目内容,立项申报。我也加入了我喜欢的团队共同工作,我参与研究开发的项目是华农二手交易平台,此平台是为了给华农二手物品的交易提供一个可靠的平台,使得华农的二手物品能够流通起来,因为每年的毕业生有很多闲置的物品可以出售,最近校园有“跳蚤市场”的出售活动,但是物品都很杂乱,没有办法统一,并且购买者没有办法定向检索到自己需要的物品。我们设计的小程序能够检索到需要的二手物品,加快物品之间的交易。在选择项目的时候,每个人都提出了自己的一些想法,考虑到项目的实现能力,最终决定将在微信平台上进行开发,不再开发出手机软件,主要对软件的功能进行熟悉和操作。

确定了项目内容之后,我们开始分配了各自的任务。我首先负责了我们团队的博客的发布,负责团队在开发过程中的开发过程的总结和纪律。对于每个开发阶段都有不同的开发任务,同过博客记录的形式也能够监督小组成员更好的对本小组的项目进行连续的开发,不断的攻克难题。在前期的开发设计过程中,小组成员都团结一起思考,集思广益,丰富软件的功能

在需求分析规格说明书的书写中,我对该说明书的编写目的背景,任务概述中项目概述,假定约束等内容进行了书写,并绘制了用例图,功能需求中边界类、控制类,业务类图模型的绘制。软件概要设计说明书编写过程中书写了编写目的,范围包括系统目标,主要软件需求,软件设计约束、限制等的书写。软件详细设计说明书引言包括编写目的,项目背景等的编写。熟悉项目的方向内容。

几个月来,我在团队中做了很多工作,学习了软件制作的很多方面的知识,对软件制作的流程掌握熟悉,但是理论水平、工作能力上还有待进一步提高,对于有些知识还不能够完全理解,并且在对软件需求规格说明书,软件概要设计说明书,软件详细设计说明书书写过程中,理解范围出现了偏差,在之后老师和团队成员的帮助下正确理解了相关内容,并对之前的错误点进行了修改。

之前对于代码,编程都是停留在简单的理论层面,没有应用到实践中去。这次实验项目让我体会到了实际生活中项目的开发过程,把实际的理论知识运用到实践过程中去,这是一个很有意思的过程,也激发了我对软件工程的兴趣,能够通过我们一步一步努力把以及脑海中希望实现的东西变成现实。

一个完整项目的开发它所要经历的阶段包括:远景范围规划和用例说明、项目结构和风险评估、软件需求规格说明书、软件概要设计说明书、软件详细设计说明书、代码实现、测试等等。一个项目的开发所需要的财力、人力都是很多的,如果没有一个好的远景规划,对以后的开发进度会有很大的影响,甚至会出现在预定时间内不能完成项目或者完成的项目跟原来预想的不一样。一个好的编程人员,不仅仅能够有好的代码的设计能力,更要有软件工程方面的文本编写能力,好的软件需求规格说明书、软件概要设计说明书、软件详细设计说明书能够完整的体现一个项目的详细内容,能够对项目有一个好的规划和约束,并促进项目的完成,这是必不可少的过程。

5.徐梓睿

未接触软件工程之前一直都很想学这门课程,因为觉得这门课很牛,是那些有工程师称号的高手才摆弄的东西。学习了这门课程, 还有老师们的多元化教课,不但让我从理论上掌握软件工程,还有从不同的实例,让理论和实践得到了很好的结合。

整一个学期下来,总的来说还是学到了很多东西的,有很多地方是值得肯定的,其实在我看来,软件工程与其说是一门课程,不如说是一门思想。是一个如何去分析和处理问题的过程,应该说其范畴已经远远不止局限于该门课程,成为了一个综合的一个能够解决问题的思想集合。     

可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。     

软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。

详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。 软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。    

软件工程对于初学者来说,知识基础较薄弱,对一些应用操作、概念、工具方法等理解起来较为困难,要能从整体概念上较好地理解和把握、学好软件工程,不是仅仅把几本专业书籍细致地看几遍,然后上机练习几次就可以成功,学习过程中要注意多看多练要注意结合实际,更要多思考,面对错误不要一范就问,要尝试自己去解决。还要注意与其他科目的相辅相成,就像我们在学习面向对象分析的时候要结合大一学习的面向对象及其方法学这一专业科目进行研究拓展;在学习语言时,要看看与C语言的联系,多思多想,把从各个科目学到的知识通汇贯通。

而且通过学习《软件工程》,我还学到了很多其他的东西。比如通过学习《软件工程》,特别是老师每次用实际的软件现场的讲解,为我提供了一个尽早接触世界工作和真实项目的机会。让我知道如何在以最小的成本中,训练自己的基本工程素质和能力,如何激发自己的积极性等。而且通过学习《软件工程》,还让我认识和培养了我的团队协作能力,特别是对于我们这些在校的学生来说,这种学习更是能让我在以后工作中少走很多的弯路。 

posted @ 2021-06-25 18:38  翻云覆雨二手城  阅读(204)  评论(0)    收藏  举报