我们得到了一些心得体会以后,应该马上记录下来,写一篇心得体会,这样能够给人努力向前的动力。大家想知道怎么样才能写得一篇好的心得体会吗?下面我帮大家找寻并整理了一些优秀的心得体会范文,我们一起来了解一下吧。
软件工程实践总结软件工程专业实训心得体会篇一
在这次软件工程课程中,我学到了很多东西,第一次深刻的体会到了什么叫做用工程化的思想来编写软件,以前自己也写过一些小型软件,没有做过大型的项目,直到这次课堂我担任组长并组织组员共同完成“个人图书管理系统”这个项目,第一次和别人合作,才发现运用工程化的思想来做是如此的有必要。
从这里,我才真正的意识到实施一个软件工程并不是说简单的会编码就能够解决问题的,我们更多的精力不是放在编码上,编码只是一个很小的模块,只占到那么小的一个部分。这个事实在很大程度上颠覆了我以前的思想,在我以前的认识中,似乎整个软件就是编码,除此无它,还好有老师的指导,不然真的会出现老师所说的,撞得头破血流之后才想起来用软件工程的思想来完成这个工作。
刚真正开始工作之前,我们费了很多的时间来完成一些前端工作,如需求分析和可行性分析,这块工作在别人看来可能是相对无关紧要,甚至是多于的,其实,换做在以前,我也会这么认为。可是,我现在算是深深地明白了磨刀不误砍柴工的道理,这些工作的完成太有必要了,太重要了,要想你的软件有用有市场,能被别人接受和认可,在进行过程中不会出现崩溃性的问题,这些工作缺一不可。
还有就是接下来的一些设计模块,此模块与软件编码涉及比较紧密,主要是解决一些参数传递和接口通讯的问题,此模块对我的触动远没有上两个模块对我的影响大,因此再次也不做过多的介绍。
在整个活动的完成过程中,作为组长,我收获很多,我发现,要是组里有个人不怎么想做事情时,他对于整个组织的影响是毁灭性的,正所谓“一颗老鼠屎,能坏一仓谷”,以后我的组织里要是出现这样的人,我绝不会给他继续留下来的机会,我会在第一时间将他清除出去。还有就是,作为组长,你要做的最重要的事情,不是发挥自己的聪明才智,而是创造出一个平台,让别人去发挥,你所要做得,出了保证这个平台的完整性和公平性外,还有就是协调好各组员之间的关系。
这就是我的实习感想。
软件工程实践总结软件工程专业实训心得体会篇二
这学期学习了软件工程实践这门课,我觉得这是对上学期的软件工程课程学习的检验,上学期学习软件工程只是我们浅显的认识,相比之下,这学期就更加全面的说明了开发一个项目所需要的步骤以及开发项目过程中所需要注意的诸多细节。如果说上学期的课程注重理论基础的话,那么这学期的软工实践,顾名思义,就是侧重我们动手操作的能力。
原来我认为开发一个项目最重要的就是写代码,似乎整个软件都是编代码,因为自己动手能力不强所以就很排斥做项目。可是经过我们学习软工课程到团队做项目再到学习软件工程实践课程之后,我才真正意识到实施一个软件工程项目并不是说简单的会编码就能够解决问题的,因为一个软件的生命周期分为三个时期:软件定义时期、开发时期、维护时期,而这三个时期整体又分为七个阶段,他们分别是:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试,由此可看出,当我们开发一个项目时,更多的精力不是放在编码上,编码只是一个很小的模块,而是项目的整体结构上。
在写软工实践体会之前,我想在这里总结一下上学期三人团队做项目的相关事宜。上学期我们三人团队根据软件开发的步骤开发一个名为“西大老乡‘荟’”的社交系统,主要是为西大学子提供一个找老乡的平台。虽然只进行到详细设计阶段,没有进一步实现,但是我还是从中学到很多东西的。首先要先确定项目主题,也就是这个项目用来做什么,可以解决什么问题。接着就是这个项目是否有研究的必要以及是否有解决的办法,针对我们的项目,我们对西大的一些学生做了问卷调查,并从调查中继续完善系统本身的做用户。第三步根据我们确定的项目主题进行需求分析,这一步骤当时做的不是很好,比如所画e-r图、数据流图等都有考虑不周的问题,导致接下来的概要设计、详细设计进行的很困难,有些步骤甚至还需要返工。
从我们在需求分析中出现的问题,使我们明白了软件定义阶段对于一个项目的开发是至关重要的,当软件定义阶段完成时必须要用正式的文档准确的地记录目标系统的需求。只有前期的准备工作做得好,后面的工作才能顺利进行。虽然项目最后没有完全实现,但是起码我们已经初步体会到软件项目开发的步骤,以及每一步所需要完成的文档等内容。
这学期的软件工程实践虽然不是亲自动手开发一个系统,但是张元平老师以“物联网物流仓储管理系统”为主给我们讲解了一个真实系统的开发过程,从计划到项目系统的发布实施,以及每一步必须生成的文档。我主要从以下五个方面谈一下我的心得体会。
第1、行业背景说明方面
对于一个软件系统的开发,第一步就是问题定义,了解所开发系统的行业背景,制定计划。当我们计划确定以后就要对项目系统本身进行可行性研究,主要从技术可行性、经济可行性和操作可行性三个方面着手。就比如《物联网物流仓库管理系统》的行业背景说明文档中非常详细地分析了当下物联网物流行业的整体业务说明、应用背景、未来发展趋势以及相关应用案例等四个方面,项目团队中系统分析员就可以根据这份文档以及相关的调查资料对将要开发系统的进行定义等工作。
原来我们写这类文档的时候就是草草了事,不会做得这么详细,而这次看到大型项目的行业背景说明也是这么详细,也让自己认识到不管是软件开发的那个阶段都要认真对待,这些琐碎的文档都是后期开发项目的支撑,只要它们做的透彻,后面的开发工作才能更顺利的进行。
第2、项目需求说明方面
这部分项目需求说明就是软件定义时期中需求分析阶段,而该阶段的主要目的就是了解用户的需要,根据用户的需要确定系统必须完成那些工作,并对目标系统提出完整、准确、清晰、具体的要求。在需求分析结束之前系统分析人员要写出一份需求规格说明,即为《物联网物流仓储管理系统》项目需求说明文档。我们可以看出该文档也是非常详细,相比之下我们之前做项目时写的需求规格说明书就非常不合格,不仅格式不正确内容也是少之又少。
在这方面,这篇文档给我启发很大。首先就是文档的格式,要美观整齐,让人看着舒服方便。其次就是文档的内容,原来它不是很重要,写文档的时候也不知道怎么写就借鉴下网上的内容,结果根本就没有把自己项目的需求写明白,以至于自己最后都有些糊涂,所以根据以前的经验教训我会对这部分更加重视。
第3、系统概要设计方面
这部分内容分说的是软件设计时期的概要设计阶段,该阶段的主要目的就是实现系统的功能、设计软件的结构、模块组成以及模块之间的关系。在概要设计阶段,我们可以站在全局的高度上,花较少的成本,从抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的结构。在这个阶段还会具体画出e-r图、数据流图等方面的设计。
比如《物联网物流仓库管理系统》的系统概要设计从项目概述、设计约束、功能单元与功能模块设计、数据e-r图设计、总体设计、界面设计等六个方面介绍,通过读这个文档,我觉得最重要的还是总体设计,分别从逻辑架构设计、物理架构设计、技术架构设计设计系统。在这个阶段中模块要做到高内聚低耦合,这样开发出来的系统才会具有更高的独立性。
在原来做项目时没有编写过这类文档,在该阶段只是画了结构图、层次图以及相关的模块划分,对该类文档尚未重视。通过张老师的讲解和自己的学习,我相信在以后做项目的时候一定会注意到这类文档的编写。
第4、详细设计与分析方面
详细设计阶段就是把概要设计阶段的每个模块进一步设计,确定每个模块所需要的算法和数据结构。在这个阶段还是需要我们设计出程序的详细规格说明,而不是编写程序。在详细设计阶段,系统设计人员可以通过使用程序流程图、盒图、pad图等过程设计的工具和jackson图等面向数据结构的设计工具进一步设计系统相关接口,主要包括界面设计接口、业务单设计接口、单元模块设计接口等,这些对于以后的编码工作都是极其重要的。
第5、编码和测试方案方面
关于编码,我认为编码要想做的完美必备条件就是前面的软件定义和软件设计时期要按部就班的做,文档一定要按要求书写,不能偷懒也不能草草书写。对于编码也要有相应的文档书写规范,要使源程序代码的逻辑简明清晰、易读易懂。这样尽管我们不是设计系统的人员,当看到源程序代码的时候也能容易读懂代码的意思。
其次就是测试的内容,从测试的文档中我们可以得出,其实测试在软件开发中同样占据了重要的地位,它主要就是尽可能多的找到问题并排除其中的潜藏的错误,最终把一个高质量的软件系统交给用户使用。它要求测试人员也要有很高的技术水平。
软件工程实践总结软件工程专业实训心得体会篇三
这次实习的目的是提高我的专业技能、实践能力,让我了解一些实际的工作情况。正式工作前对我意义重大。在实践中对专业技能、综合素质、人际关系有更深的体会,这给了我正式工作前的宝贵经验。
这次实习的主要任务是了解整个软件制作流程,以及各个环节的细节。学完这些环节,就可以用学到的知识去完成一个公司安排的项目。我分配的项目名称是诊所管理系统。我们将以小组的形式共同完成这个项目,模拟实际的软件制作过程,最大限度地将学到的知识转化为实践能力。为真正的项目做好充分的准备,这样实习后才能在正式工作中面对。
公司的最终目的是希望能了解实际的项目制作,初步了解各个环节的意义。让我们将项目用于实际生产,这样我们可以更好地理解项目生产中每个过程的意义,以及团队在项目生产过程中是如何合作的。
我的实习单位是埃森哲信息技术(大连)有限公司软件开发部,校企合作。该部门的主要职能是外包服务工作,根据客户需求制作相应的软件。因此,我们需要熟悉整个软件开发过程,这样才能处理客户的各种问题,做出更好的软件来满足客户的需求。
因为实习的原因,我的职位是软件助理工程师。具体的时间安排是实际的项目制作和专业知识的学习。实习时间8周。本来实习的地方是在公司。后来因为公司内部原因,我们实习的地方改成了学校内部实习,每天的时间和正式工作一样。上午8点和5点,每周六周日休息。
整个实习的实际过程前面已经讲过了,包括八周的实际项目制作和专业知识学习。具体每周任务、实际工作内容、专业知识和技能的实际应用会根据不同环节而有所不同。但总体目标是让我们了解实际工作中的软件生产流程,以及每个流程需要的技术和注意点,让我们用实际的项目去实践。
整个实习的任务和目的上面已经介绍过了。下面将详细介绍整个实习过程,并详细讲解每个过程的细节。
具体时间安排如下:
第一周:这个项目需要的知识将被集中整理和复习。巩固一些不熟悉的知识,以防项目出现意外需求。实习的第一天,企业的经理向我们详细解释了软件工程科学对软件生产的重要性,并在此基础上给了我们大致的实习过程。
第二周:直接进行项目的需求分析。因为已经给出了项目名称,可行性分析就取消了。分配给我们小组的项目是“门诊管理系统”,去诊所实地调查是必然的。在实际调研过程中发现,需求分析的过程非常非常重要,需求分析文档的制作决定了项目的各项功能以及软件是否满足用户的需求。本周的收获是软件需求分析的文档化,这是软件工程中非常重要的一步,这个环节是整个软件生成过程中最重要、最关键的一环。
第三周:这一周由于临时变动,将概要设计和详细设计合并成一周。根据调查结果,进行概要设计。因为是第一次制作软件概要分析文档,所以有很多不规范的地方,比如数据流图的制作,很多小细节都忽略了,所以像这样的问题还是很多的。但这些问题经过组员的积极讨论和修改,以及老师的指导,都得到了解决。然后,根据概要设计,进行软件的详细设计。详细设计相比于概要设计能感觉简单一点,不知道感觉对不对。因为在概要设计模块中,我们已经设计了需要实现的模块、接口、类、函数,所以我们只需要考虑每个类的函数都可以用代码来实现,而不是写在代码上,而是用流程图、伪代码等相关技术来表达。正式的编码在这个阶段生产完成时开始。到目前为止,准备工作终于完成了,差不多花了我们一半的实习时间。这一周的时间,我们不知不觉就在忙碌中度过了!下周我们将进入这个项目的实际编码,这也是我们最熟悉的地方。感觉终于有地方投稿了,期待下周的到来。
第四周:根据详细设计对项目进行编码。本周,我们进行了实际的编码。我最大的感受就是按照详细设计的编码很清晰,伪代码等转换过程可能有点困难。和我们过去直接编码相比,流畅度不言而喻。
第五周:这周本来是要测试的,但是编码后企业老师指出了很多问题,说我们写的代码太粗糙了,要小心处理代码,把测试推到下周。这一周我们受益匪浅,对代码标注和编码格式有了更深入的了解。
第六周:根据完成的项目测试项目。这一周是软件测试,分为几个阶段,从最基础一节课内的方法测试到整个项目的综合测试。与之前的测试不同,这次我们先写测试文档,待测试文档通过检验后,再逐步测试文档。我想,这可能是我们未来工作的大方向,基于文档的项目制作。因为测试文档的制作进度太慢,我们这周忙于测试文档的制作,其他什么都没做,所以测试只能等到下周。我希望下周的考试会很有效率。期待尝试一下,感觉很想拿着测试文档测试一下。
第七周:拿着测试文档,按照上述要求逐一测试,确认项目的正确性。顺利的考试让我精神焕发。拿着测试文档直接查代码就行了。几乎没有必要考虑程序内部的测试流程,因为文档已经为你写得很清楚了。在这里,我有一种感觉,在埃森哲这样的大公司,文档的重要性比编码本身更重要。我想这就是为什么企业派来的老师没有直接给我们技术培训,而是让我们了解软件工程的流程。当然,根据企业文化的不同,软件工程的生命周期也会有细微的差异。他们会选择最适合自己公司的方法进行整个软件生命周期,而不是一成不变的。
第八周:这一周,我们没有任何与技术相关的任务,只需要准备个人演示。但是不要小看这个人的发挥,因为他会占你整个实习成绩的50%,这是本周一企业老师告诉我们的。我们之前都不知道有实习结果。项目总结,我们会花一个星期的时间总结整个实习的收获,这个星期的周五呈现自己,汇报收获。至此,实习生涯就告一段落。这一周,我们从收获、总结、经验等方面对整个实习的精髓进行了思考、沉淀、总结、提炼。基于ppt,我们进行了10分钟的个人陈述和项目答辩。在这方面,我们的实习彻底结束了。
项目的制作和难题的解决,会让我们熟悉大学即将遗忘的知识,对代码有更深的理解。代码的重用,类与类之间的调用,对象的创建,数据库的连接以及各种专业知识的使用,让我们能够更好的将这些各种知识合理的整合在一起。
如果专业知识收获很多,那么下面的专业技能就是整个实习过程中最大的收获。我很少关注代码的标注和编码的规范,也没有太多关注。但这一次,我意识到了他的重要性:这是一个软件开发人员必须具备的能力,或者说应该特别注意的能力。因为我们的代码没有太多的注释,很多地方的编码很不规范,企业老师宁愿让我们多花一周时间修改,也不急于下一次测试。在这一周的复习中,通过自己的经历和老师的强调,对代码编码规范和代码标注有了更深入的了解。通过这次实习,个人认为代码标注和编码规范比个人技能更重要。
这次实习的最终目的是希望能够了解软件生产的全过程,也就是软件工程的科学。这次实习,中间做文档的时间大概是编码的几倍,甚至因为我们的修改,编码时间也只有两周,而其他大部分时间都在做文档。个人觉得进公司后,文档制作比个人技能更重要。因为有了文档,我们的项目制作非常流畅,规定非常明确,逻辑非常流畅。这些文档在做软件的过程中起着重要的作用,所以我觉得软件工程可能是我未来的方向。
最后,总结一下这段时间实习的收获,真的让我受益匪浅。实习期间不仅学到了技术上的收获,还学到了生活中的人际交往以及很多其他的经验。这些都将作为我进入社会的基础。我会以此为基础,以一颗勇敢无畏的心迎接即将到来的工作。
动词(verb的缩写)实习经历
这次实习给了我深刻的体会,不仅是专业上的收获,还有团队之间的合作,让我明白了团队的意义。工作快到了,期待工作的到来。我会努力把学到的知识运用到实际工作中,迎接一个又一个挑战。前面的路上会有很多困难等着我,但我并不害怕,因为我坚信,只要我努力,我最终会克服这些困难。路就在我脚下,我会带着坚定的信念前进,不怕挫折!
软件工程实践总结软件工程专业实训心得体会篇四
实践时间:xx年7月1日-----xx年7月31日共31天
一、实践目的:综合利用所学的专业知识,培养软件开发的技能;掌握android操作系统的编程技巧,体会企业软件开发与学习过程中编写软件的不同;提高自身的创新意识与创新能力,促进团队之间的沟通协作,为早日踏上工作岗位打下坚实基础。
二、实践内容及感悟:
a) 实践前准备:自xx年清明节前后,我和我的组员就开始接受山西西太行信息有限公司的公开课的培训,当时经电子与计算机技术学院于一老师介绍由陈川老师主要带领我们重新温习了一遍关于java语言的基本知识,在这将近一个月的学习过程中我们逐渐重新拾起了即将被遗忘的java 知识,走出了以前认识上的误区,使我在java这一块又有了一定的的优势,为以后我们用java语言做开发打下了很好的基础。
自xx年5月1日,我们开始了真正的基于android操作系统的软件开发,虽然我们是利用课余时间进行学习,但是学习的效果真的很好,我们基本上晚上都会学到很晚才回宿舍。刚开始的时候我感到很不适应,感到学习的java语言不能够充分的的到利用,只能够用一些和系统相关的东西,但是随着学习的深入,我发现android操作系统也是一个很强大的手机操作系统,它有着很好的发展前景。并且移动互联网在在中国有着大的市场,所以我对我正在从事的android手机软件开发给予了很大的希望。这一个月的培训我们主要学习了android操作系统的五大系统组件:activity、service、sqlite、content provider、intent、broadcastrecever,同时我也学到了一些课堂上学不到得东西,对外面的市场的情况也有了更深刻的了解。
我们一行十六个人,大三的十一人大二的六人。我们被分了两个小组,每个小组八个人,上课时间一般是下午两点到五点半或者下午五点半到晚上八点半,其余的时间是我们自己写代码的时间。每天的任务量都有所不同,有时候把自己的任务做完了剩下的时间就自由支配。这一个月我们的主要任务是做一个腾讯微博android手机客户端,每天陈老师都会给我们传授一些做软件的经验和一些新的知识点,然后我们根据具体的要求编写文档,编写代码,第二天交由陈老师点评。
1) 可恶的文档:刚开始的时候感觉很不适应,以前上课就是学习关于编程的知识,但是做项目的第一天陈老师要求我们写文档,我们用的是gb8568—88格式的文档,第一次写即感觉很枯燥又感觉不会写。对于写文档我们都有想通的反应,就是莫名奇妙的反感,但是陈老师还是不依不饶的要求我们写要我们查资料,我们也很没办法只能按照要求写文档。但是由于我们不知道在文档上写些什么,陈老师看我们很为难也有所让步,带领我们写了软件需求说明书,后来我们依次写了概要设计说明书、详细设计说明书,后来又写了测试计划、用户手册。当时的感觉就是知道的知识太少,对着文档一个词一个词的硬挤,但是当文档写完的时候还是很有成就感的。
其实在写文档的过程中我们也渐渐的明白了文档的重要性,我们只是
在学校编写程序的时间久了习惯了上来就写代码的坏习惯,忽略了软件工程中的很重要的部分-----分析阶段和设计阶段。可能是因为以前做的软件都很小,一旦项目稍微大一点,那在编写代码阶段将付出不可估量的代价甚至最终将以失败告终。其实我们都学过软件工程,而且在考试的时候成绩还不是很差,但是到真正需要这些知识的时候我感觉却忘记了如何下手,这也就是所谓的纸上谈兵吧,所以我感觉大学生缺少的正是一种动手能力。知识本身没有价值,有价值的是运用知识解决问题。
2) 该死的bug:写完文档感觉写代码就轻松了,但是事与愿违啊。由于以前没做过开放平台的客户端,中间涉及到同腾讯公司微博开放平台接洽的问题,开始真的很不适应,不知道怎么下手。当知道下手的时候不免出现了各种各样的bug:腾讯服务器故障啦、实验室断网啦、模拟器连不上网啦、代码错误啦等等。为了弄好这些bug有时真是忙的焦头烂额,因为可能因为自己写的代码有问题导致大家的代码都不能运行,作为团队的一员谁都不想拖后腿。但有时候我也找不到问题所在,只能请高手指教或者找老师为我排忧解难。只可惜我当时掌握的排错方式只有打印输出和查看日志,根本没接触过单元测试。
其实多遇到一些bug还真不是坏事情,我现在开始明白编写代码最重要的是快速查找资料和排除错误的能力。首先我们不可能记住java语言或者android操作系统中所有的类和方法,所以能够快速找到我们所需要功能的类或者方法是很重要的。其次对于程序工作者来说遇到bug是很正常的事情,遇到不能解决的问题也是很常见的,重要的是能够正确的处理这些问题,并总结经验为以后的开发做好铺垫。遇到问题是要保持好的心态,千万不能焦躁,细心的一点点的分析问题,必的时候可以去网络上查找一些资料。但是不要遇到问题就上网查找,我感觉现在自己动手处理题很重要,上网查与吃现成饭没有本质的区别。网络可以帮我们开阔视野,但不要让网络阻碍了我们自我发展的机会。编写软件过程中要及时记录,这既可以让我们总结更多的经验,也可以为后来者提供一些宝贵的资料。毕竟都有成长的时候。
3) 痛苦的合并:这是我第一次这么正式的和这么多的人一起开发软件,更何况还有不认识的人在一个组,这给我们的沟通带来了很大的不便,尤其是最后代码合并的时候,很多的问题都一拥而上。我们当时用了一个软件visualsvn,这是一款团队开发的软件,当代码写的可以组合的时候我们就用这个软件在eclipse下共同开发。但开始的时候我们也会为了自己的代码正确而被迫修改别人的代码,最后弄得大家的代码不能够正确的运行,然后所有人都会停下来共同寻找错误,改正错误。这是团队开发时候很忌讳的问题,并且大家还都不好意思开口说谁错了,毕竟都不是很熟悉。直到大家开始慢慢适应这种团队开发之后,这样的情况才慢慢的被避免,效率也有所提高。
这次的团队开发让我明白,在团队开发中根本不存在自我,你所做的任何事情都应从整个团队出发,以团队的利益为重,不能自私。尤其是在团队中千万不能应付,你的应付很可能会给他人带来很多不便,甚至造成更大的损失。因此teamwork很重要,必须谨慎!
冗余度太大,有时候时代码不够安全,有时候是技术上不是很完善。对我们来说目标就是编写的软件能用,只要大家写的软件合并后能够正常运行,一切就ok了。但是这些是远远不够的,面向对象的思想和软件工程的一些常识我们都没涉及到,异步加载图片在陈老师讲之前我们也从来没有想到过,这些问题让我深深的体会到我们的创新能力的要求远远不够,我们对完美的渴求度远远不够。
没有最好,只有更好。这句话真是非常经典,作为软件开发者永远没有标准答案,没有最好的软件,只有不断的学习不断的追求才能发现好的东西,找到更好的创意。虽然最后腾讯微博客户端能够成功的运行了,但是我意识到我所掌握的知识远远不够,在这个实践中却是暴露了很多的问题。但愿天天能做到更好!
三、实践总结:
1、一个假期结束了,留下了很多的回忆,因为这个暑假是很有意义的。在这三十一天里每天都学到了新的知识,每天都遇到了新的问题,每天都在进步这,也让我有时间更加清晰的认识了软件工程这门课程和设计模式在软件开发中的重要性,编写代码知识软件开发的一小部分,只有真正的这种开发才能体会到软件工程的意义。
2、团队的凝聚力关系着每一个软件开发人员的发展前途,每一个人的努力都会得到回报,同样一个人的失误也会影响到整个团队,因此正确处理好人际关系是很重要的。
3、注重产品的价值,做好市场调研是成败的决定性因素。4、掌握好一门技术你可以吃饱,但是你要想很富有,必须懂得很多。队友可以帮助你一时帮不了一世,要注重个人能力发展!
软件工程实践总结软件工程专业实训心得体会篇五
综合利用所学的专业知识,培养软件开发的技能;掌握android操作系统的编程技巧,体会企业软件开发与学习过程中编写软件的不同;提高自身的创新意识与创新能力,促进团队之间的沟通协作,为早日踏上工作岗位打下坚实基础。
a) 实践前准备:
自xx年清明节前后,我和我的组员就开始接受山西西太行信息有限公司的公开课的培训,当时经电子与计算机技术学院于一老师介绍由陈川老师主要带领我们重新温习了一遍关于java语言的基本知识,在这将近一个月的学习过程中我们逐渐重新拾起了即将被遗忘的java 知识,走出了以前认识上的误区,使我在java这一块又有了一定的的优势,为以后我们用java语言做开发打下了很好的基础。
自xx年5月1日,我们开始了真正的基于android操作系统的软件开发,虽然我们是利用课余时间进行学习,但是学习的效果真的很好,我们基本上晚上都会学到很晚才回宿舍。刚开始的时候我感到很不适应,感到学习的java语言不能够充分的的到利用,只能够用一些和系统相关的东西,但是随着学习的深入,我发现android操作系统也是一个很强大的手机操作系统,它有着很好的发展前景。
并且移动互联网在在中国有着大的市场,所以我对我正在从事的android手机软件开发给予了很大的希望。这一个月的培训我们主要学习了android操作系统的五大系统组件:activity、service、sqlite、content provider、intent、broadcastrecever,同时我也学到了一些课堂上学不到得东西,对外面的市场的情况也有了更深刻的了解。
b) 实践过程:
xx年7月1日到xx年7月31日是我正式暑假实践的时间段,
我们一行十六个人,大三的十一人大二的六人。我们被分了两个小组,每个小组八个人,上课时间一般是下午两点到五点半或者下午五点半到晚上八点半,其余的时间是我们自己写代码的时间。每天的任务量都有所不同,有时候把自己的任务做完了剩下的时间就自由支配。这一个月我们的主要任务是做一个腾讯微博android手机客户端,每天陈老师都会给我们传授一些做软件的经验和一些新的知识点,然后我们根据具体的要求编写文档,编写代码,第二天交由陈老师点评。
1) 可恶的文档:刚开始的时候感觉很不适应,以前上课就是学习关于编程的知识,但是做项目的第一天陈老师要求我们写文档,我们用的是gb8568—88格式的文档,第一次写即感觉很枯燥又感觉不会写。对于写文档我们都有想通的反应,就是莫名奇妙的反感,但是陈老师还是不依不饶的要求我们写要我们查资料,我们也很没办法只能按照要求写文档。但是由于我们不知道在文档上写些什么,陈老师看我们很为难也有所让步,带领我们写了软件需求说明书,后来我们依次写了概要设计说明书、详细设计说明书,后来又写了测试计划、用户手册。当时的感觉就是知道的知识太少,对着文档一个词一个词的硬挤,但是当文档写完的时候还是很有成就感的。
其实在写文档的过程中我们也渐渐的明白了文档的重要性,我们只是
在学校编写程序的时间久了习惯了上来就写代码的坏习惯,忽略了软件工程中的很重要的部分-----分析阶段和设计阶段。可能是因为以前做的软件都很小,一旦项目稍微大一点,那在编写代码阶段将付出不可估量的代价甚至最终将以失败告终。其实我们都学过软件工程,而且在考试的时候成绩还不是很差,但是到真正需要这些知识的时候我感觉却忘记了如何下手,这也就是所谓的纸上谈兵吧,所以我感觉大学生缺少的正是一种动手能力。知识本身没有价值,有价值的是运用知识解决问题。
2) 该死的bug:写完文档感觉写代码就轻松了,但是事与愿违啊。由于以前没做过开放平台的客户端,中间涉及到同腾讯公司微博开放平台接洽的问题,开始真的很不适应,不知道怎么下手。当知道下手的时候不免出现了各种各样的bug:腾讯服务器故障啦、实验室断网啦、模拟器连不上网啦、代码错误啦等等。为了弄好这些bug有时真是忙的焦头烂额,因为可能因为自己写的代码有问题导致大家的代码都不能运行,作为团队的一员谁都不想拖后腿。但有时候我也找不到问题所在,只能请高手指教或者找老师为我排忧解难。只可惜我当时掌握的排错方式只有打印输出和查看日志,根本没接触过单元测试。
其实多遇到一些bug还真不是坏事情,我现在开始明白编写代码最重要的是快速查找资料和排除错误的能力。首先我们不可能记住java语言或者android操作系统中所有的类和方法,所以能够快速找到我们所需要功能的类或者方法是很重要的。其次对于程序工作者来说遇到bug是很正常的事情,遇到不能解决的问题也是很常见的,重要的是能够正确的处理这些问题,并总结经验为以后的开发做好铺垫。遇到问题是要保持好的心态,千万不能焦躁,细心的一点点的分析问题,必的时候可以去网络上查找一些资料。但是不要遇到问题就上网查找,我感觉现在自己动手处理题很重要,上网查与吃现成饭没有本质的区别。网络可以帮我们开阔视野,但不要让网络阻碍了我们自我发展的机会。编写软件过程中要及时记录,这既可以让我们总结更多的经验,也可以为后来者提供一些宝贵的资料。毕竟都有成长的时候。
3) 痛苦的合并:这是我第一次这么正式的和这么多的人一起开发软件,更何况还有不认识的人在一个组,这给我们的沟通带来了很大的不便,尤其是最后代码合并的时候,很多的问题都一拥而上。我们当时用了一个软件visualsvn,这是一款团队开发的软件,当代码写的可以组合的时候我们就用这个软件在eclipse下共同开发。
但开始的时候我们也会为了自己的代码正确而被迫修改别人的代码,最后弄得大家的代码不能够正确的运行,然后所有人都会停下来共同寻找错误,改正错误。这是团队开发时候很忌讳的问题,并且大家还都不好意思开口说谁错了,毕竟都不是很熟悉。直到大家开始慢慢适应这种团队开发之后,这样的情况才慢慢的被避免,效率也有所提高。
这次的团队开发让我明白,在团队开发中根本不存在自我,你所做的任何事情都应从整个团队出发,以团队的利益为重,不能自私。尤其是在团队中千万不能应付,你的应付很可能会给他人带来很多不便,甚至造成更大的损失。因此teamwork很重要,必须谨慎!
冗余度太大,有时候时代码不够安全,有时候是技术上不是很完善。对我们来说目标就是编写的软件能用,只要大家写的软件合并后能够正常运行,一切就ok了。但是这些是远远不够的,面向对象的思想和软件工程的一些常识我们都没涉及到,异步加载图片在陈老师讲之前我们也从来没有想到过,这些问题让我深深的体会到我们的创新能力的要求远远不够,我们对完美的渴求度远远不够。
没有最好,只有更好。这句话真是非常经典,作为软件开发者永远没有标准答案,没有最好的软件,只有不断的学习不断的追求才能发现好的东西,找到更好的创意。虽然最后腾讯微博客户端能够成功的运行了,但是我意识到我所掌握的知识远远不够,在这个实践中却是暴露了很多的问题。但愿天天能做到更好!
1、一个假期结束了,留下了很多的回忆,因为这个暑假是很有意义的。在这三十一天里每天都学到了新的知识,每天都遇到了新的问题,每天都在进步这,也让我有时间更加清晰的认识了软件工程这门课程和设计模式在软件开发中的重要性,编写代码知识软件开发的一小部分,只有真正的这种开发才能体会到软件工程的意义。
2、团队的凝聚力关系着每一个软件开发人员的发展前途,每一个人的努力都会得到回报,同样一个人的失误也会影响到整个团队,因此正确处理好人际关系是很重要的。
3、注重产品的价值,做好市场调研是成败的决定性因素。4、掌握好一门技术你可以吃饱,但是你要想很富有,必须懂得很多。队友可以帮助你一时帮不了一世,要注重个人能力发展!
软件工程实践总结软件工程专业实训心得体会篇六
; 《软件工程实践》报告 ——机票预定系统 院系:
专业班级:
报告人:
指导教师:
实验地点:
完成起止日期:
学号 姓名 角色 成绩 组长 完成工作 主要:写论文、资料整合、概要设计、指导画图、编码调试。
参与:讨论、可行性分析、测试、作图 评语 组员 完成工作 主要:经济可行性分析、用例分析、详细设计作图、编码调试、实行测试和运行。
参与:讨论、收集资料 评语 组员 完成工作 主要:收集资料、需求分析作图、详细设计作图、测试作表 参与:讨论、可行性分析、概要设计、 评语 目录 第一章 可行性分析 5 1.1引言 5 1.1.1 编写目的 5 1.1.2 项目背景 5 1.2可行性研究的前提 6 1.2.1要求 6 1.2.2目标 6 1.2.3条件,假定和限制 6 1.2.4决定可行性的主要因素 6 1.3技术可行性分析 6 1.3.1系统简要描述 6 1.3.2处理流程和数据流程 7 1.4经济可行性分析 7 1.4.1支出 7 1.4.2效益 7 1.4.3 收益/投资比 8 1.4.4投资回收周期 8 1.4.5敏感性分析 8 1.5法律因素 8 1.6其他可供选择的方案 8 1.7结论意见 8 第二章需求分析 9 2.1求规格说明 9 2.1.1系统概貌 9 2.1.2功能需求 9 2.1.3性能需求 9 2.1.4运行需求 10 2.2数据流图分析 10 2.2.1数据流图 10 2.2.2数据描述 11 2.2.3数据词典 11 2.3用例分析 12 2.3.1系统基本用例 12 2.3.2 用况描述 13 2.3.3系统业务逻辑描述 15 第三章 概要设计 16 3.1系统的结构化设计 16 3.1.1软件体系结构图 16 3.1.2软件结构流程图 17 第四章 详细设计 19 4.1 机票预订管理系统体系结构设计 19 4.1.1面向旅客的界面包的类图 20 4.1.2面向管理员的界面包的类图 21 4.1.3机票预订系统的体系结构图 22 4.1.4机票预订系统的体系结构图描述 23 4.2 机票预订管理系统子系统设计 23 4.2.1用户查询航班及机票信息 23 4.2.2旅客订票及退票 24 4.2.3机票预订系统统计分析 26 4.3数据库结构设计 26 4.4数据库表创建 27 第五章测试 29 5.1定义 29 5.2主界面模块 29 5.2.1用户注册 29 5.2.2用户登录 31 5.2.3管理员登录 33 5.3查询机票模块 35 5.4 航班管理模块 37 5.5用户订票模块 39 第六章 结束语 42 第一章 可行性分析 1.1引言 随着社会发展的不断进步,航空事业不断壮大,人们生活水平不断提高,乘坐飞机的人也越来越多,随着消费者的不断增多,飞机预订系统在各地预订网点作用也愈显重要。目前,我国还有相当一部分地区酒店的机票预订还未进入智能处理阶段,和发达地区比较工作效率较低。在计算机技术快速发展的今天,有必要引进高效的计算机系统来协助机票预订工作。因此开发一套具有完整的存储,查询,核对,打印机票功能的实时机票预订系统势在必行。机票预定系统应克服存储乘客信息少,查询效率低下等问题外,更重要的是其安全性,可靠性,这关系到航班和乘客的安全及准确,本系统因面向广大机票预定网点,因此要能在售票网点中普及,则需要开发一个功能全,价格能被顾客所接受的系统。 机票预订系统是为了机场工作人员和客户提供订票退票等与机票相关内容和管理的系统,它具有开放的系统结构,易扩充的,易维护的,具有良好人机界面的优点。它克服了存储客户信息少,查询效率低等问题,更重要的是其安全性,可靠性,实现航空公司的机票销售的自动化,为乘客出行提供方便,便于机场人员信息管理,提高了机场人员对机票管理的工作效率。
1.1.1 编写目的 可行性研究的目的是为了对问题进行研究,以最小的代价在最短的时间内确定问题是否可解。
经过对此项目进行详细调查研究,初拟系统实现报告,对软件开发中将要面临的问题及其解决方案进行初步设计及合理安排。明确开发风险及其所带来的经济效益。本报告经审核后,交软件经理审查。
1.1.2 项目背景 开发软件名称:机票预订系统。
项目任务提出者:航空公司及旅游开发公司。
项目开发者:
a++开发小组。
用户:航空公司及旅游开发公司。
实现软件单位:旅游开发公司及厦门理工学院 项目与其他软件,系统的关系:
本项目采用客户机/服务器原理,客户端的程序是建立在windows xp 系统上以microsoft visual c++为开发软件的应用程序。
1.2可行性研究的前提 1.2.1要求 主要功能:为游客提供机票预定服务,方便旅游局的售票工作,提高旅游局的服务质量和服务效率 。
性能要求:机场提供的信息必须及时的反映在旅游局的工作平台上。售票系统的定单必须无差错的存储在机场的主服务器上。对服务器上的数据必须进行及时正确的刷新。
输出要求:数据完整,详实。
输出要求:简捷,快速,实时。
安全与保密要求:服务器的管理员享有对机场航班信息库及机票信息库和定票信息库的管理与修改。售票员只享有对订票信息库的部分修改(写入与读出)。
完成期限:预计两个月。
1.2.2目标 系统实现后,大大提高旅游局的机票预定服务效率。降低售票服务中的错误发生率,减少信息交流的烦琐过程及其带来的开销。
1.2.3条件,假定和限制 建议软件寿命:5 年。
经费来源:中国国际旅游开发公司。
硬件条件:终端为pc 机。
运行环境:windosxp 1.2.4决定可行性的主要因素 成本/效益分析结果,效益 成本。
技术可行,现有技术可完全承担开发任务。
操作可行,软件能被原有工作人员快速接受。
1.3技术可行性分析 1.3.1系统简要描述 在旅游局中的终端是安装了windows xp的pc机,主要目的是向机场的服务器传递数据。当顾客在旅游局进行咨询时,终端向服务器发出查询请求,服务器根据航班信息库的实时数据,向终端发送数据,显示在终端的屏幕上。当顾客向售票员定票时,终端向服务 器发出详尽的一份定单,服务器核对后,存入定票信息库,并修改机票信息库。当顾客再次 来取票时,终端向服务器发出查询定票请求,服务器接收后,查询定票信息库,核对后,传送机票确认表单,终端打印出机票。
1.3.2处理流程和数据流程 图1-1 数据流程图 1.4经济可行性分析 1.4.1支出 基础投资:
终端pc 机5台:6000*5 = 3 万 网络设备和辅助配置:4 万 共计:7万 其他一次性投资:
mysql : 0元 windows xp: 2 万 操作员培训费:3万 共计:5 万 经费:
人工费用: 2(月)*5(人)*4000(元)=4 万 其他不可知额外支出: 4 万 共计: 8万 支出共计:20 万 1.4.2效益 一次性收益 0元 经常性收益 (按银行利率:1%);
减少员工5 人(100 元/人)五年收益: 100*(1/1.01+1/(1.01)2+1/(1.01)3+1/(1.01)4+1/(1.01)5)*5*12*5=170000 工作效率提高收益(工作效率提高20%): 20000*(1/1.01+1/(1.01)2+1/(1.01)3+1/(1.01)4+1/(1.01)5)*(20%)*5 = 117000 经常性收益共计:28.7万 不可定量收益 因服务质量提高增加收益:3000*12*5=180000 收益共计: 46.7万 1.4.3 收益/投资比 46.7 万/20 万=233.5% 1.4.4投资回收周期 2.54年 1.4.5敏感性分析 设计系统周期为五年, 估计最长可达7 年 处理速度: 一般查询速度4 秒 关键数据查询速度: 2 秒 1.5法律因素 所有软件都选用正版;
所有技术资料都由提出方保管;
合同制定确定违约责任。
1.6其他可供选择的方案 端与服务器端联系在一起,在旅游局中只设立终端,在机场设立服务器,数据输入由终端输入,所有数据都由服务器处理,只在终端上显示数据结果。此设计简化了数据处理,但加重了服务器的数据处理。而使用客户端/服务器机理, 简化数据流量,加快数据处理。
1.7结论意见 由于投资效益比远大于100%, 技术、经济、操作都有可行性,可以进行开发。
第二章需求分析 2.1求规格说明 2.1.1系统概貌 航空公司为方便旅客,需开发一个机票预定系统。为便于旅客由旅行社代替航空公司负责为旅客定票,旅行社把预定机票的旅客信息,包括姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。旅客在飞机起飞前一天凭取票通知和账单交款后取票,系统校对无误后即印出机票给旅客。
2.1.2功能需求 1. 航空公司工作人员登录及注销 要求合法的管理员才可以登录系统,防止系统被无关人员动用,使用字符串匹配对 用户名和密码进行判断。在不使用时进行注销,下次使用时需要重新登陆,由于目标客户 的层次较低,建议用输入检测确保输入准确无误。 2. 机票信息输入和查询 在系统中,要求可以输入每日航班次数。可以通过航班号、目的地、起飞日期、起飞地点查询航班,输出该次航班的起飞时间和所剩票数和票的价格等信息。 3. 订票,取票和退票 把预定机票的旅客信息(姓名、性别、工作单位、身份证号码(护照号码)、旅行时间、旅行始发地和目的地,航班舱位要求等)输入到系统中,系统为旅客安排航班。当旅客交付了预订金后,系统打印出取票通知和帐单给旅客。,旅客在飞机起飞前一天凭取票通知和帐单交款取票,系统对旅客有关证件合法性(如身份证、取票通知和交款发票)等进行验证,系统核对无误即打印出机票给旅客。对于已取机票应在未售出机票中减去。对于以下情况要求退票者,给予50%金额退款:(1)旅客延误取票时间;
(2)旅客临时更改航班处理;
(3)因私人原因需要退票。对于因特殊情况下(如天气不适合飞机起降、飞机延误超过30分钟)等给予全额退票。对于退订机票要在未售出机票中重新体现。
2.1.3性能需求 为了保证系统能够长期、安全、稳定、可靠、高效的运行,机票预订系统应该满足以下的性能需求: 1. 系统处理的准确性和及时性 系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足企 业对信息处理的需求。在系统开发过程中,必须采用一定的方法保证系统的准确性。 2. 系统的开放性和系统的可扩充性 机票预订系统在开发过程中,应该充分考虑以后的可扩充性。要实现这一点,应通过系统的开放性来完成,即系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。 3.系统的易用性和易维护性 机票预订系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。
4.系统的标准性 系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。所有这些都要符合主流国际、国家和行业标准。同时,在自主开发本系统时,要进行良好的设计工作,制订行之有效的软件工程规范,保证代码的易读性、可操作性和可移植性。 5.系统的先进性 目前计算机系统的技术发展相当快,做为机票预订系统工程,应该保证系统在一段时间内是先进的,在系统的生命周期尽量做到系统的先进,充分完成企业信息处理的要求而不至于落后。这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成。另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品。 2.1.4运行需求 系统软件:windows xp 数据库管理系统:mysql 硬件要求:奔四 1.6ghz 512m ram 10g hd 2.2数据流图分析 2.2.1数据流图 图2-1本系统的顶层数据流图 图2-2 0层数据流图 图2-3 本系统的二层数据流图 2.2.2数据描述 1.静态数据 :订票单、取票通知单、帐单、机票 2.动态数据 :旅客姓名、身份证、航班时间 2.2.3数据词典 1.旅客信息 名字:旅客信息 别名:passenger information 描述:旅客的个人信息,用于对旅客的确认 定义:旅客信息=姓名+性别+工作单位+身份证号码+旅行时间+旅行目的地 位置:输入到旅行社端(client端)
2.订票旅客清单 名字:订票旅客清单 别名:list 描述:已订票的旅客的记录 定义:订票旅客清单=旅客信息的合集 位置:输入到旅行社端(client端)
3.订票信息 名字:订票信息 别名:booked information 描述:旅客的旅行时间和目的地,用于确定旅客的航班 定义:订票信息=旅客旅行时间+旅客旅行目的地 位置:传输到航空公司端(server端)
4.航班机票信息 名字:航班机票信息 别名:bill information 描述:旅客的航班信息,根据旅客的旅行时间和目的地确定 定义:航班机票信息=旅客机票时间+旅客机票班次 位置:传输到旅行社端(client端) 5.取票通知 名字:取票通知 别名: notification 描述:旅客领取机票的凭证 定义:取票通知=旅客姓名+领票时间 位置:输出到打印机 6.售出机票信息 名字:售出机票信息 别名:saled 描述:旅客的航班机票的信息 定义:售出机票信息=旅客的航班机票 位置:输出到打印机 7.旅客订票记录 名字:旅客订票记录 别名:record 描述:已订票的旅客在航空公司的记录 定义:旅客订票记录=旅客姓名+航班机票信息 位置:输出到航空公司端(server端)
2.3用例分析 2.3.1系统基本用例 本系统的边界是:机票预定系统服务平台。
系统的参与者有:航空公司管理员、旅行设、旅客。用例图如下:
图2-4 系统用例图 1.航空公司管理员通过系统实现以下使用需求:
登录、预订机票、退订机票、取票管理、航班查询、 航班信息管理、订票信息管理、旅客信息管理 2.旅客通过系统实现以下使用需求:
登录、预订机票、退订机票、航班查询 3.旅行社通过系统实现以下使用需求:
航班查询、旅客信息管理 2.3.2 用况描述 1.用例名:登录。
主要执行者:旅客。
目标:可以查询和修改旅客的基本信息。
范围:机票预订系统。
基本互交动作:
1).旅客登录。
2).旅客输入姓名、证件类型、证件号码及电子邮件地址。
2.用例名:预订机票。
主要执行者:旅客。
目标:预订机票。
范围:机票预订管理系统 基本互交动作:
1).旅客查询航班及机票 2).旅客选取信息表中的一个航班,输入姓名、证件及号码。
3).显示总票款。
4).旅客确认预订信息、总票款。
3.用例名:退订机票。
主要执行者:旅客。
目标:取消此前预订的机票。
范围:机票预订系统。
基本互交动作:
1).用户登录。
2).系统显示旅客此前预订但并未登机的机票;
旅客选取欲退订的机票。
3).系统按照退票费计算规则计算退票费,显示欲退订机票的总票款及总退费。
4).旅客确认退票请求、总票款。
4.用例名:查询航班。
主要执行者:旅客及旅行社。
次要执行者:航空公司。
目标:查询航班时刻表、机票等信息。
范围:机票预订管理系统。
基本互交动作:
1).用户登录。
2).用户输入出发地、目的地、出发日期、起飞或者到达时间的范围。
3).系统从航空公司的机票管理系统中获取航班及机票信息,显示符合旅客要求的 所有航班及剩余机票数量。
5.用例名:航班信息管理 主要执行者:航空公司。
目标:提供最新的航班信息。
范围:机票预订系统。
基本互交动作:
1).更新航班信息(每5秒)。
2).提供航班信息。
6.用例名:取票管理 主要执行者:航空公司。
目标:及时通知旅客取票时间及方式。
范围:机票预订系统。
基本互交动作:
1).获取已定机票信息并打印机票。
2).通知旅客取票的时间及方式。
7.用例名:旅客信息管理 主要执行者:航空公司、旅行社。
目标:储存旅客信息。
范围:机票预订系统。
基本互交动作:
1).对旅客填写的个人信息进行保存以便于管理。
2).定时更新旅客的信息。
8.用例名:报表及分析。
主要执行者:定时器(每周一00:00)
次要执行者:管理员。
目标:汇总前一周的订票、退票情况。
范围:机票预订系统。
基本互交动作:
1).系统汇总自上次生成周报表至此刻发生的所有订票、退票情况。
2.3.3系统业务逻辑描述 本系统的业务逻辑是这样的:旅客登录系统,使用客户端进行订 票、查询、退票的操作,旅行社通过查询和旅客信息管理与航空 公司进行数据交流与业务往来。
第三章 概要设计 3.1系统的结构化设计 3.1.1软件体系结构图 图3-1 系统的软件体系结构图 1.旅客用户模块:本模块主要功能,是旅客可登录系统进行机票信息查询,并根据需求预订机票,在支付预定金后系统打印取票清单。
2.航空公司模块:该模块主要功能,是对航班及机票信息进行管理更新,并根据用户提供的取票清单和付款单进行验证和打印机票。
3.系统管理员模块:本模块主要功能,是管理员对系统的软硬件进行维护,并对航空公司产生的业务进行编制报表和分析。
4. 旅行社模块:本模块主要功能,是旅行社可登录系统进行机票信息查询和管理旅客信息。
3.1.2软件结构流程图 图3-2 软件结构流程图 1.各功能详细描述 本系统主要用于机票预订,所以提供了以下几个子功能:机票预订,取票通知,查询航班,查询机票,退票,打印机票,取消航班,机票的生成,以及航班的查询等后台功能。 1).机票预订功能:旅行社和机场管理员有权力进行该项功能。首先通过查询得到旅客所需的航班,确定该航班还有没有被预订的座位,然后选择座位的等级,填写旅客的详细信息之后就可进行网上预订机票。 2).票通知:该项功能只有旅行社和机场管理员有权力进行操作,在机票预订功能成功完成之后,系统会自动给浏览器端发送一条取票信息以及所需缴纳的费用。旅行社可以利用特定设备将该取票信息打印出来,这就是取票通知。 3).查询航班:可以通过输入出发地,目的地,日期和时间选定自己航班。 4).查询机票:该项功能三方都可以操作,可以通过自己的身份证号以及取票通知上的机票号查询自己的机票信息。 5).退订机票:该功能只有旅行社和机场管理员有权力操作,利用身份证号和对应的机票号就可以查询到机票信息,然后就可以退订机票。 6).打印机票:该功能只有机场管理员有权力操作,只有当管理员确认旅客已经付款后才予以打印机票,可以通过身份证号和对应的取票信息上的机票号查询机票信息,然后服务器返回机票信息,管理员就可以打印该机票信息,交给旅客。 7).后台的取消航班:该项功能只有机场管理员才能操作,先通过航班号和航班日期查询到航班信息后,取消航班就可以将该航班从数据库中删除。 8).后台的航班查询:该项功能只有机场管理员才能操作,通过航班号和航班日期查询到航班信息。 9).后台的机票生成:该项功能只有机场管理员才能操作,可以通过该项功能给刚添加的航班生成对应的飞机票号纪录。 第四章 详细设计 4.1 机票预订管理系统体系结构设计 本系统包图主要包括:用户界面包、航空公司业务逻辑包及与外部系统的接口。其中业务逻辑中还包含订票及退票包、客户管理包、统计分析包。
图4-1 机票预定管理系统之包图 4.1.1面向旅客的界面包的类图 图4-2 面向旅客的界面包的类图 4.1.2面向管理员的界面包的类图 图4-3 面向管理员的界面包的类图 4.1.3机票预订系统的体系结构图 图4-4机票预订系统的体系结构图 4.1.4机票预订系统的体系结构图描述 1.在ticketservice构件的对外接口中,quertflights负责查询航班及尚余机票booktickets和returntickets分别负责订票和退票,通过ticketsaleagent向航空公司的机票销售管理系统发出订票和退票请求,通过datapersistenceserviceinterface在数据库中记录客户的订票和退票情况。querysaletickets和queryreturntickets负责查询客户的订票和退票情况。
2.在customermanager构件的对外接口中,register和unregister分别负责客户信息的记录和注销。getcustomerinfo和setcustomerinfo分别负责获取和修改客户信息。
3.在statandanalyser子系统的对外接口中,statsaledtickets和statreturntickets借助于ticketserviceinterface中的querysaletickets和queryreturntickets分别统计在某一时段售票和退票的情况。
4.2 机票预订管理系统子系统设计 4.2.1用户查询航班及机票信息 图4-5 机票预定系统之查询航班及机票信息类图 图4-6 查询航班及机票用例顺序图 4.2.2旅客订票及退票 图4-7机票预订管理系统之“订票及退票”包的类图 图4-8 订票用例顺序图 图4-9 退票用例顺序图 4.2.3机票预订系统统计分析 图4-10 机票预订系统之统计分析包的类图 图4-11 生成统计分析报表的顺序图 4.3数据库结构设计 根据总的结构图设计各表结构如下:
表4-1 旅客信息表 表4-2航班信息表 表4-3机票信息表 4.4数据库表创建 create table 旅客信息表 ( 姓名 char(50) not null primary key, 性别 char(50) not null, 年龄 int not null, 用户密码char(50) not null, 证件号 int notnull) create table 航班信息表 ( 航班号 int not null, primary key, 出发时间 char(30) not null, 出发地 char(20) not null, 目的地 char(20) not null, 票数 int not null, 票价 int not null)
create table 机票信息表 ( 姓名 varchar(50) not null primary key, 座位号int not null, 航班号 int not null, 登机口 int not null, 票价 int not null, 时间 char(30) not null, 出发地 char char(50)not null, 目的地 char(50)not null) 第五章测试 5.1定义 黑盒测试:
黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测 试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。
白盒测试:
白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。
这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
5.2主界面模块 主界面与注册界面和登录界面(航空公司管理员登录、用户登录)。
通过主界面可以进入注册界面和登录界面,由登录界面分别进入航空公司管理系统和用户预订机票系统。
5.2.1用户注册 1.输入项 表5-1 测试用户注册输入项 字段名称 数据类型 长度 允许空 字段描述 name char 50 否 用户真实姓名 sex char 50 否 用户性别 age int 35 否 用户年龄 password char 50 否 用户密码 credential int 35 否 用户身份证号 2.输出项 1显示注册成功,按任意键返回主页;
2提示该身份证号已注册,重新输入。
3.算法 点击主界面2入口中的一个,可进入相应的注册界面。
内部处理 if 用户身份证号注册过, 提示错误信息: 该身份证号已注册,请重新输入! else 显示注册成功,按任意键返回主页。
4.流程逻辑 图5-1 用户注册流程逻辑图 5.编码和界面 图5-2 用户注册界面 图5-3 用户注册错误测试结果 6.测试用例 对输入参数查验,检测数据库数据异常时能否判断并给予适当处理。
表5-2用户注册测试用例 测试用例 预期结果 错误的身份证号 提示:身份证已注册 正确的用户信息 提示:注册成功 5.2.2用户登录 1.输入项 表5-3 测试用户登录输入项 字段名称 数据类型 长度 允许空 字段描述 username char 50 否 用户真实姓名 password char 30 否 登录密码 2.输出项 1显示登陆成功,按任意键进入机票预订系统;
2提示用户或密码错误,重新输入请按y,退出请按n。
3.算法 点击主界面2入口中的一个,可进入相应的登录界面。在用户 登录界面输入用户名与密码,点击确定按钮:
内部处理 if 用户名或密码不正确 提示错误信息: 用户或密码错误,请重新输入! else 登陆成功并转入相应页面 点击0确认:返回主界面。
4.流程逻辑 图5-4 用户登录流程逻辑图 5.编码和界面 图5-5 登录界面 图5-6 用户登录成功 图5-7 用户登录错误测试 6.测试用例 对输入参数查验,检测数据库数据异常时能否判断并给予适当处理。
表5-4 用户登录测试用例 测试用例 预期结果 错误的用户名 提示:用户名错误 错误的密码 提示:密码错误 正确的用户名、密码 提示:登陆成功进入机票预订系统 5.2.3管理员登录 1.输入项 表5-5 管理员登录测试输入项 字段名称 数据类型 长度 允许空 字段描述 manager char 50 否 管理员姓名 password char 30 否 登录密码 2.输出项 1显示登陆成功,按任意键进入机票调整系统;
2提示姓名或密码错误,重新输入请按y,退出请按n。
3.算法 点击主界面2入口中的一个,可进入相应的登录界面。在管理者 登录界面输入姓名与密码,点击确定按钮:
内部处理 if 姓名或密码不正确 提示错误信息: 用户或密码错误,请重新输入! else 登陆成功并转入相应页面 点击0确认:返回主界面。
4.流程逻辑 图5-8 管理员登录流程逻辑图 5.编码和界面 图5-9 管理员登录成功 图5-10 管理员登录错误测试结果 6.测试用例 对输入参数查验,检测数据库数据异常时能否判断并给予适当处理。
表5-6管理员登录测试用例 测试用例 预期结果 错误的姓名 提示:姓名错误 错误的密码 提示:密码错误 正确的姓名、密码 提示:登陆成功进入机票调整系统 5.3查询机票模块 用户或管理员进入查询机票界面,可以通过查找航班信息来选择自己要乘坐的航班。
1. 输人项 表5-7 查询机票测试输入项 字段名称 数据类型 长度 默认值 允许为空 字段描述 flight_num string 是 飞机班次 2. 输出项 表5-8 查询机票测试输出项 字段名称 数据类型 长度 默认值 允许为空 字段描述 flight_num string 是 飞机班次 origion string 是 旅行始发地 destination string 是 旅行目的地 leave_time string 是 旅行初始时间 3.算法 显示查询界面 case1 航班号 输入查询的航班号;
break; 根据所输出的内容,连接数据库开始搜索 if 找到符合条件的机票 显示输出 else 没有找到符合要求的机票 4.流程逻辑 选择航班号 查询 检索数据库 显示结果 y n 图5-11查询机票流程逻辑图 5.编码和界面 图5-12 查询机票错误测试结果 图5-13 查询机票成功 6.测试计划 输入数据:输入参数合法,数据库出现异常的处理。数据的共享与独立性,一致性与完整性。
7. 测试用例 表5-9 查询机票测试用例 测试用例 预期结果 输入合法参数 显示正确的航班信息 输入非法参数 数据库出现异常处理结果 (违背数据的一致性或者完整性)
5.4 航班管理模块 航空公司管理员登录成功后进入航空公司管理系统, 添加航班。
1. 输人项 表5-10 航班管理测试输入项 字段名称 数据类型 长度 默认值 是否允许空 字段描述 flight_num string 否 飞机班次 price int 4 否 机票价格 leave_time datatime 否 发机时间 cout int 否 票数 origin string 否 始发地 destination string 否 目的地 2.输出项 1).成功转入相应页面;
2).提示输入错误,重新输入。
3.算法 进入航班管理信息界面,可返回主界面。
选择航班管理信息界面的添加航班界面以及返回主界面。
添加航班:
依次输入数据 if 输入数据格式错误或内容不对 提示错误,重新输入 else 将数据存入数据库 提示添加成功 返回航班管理信息界面 在管理员登录系统 4.流程逻辑 选择航班管理操作 添加航班信息 n 填写信息正确 成功添加航班 返回 图5-14添加航班流程逻辑图 5.编码和界面 图5-15 航班添加界面 图5-16 添加成功界面 6.测试用例 表5-11 航班添加测试用例 测试用例 预期结果 重复输入的航班信息 提示:该航班已存在,重新输入 正确的航班信息 提示:是否继续添加 5.5用户订票模块 用户登录成功后进入航空公司管理系统,选择浏览航班后进入订票系统。
1. 输人项 表5-12 订票测试输入项 字段名称 数据类型 长度 默认值 是否允许空 字段描述 flight_num string 否 飞机班次 cout int 否 票数 2.输出项 1).航班信息,开始订票及订票成功;
2).没有您要的航班信息,余票不足,请出入有效票数。
3.算法 进入航班管理信息界面,可返回主界面。
选择航班管理信息界面的订票界面以及返回主界面。
订机票:
输入数据 if 输入数据不对 提示错误,重新输入 else 显示航班信息 继续查找or开始订票 if 输入票数有误 提示错误,重新输入 else 显示订票成功 航班管理信息界面 4.流程逻辑 选择订票操作 查询航班信息 n 显示航班信息 开始订票 输入订票数 n 输入票数正确 订票成功 返回 图5-17订票流程逻辑图 5.编码和界面 图5-18 订票错误测试结果 图5-19 订票成功结果 6.测试用例 表5-13 订票测试用例 测试用例 预期结果 输入错误的航班号 提示:该航班不存在,重新输入 正确的航班号 提示:是否继续查找或开始订票 错误的机票数 提示:余票不足,重新订票 正确的机票数 提示:订票成功 第六章 结束语 经过两周的努力,我们终于完成了《软件工程》的课程设计。从开始接到题目到系统的完成,每走一步对我们来说都是新的尝试与挑战。我们从对软件工程的技术不熟悉的状态开始了课程设计,查看相关资料和书籍,让自己头脑中模糊的概念逐渐清晰,使自己非常稚嫩的作品一步步完善起来,每一次改进都是学习的收获,每一次试验的成功都是辛劳的成果。
此次课程设计中,本小组根据软件工程实行过程完成了机票预定系统的大部分功能,包括用户(旅客、旅行社)注册,管理员登录系统进行航班添加查询功能,用户(旅客、旅行社)登录系统进行查询订票功能。
虽然我们的作品不是很成熟,还有很多不足之处,但我们可以自豪的说,这里面的每个细节都有我们的辛勤付出。两周的时间过去了,我们的课程设计也将告一段落,点击运行程序,也基本达到预期的效果。心中不由得也会冒出小小的成就感。由于时间和精力的关系,做出来的程序中仍有许多不尽人意的地方。例如:功能不够完善,界面不够美观等。对于这些遗憾我们只能以人们常说的,“做一件事,不必过于在乎最终的结果,可贵的是过程中的收获”来聊以自慰。但在以后的时间里我们仍会再接再厉把这个程序做的更加完美。
在本次软件工程设计过程中,我们不免遇到很多的困难但是在老师的精心指导和自己的不断努力下基本上完成了此次的设计并达到了预期的要求,而且自己在程序设计方面也有不少的收获,更加坚定了自己在编程中的信心。在此,衷心感谢胡老师的认真授课和精心指导! 参考资料:
[1]吴洁明等,《软件工程实例教程》,清华大学出版社。
[2]钱乐秋等,《软件工程》,清华大学出版社。
相关热词搜索:;