第一篇:软件工程实践心得
软件工程(SE)
软件是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档。软件工程(Software Engineering,简称为SE)是针对软件这一具有特殊性质的产品的工程化方法。SE涵盖了软件生命周期的所有阶段,并提供了一整套工程化的方法,来指导软件人员的工作。任何事物都是从无到有的,软件当然也不例外。上世纪中期,软件产业从零开始起步,经过半个多世纪的发展,其大致经历的3个阶段:程序设计阶段、软件设计阶段和软件工程时代,现已成为推动人类社会发展的龙头产业,随着信息化时代的发展,软件对人类社会也将越看来越重要。人们对软件的认识自然经历了一个由浅入深的过程,在得到巨大需求的同时,也遇到了一系列严重问题,即软件危机。所谓软件危机,是指在计算机软件的开发和维护过程中所遇到的一些严重问题,其实质是软件产品的供应赶不上需求的增长。概括的说包含两方面的问题:
一、如何开发软件,以满足不断增长,日趋复杂的要求;
二、如何维护数量不断膨胀的软件产品。为研究和解决软件危机,一门新兴的学科——软件工程,应运而生。
软件工程的概念是为了有效地控制软件危机的发生而被提出来的,它的中心目标就是把软件作为一种物理的工业产品来开发,要求“采用工程化的原理与方法对软件进行计划、开发和维护”,它的主要对象是大型软件,它的最终目的是摆脱手工生产软件的现状,逐步实现软件开发和维护的自动化。软件工程的概念自提出来后,经过几
十年的发展,虽然软件危机没有得到彻底的解决,但在软件开发方法和技术方面已经有了很大的进步,提出了软件工程知识体系、软件工程三段论、软件工程生存期模型、服用原则等等。
软件开发过程大致经过7个阶段:可行性分析、需求分析、概要设计、详细设计、编码、测试、提交与维护。接下来逐一分析本人见解:
一、可行性分析:顾名思义,就是看项目究竟“能不能做”。有3个方面:技术可行性、经济可行性和操作可行性。要确定项目,首先要客观的、科学的了解项目的规模、难度和时间限制,才可以确定应该投入多少人力、物力和财力去做这个项目,必须准确的估计项目的规模与难度。看项目是否有价值去做,如果没有价值,就放弃;如果有价值,就要看目前的资源是否能满足项目的开发。如果项目有价值,且有必需的资源,那么就可以确定能做这个项目了。
二、需求分析阶段:解决“做什么、不做什么”的问题。围绕两个核心问题开展需求分析:应该了解什么?通过什么方式去了解?
一、了解什么:应该先了解宏观的问题,再了解细节的问题。最好为每个需求注释“为什么”,这样可以让程序员了解需求的本质,以便选用最合适的技术来实现此需求。同时,需求说明不可有额二义性,更不能前后矛盾,如果有二义性货前后相矛盾,则要重新分析此需求。然后,选择合适的生存周期,建立合适的需求模型;
二、通过什么方式去了解:直接与客户交谈;有些需求客户讲不清楚,分析人员又猜不透,这是就要请教行家。需求分析是非常重要的阶段,如果做不好 的话,后果很麻烦。
三、概要设计:解决“怎么做”的问题。将需求描述的“做什么”问题变为一个实施方案的创造性过程,使得整个项目在逻辑上和物理上能够得意实现。概要设计是第一个开发活动,也是最重要的活动,是软件项目实现的关键阶段。设计质量的高低直接决定了软件项目的成败,缺乏或者没有软件设计的过程会产生一个不稳定的、甚至是失败的软件系统。一个良好的软件设计是进行快速软件开发的根本,没有良好的设计,会将时间花在不断的调试上,无法添加新功能,修改时间越来越长,随着给程序打上一个有一个的补丁,新的功能需要更多的代码实现,就变成一个恶性循环了。概要设计是软件设计级别中的高级设计,是从需求出发,描述了总体上系统架构应该包含的要素。概要设计尽可能模块化,因此描述了各个模块之间的关联,主要是根据需求规格或规格定义,合理、有效地实现产品规格中定义的各项需求,完成软件模块的划分并描述模块之间的关系,并不断分解系统模块,从高层分解到低层分解。它注重框架设计、总体结构设计、数据库设计、接口设计、网络环境设计等,将产品分割成一些可以独立设计和实现的部分并保证各个部分可以和谐的工作。此过程中画数据流图、IPO图、E-R图、界面设计等。
四、详细设计:解决“具体做什么”的问题,将解决问题的办法进行具体化。软件设计的低级设计,亦即详细设计,主要描述实现各个模块的算法和数据结构以及用特定计算机语言实现的初步描述,是针对程序开发部分来说的,但这个阶段不是真正编写程序,而是设计
出程序的详细规格说明,这种规格说明类似于其他工程领域中工程师经常使用的工程蓝图,程序员根据其中所包含的必要的细节写出实际的程序代码。用另一种方式说就是,详细设计是将概要设计的框架内容具体化、明细化,将概要设计转化为 可以操作的软件模型,但在实际项目进行过程中,依据项目的具体情况和项目要求,这个过程可能可以省略(逻辑上没有省略,表现在概要设计阶段或者编码阶段),直接按照概要设计进行编码;不过,个人认为最好有,有详细设计可以更好的保证编码顺利的进行,可以预先扫清编码过程中的障碍,提高代码的质量和编码的效率。主要包括模块描述、算法描述、数据描述,可以采用图形、表格或者文字描述等方式表达出来。
五、编码:实现项目。由项目的概要设计和详细设计,将设计变为代码需要通过编码过程来完成。实现设计有很多种选择,有很多实现语言、工具等可供选择,但一般而言,在设计中会直接或间接地确定了实现语言。编码过程的一个主要标准时变成与设计的对应性和统一性。如果编码没有按设计的要求进行,设计就失去意义了。设计过程中的算法、功能、接口、数据结构都应该在编码过程中体现。如果需求发生变更,设计业对应地发生变更,同时代码也应该一致地发生变更,这可以通过配置管理配置控制。可见,如果编码和设计不一致,很容易“跑偏”,走火入魔。编码时要严格遵循编码标准和规范,并提供必要的程序注释,增加可读性。另一个就是重构的理解,所谓重构是对软件内部的一种调整,目的是在不改变软件基本功能和性能的前提下,提高其可理解性,降低成本,当添加功能、修改代码和复查
代码的时候,更不要错过重构,另外,重构可以和设计互补。还有一点值得注意,要在必要的时候部署编码文档。
六、测试:看软件是否符合标准。软件编码完成之后,将软件提交给用户之前,需要对软件进行测试,这是保证软件产品质量的一个重要标准,也是评估产品质量的主要手段。软件测试是从软件工程中演化出来的一个分支,有着非常广泛的内容,并且随着软件产业的发展,它已经变得越来越重要。软件与生俱来就可能存在缺陷,为了防止和减少这些可能存在的缺陷,进行软件测试是有必要的,测试是最有效的的排错和防止缺陷和故障的手段。最原始的测试莫过于直接运行软件了,后来测试手段逐渐多样化。测试手段有静态测试、动态测试面向对象的测试、自动化测试等等之分。静态测试或称静态分析是指一种不通过执行程序来进行测试的一种技术,主要是检查软件的表示和描述是否一致,覆盖程序的编码格式、程序语法、检查独立语句的结构和使用等,主要包括代码检查、静态结构分析、代码质量等等,可以通过人工进行,亦可借助工具(如:语法分析器)自动进行。动态测试是运行被测试的程序,通过输入测试用例,对其运行情况进行分析,以达到检测的目的,显然动态测试封像我们通常意义上的“测试”。动态测试主要包括白盒测试、黑盒测试、灰盒测试(介于黑盒和白盒之间)。其他测试不再一一介绍。
七、提交与维护:测试完之后,就要把软件交给用户使用了。提交不是剪裁,给人家就行了,还要教会客户怎么使用这个系统。如果用户不会使用系统,就会不满意系统的性能,那之前的努力就白费了,打水漂了。为了保证成功地将我们开发的软件提交给用户,我们需要对用户进行培训,同时提交必要的文档及用户手册软件。维护就不用多说了,就是售后服务了。维护需要分析人员、编码人员和设计人员等角色的参与,有纠错行维护、适应性维护、完善性维护、预防性维护等。维护后,要写软件维护过程文档,至少提交一个软件维护记录。
以上是软件工程及其几个阶段的介绍,知道怎样开发软件只是软件工程的一部分,搞好团队合作也是很重要的。项目是一个很大的工程,需要一个团队的统筹规划,团结协作,集思广益,举一反三,才能够按预期完成。
第二篇:软件工程心得
学习软件工程这门课程已经有一个学期了,整一个学期下来,应该说还是有许多值得肯定的地方的,其实在我看来,软件工程与其说是一门课程,不如说是一门思想。是一个如何去分析和处理问题的过程,应该说其范畴已经远远不止局限于该门课程,成为了一个综合的一个能够解决问题的思想集合。
在上课的时候我还是很认真地去听老师所讲述的内容的,我觉得他的思想和我一向而来的培养计算机学生综合素质的理解还是在一定程度上不谋而合了,所谓的需求获取,那就是一个谈判,辩论,交流的过程,已经不是单纯的编编程序就能解决的问题了。从我所看到的听到的来说,我最怕的就是计算机系的学生被别人说成是个带着厚眼镜的,只能够在电脑前编编程序的,在交际场上不知道说什么而一个字都说不出来的人。我觉得这样的人进入社会之后是没有什么前途的,起码他们缺乏了与人沟通交流的能力。而这门课程在一定程度上给了我们这些学生一个机会来锻炼自己在另一方面的能力,设想一下,一个又有技术又能够与人交流合作的人所取得的成就自然要比一个单单只会编程序的人要大得多。
其次,这门课程教给了我们在完成一个实际项目时的一般程序及过程,我认为这是一份非常具有实际意义的教学内容。当我们在毕业之后,这是我们实际要运用的一项非常有用的技能,而且不仅仅局限于软件工程的范畴,我们即使是从事与其它行业,不也是要从需求获取开始,一直有条有理地到最后成品的出炉吗?应该说这就是这门课的价值所在。无论是在上课,还是在学生会里面做学生工作,我都深深地感觉到,技术性的工作就好比变魔术,其实原理是非常简单的,甚至可以说简单的可笑,但是当你就是做出这么一个简单的东西出来之后,一些外行们有时候会用崇拜的眼光看着你,觉得你很厉害,很高深莫测。但是制作的过程他们却不知道,也许知道之后他们只是会哑然失笑,原来这个东西的制作过程是如此的简单。这个可以说就是技术的魅力了,而作为需求获取及之后的一系列过程则是类似于魔术揭秘的过程,但是作为这个秘密我们并不需要一揭到底,至于揭的程度如何那就是我们那就是我们学出的程度如何了,我们要让对方知道我们在做什么?以及如何去做?这些东西需要我们以一定的技巧叙述出来,所起到的作用就是能够让对方了解自己的进度,却又能够不让对方来干涉自己的工作过程。因为我们是技术员,对方只是外行,即使对方知道了这个魔术的操作过程,也并不代表他们就能够向变着魔术的我们来随便修改这个魔术的变法,况且我们能够用不同的过程来得出一个同样的结果,这个过程的得出的主动权如何掌握在我们的手上,就看我们如何以高明的方式来揭开这个魔术的谜底了。
当然了,在纯粹的理论上,我觉得开设这样一门课程是很成功的。但是毕竟现实里有太多的不确定的因素。最重要的因素就是授课的老师和听课的学生。这两个可以说是这门课成与败的决定性的因素。
作为老师方面来说,我觉得给我们上试验课的老师非常的优秀,作为一名了有十几年工作经验的老船长,看问题的确是有他自己独特的一套方法,我的话对他也是非常崇拜的。但是周日晚上的课程我还是有比较大的意见,首先,作为学生来说,最不希望上课的时间就是周五的晚上和周日的晚上,因为这是个我们进行调整的时候,前者的调整是为了假期的到来,后者的调整是为了准备学习的开始,这个时候的上课一般来说都是学生比较反感的。其次,对于我来说,原来小的时候非常崇拜那些有着高学历的人才,什么硕士,博士,博士后都是被放在神坛上的人物,觉得他们很厉害,走路都会散发光环。但是在我上了他们这些人的课之后我发觉我真的是很失望。作为一个具有高学历的人来说,他能够自己迅速的吸收知识这点的确是令人敬佩,但是他能不能够把自身所吸收的知识传授给他的学生,那就是一个未知之数了,虽然的确这是一门枯燥的课程,但是并不代表老师就可以在讲台上讲课没有一点激情,或者说没有一点能够让我们想听下去的欲望,这个不得不说是一件非常讽刺的事情。子不教,父之过;教不严,师之惰。虽然学生们也有一部分的责任,但是把一切责任都推到学生们的身上那也是非常的不公平的。
作为我们学生来说,当然也应该负起比较主要的责任。在大学里有了太多的基础课程,基础课程大多都比较枯燥无味,也许在第一个学期里我们还能够保持着新鲜感,但是在5个学期之后,可以说再有新鲜感就是一件比较困难的事情了,我们都已经开始变得迟钝了,现在出现了一门新鲜的课程,可能同学们比较难把那样不好的状态一下子改变过来。其次的,学生们没有认识到这门课程的价值。这门课的价值我已经在上面说过了,是不言而喻的。但是并不是每个同学毕业之后都回从事计算机行业,也不是每个同学都知道这门课程的意义已经不仅仅局限于计算机这个范畴,但是他们不知道,无知者无畏也。既然和我没什么关系,那我就不听,反正听了也没什么用,很多同学报着的就是这么个心态。对于这样的心态,我表示理解,也表示悲哀。在没有彻底了解一件事物的本质之前,我们是没有资格向这件事物随便的指手画脚的。最怕的就是在没有了解之前就把这件事物否定。如果有了这样先入为主的思想,那就比较没救了。所以作为我们来说,还是更需要得深入了解下这门课所起到的作用之后再下结论也不迟。只是有一点我还是觉得比较奇怪,现在被人嗤之以鼻的传销在当时能够吸引如此大的一批人,而且那些受害者明知道这件事情是不好的但是还会去做,就是因为“洗脑者”的口才说服了他们,那作为老师来说,如何来说服学生们来上一门正确的课程应该说是要相对的容易很多吧,但是我觉得这样的过程在我们的大学课程里真的是少之又少啊。今天在这里写了很多,算是我对软件工程这门课程的一点点心得体会,也许是正确的,也许在一定的程度上存在着观点的偏激错误,但是起码这些东西是我觉得存在着的一些问题,但愿软件工程这门课程能够开的越来越好,让更多的学生们能够从这门课程中受益,在以后社会残酷的竞争之中存活下来!
第三篇:软件工程实践报告
软件工程实践报告
软件工程实践报告1
实践单位:山西西太行信息有限公司
实践时间: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,同时我也学到了一些课堂上学不到得东西,对外面的市场的情况也有了更深刻的了解。
(b)实践过程:xx年7月1日到xx年7月31日是我正式暑假实践的时间段,我们一行十六个人,大三的十一人大二的六人。我们被分了两个小组,每个小组八个人,上课时间一般是下午两点到五点半或者下午五点半到晚上八点半,其余的时间是我们自己写代码的时间。每天的任务量都有所不同,有时候把自己的任务做完了剩下的时间就自由支配。这一个月我们的主要任务是做一个腾讯微博android手机客户端,每天陈老师都会给我们传授一些做软件的经验和一些新的知识点,然后我们根据具体的要求编写文档,编写代码,第二天交由陈老师点评。
(1)可恶的文档:刚开始的时候感觉很不适应,以前上课就是学习关于编程的知识,但是做项目的第一天陈老师要求我们写文档,我们用的是GB8568—88格式的文档,第一次写即感觉很枯燥又感觉不会写。对于写文档我们都有想通的反应,就是莫名奇妙的反感,但是陈老师还是不依不饶的要求我们写要我们查资料,我们也很没办法只能按照要求写文档。但是由于我们不知道在文档上写些什么,陈老师看我们很为难也有所让步,带领我们写了软件需求说明书,后来我们依次写了概要设计说明书、详细设计说明书,后来又写了测试计划、用户手册。当时的感觉就是知道的知识太少,对着文档一个词一个词的硬挤,但是当文档写完的时候还是很有成就感的。其实在写文档的过程中我们也渐渐的明白了文档的重要性,我们只是在学校编写程序的时间久了习惯了上来就写代码的坏习惯,忽略了软件工程中的很重要的部分-----分析阶段和设计阶段。可能是因为以前做的软件都很小,一旦项目稍微大一点,那在编写代码阶段将付出不可估量的代价甚至最终将以失败告终。其实我们都学过软件工程,而且在考试的时候成绩还不是很差,但是到真正需要这些知识的时候我感觉却忘记了如何下手,这也就是所谓的纸上谈兵吧,所以我感觉大学生缺少的正是一种动手能力。知识本身没有价值,有价值的是运用知识解决问题。
(2)该死的bug:写完文档感觉写代码就轻松了,但是事与愿违啊。由于以前没做过开放平台的客户端,中间涉及到同腾讯公司微博开放平台接洽的问题,开始真的很不适应,不知道怎么下手。当知道下手的时候不免出现了各种各样的bug:腾讯服务器故障啦、实验室断网啦、模拟器连不上网啦、代码错误啦等等。为了弄好这些bug有时真是忙的焦头烂额,因为可能因为自己写的代码有问题导致大家的代码都不能运行,作为团队的一员谁都不想拖后腿。但有时候我也找不到问题所在,只能请高手指教或者找老师为我排忧解难。只可惜我当时掌握的排错方式只有打印输出和查看日志,根本没接触过单元测试。其实多遇到一些bug还真不是坏事情,我现在开始明白编写代码最重要的是快速查找资料和排除错误的能力。首先我们不可能记住java语言或者android操作系统中所有的类和方法,所以能够快速找到我们所需要功能的类或者方法是很重要的。其次对于程序工作者来说遇到bug是很正常的事情,遇到不能解决的问题也是很常见的,重要的是能够正确的处理这些问题,并总结经验为以后的开发做好铺垫。遇到问题是要保持好的心态,千万不能焦躁,细心的一点点的分析问题,必的时候可以去网络上查找一些资料。但是不要遇到问题就上网查找,我感觉现在自己动手处理题很重要,上网查与吃现成饭没有本质的区别。网络可以帮我们开阔视野,但不要让网络阻碍了我们自我发展的机会。编写软件过程中要及时记录,这既可以让我们总结更多的经验,也可以为后来者提供一些宝贵的资料。毕竟都有成长的时候。
(3)痛苦的合并:这是我第一次这么正式的和这么多的人一起开发软件,更何况还有不认识的人在一个组,这给我们的沟通带来了很大的不便,尤其是最后代码合并的时候,很多的问题都一拥而上。我们当时用了一个软件visualSVN,这是一款团队开发的软件,当代码写的可以组合的时候我们就用这个软件在eclipse下共同开发。但开始的时候我们也会为了自己的代码正确而被迫修改别人的代码,最后弄得大家的代码不能够正确的运行,然后所有人都会停下来共同寻找错误,改正错误。这是团队开发时候很忌讳的问题,并且大家还都不好意思开口说谁错了,毕竟都不是很熟悉。直到大家开始慢慢适应这种团队开发之后,这样的情况才慢慢的被避免,效率也有所提高。这次的团队开发让我明白,在团队开发中根本不存在自我,你所做的任何事情都应从整个团队出发,以团队的利益为重,不能自私。尤其是在团队中千万不能应付,你的应付很可能会给他人带来很多不便,甚至造成更大的损失。因此teamwork很重要,必须谨慎!
(4)唉,完美:每次写完代码让陈老师点评都会发现很多问题,有时候是代码冗余度太大,有时候时代码不够安全,有时候是技术上不是很完善。对我们来说目标就是编写的软件能用,只要大家写的软件合并后能够正常运行,一切就ok了。但是这些是远远不够的,面向对象的思想和软件工程的一些常识我们都没涉及到,异步加载图片在陈老师讲之前我们也从来没有想到过,这些问题让我深深的体会到我们的创新能力的要求远远不够,我们对完美的渴求度远远不够。没有最好,只有更好。这句话真是非常经典,作为软件开发者永远没有标准答案,没有最好的软件,只有不断的学习不断的追求才能发现好的东西,找到更好的创意。虽然最后腾讯微博客户端能够成功的运行了,但是我意识到我所掌握的知识远远不够,在这个实践中却是暴露了很多的问题。但愿天天能做到更好!
三、实践总结:
1、一个假期结束了,留下了很多的回忆,因为这个暑假是很有意义的。在这三十一天里每天都学到了新的知识,每天都遇到了新的问题,每天都在进步这,也让我有时间更加清晰的认识了软件工程这门课程和设计模式在软件开发中的重要性,编写代码知识软件开发的一小部分,只有真正的这种开发才能体会到软件工程的意义。
2、团队的凝聚力关系着每一个软件开发人员的发展前途,每一个人的努力都会得到回报,同样一个人的失误也会影响到整个团队,因此正确处理好人际关系是很重要的。
3、注重产品的价值,做好市场调研是成败的决定性因素。4、掌握好一门技术你可以吃饱,但是你要想很富有,必须懂得很多。队友可以帮助你一时帮不了一世,要注重个人能力发展!
软件工程实践报告2
一、实习目的
这次实习的目的是提高我的专业技能、实践能力,让我了解一些实际的工作情况。正式工作前对我意义重大。在实践中对专业技能、综合素质、人际关系有更深的体会,这给了我正式工作前的宝贵经验。
这次实习的主要任务是了解整个软件制作流程,以及各个环节的细节。学完这些环节,就可以用学到的知识去完成一个公司安排的项目。我分配的项目名称是诊所管理系统。我们将以小组的形式共同完成这个项目,模拟实际的软件制作过程,最大限度地将学到的知识转化为实践能力。为真正的项目做好充分的准备,这样实习后才能在正式工作中面对。
公司的最终目的是希望能了解实际的项目制作,初步了解各个环节的意义。让我们将项目用于实际生产,这样我们可以更好地理解项目生产中每个过程的意义,以及团队在项目生产过程中是如何合作的。
二、实习单位和岗位
我的实习单位是埃森哲信息技术(大连)有限公司软件开发部,校企合作。该部门的主要职能是外包服务工作,根据客户需求制作相应的软件。因此,我们需要熟悉整个软件开发过程,这样才能处理客户的各种问题,做出更好的软件来满足客户的需求。
因为实习的原因,我的职位是软件助理工程师。具体的时间安排是实际的项目制作和专业知识的学习。实习时间8周。本来实习的地方是在公司。后来因为公司内部原因,我们实习的地方改成了学校内部实习,每天的时间和正式工作一样。上午8点和5点,每周六周日休息。
整个实习的实际过程前面已经讲过了,包括八周的实际项目制作和专业知识学习。具体每周任务、实际工作内容、专业知识和技能的实际应用会根据不同环节而有所不同。但总体目标是让我们了解实际工作中的软件生产流程,以及每个流程需要的技术和注意点,让我们用实际的项目去实践。
三、实习过程
整个实习的任务和目的上面已经介绍过了。下面将详细介绍整个实习过程,并详细讲解每个过程的细节。
具体时间安排如下:
第一周:这个项目需要的知识将被集中整理和复习。巩固一些不熟悉的知识,以防项目出现意外需求。实习的第一天,企业的经理向我们详细解释了软件工程科学对软件生产的重要性,并在此基础上给了我们大致的实习过程。
第二周:直接进行项目的需求分析。因为已经给出了项目名称,可行性分析就取消了。分配给我们小组的项目是“门诊管理系统”,去诊所实地调查是必然的。在实际调研过程中发现,需求分析的过程非常非常重要,需求分析文档的制作决定了项目的各项功能以及软件是否满足用户的需求。本周的收获是软件需求分析的文档化,这是软件工程中非常重要的一步,这个环节是整个软件生成过程中最重要、最关键的一环。
第三周:这一周由于临时变动,将概要设计和详细设计合并成一周。根据调查结果,进行概要设计。因为是第一次制作软件概要分析文档,所以有很多不规范的地方,比如数据流图的制作,很多小细节都忽略了,所以像这样的问题还是很多的。但这些问题经过组员的积极讨论和修改,以及老师的指导,都得到了解决。然后,根据概要设计,进行软件的详细设计。详细设计相比于概要设计能感觉简单一点,不知道感觉对不对。因为在概要设计模块中,我们已经设计了需要实现的模块、接口、类、函数,所以我们只需要考虑每个类的函数都可以用代码来实现,而不是写在代码上,而是用流程图、伪代码等相关技术来表达。正式的编码在这个阶段生产完成时开始。到目前为止,准备工作终于完成了,差不多花了我们一半的实习时间。这一周的时间,我们不知不觉就在忙碌中度过了!下周我们将进入这个项目的实际编码,这也是我们最熟悉的地方。感觉终于有地方投稿了,期待下周的到来。
第四周:根据详细设计对项目进行编码。本周,我们进行了实际的编码。我最大的感受就是按照详细设计的编码很清晰,伪代码等转换过程可能有点困难。和我们过去直接编码相比,流畅度不言而喻。
第五周:这周本来是要测试的,但是编码后企业老师指出了很多问题,说我们写的代码太粗糙了,要小心处理代码,把测试推到下周。这一周我们受益匪浅,对代码标注和编码格式有了更深入的了解。
第六周:根据完成的项目测试项目。这一周是软件测试,分为几个阶段,从最基础一节课内的方法测试到整个项目的综合测试。与之前的测试不同,这次我们先写测试文档,待测试文档通过检验后,再逐步测试文档。我想,这可能是我们未来工作的大方向,基于文档的项目制作。因为测试文档的制作进度太慢,我们这周忙于测试文档的制作,其他什么都没做,所以测试只能等到下周。我希望下周的考试会很有效率。期待尝试一下,感觉很想拿着测试文档测试一下。
第七周:拿着测试文档,按照上述要求逐一测试,确认项目的正确性。顺利的考试让我精神焕发。拿着测试文档直接查代码就行了。几乎没有必要考虑程序内部的测试流程,因为文档已经为你写得很清楚了。在这里,我有一种感觉,在埃森哲这样的大公司,文档的重要性比编码本身更重要。我想这就是为什么企业派来的老师没有直接给我们技术培训,而是让我们了解软件工程的流程。当然,根据企业文化的不同,软件工程的生命周期也会有细微的差异。他们会选择最适合自己公司的方法进行整个软件生命周期,而不是一成不变的。
第八周:这一周,我们没有任何与技术相关的任务,只需要准备个人演示。但是不要小看这个人的发挥,因为他会占你整个实习成绩的50%,这是本周一企业老师告诉我们的。我们之前都不知道有实习结果。项目总结,我们会花一个星期的时间总结整个实习的收获,这个星期的周五呈现自己,汇报收获。至此,实习生涯就告一段落。这一周,我们从收获、总结、经验等方面对整个实习的精髓进行了思考、沉淀、总结、提炼。基于PPT,我们进行了10分钟的个人陈述和项目答辩。在这方面,我们的实习彻底结束了。
四、实习总结
我们的实习结束了,但我们的人生还没有结束。对于我们这些没有毕业的人来说,这次实习可以用四个很有意义的字来形容。他不仅巩固和拓展了我们的专业知识;也扩大了我们作为软件开发人员的视野,让我们知道了很多软件开发这个职业应该注意的细节;更重要的是,让我们体验软件工程学对于一个软件的意义。这些经历对我们来说是宝贵的财富。经过8周的实习,在我们所有人的共同努力下,我们都完成了各自的任务,但我想说的是,我们不仅完成了任务,还满载而归:
项目的制作和难题的解决,会让我们熟悉大学即将遗忘的知识,对代码有更深的理解。代码的重用,类与类之间的调用,对象的创建,数据库的连接以及各种专业知识的使用,让我们能够更好的将这些各种知识合理的整合在一起。
如果专业知识收获很多,那么下面的专业技能就是整个实习过程中最大的收获。我很少关注代码的标注和编码的规范,也没有太多关注。但这一次,我意识到了他的重要性:这是一个软件开发人员必须具备的能力,或者说应该特别注意的能力。因为我们的代码没有太多的注释,很多地方的编码很不规范,企业老师宁愿让我们多花一周时间修改,也不急于下一次测试。在这一周的复习中,通过自己的经历和老师的强调,对代码编码规范和代码标注有了更深入的了解。通过这次实习,个人认为代码标注和编码规范比个人技能更重要。
这次实习的最终目的是希望能够了解软件生产的全过程,也就是软件工程的科学。这次实习,中间做文档的时间大概是编码的几倍,甚至因为我们的修改,编码时间也只有两周,而其他大部分时间都在做文档。个人觉得进公司后,文档制作比个人技能更重要。因为有了文档,我们的项目制作非常流畅,规定非常明确,逻辑非常流畅。这些文档在做软件的过程中起着重要的作用,所以我觉得软件工程可能是我未来的方向。
最后,总结一下这段时间实习的收获,真的让我受益匪浅。实习期间不仅学到了技术上的收获,还学到了生活中的人际交往以及很多其他的经验。这些都将作为我进入社会的基础。我会以此为基础,以一颗勇敢无畏的心迎接即将到来的工作。
动词(verb的缩写)实习经历
这次实习给了我深刻的体会,不仅是专业上的收获,还有团队之间的合作,让我明白了团队的意义。工作快到了,期待工作的到来。我会努力把学到的知识运用到实际工作中,迎接一个又一个挑战。前面的路上会有很多困难等着我,但我并不害怕,因为我坚信,只要我努力,我最终会克服这些困难。路就在我脚下,我会带着坚定的信念前进,不怕挫折!
软件工程实践报告3
一、实习目的
这次实习的目的是为了提高我的专业技能、实践能力、以及让我了解一些实际的工作情况。对我在正式工作前有很重要的意义,不论是专业技能,还是综合素质,以及实际中的人际关系都有了更加深刻的体会,让我在正式工作前有了一笔很珍贵的经验。
这次实习的主要任务就是在了解整个软件的制作过程,以及各个环节中的细节,当学会了这些环节后,再用学到的知识来完成一个公司给我们安排的一个项目。我分到的项目名称是《诊所管理系统》,这个项目我们将以小组的形式共同将其完成,以模拟实际软件制作的过程,尽最大程度的将我们所学到的知识转化成实际的能力。为真正的项目做好充分的准备,让我们可以在实习过后的正式工作中,有准备的去面对。
公司的最终目的就是希望我们能了解实际项目的制作,并初步的理解各个环节的意义。而让我们用项目进行实际制作就是为了让我们能更好的理解项目制作中各个流程的意义以及项目制作过程中的团队是如何合作的。
二、实习单位及岗位
我所实习的单位是校企合作埃森哲信息技术(大连)有限公司的.软件开发部。这个部门的主要职能就是外包服务工作,按照客户的需求制作成相应的软件,所以我们需要对整个软件开发的过程都较熟悉,这样才能应对客户们各种各样的问题,才能制作出更好的软件以满足客户们的需求。
因为刚实习的原因,所以我的职位是软件助理工程师,时间的具体安排是实际项目制作以及专业知识的学习,实习时间为8个星期。本来实习的地点是在公司的,后来因为公司的内部原因,将我们的实习地点改为学校内部实习,每天的时间和正式上班相同。早8晚5,每周六周日休息。
整个实习的实际流程前面已经说过,八周的实际项目制作以及专业知识的学习。具体的每周任务、实际工作内容、以及专业知识与专业技能的实际应用会根据不同的环节也有所不同。但总体的目标就是让我们了解实际工作中软件的制作流程,以及各个流程中所需要的技术和注意点,并用实际的项目让我们进行练习。
三、实习过程
上面已经介绍了个整个实习的任务以及目的,下面将详细介绍整个实习的流程,并对每个流程的细节加以详细说明。
具体的时间安排如下:
第一周:将对该项目所需要的知识进行集体巩固复习。将一些已经生疏的知识巩固巩固,以备项目中的不时之需。在实习的第一天企业的经理就详细的给我们讲解了软件工程这门科学对于一个软件制作的重要性,并以此为基本给我们定下了这次实习的大体实习流程。
第二周:将直接进行项目的需求分析。因为项目名称已经给出,所以将去掉可行性分析。我们小组分到的项目是“诊所管理系统”,这就免不了去诊所实地调查了。实际调查的过程中发现,需求分析这个过程是非常非常的重要,需求分析文档的制作,决定了项目的各个功能以及这个软件是否符合用户的需求。这一周的收获就是软件需求分析的文档制作,这是软件工程中非常重要的一个步骤,这一环节,是一整个软件生成的最为重要和关键的环节。
第三周:这一周由于临时变动,将概要设计和详细设计合为一周制作。根据调查的结果,进行概要设计。由于是初次制作软件概要分析的文档,所有有很多不符合规定的地方,就比如数据流图的制作,很多小的细节都没有注意,像这样的问题还有很多。不过,在经过了小组成员的积极讨论修改以及老师的指导后,这些问题都得以解决。接下来,根据概要设计,来制作软件的详细设计。详细设计的制作,相对于概要设计,感觉能稍微简单些,也不知道感觉对不对。因为在概要设计模块中,我们已经设计好了所需要的模块、接口、类、以及所要实现的功能,所以我们只需要考虑每个类的功能如果用代码实现就可以了,当然不是将代码写上去,而是用流程图以及伪代码之类的相关技术来表示。这个阶段的制作完成就开始正式的编码了。到此为止,准备工作总算是做完了,几乎花费了我们实习的一半时间。这一周的时间,我们在忙碌中不知不觉的度过了!下一周就会进入到该项目的实际编码当中,这也是我们大家最熟悉的地方了,感觉总算有地方出力了,期待着下一周的到来。
第四周:根据详细设计,来进行项目的编码。这一周,我们进行实际的编码,我最大的感觉就是,照着详细设计去进行编码,思路以及逻辑非常的清晰,可能在将流程如以及伪代码转换时稍微有点费劲,当相对于以往我们的直接编码而言,流畅度不言而明。
第五周:这一周本来是要进行测试的,但在编码完后企业老师检查的时候,给我们指出了很多的问题,说我们所写的代码太粗糙,所以我们只能对代码进行细致的加工,把测试推到了下周来进行。这一周,让我们受益匪浅,对代码的注释以及编码格式都有了更加深刻的理解。
第六周:根据做完的项目,进行项目的测试。本周就是对软件进行测试,从最基本的类之内的方法测试,一直到整个项目的综合测试,分了好几个阶段。而区分于以往的测试不同,这次我们是先写测试文档,当测试文档检查合格后,我们才可以对着文档进行逐步测试。我想,这可能就是我们以后工作的大体方向吧,以文档为主的项目制作。由于测试文档的制作进度太慢,所以本周就忙测试文檔的制作了一样了,其它的什么也没干,测试也只能等下周进行了。希望下周测试的时候效率会很高,期待的试一次,拿着测试文档去测试的感觉。
第七周:拿着测试文档,根据上面的要求,一项一项的测试,以确认项目的正确性。测试的顺利让我有了爽快的感觉,拿着测试文档,直接去校验代码就可以了。几乎不用去想程序内部的测试流程,因为文档上已经给你写的明明白白了。到这里,我有一种感觉,像埃森哲这种大公司内,文档的重要性比编码本身更为重要。我想,这就是企业派来的老师没有直接给我们进行技术培训,而是让我们来了解软件工程的流程的原因。当然,根据企业的文化不同,对软件工程的生命周期也会有细微的差别,他们会选择最适合自己公司的方法来进行整个软件的生命周期,并不是一成不变的。
第八周:这一周,我们没有跟技术相关的任务,只要好好准备准备个人展示就可以了。但你可千万不要小瞧这个人展示,因为他将占你整个实习成绩的50%,这也是企业老师在本周周一时才告诉我们的,我们之前根本就不知道还有实习成绩这一说。项目总结,我们将用一周的时间来总结整个实习的收获,在本周的周五进行自我展示,以及收获报告。至此,实习的生涯将会到此结束。这一周,我们思考着、沉淀着、总结着,将我们对整个实习的收获、总结、体会等各个方面进行了精华的提炼,以PPT为基础,进行为期10分钟的个人展示以及项目答辩。就此,我们的实习画上了完整的句号。
四、实习总结
我们的实习已经结束,但生活却没有结束,这一次的实习,对于我们这帮还没有毕业的学生来说可以用意义重大四个字来形容。他不仅仅对我们的专业知识进行了巩固和拓展;还对我们作为软件开发人员的视野进行了增大,让我们了解了很多软件开发这个职业应该注意的一些细节;更是让我们亲身体会了软件工程这门科学对于一个软件的意义。这些经验对我们来说就是一笔宝贵的财富。而经过了8周的实习,在大家的共同努力下,也都完成了各自的任务,但我想说的是,我们并不仅仅是完成了任务,我们更是个个满载而归:
项目的制作以及疑难问题的解决,将我们把大学期间那些快要淡忘的知识又重新熟悉了起来,并且对代码有了更深层次的理解。代码的复用性、类与类之间的调用、对象的创建、数据库的连接以及操作等各种专业知识的使用,让我们能更好的将这些各种各样知识合理的整合在一起。
如果说专业知识收获颇多,那么接下来的职业技能却是我认为在整个实习过程中收获最大的地方。代码的注释以及编码的规范这两点是我以前很少注意的地方,对其也并没有多少重视。但这一次,却明白了他的重要性:这是作为一个软件开发人员必须应该具备的能力,或者说应该特别注重的地方。因为我们的代码并没有多少注释以及很多地方的编码很不规范,企业老师宁愿让我们多花一周的时间修改,也没有匆匆的进行下一步测试。在修改的这一周内,通过自己的体会以及老师的重点强调,对于代码的编码规范和代码的注释有了更深层次的理解。通过了这次的实习,我个人认为,代码的注释以及编码的规范比个人的技术更为重要。
这次实习的最终目的就是希望我们了解软件的整个制作过程,也就是软件工程这门科学。这一次的实习,中间的制作文档时间大约是编码的好几倍,编码的时间即使是因为我们修改的原因也只有两周,而其他的大部分时间就是制作文档。我个人猜想可能进公司后文档的制作比个人的技术更加重要。因为文档的原因,我们的项目制作,感到非常的流畅,条例非常的清晰,逻辑也很流畅。对于软件的制作,这些文档起了很重要的意义,所以觉得,软件工程也许就是自己以后努力的方向吧。
最后,总结这段时间的实习生活的收获,真的是使我受益匪浅。在实习中,我学习到了不仅仅是技术上的收获,更还有生活中的的人际交往以及其他的许多经验。而这些,都将作为我迈入社会的根本,我将以此为我的基础,怀着一颗勇敢无畏的心去迎接我即将来临的工作。
五、实习体会
这一次的实习,给了我很深刻的体会,不仅仅是专业的收获,更还有团队间的相互合作,这些让我明白了团队的意义。工作即将来临,我期待着工作的到来,我将带着这次实习的收获,尽量的将学到的知识运用到实际工作中,去迎接一个又一个的挑战。前方的路会有很多困难等着我,但我不怕,因为我坚信,只要我努力,终会克服这些困难。路就在脚下,我将带着坚定的信念,不畏挫折,勇往直前!
第四篇:软件工程实践学习心得
软件工程实践学习心得
这学期学习了软件工程实践这门课,我觉得这是对上学期的软件工程课程学习的检验,上学期学习软件工程只是我们浅显的认识,相比之下,这学期就更加全面的说明了开发一个项目所需要的步骤以及开发项目过程中所需要注意的诸多细节。如果说上学期的课程注重理论基础的话,那么这学期的软工实践,顾名思义,就是侧重我们动手操作的能力。
原来我认为开发一个项目最重要的就是写代码,似乎整个软件都是编代码,因为自己动手能力不强所以就很排斥做项目。可是经过我们学习软工课程到团队做项目再到学习软件工程实践课程之后,我才真正意识到实施一个软件工程项目并不是说简单的会编码就能够解决问题的,因为一个软件的生命周期分为三个时期:软件定义时期、开发时期、维护时期,而这三个时期整体又分为七个阶段,他们分别是:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试,由此可看出,当我们开发一个项目时,更多的精力不是放在编码上,编码只是一个很小的模块,而是项目的整体结构上。
在写软工实践体会之前,我想在这里总结一下上学期三人团队做 项目的相关事宜。上学期我们三人团队根据软件开发的步骤开发一个名为“西大老乡‘荟’”的社交系统,主要是为西大学子提供一个找老乡的平台。虽然只进行到详细设计阶段,没有进一步实现,但是我还是从中学到很多东西的。首先要先确定项目主题,也就是这个项目用来做什么,可以解决什么问题。接着就是这个项目是否有研究的必要以及是否有解决的办法,针对我们的项目,我们对西大的一些学生做了问卷调查,并从调查中继续完善系统本身的做用户。第三步根据我们确定的项目主题进行需求分析,这一步骤当时做的不是很好,比如所画E-R图、数据流图等都有考虑不周的问题,导致接下来的概要设计、详细设计进行的很困难,有些步骤甚至还需要返工。
从我们在需求分析中出现的问题,使我们明白了软件定义阶段对于一个项目的开发是至关重要的,当软件定义阶段完成时必须要用正式的文档准确的地记录目标系统的需求。只有前期的准备工作做得好,后面的工作才能顺利进行。虽然项目最后没有完全实现,但是起码我们已经初步体会到软件项目开发的步骤,以及每一步所需要完成的文档等内容。
这学期的软件工程实践虽然不是亲自动手开发一个系统,但是张元平老师以“物联网物流仓储管理系统”为主给我们讲解了一个真实系统的开发过程,从计划到项目系统的发布实施,以及每一步必须生成的文档。我主要从以下五个方面谈一下我的心得体会。
第一、行业背景说明方面
对于一个软件系统的开发,第一步就是问题定义,了解所开发系统的行业背景,制定计划。当我们计划确定以后就要对项目系统本身进行可行性研究,主要从技术可行性、经济可行性和操作可行性三个方面着手。就比如《物联网物流仓库管理系统》的行业背景说明文档中非常详细地分析了当下物联网物流行业的整体业务说明、应用背景、未来发展趋势以及相关应用案例等四个方面,项目团队中系统分析员就可以根据这份文档以及相关的调查资料对将要开发系统的进行定义等工作。
原来我们写这类文档的时候就是草草了事,不会做得这么详细,而这次看到大型项目的行业背景说明也是这么详细,也让自己认识到不管是软件开发的那个阶段都要认真对待,这些琐碎的文档都是后期开发项目的支撑,只要它们做的透彻,后面的开发工作才能更顺利的进行。
第二、项目需求说明方面
这部分项目需求说明就是软件定义时期中需求分析阶段,而该阶段的主要目的就是了解用户的需要,根据用户的需要确定系统必须完成那些工作,并对目标系统提出完整、准确、清晰、具体的要求。在需求分析结束之前系统分析人员要写出一份需求规格说明,即为《物联网物流仓储管理系统》项目需求说明文档。我们可以看出该文档也是非常详细,相比之下我们之前做项目时写的需求规格说明书就非常 不合格,不仅格式不正确内容也是少之又少。
在这方面,这篇文档给我启发很大。首先就是文档的格式,要美观整齐,让人看着舒服方便。其次就是文档的内容,原来它不是很重要,写文档的时候也不知道怎么写就借鉴下网上的内容,结果根本就没有把自己项目的需求写明白,以至于自己最后都有些糊涂,所以根据以前的经验教训我会对这部分更加重视。
第三、系统概要设计方面
这部分内容分说的是软件设计时期的概要设计阶段,该阶段的主要目的就是实现系统的功能、设计软件的结构、模块组成以及模块之间的关系。在概要设计阶段,我们可以站在全局的高度上,花较少的成本,从抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的结构。在这个阶段还会具体画出E-R图、数据流图等方面的设计。
比如《物联网物流仓库管理系统》的系统概要设计从项目概述、设计约束、功能单元与功能模块设计、数据E-R图设计、总体设计、界面设计等六个方面介绍,通过读这个文档,我觉得最重要的还是总体设计,分别从逻辑架构设计、物理架构设计、技术架构设计设计系统。在这个阶段中模块要做到高内聚低耦合,这样开发出来的系统才会具有更高的独立性。
在原来做项目时没有编写过这类文档,在该阶段只是画了结构图、层次图以及相关的模块划分,对该类文档尚未重视。通过张老师的讲解和自己的学习,我相信在以后做项目的时候一定会注意到这类文档的编写。
第四、详细设计与分析方面
详细设计阶段就是把概要设计阶段的每个模块进一步设计,确定每个模块所需要的算法和数据结构。在这个阶段还是需要我们设计出程序的详细规格说明,而不是编写程序。在详细设计阶段,系统设计人员可以通过使用程序流程图、盒图、PAD图等过程设计的工具和Jackson图等面向数据结构的设计工具进一步设计系统相关接口,主要包括界面设计接口、业务单设计接口、单元模块设计接口等,这些对于以后的编码工作都是极其重要的。
第五、编码和测试方案方面
关于编码,我认为编码要想做的完美必备条件就是前面的软件定义和软件设计时期要按部就班的做,文档一定要按要求书写,不能偷懒也不能草草书写。对于编码也要有相应的文档书写规范,要使源程序代码的逻辑简明清晰、易读易懂。这样尽管我们不是设计系统的人员,当看到源程序代码的时候也能容易读懂代码的意思。
其次就是测试的内容,从测试的文档中我们可以得出,其实测试在软件开发中同样占据了重要的地位,它主要就是尽可能多的找到问题并排除其中的潜藏的错误,最终把一个高质量的软件系统交给用户 使用。它要求测试人员也要有很高的技术水平。
第五篇:软件工程实践
软件工程实践
实践总学时:20 面向专业和年级:计算机科学技术4年级
一、实践课程的性质、目的与任务
《软件工程》课程是本专业中实践性非常强的一门课程。本课程的目的是培养软件工程应用能力。软件工程实践是《软件工程》课程的后继教学环节,是一个重要的、不可或缺的实践环节。其目的是使学生能够针对具体软件工程项目,全面掌握软件工程管理、软件需求分析、软件设计、软件测试等阶段的方法和技术,通过该实践课程使学生进一步理解和掌握软件开发模型、软件生命周期、软件过程等理论在软件项目开发过程中的意义和作用,培养学生按照软件工程的原理、方法、技术、标准和规范,进行软件开发的能力,培养学生的合作意识和团队精神,培养学生对技术文档的编写能力,从而使学生提高软件工程的综合能力,提高软件项目的管理能力。
二、实践课程教学的基本要求
通过课程实践熟悉软件工程的原理、方法和技术,能全面、系统地应用所学的概念、原理和方法完成系统开发的规划、分析、设计和实施工作;掌握软件开发的过程和技术,以达到对本课程的综合知识的考察和基本技能技巧的运用,培养自己的独立操作能力和团队合作精神。
三、实践内容
××××软件系统的分析与设计
[实践类型]
综合设计型
[目的要求]
1、目的:将所学的软件工程理论知识应用于软件开发实践中去,做到学以致用。
2、要求:把小问题当作大任务来看待,一步一个脚印进行,从而积累开发大工程的经验和方法。各个阶段的文档完整、规范,建模工具使用得当。
[内容提要]
本课程的实践环节设计以实际应用中的小型题目为主(大纲后附有候选的项目列表供学生参考),要求学
生采用“项目小组”的形式,结合具体的开发项目进行设计。软件工程实践具体实施的要求如下:
1)每个班级按项目小组进行分组,每组人数在6人左右;
2)每个项目小组选出项目负责人或项目经理(项目经理适当加分),由项目经理召集项目组成员讨论、选定开发项目,项目的选定必须考虑“范围、期限、成本、人员、设备”等条件;项目经理负责完成“可行性研究报告”、制定“项目开发计划”、管理项目并根据项目进展情况对项目开发计划进行调整;对于调整的项目开发计划必须存档;
3)项目开发计划必须具备可行性,每项任务要落实到人且规定该任务的起止日期和时间;明确每个阶段提交文档的日期和时间;每个项目小组必须明确指定文档的审查小组和审查人员以及审查结果的返回日期;审查小组和审查人员不得是完成被审查内容的完成者;审查结果至少包括:存在的问题、出现问题的所在文档的位置及页码、具体建议等;每个阶段的审查结果不得少于6个问题;
4)每个项目小组必须按照给定的文档规范标准提供下列文档,文档中必须注明执笔者、完成者(签名)和完成日期,其中完成需求分析和设计工作的人员不能相同,完成编码和审查/测试的人员不能相同;文档包括:
1.可行性研究报告
2.项目开发计划(包括调整的项目开发计划)
3.需求分析规格说明
4.概要设计规格说明
5.详细设计规格说明
6.编码清单(部分或全部)
7.审查/测试问题清单
[主要仪器设备]
1.硬件设备:微机和打印机
2.操作系统:Windows 2k以上系统
3.图文排版:Microsoft Office 2K及其以上系统
4.软件开发工具:Microsoft Visual Studio、Borland Delphi 等
5.数据库系统:Microsoft SQL Server 等
6.建模工具软件:PowerDesigner或者ROSE
四、考核方法
软件工程实践环节的成绩不单独记分,仅作为《软件工程》课程成绩的20%--30%记入总成绩。实践环节结束,每个学生必须提交软件工程实践总结报告,教师根据每个同学的实践总结报告和在小组中提交的文档进行考核,时间允许的话可以加入实践报告的答辩环节。根据提交的实践报告和答辩的情况对每个同学划分为A、B、C、D、E五个等级。
五、主要参考资料
[1] 卢潇 等:《软件工程》 清华大学出版社/北京交通大学2005年1月
[2] 周苏 等 《软件工程学实验》 科学出版社 2005年4月
[3] 邓良松等 《软件工程》 西安电子科技大学出版社2004年6月
[4] 张海藩 《软件工程导论(第四版)》 清华大学出版社 2003年11月
[5] 吴洁明 袁山龙 《软件工程应用实践教程》 清华大学出版社 2003年7月
[6] 文斌 等《软件工程与软件文档写作》 清华大学出版社 2005年8月
六、实践教学建议
在实践环节的实施中,建议同学们选择熟悉的具有代表性的应用系统作为实践环节的软件项目选题。为方便起见,在此列出部分参考选题如下:
1.酒店餐饮管理系统
2.多媒体播放器
3.进销存管理系统
4.宾馆客房管理系统
5.人事管理系统
6.工资管理系统
7.KTV点歌系统
8.网上考试系统
9.考务管理系统
10.学生成绩管理系统
11.超市POS系统
12.学生综合测评系统
13.学生任选课管理系统
14.网上书店系统
15.音像租赁管理系统
16.图书借阅管理系统
17.学生学籍管理系统
18.门禁管理系统