第一篇:软件工程导学课报告
浅谈大数据潮流下的软件工程
--从一个局外人的角度 作为一个商学院的学生,经过一个学期的软件工程导学课的学习,终于对软件工程轮廓有一个大致的印象,更是进一步产生了兴趣。经过课堂上前辈们的介绍,在我心目中,软件工程从业者也从辛苦的码农变为走在创新最前沿的精英。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,提高人们的工作效率,同时提升了生活质量。而在如今这样一个信息化社会,互联网飞速发展,其衍生产品如雨后春笋,软件工程与虚拟现实,大数据,人工智能的结合尤为引人注目。因此,了解大数据洪流下的软件工程发展有着重要意义。
从软件定义网络(software defined network, SDN)开始,软件的作用向计算、存储、数据中心架构甚至整个IT环境蔓延,以往基于硬件平台实现的许多功能逐渐通过软件实现,软件的地位越来越突出。被软件定义的世界正在“大数据化”。图灵奖与诺贝尔奖双料得主司马贺(Herbert A Simon)在其《人工科学》一书中讲到:“我们今天生活的世界与其说是自然的世界,不如说是人类的或人为的世界。在我们周围,几乎每样东西都有人工技能的痕迹”。大数据是人类活动的产物,来自人们认识与改造客观世界的过程中,是生产与生活在网络空间的投影,因此大数据正成为信息时代的宝贵财富。但是由于大数据的数据量过于庞大,信息种类过于繁琐,人工信息筛选与信息识别基本不可能。然而,在大数据分析上软件工程将会成为人类的有力助手。
在对密集型数据进分析时,传统的数据生命期信息学流程已经难以适用,无法对大数据进行有效的模拟。要由原本的数据、信息、模型、模拟推演的过程逐渐转变为数据、信息、知识、价值服务、策略意义的第四范式模型。在全新的研究模式中,要对数据整合驱动、需求度量价值、情境约束等进行分析。其中,知识及价值服务是整个研究的基础和重点,要针对密集型数据整合服务领域,对密集型数据将的处理、管理、分析、应用等多个方面进行研究,建立统一的理论体系和研究方法,提高密集型数据生命期信息学流程驱动软件的服务生命期,对目前第四范式建立存在的问题进行针对性的解决,适应大数据时代的发展。
此外,软件不仅不易用来分析大数据,本身也是大数据源头之一。很多软件都具有收集数据,上传数据的后台功能。因此,在数据终端可以进行对用户数据的收集整理,以便于分析用户的偏好于等实际情况。因此,如果有效利用软件作为大数据的源头,企业将会有着更充分的信息,有效把握市场动态。
总而言之,在大数据时代下,软件工程的发展涉及到多个领域,需要具备高度的专业性和实践性。在软件工程中,要在实践中进行研究,而不是在研究中进行实践,核心在于如何对传统的软件理论进行创新突破。在其中就涉及到有关大数据理论和研究方法的问题,如何将理论、算法、技术标准等进行融合。大数据在最初提出时具备三种特征:体量、增速和多样。随着时代的不断发展,大数据的特征也越来越多,如价值、真伪性、可证性、可变性等,对软件工程的发展有着重要的影响。在软件工程的研究中,要不断的创新传统的软件技术,解决限制软件工程发展的客观条件,结合互联网的发展,对大数据时代下的密集型数据进行有效的处理,促进行业发展。
第二篇:软件工程课 心得体会
心得体会
通过本学期的学习,独立完成了软件工程方法实践与案例的作业,同时也收获了学习方法和思维方式。由于我是从电气专业调剂到计算机专业,几乎没有基础,所以在刚开始进入学习时感觉非常的困难。但是,李老师每节课都循序渐进的引导教学,让我慢慢理解了软件工程的学习思维,并且坚持学习,逐渐找到了学习软件工程的方法。在整个的学习中,一点一点的学习:上网搜索、问同学和老师、找参考书、查文献,甚至下仓库管理的软件进行使用研究,用了很多方法,也终于对软件工程的整体设计有了深刻概念和理解。
老师给我们分组分配任务,同时又每个人有不同的具体任务,这样既锻炼了我们的合作沟通的能力,同时也强调了独立自主的思考。我们仓库管理小组进行过好几次集体讨论,大家互相讨论,共同学习,也曾出现过意见不统一,通过探讨,共同解决,我觉得这也是学习提升的过程。明确了自己的任务后,就努力去完成,按时完成自己的任务。
在完成作业的同时,学到了很多的数据库知识和软件使用方法。首先接触了visio软件,发现了它画图比较方便,之后老师介绍用rose软件后,发现其功能更加强大。由于rose软件是英文版,所以刚开始用的时候比较吃力,经过搜索使用教程和多次使用练习后,终于可以熟练使用了。
整个设计过程,包括调研设计、需求分析、概要设计、数据库设计、详细设计等。其中,我对UML图印象最为深刻,也是从这个地方开始,我对软件设计有了质的改变,体会和理解了软件设计应该树立的思维方式,对以后的学习和任务有有很大帮助,后期做作业时也没有那么困难了。
在这整个课程学习和完成作业过程中,收获知识,提高能力的同时,我也学到了很多人生习惯,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把这种习惯带到生活中,不畏,勇往直前!
最后感谢李老师对我们耐心的教育和指导,认真细心的给我们批改作业,给予我们这些没有基础的学生耐心指导,谢谢老师!
第三篇:软件工程报告
软件工程实训(论文)
论文题目
学 院应用数学学院 专业信息与计算科学
年级班别12级2班 学 号3212008007 学生姓名 洪春晖
指导老师 李小英
2015 年12月
对软件工程的认识
摘要:
软件工程:顾名思义就是用工程化的方法生产软件的一门学科。软件产业作为信息产业的核心是国民经济信息化的基础,已经涉足工业,农业,商业,金融,科教文卫,国防和百姓生活等各个领域。采用先进的工程化方法进行软件开发和生产是实现软件产业化的关键技术手段。因此,为积极促进我国软件产业的发展,加速我国信息化建设,增强其国际竞争力,国家急需培养大批软件工程领域的实用型,复合型软件工程技术人才和软件工程管理人才。软件工程专业需要一定的专业技能,只有有能力的人才能在社会上立足,所以,所以学习软件工程这门课程不能放松,要按照学习计划按部就班的学习,不能盲从也不能懈怠。每个阶段都要有明确的目标,并把目标细化,付诸实践,要立长志不能常立志。这样才能提高自己的学习效率,增强专业技能,成为真正的软件人。
关键词:测试、过程、能力
一、软件测试
软件测试是软件生产的重要环节。软件质量正确的内涵包括三方面,完整的需求、正确的代码和最少的缺陷。软件测试就是在软件开发的整个生命周期中对这三方面进行有效控制的重要手段,是软件质量的安全副驾驶。据统计,通过必要测试,软件缺陷数可至少降低75%,而软件的投资回报率能达到350%。,软件测试的方式也开始由手工向自动化测试方向转变,测试工具包括白盒、黑盒、嵌入式等七大类。软件测试的蓬勃发展在促进质量提升的同时,也将软件产业带进发展的新时代。
测试方法术语:
1.测试用例:根据测试需求和设计所设计的测试输入、测试操作和预期结果。
2.软件测试:是根据软件开发各阶段的文档和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序缺陷的过程。3.黑盒测试:把程序看成一只黑盒子,测试者完全不考虑程序的结构和处理过程。它根据需求说明书规定的功能来设计测试用例,检查程序的功能是否符合需求,又称“功能测试”。4.集成测试:主要对系统内部的相互服务进行测试,是由底向上通过集成完成的功能模块,对程序内部具体单一功能模块的测试。
5.系统测试:将软件作为整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行的一系列的测试。
6.验收测试:验收测试是以用户为主的测试。由用户设计测试用例,使用真实数据进行测试,分析测试的结果。
7.回归测试:指在第一次系统测试完,开发小组已经将所有的缺陷处理后,进行得第二次系统测试。流程图:
:
1.制定测试计划:软件项目经理在制定开发计划时(参见《软件项目策划过程》),应同时与测试质保部一起考虑项目的测试计划。测试质保部制定测试计划,协商安排集成测试和系统测试等工作。测试计划内容包括测试人员安排,测试方案、测试用例设计工作安排和测试执行工作安排等内容,按照《软件测试计划》模板制定。执行人有:软件项目经理、测试人员。
2.评审测试计划:制定完成的测试计划,软件项目经理要组织人员进行评审,评审参照《评审过程》进行。
执行人有:软件项目经理。3.编制和评审测试用例:
集成测试用例编制:测试人员根据《概要设计说明书》文档安排人员制定集成测试方案和测试用例,考虑需要集成的关键模块、集成的次序和需要测试的接口和测试的环境要求等工作。系统测试用例编制:测试人员根据项目的《软件需求规格说明书》,参考项目设计文档,编写测试方案和测试用例,规定测试数据、测试预期结果、测试充分性评价等,重点在功能测试,兼顾性能测试,如确认需要测试的功能和不必测试功能;用户界面的确认;硬件、软件和通信接口的确认等等,完成后的测试用例交给软件项目经理审核,并组织有关人员参加评审,通过评审后入配置管理库进行管理。
执行人有:软件项目经理、开发人员、测试人员。4.准备测试:
检查是否可以进行测试:集成测试的代码是否已完成单元测试;系统测试的代码是否已完成集成测试。
代码及测试文档准备:集成测试和系统测试前开发或配置管理人员应向配置管理库归档最新测试代码及测试所必须的文档。
测试环境搭建:对自己可以搭建测试环境的软件项目,测试时应从配置管理库中提取程序及测试所必需的文档,并根据测试方案搭建测试环境;对自己无法搭建测试环境,可以到现场进行测试,但必须采取措施保证不影响用户原有的系统(做测试方案时应给予考虑)。执行人有:开发人员、配置管理人员、测试人员。5.实施测试:
集成测试:测试人员根据设计说明书和测试方案进行集成测试.系统测试: 系统测试应尽量在与实际运行(使用)环境一致的环境下进行(如果不行,就要在与实际环境有可比性的模拟环境下进行),与计算机硬件、外设、支持软件、资料和人员等其它系统元素结合在一起,测试软件需求规格说明书列出的所有需求,确保所有的软件功能需求都能得到满足,所有的软件性能需求都能达到,所有的文档都是正确且便于使用;同时在测试过程中,应当按照顾客手册或操作手册中规定的使用步骤,以便检查这些文件资料的完整性和正确性。执行人员有:测试人员。6.缺陷跟踪:
使用Test Director作为测试管理工具,记录并跟踪缺陷,统计缺陷数据。执行人员有:测试人员及开发人员。7.回归测试:
缺陷跟踪结束,或者项目组重新提交,测试人员应做回归测试,若第一次测试时的资料未进行修改,例如:用户手册、系统需求说明书、测试计划、开发规范等,测试组将不进行重复测试。
执行人员有:测试人员。8.报告/评价测试结果:
测试结束后,测试人员对测试结果和测试过程等内容进行整理,形成《测试分析报告》,由软件项目经理组织有关部门进行评审,并把评审结果提交软件项目经理及研发经理评价测试的有效性、充分性;如果使用模拟测试环境,还应评价模拟环境与现实环境的差异,确认软件是否通过测试,如果认为软件没有通过测试,可对软件进行修改并修改测试计划进行重新测试或经产品总经理批准,得到顾客的认可后让步放行、使用或接受不合格品。执行人员有:软件项目经理及有关人员 9.报告、测试结果置于配置管理之下。执行人员:配置管理人员。
二、软件工程过程及所需能力
软件工程过程:软件工程过程包含软件开发、维护以及软件开发和维护时所需的管理活动。软件生命周期:软件生命周期是指软件产品从考虑其概念开始,到该软件产品不再能使用为止的整个时期。具体地说,软件生命周期是指从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次划分为若干个阶段,每个阶段都有相对独立的任务,然后逐步完成每个阶段的任务。一般将软件生命周期划分为六个阶段:计划、需求分析、设计、编码、测试、运行维护。
软件工程专业本科生应掌握科学方法与工程方法;掌握扎实的软件基础理论知识和较宽广的软件工程专业知识,具有技术创新能力;受到良好的软件工程训练,具有较强的工程实践能力和团队协作能力;熟悉软件应用和工具,具备运用先进的工程化方法、技术和工具从事某一应用领域软件分析、设计、开发、维护等工作的能力。软件工程专业本科毕业生应达到基本的数学和语言要求;熟练掌握英语,具备良好的阅读、理解和撰写外语资料的能力和进行交流的能力;拥有较好的沟通技巧和团队工作能力,通晓和遵守法律与职业道德。软件毕业生应获得以下几方面的知识和能力:1。具有扎实的自然科学基础和较好的人文社会科学基础;2.对软件系统、计算机系统、信息系统及计算机软件相关系统的认识能力;3.具备扎实的理论基础,能够全面通晓计算机软件和软件工程的基础知识,较深入理解至少一个计算机软件应用领域;4.有较强的动手能力,能够具有一定的系统分析和软件设计的能力,熟练使用一种以上主流的操作系统、数据库管理系统和程序设计语言,做到理论与实践相结合;5.有实际项目的工作经验;6.具备自学习的能力以适应软件技术的快速变化,能够通过自学的方式在较短时间内掌握系统软件的使用;并且具有熟练使用各类流行软件解决实际问题的能力;7.能够综合应用各类方法、技术和工具,运用工程技术方法解决复杂性软件问题的能力;8.掌握一门外语,具有听、说、译、写以及熟练阅读外文文献能力,以此具备语言、交流、写作等基本的软件从业能力,认同现行的法律、道德和伦理。软件工程课程应该加强理论与实践的结合,在学习的过程中实践所学理论。
第四篇:软件工程报告格式
程序设计基础实验(2)
综合性项目报告
课目:
学院:
班级:
学生:
指导教师:
完成时间:
课程设计(论文)评审意见
(1)课程设计过程(20分):优()、良()、中()、一般()、差();
(2)是否完成调试,系统运行效果(30分):优()、良()、中()、一般()、差();
(3)回答问题(20分):优()、良()、中()、一般()、差();
(4)课程设计报告(30分):优()、良()、中()、一般()、差();
(5)格式规范性及考勤是否降等级:是()、否()
目录
1、项目内容、要求与分组情况总体介绍..错误!未定义书签。
2、概要设计..............错误!未定义书签。
2.1开发工具及环境.....错误!未定义书签。
2.2 任务及需求分析.....错误!未定义书签。
2.3 功能模块设计.......错误!未定义书签。
2.4 工作原理...........错误!未定义书签。
3、具体实现............错误!未定义书签。
3.1 类设计......错误!未定义书签。
3.2 模块及实现代码介绍........错误!未定义书签。
4、运行调试与分析讨论........错误!未定义书签。
5、设计体会与小结.........错误!未定义书签。
6、参考文献..............错误!未定义书签。附录:(源程序).............错误!未定义书签。
第五篇:软件工程课设心得
软件工程是一门实践性很强、交叉性很强的学科,它提供给我们的不仅是一种方法论,更是一种世界观。
在没有接触软件工程这门课时,我一直认为软件就是程序。能编出解决问题的程序就ok了,从没有想过,在写一个程序之前还要构思几份文档(可行性分析、需求分析、概要设计)。不过对于那些大型软件如植物僵尸大战(至少对于我来说是比较大型的了)怎么去实现它,想得我一头雾水。绚丽的界面、40种植物、一大堆不同类型的僵尸,怎样编代码去实现它呢?
第一次上软件工程的课,裴老师问“软件是什么?” 我的第一想法是:这个问题太过愚昧了!谁不知道软件就是程序呀? “软件是由计算机程序、数据及文档组成。”听到这句话,我心里先是一惊,慌忙翻了下书“软件是程序和所有使程序正确运行所需的相关文档和配置信息。”赫然映入我眼帘。突然间我发现,就算是植物僵尸大战这样复杂的游戏,如果设计者实现分模块把每一部分如何实现用文档描叙出来,那这个软件实现起来不是很容易吗?
第一次课后我明白了软件工程是致力于专业化软件开发的理论、方法和工具的研究。虽然我从初中开始信息奥赛,高中继续这个爱好,但在大学二年级下学期才接触在软件开发中这么有引导意义的学科,不觉有种相见恨晚的感觉。自然它的方法学三要素:方法、工具、过程,我牢记于心。
短短的四周,裴老师的课给我留下了深刻的印象,印象尤深的是:
做软件我们首先考虑的是团队的实力。
如果别人给你50万让你们团队开发一个软件,如果他要求你们团队给这个软件永久维护,那么你要去跟他协商付100万。很多软件公司倒闭就是因为维护上的问题。至此我才明白维护软件是软件生存周期中时间最长的一个阶段,它是最花费精力与钱财的一个阶段。
如果将来你们碰到了我,你跟我说你是se那么我会很高兴,如果你告诉我你是软件工程师,我只会“嗯嗯”两下。
其实在我接触软件后,渴望的是当一名软件工程师。现在才知道学软件工程专业后,去当一名软件工程师是最低层的也是最没“技术”含量的。要做就做系统构架师,当然这需要我们的不懈努力才能达到。系统构架师的职责是设计一个公司的基础构架,并提供关于怎样建立和维护系统的指导方针。恍然发现学软件不仅是学软件,相关的管理能力也是需要具备的。
当然理论知识是用来指导实践的,亲身体验才能领悟软件工程的妙用。课设我们选择了图书馆管理系统,主要是这个系统我们接触比较多,对于它的流程还是比较清楚的。虽然如此我们还是花了很大的时间去完成它。记得当时我们定下这个题目是晚上,在讨论用什么语言实现时,大家各自说出自己比较善于的语言。然后均衡了下,定下用java做开发语言。在实现过程中,突然发现java环境连接数据库和tomcat超级麻烦且数据库老是连接不上。趁时间还早我们三再次讨论,决定用c#做开发语言,主要是c#相对于c++与java来说简易写。同时我们定下不管以后遇到什么困难都要坚持下去的准则。在课设期间我们没少跑图书馆,查阅各种资料,对比各本书上实现图书馆管理系统的代码。终于在4月11日把所有课设的所有事情弄好了。当然这只是个概述。
我印象尤深记忆深厚的是最初实现文档那块。刚开始,软件工程这门课还没学多少,基本的设计理念就很模糊。文档到底该怎么写,很纠结。于是我从网上狂下相关文档。通过粘贴与复制终于一份内容乱七八糟的需求分析文档出来了,当然这只是用来借鉴的。后来孟阳分享了十三份关于文档这方面的模板。我们照着那个样子在结合团队项目的相关实例开始了文档的写作。我们的文档总是一个人先写好,再拿给另一个人改,最后由第三个人评审。大家都觉的可以了,才过关。测试报告虽然是我一个人完成了,但也经历了不少时间,当然这时间是按小时算的。首先把大体写出了,然后修改,再增加信息。大量的截图以及思考怎样用例超费脑子,两天的通宵,彻底把我搞垮了,不过在文档出炉后,心里异常开心。
软件工程课程虽已结束,但我对于软件工程的学习才刚刚开始,裴老师的课让我受益匪浅。我体会到项目管理的重要性,随着软件规模、复杂度的不断增加,项目开发中更多的是协作、管理和控制。我学习到很多一般性的方法,例如:需求获取、模块化、分治、估算、计划等等。同时,我也认识到使用计算机解决实际问题的复杂性,在图灵机模型和冯·诺依曼体系的计算机框架下,人们认识表达的过程(不断反复、逐步深化)和计算机的实现过程(顺序执行)相差甚远,软件工程方法要提供给程序员们一种更加有效的对客观世界问题域进行形式化的过程方法。
向se进军!至少这是现在的目标。
谢谢裴老师!您的课通俗易懂,举的例子贴近生活,让我们易于接受。