第一篇:软件工程实践报告(5个)
软件工程实践实验报告
姓名: 学号:
班级: 计算机科学与技术
实验一 软件需求分析
1软件需求分析
任务分析 ATM自动提款机系统。ATM自动取款机是由计算机控制的持卡人自我服务型的金融专用设备。ATM是英文Automatic Teller Machine的缩写。在ATM自动取款机上可以进行账户查询、修改密码和转账的业务。作为自助式金融服务终端,除了提供金融业务功能之外,ATM自动取款机还具有维护、测试、事件报告、监控和管理等多种功能。ATM自动取款机系统向用户提供一个方便、简单、及时、随时随地可以随心所欲存取款的互联的现代计算机化的网络系统。可以大大减少工作人员,节约人力资源的开销,同时由于手续程序减少也可以减轻业务员的工作负担,有效地提高了整体的工作效率和精确度。减少了用户办理业务的等待时间;用户可以随时随地可以随心所欲存取款,并且操作简单易懂。
我们所需要的是建立一个与后台用户数据信息数据库绑定的集查询,存款,取款,转账等功能为一体的ATM自助服务系统。实验目的
学习图形工具软件VISIO,掌握结构化需求分析方法,熟练绘制数据流图; 学习快速原型工具的使用。基本要求
(1)针对银行ATM系统进行需求分析工作,了解银行ATM系统的功能、流程;(2)安装VISIO2003以上版本软件,熟练应用Visio绘制DFD图,绘制银行ATM系统数据流图,完成系统的软件逻辑模型;
(3)安装Axure RP Pro 或者Balsamiq Mockups快速原型软件,学习绘制软件原型,完成银行ATM系统的软件原型。ATM自动柜员机业务系统需求分析
需求分析:由于科技发展迅速,几乎所有的银行都配备了简易的人工操作的ATM自动取款机。人们可以随时随地进行交易,不再受银行的服务时间的约束,取款也很方便快捷,可以减少排队等待时间。
ATM机系统的主要功能:1.取款2.存款3修改密码4..凭条打印5.转账6.余额查询7.交易明细查询。
⒈取款
持卡人在ATM机上提取现金。余额不足时不能取出取款所需的现金。ATM机可以提供指定取款金额的快速取款画面。ATM机取款成功后,要向银联系统写入操作,并对客户余额进行相应处理。⒉存款
ATM机要能清点现金,将相应操作信息写入银联系统,对客户余额进行 修改。⒊ 修改密码
若新密码1和新密码相同则修改密码成功,要修改客户密码表,并将操作 信息写入银联系统。否则,修改密码不成功。⒋ 打印凭条
对客户做的操作及用户基本信息进行打印。⒌转账
完成不同银行卡之间资金的转移。若客户余额不足则转账识别。转帐成 功,对客户和收账人的余额进行相应的修改,写入账户余额表,并向银 联系统写入操作。6.余额查询
客户查询银行卡,在屏幕上显示银行卡账户余额。⒎ 交易明细查询
完成银行卡账户的近十笔交易明细查询,在屏幕上显示。
ATM机工作流程:插入卡->输入密码->选择操作类型->交易流程->确定交易->写入账户信息和银联系统 ATM自动柜员机业务系统数据流图
3.1顶层数据流图
3.2一层数据流图
将银行卡从读卡器插入ATM机,输入密码登录,登陆成功,则在LCD显示屏 上显示无ATM机不提供的操作的功能选择界面,进行操作并显示信息、进行相关处理。三次错误输入密码则吞卡。ATM机钞箱缺钱时则通知加钞。
一层数据流图
3.3二层数据流图
客户插入银行卡后开始识别银行卡所属的银行和账户信息,识别后开始校验客 户输入的密码,判断是否和正确密码相符,若相符则进行ATM机自检,去掉暂时不能提供的操作,让用户选择操作。若不相符则提示错误,输入三次都不相符,则吞卡。
登录的第二层数据流图
成功登录后选择交易,并在交易过程中进行操作倒计时,以防用户忘记取卡 而丢失卡,交易完成可以选择打印凭条和退卡。
动作的第二层数据流图
超时或连输三次错误的密码都会吞卡,并自动冻结卡,显示吞卡信息并打印 吞卡凭条。
吞卡的第二层数据流图
ATM机缺钱时发送钞箱缺钱信息,进行清机对账,验钞点钞,打开金库,将钱放入钞箱。
加钞的第二层数据流图 3.4三层数据流图
ATM自查时查钞箱余额和凭条打印机的纸墨余量,以在功能选择界面上去掉 ATM暂时不能提供的操作。
ATM机自检的第三层数据流图
选择交易,进行存款、查询、取款、改密、转账等操作,同时对操作进行倒计时,并向后台银联系统提供信息,在LCD显示屏上显示信息。
交易的第三层数据流图
3.5四层数据流图
选择存款操作后,打开存款槽,存款后,关闭存款槽,点钞机点钞,将金额 和张数显示在LCD屏上,确定后向后台提供信息,修改余额信息。
存款的第四层数据流图
选择查询功能后,再在两个子功能下选择进行的是余额查询还是交易明细查 询,并在 LCD显示屏上显示提示信息。
查询的第四层数据流图
选择取款功能后,比较客户的余额是否大于取款金额,并修改客户的余额信 息,在LCD屏上显示提示信息,向后台系统提交信息。
取款的第四层数据流图
改密时先输入一遍新密码,再输入一遍新密码,若两次密码相符,则改密成功,对用户名密码表进行相关修改,在LCD屏上显示提示信息,向后台提供信息。否则显示改密失败。
转账时,先输入一遍收账人账户,再输入一遍,若相符,则比对客户余额是否大于转账金额,若是,则转账成功,修改两个账户的余额,在LCD显示屏上显示提示信息,向后台提供信息。若否,则显示转账失败。
改密的第四层数据流图
3.6五层数据流图
选择查询账户余额信息时,查客户余额表,显示在LCD显示屏上。
余额查询的第五层数据流图
选择查询账户交易明细后,查客户交易明细信息表,并在LCD显示屏上显示出信息。
转账的第四层数据流图
交易明细查询的第五层数据流图 ATM自动柜员机业务系统原型系统
1、待机欢迎界面
2、输入密码界面
3、服务选择界面
4、取款金额选择界面
5、取款结束界面
6、存款提示界面
7、存款信息界面
8、存款结束界面
9、查询选择界面。
10、查询余额界面
11、查询明细界面
12、转帐账户输入界面
13、账户错误界面
14、转帐金额输入界面
15、转帐成功界面
16、退卡提示界面
17、密码验证界面
18、新密码输入界面
19、新密码确认界面
20、修改成功界面
21、修改失败界面
实验二 面向对象的软件分析与设计
实验目的
学习UML和UML软件工具,掌握面向对象分析与设计方法
基本要求
1、学习面向对象分析与设计方法和UML;
2、安装StarUML 和Rational Rose软件,熟练使用UML软件工具,对目标系统进行分析,完成用例图、类图。
3、完成序列图、状态图、活动图等图形的绘制。
4、学习UML模型和源代码的双向工程,完善报告。前言
由于科技发展迅速,几乎所有的银行都配备了简易的人工操作的ATM自动取款机。人们可以随时随地进行交易,不再受银行的服务时间的约束,取款也很方便快捷,可以减少排队等待时间。问题说明
客户插入银行卡,要求ATM自动柜员机能识别卡,若能够识别出卡,则要求客户输入密码,若输入密码正确,让客户选择业务,若输入密码错误,则让客户再次输入密 码,输入三次错误的密码则执行吞卡操作。
选择的业务若是取款,则让客户输入取款金额,超过账户余额,则取款失败,否则取款成功,取款槽吐出现金,修改账户余额,并记录操作信息。
选择的业务若是存款,则打开存款槽,让客户放入现金,并能启动点钞机,清点客户放入的现金数目,修改账户余额,并记录操作信息。
选择的业务若是转账,则让客户输入两遍转账账号和转账金额,若两遍转账账号不一致,则不能转账,若输入转账金额超过账户余额,则转账失败,否则转账成功。
选择的业务若是查询,则从服务器中查找出客户的余额或交易明细信息,并显示出来。
选择的业务若是修改密码,则要求客户输入两遍新修改的密码,若两遍密码一致,则改密成功,并修改账户密码,密码不一致,则改密失败。选择打印凭条,则启动凭条打印机,打印凭条并吐出凭条。选择退卡,则让读卡器吐出银行卡。Use Case图
3.1账户用例图
3.2系统维护人员用例图
3.3设备管理人员用例图
3.4系统时钟用例图
3.5总的用例图 类图 序列图 5.1登录基本序列图
5.2登录备选序列图(密码错误)
5.3登录备选序列图(密码错误吞卡)
5.4 取款序列图
5.5取款备选序列图(余额不足)
5.6查询序列图
5.7 存款序列图
5.8 修改密码序列图
5.9 修改密码备选序列图(两次密码不一致)
5.10 转账序列图
5.11 转账备选序列图(两次输入账户不同)
5.14退卡序列图
6协作图
6-1协作图
7-1识别银行卡活动图
7-2登录活动图
7-3取款活动图
7-4存款活动图
7-5修改密码活动图
7-6转账活动图
7-7查询活动图
7-8打印凭条活动图
7-9退卡活动图
7-10吞卡活动图
7-11备份活动图
7-12加钞活动图
7-13维护活动图
8状态图
实验三 集成编程环境与编码规范
1.实验目的
学习PHP、.Net、JAVA集成编程环境,熟悉各语言的编码规范。
2.基本要求
(1)学习PHP语言基础,学习PHP集成编程环境EPP,了解常用插件,掌握Zend debuger PHP断点调试功能;
(2)学习.C#语言基础,学习.Net集成编程环境,掌握集成环境中的调试技术;
(3)学习JAVA集成编程环境Eclipse,参考《Java编码规范及实践》了解JAVA设计模式。
3.实验内容
选择JAVA集成编程环境Eclipse,了解JAVA语言以及Eclipse的安装与使用。
4.语言简介
JAVA是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
5. 开发环境介绍
本次实验,JAVA语言的开发环境选用集成开发环境Eclipse,Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
6.准备工作
第二篇:软件工程实践报告
软件工程实践报告
软件工程实践报告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周的实习,在大家的共同努力下,也都完成了各自的任务,但我想说的是,我们并不仅仅是完成了任务,我们更是个个满载而归:
项目的制作以及疑难问题的解决,将我们把大学期间那些快要淡忘的知识又重新熟悉了起来,并且对代码有了更深层次的理解。代码的复用性、类与类之间的调用、对象的创建、数据库的连接以及操作等各种专业知识的使用,让我们能更好的将这些各种各样知识合理的整合在一起。
如果说专业知识收获颇多,那么接下来的职业技能却是我认为在整个实习过程中收获最大的地方。代码的注释以及编码的规范这两点是我以前很少注意的地方,对其也并没有多少重视。但这一次,却明白了他的重要性:这是作为一个软件开发人员必须应该具备的能力,或者说应该特别注重的地方。因为我们的代码并没有多少注释以及很多地方的编码很不规范,企业老师宁愿让我们多花一周的时间修改,也没有匆匆的进行下一步测试。在修改的这一周内,通过自己的体会以及老师的重点强调,对于代码的编码规范和代码的注释有了更深层次的理解。通过了这次的实习,我个人认为,代码的注释以及编码的规范比个人的技术更为重要。
这次实习的最终目的就是希望我们了解软件的整个制作过程,也就是软件工程这门科学。这一次的实习,中间的制作文档时间大约是编码的好几倍,编码的时间即使是因为我们修改的原因也只有两周,而其他的大部分时间就是制作文档。我个人猜想可能进公司后文档的制作比个人的技术更加重要。因为文档的原因,我们的项目制作,感到非常的流畅,条例非常的清晰,逻辑也很流畅。对于软件的制作,这些文档起了很重要的意义,所以觉得,软件工程也许就是自己以后努力的方向吧。
最后,总结这段时间的实习生活的收获,真的是使我受益匪浅。在实习中,我学习到了不仅仅是技术上的收获,更还有生活中的的人际交往以及其他的许多经验。而这些,都将作为我迈入社会的根本,我将以此为我的基础,怀着一颗勇敢无畏的心去迎接我即将来临的工作。
五、实习体会
这一次的实习,给了我很深刻的体会,不仅仅是专业的收获,更还有团队间的相互合作,这些让我明白了团队的意义。工作即将来临,我期待着工作的到来,我将带着这次实习的收获,尽量的将学到的知识运用到实际工作中,去迎接一个又一个的挑战。前方的路会有很多困难等着我,但我不怕,因为我坚信,只要我努力,终会克服这些困难。路就在脚下,我将带着坚定的信念,不畏挫折,勇往直前!
第三篇:软件工程实践实习报告大纲
软件工程、软件测试专业第七学期“软件工程实践”实习报告大纲(学生提交)
1、实习概要
实习时间(起始和结束)(按照学校的教学日历从第1周到第19周,2011年8月29日至2012年1月6日)
实习单位、单位的实习地点或者校内工作地点
实习岗位
实习指导老师姓名(校内)与校外指导老师姓名
2、实习内容
(培训内容(含入职教育、安全教育等)、学习课程、技术训练、实习内容、项目内容)(这一部分要写详细,可能每项都有,可能只有部分有,但项目环节应该每个同学都写)
3、项目情况
(按照软件工程过程:1)需求分析;2)概要设计;3)详细设计;4)代码编写;
5)系统测试;6)性能测试;7)验收测试;8)项目实施与部署;9)项目维护等内容进行组织,同学自己参加的阶段重点描写,其它软件项目阶段可以只做介绍。)
4、实习总结
(收获、心得体会等)
第四篇:软件工程实践学习心得
软件工程实践学习心得
这学期学习了软件工程实践这门课,我觉得这是对上学期的软件工程课程学习的检验,上学期学习软件工程只是我们浅显的认识,相比之下,这学期就更加全面的说明了开发一个项目所需要的步骤以及开发项目过程中所需要注意的诸多细节。如果说上学期的课程注重理论基础的话,那么这学期的软工实践,顾名思义,就是侧重我们动手操作的能力。
原来我认为开发一个项目最重要的就是写代码,似乎整个软件都是编代码,因为自己动手能力不强所以就很排斥做项目。可是经过我们学习软工课程到团队做项目再到学习软件工程实践课程之后,我才真正意识到实施一个软件工程项目并不是说简单的会编码就能够解决问题的,因为一个软件的生命周期分为三个时期:软件定义时期、开发时期、维护时期,而这三个时期整体又分为七个阶段,他们分别是:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试,由此可看出,当我们开发一个项目时,更多的精力不是放在编码上,编码只是一个很小的模块,而是项目的整体结构上。
在写软工实践体会之前,我想在这里总结一下上学期三人团队做 项目的相关事宜。上学期我们三人团队根据软件开发的步骤开发一个名为“西大老乡‘荟’”的社交系统,主要是为西大学子提供一个找老乡的平台。虽然只进行到详细设计阶段,没有进一步实现,但是我还是从中学到很多东西的。首先要先确定项目主题,也就是这个项目用来做什么,可以解决什么问题。接着就是这个项目是否有研究的必要以及是否有解决的办法,针对我们的项目,我们对西大的一些学生做了问卷调查,并从调查中继续完善系统本身的做用户。第三步根据我们确定的项目主题进行需求分析,这一步骤当时做的不是很好,比如所画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.门禁管理系统