第一篇:软件工程学习报告
软件工程学习报告
时间飞逝,不知不觉间《软件工程》的学习已经即将结束了。在这将近一学期的学习中,虽然我不能说我将《软件工程》学习的有多么的好,但是通过学习,我还是受益良多。在没有学习《软件工程》课之前,我总觉得这门课是那些有工程师称号的高手才摆弄的东西,行业前景也很不错。之前,我一直对软件存在一些偏见或者是误解,认为软件就是程序,软件的开发就是编写程序,只要编完了程序,一切也就ok了,而且我还片面的认为只要我掌握了时下最新的语言和工具,那么我就能写程序了。一个人,只要会编程,就能写软件,就是程序员;一个公司,只要招聘一些程序员,就能开发好的软件产品。只要有几个有经验的程序员,再找些兼职的大学生,就能组成一个软件公司。
但是通过了《软件工程》这门课的学习,使我认识到了我以前的错误。最大的感触却是: 一定要有个正确的心态,脚踏实地,勤于思考,多做实践。如果你喜欢创造,那么你可以考虑做一名程序员。今天的世界离不开电脑,几乎没有什么事情不是由电脑来运作的。而且你可以想想编程是一件多么奇妙的事情啊。我觉得,电脑技术是人类历史上最具创造力的技术,你必须能感受到它的奇妙。软件工程方法一定要从开始抓起,否则到了后面坏习惯已经养成后再回过头来修改,那绝对是耗费时间、精力的大工程。软件其实不仅仅是程序,软件开发其实也不仅仅是编写程序,软件是思想在硬件上的载体和体现,处理的是逻辑和信息。唯有对软件和软件的开发过程,有充分的认识,才能更好的开发出,过程受控、质量受控的软件产品。
下面就是我在这一个学期的学习中的一些总结和体会。
首先说说我对软件工程的认识。它们都起始于一个实际的需求或某个灵感,然后就是分析,设计,编码,调试,维护 这些任务动态地结合起来就构成了软件开发的整个过程,这就是所谓的“软件开发周期”。软件开发工程,其实就是这样一套用于软件的团队的开发过程,以提高软件质量和程序员工作效率为目的。其核心就是,对于软件开发的5个重要组成部分:需求分析,设计,编码,调试,维护,如何组织这5个部分的工作,以及如何完成每一个工作。简单来说,就是对于总体的组织和对于局部的实现。
我感觉开发软件,就像是解决一个逻辑问题。想想自己平时是怎样写程序的。首先是要有一个想法,即我写的这个程序是要干什么的;然后就是对要实现的核心功能大概构思一种或多种实现方法,并从中选出一种自认为是较好的;接下来就是将涉及的各种主要或次要功能分成各个模块;最后就是分模块来编码和DEBUG。
以下我结合自己的体会总结了一些学习程序设计、软件开发之学习方法。
一、勤于动手,勤于实践。只有通过大量的实践才能不断的培养编程感觉,编程是有感觉的,就好像英语阅读一样,是有语感的,每天都要编写代码,不断培养编程感觉。我们需要通过实践来增强对理论的理解,没有实践的理论是空虚的理论,没有理论的实践是盲目的实践,实践才是检验真理的唯一标准。在了解理论后,就立即去实践,实践驱动理论的学习,这样掌握理论才更加扎实,不容易忘记。人总是有忘性的,今天记得很牢的东西,过一星期也许就完全忘记了,好记性不如烂笔头,不要太相信自己的记忆。看明白了并不等于能运行出来,这是两个概念,所以一句话,实践,实践,还是实践,即使书上有代码,也要把它敲出来,敲代码也是有感觉的。
二、勤于思考,在学习的道路上会遇到大量问题,这些遇到的问题将成为你的宝贵财富。遇到问题时首先想为什么会出现该错误,尤其在程序中,应该学会看错误提示,根据提示去寻找错误的根源,实在不行再去问同学,问老师。因为自己寻找错误的过程是最好的学习过程,这个错误一旦被自己解决掉,首先得到的是极大的满足感,另外会留下深刻的印象,这是看书所得不到的,有过这种经历的同学才会有这种体会。即使没有解决也会从这个过程中
学到很多东西,这种感觉是:只可意会,不可言传。
三、要有耐心和毅力,写程序是不仅是知识的体现,更是耐心与毅力的体现。任何程序开始都会有错误的,耐心寻找错误体现一个人的编程素养。要多思考,多去想,脑子才会越来越好使。
四、习惯使用英文。只有习惯看英文才能进步快,中文的翻译很多都是文不对题,看了还不如不看,看英文虽然慢,可是过了不久,你就会发现英文也没那么难懂。
五、别盲目追新技术,注重基础。只有基础的东西明白了,才能快速提高境界,新技术只是表象,他的核心仍是那些基础的东西。我觉得学任何语言都无所谓,关键是要掌握程序设计的核心——算法和资料结构。各种语言和开发工具就好比各门各派的武功招式,而算法和资料结构则好比内功心法和武学原理,内功高强了,任何招式到了手上都能化腐朽为神奇,掌握了武学原理,则能无招胜有招。编程的关键还在于数学模型的建立,资料结构的选择和算法的设计!
六、了解程序历史。实际上了解程序历史很重要,程序语言的发展上,每一个重要阶段都伴随着巨大的争论,这些争论最终引发了变革,而各种新语言,新技术本身就是建立在这些争论上的,如:对“goto”的争论引发了结构性编程,对重载和复用的争论引发了对象编程,你只有了解这些历史你才会对现代对象编程有一个正确的,深刻的认识。你的境界自然就有提高,而不会陷入“xx语言比xx语言强”这中无意义的东西里去。
通过学习《软件工程》,还让我认识和培养了我的团队协作能力,特别是对于我们这些在校的学生来说,这种学习更是能让我在以后工作中少走很多的弯路。
所以,通过《软件工程》的学习,我是真的学习到了很多有用的东西,让我明白
了很多的道理。在此我对老师的辛勤教育表示感谢,因为是你让我学习到了这些,是我获益良多。
第二篇:软件工程报告
软件工程实训(论文)
论文题目
学 院应用数学学院 专业信息与计算科学
年级班别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、参考文献..............错误!未定义书签。附录:(源程序).............错误!未定义书签。
第四篇:软件工程学习心得体会
软件工程学习心得体会范文
我们从一些事情上得到感悟后,写一篇心得体会,记录下来,这样可以帮助我们总结以往思想、工作和学习。应该怎么写才合适呢?以下是小编为大家整理的软件工程学习心得体会范文,仅供参考,欢迎大家阅读。
软件工程学习心得体会范文1学习了这门课程,还有老师们的多元化教课,不但让我从理论上掌握软件工程,还有从不同的实例,让理论和实践得到了很好的结合。整一个学期下来,总的来说还是学到了很多东西的,有很多地方是值得肯定的,其实在我看来,软件工程与其说是一门课程,不如说是一门思想。是一个如何去分析和处理问题的过程,应该说其范畴已经远远不止局限于该门课程,成为了一个综合的一个能够解决问题的思想集合。
整本书的内容逻辑很清晰明了,由浅入深循序渐进,首先我就大概描述下我们所学的内容,第一章是从整体分析软件工程这门学科的发展和所处的社会环境,接着后面的几章深入分析了软件开放过程和模式、软件项目管理、计算机工程、需求分析、结构化分析建模以及基于UML面向对象分析建模等。接着我就详细介绍下我对这门课程知识点的理解概括:
软件:软件是能够完成预定功能和性能的可执行的计算机程序和使程序正常执行所需要的数据,加上描述程序的操作和使用的文档。
软件的特征:①软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。②软件是通过人们的智力活动,把知识与技术转化成信息的一种产品。③软件成为产品后,其生产只是简单的拷贝,不同于硬件制造。④维护过程比硬件复杂的多,甚至会引发新的错误。软件危机:指的是软件开发和维护过程中遇到的一系列严重问题。出现软件危机的原因:①软件维护费用急剧上升,直接威胁计算机应用的扩大。②软件生产技术进步缓慢。软件工程是指导计算机软件开发和维护的工程学科。软件生存周期:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。
软件的生存周期可分为八个阶段:①问题定义;②可行性研究;③需求分析;④总体(概要)设计;⑤详细设计;⑥编码与单元测试;⑦综合测试;⑧软件维护;
瀑布模式:是传统的软件开发模式,其中的“瀑布”是对这个模式的形象表达,由山顶倾泻下来的水,自顶向下、逐渐细化。其特点是:线性化过程;分为分析、设计、编码、集成等几个阶段,并且各阶段逐级推进,不允许跨越。里程碑管理;阶段评审;文档驱动;简洁便于工程应用的线性化过程步骤,并可以通过里程碑管理机制而使项目进程量化。其明显的优点就是没个阶段结束前都要对所完成的阶段成果进行评审,这使得软件的错误能够在个阶段内尽早发现并尽早解决,总的来说瀑布模式具有良好的质量保证机制,有很强的生命力。
原型进化模式:对软件进行直接模拟或仿真,只需要分析需求框架后进行原型创建,再对原型系统进行逐步细化与完善,通过版本更新逐步满足用户对于软件的多方面需要。
增量模式:开发过程有三个任务域,分别是设计结构、开发构件和集成系统,它既有完善的工程管理机制,又能适应用户需求变更,有利于质量的监控,并且各局部基于构件构造,有利于逐步构建与完善;由于先交付核心构件可利于降低项目的技术风险。
螺旋模式:是一种可较好的规避开发风险过程的模式,项目是基于任务的螺旋式推进,每个螺旋由内之外分别是需求分析、软件设计、系统集成、验证与交付。
软件开发的整个过程:①需要项目团队,组建优秀的团队可以开发出更搞质量的软件产品。任务开发团队要求小而精,成员大多在8人以内,主要成员有项目负责人、开发人员、资料管理员和软件测试员。②项目计划是为了使软件开发各项工作有秩序地进行,包括任务分配和基于里程碑的进度安排,甘特图和任务网络图是用来描述进度计划的工具。项目计划书可以作为软件开发的工作指南。③项目成本估算,由于项目有来自各方面的成本包括工资开支、场地费、差旅费、设备费和资料费等,但是软件主要是对人力成本的估算,常用的方法有程序代码成本估算法等。④软件风险管理包括很多不确定的风险因素,如计划风险、管理风险、需求风险、技术风险、人员风险、产品风险、用户风险和商业风险等等,而风险管理的主要任务是:风险识别、风险评估、和风险防范。⑤软件文档管理,软件文档是工程模式软件开发的成果体现,包括技术文档、管理文档和用户文档。⑥软件配置管理与软件质量管理,包括配置规划、软件变更控制、软件版本控制和质量控制计划。
计算机系统由硬件、软件、数据资源、网络资源、使用系统的人等诸多元素。有三种典型的计算机体系结构:①主机结构,主机集中了全部智能,并依靠终端接口与外部设备连接。②Client/Server结构,智能分布于服务器与客户机,并依靠网络连接成系统,其中,服务器处于核心位置,提供被动核心服务;客户机处于边缘位置,可主动访问服务器,寻求服务支持。③Browser/server结构,可适应互联网远程交互的特殊结构,基于Web服务器构建。
需求分析:系统开发前期需求分析很重要,它是为了有效解决用户问题的需要进行的一项工程活动,所需要考虑的需求问题是功能需求、数据需求、性能需求和接口需求,开发者承担分析任务,核心是用户。其步骤有三个:①获取客户需求,客户泛指某个人或机构部门等,一般方法是调查,包括访谈、座谈、问卷、跟班和收集资料,需求规约可表达用户的软件价值。②建立需求模型,它是用户需求的图解,一些常用的模型有:业务树图、用例图、活动图。分别用于结构化需求建模、系统业务举例和反映系统工作流程。③进行需求验证,要验证的主要内容有:有效性验证、一致性验证、完整性验证、现实性验证和可检验性验证。结构化分析建模:它是建立在需求规约基础上的,对软件问题进行全面解说,包括四个方面:①数据建模,它与数据库设计密切相关,ER图涉及实体、关系、属性等图形元素,在业务层面建立数据库概念模型,一般用于前期的建模构想。②功能建模,是对系统数据加工的图解,数据流程图是常用的建模工具,涉及数据接口、数据处理、数据流、数据存储等图形元素,用于描述系统数据加工细节。③行为建模,行为模型用于说哦名软件系统与环境的交互,状态转换图常用的软件行为建模工具涉及状态、事件等图形元素。⑤数据字典,是用于定义软件的元素,使软件元素获得严肃的、详密的、精确的规格说明。需求分析模型中的数据、功能、行为等诸多方面的元素,都有必要通过数据字典给予细节说明,以达到对系统较完整全面的规格定义。
基于UML对象面向对象分析建模:UML是统一建模语言,有统一的语法、语义和语用规则,其建模过程的特点是:用例驱动、以构架为中心和增量迭代,通过包实现对模型的有效的一体化管理。包括三部分:①用例建模,它面向用户需求的,能够反映系统的用户价值,用例图的基本元素有用例、参与者、交流;用例之间有泛化、延伸和包含关系。②活动建模,活动图用于描述系统动态过程,主要图形元素有:活动、转换、起点、终点、判断、并发、同步、泳道等。可描述高层业务级活动,涉及整个业务流程,针对每个用例活动建模,反映用例内部活动细节。③类分析建模,这里就只考虑实体类,实体类所代表的数据相互之间通常有一定的关系,依靠这种关系可形成有组织的程序数据结构。实体类之间的主要数据关系有:关联、聚类、泛化。
接下来我就简单说下我上这门课的简单的心得体会,我们是大四的学生了,也只有这个学期有课了,刚开始课表安排出来的时候觉得挺意外的,只有前八周有课,当时我还是有点小感动的,大四事情很多,有要考研的和工作的,大家也都有各自的事情,如果有16周的课,那么每周课不是特别多,但是时间特别分散,也不能集中某段时间去做什么事情。但是相对于老师的压力也有,课程压缩了相当于每节课的教学任务大大增加了,在加上有些假期冲掉课,就感觉我们好像上课学不到什么东西,也只是一些关键的和考试挂钩的才重点讲,完全没有扩展的时间和空间了。但是总的来说,学校开了这门课,我们上了这门课,总是学到了点东西的,不可能明明上了软件工程这门课,却像没上一样什么都不懂。在上课的时候我还是很认真地去听老师所讲述的内容的,我觉得他的思想和我一向而来的培养计算机学生综合素质的理解还是在一定程度上不谋而合了,所谓的需求获取,那就是一个谈判,辩论,交流的过程,已经不是单纯的编编程序就能解决的问题了。从我所看到的听到的来说,我最怕的就是计算机系的学生被别人说成是个带着厚眼镜的,只能够在电脑前编编程序的,在交际场上不知道说什么而一个字都说不出来的人。我觉得这样的人进入社会之后是没有什么前途的,起码他们缺乏了与人沟通交流的能力。而这门课程在一定程度上给了我们这些学生一个机会来锻炼自己在另一方面的能力,设想一下,一个又有技术又能够与人交流合作的人所取得的成就自然要比一个单单只会编程序的人要大得多。其次,这门课程教给了我们在完成一个实际项目时的一般程序及过程,我认为这是一份非常具有实际意义的教学内容。当我们在毕业之后,这是我们实际要运用的一项非常有用的技能,而且不仅仅局限于软件工程的范畴,我们即使是从事与其它行业,不也是要从需求获取开始,一直有条有理地到最后成品的出炉吗?应该说这就是这门课的价值所在。无论是在上课,还是在学生会里面做学生工作,我都深深地感觉到,技术性的工作就好比变魔术,其实原理是非常简单的,甚至可以说简单的可笑,但是当你就是做出这么一个简单的东西出来之后,一些外行们有时候会用崇拜的眼光看着你,觉得你很厉害,很高深莫测。但是制作的过程他们却不知道,也许知道之后他们只是会哑然失笑,原来这个东西的制作过程是如此的简单。这个可以说就是技术的魅力了,而作为需求获取及之后的一系列过程则是类似于魔术揭秘的过程,但是作为这个秘密我们并不需要一揭到底,至于揭的程度如何那就是我们那就是我们学出的程度如何了,我们要让对方知道我们在做什么?以及如何去做?这些东西需要我们以一定的技巧叙述出来,所起到的作用就是能够让对方了解自己的进度,却又能够不让对方来干涉自己的工作过程。因为我们是技术员,对方只是外行,即使对方知道了这个魔术的操作过程,也并不代表他们就能够向变着魔术的我们来随便修改这个魔术的变法,况且我们能够用不同的过程来得出一个同样的结果,这个过程的得出的主动权如何掌握在我们的手上,就看我们如何以高明的方式来揭开这个魔术的谜底了。当然了,在纯粹的理论上,我觉得开设这样一门课程是很成功的。但是毕竟现实里有太多的不确定的因素。最重要的因素就是授课的老师和听课的学生。这两个可以说是这门课成与败的决定性的因素。
作为我们学生来说,应该负起比较主要的责任。在大学里有了太多的基础课程,基础课程大多都比较枯燥无味,也许在第一个学期里我们还能够保持着新鲜感,但是在6学期之后,可以说再有新鲜感就是一件比较困难的事情了,我们都已经开始变得迟钝了。其次的,没有认识到这门课程的价值。这门课的价值我已经在上面说过了,是不言而喻的。但是并不是每个同学毕业之后都回从事计算机行业,也不是每个同学都知道这门课程的意义已经不仅仅局限于计算机这个范畴。或许有些人觉得反正以后不是这个发展方向,也就不在乎这个课程吧。我个人觉得这门课确实是挺好的,如果认真学必能学到很多东西,动手实践能力和从整个大体分析系统开发的逻辑性思维也会明显增强,不管以后从事哪个方面的工作,这对以后来说都是一笔很大的隐性财富。说到我自己对这么课的学习,还是有点愧疚的,前面四周我每周每节课都去上的,并且上课也认真听,一边听老师讲课一边自己看书本的介绍,但是后来我上这门课的次数就降低了,因为觉得时间很紧吧,而且老师上课的节奏我个人觉得有点慢,我都可以自己预习看到后面去了,但是这门课我还是每周至少上一节课的,虽然我早上7点多一点就出门,在自习室,但是有时候明明知道到了上课的时间,明明上课的地方离自习的地方不远也不太想去。我记得有次上课时候老师生气了,说来上课的人少,我仔细环顾了下四周发现确实人很少,稀稀疏疏的分散着,看起来确实不太舒服,让我不得不反思了,这大学的教育到底怎么了,怎么到了大四大家都不来上课,虽然我不是每节课都来,但是我还是时不时来上课的,可能是比较浮躁吧,快毕业了,觉得上课学不到什么实际的东西,要么实际一点好好考研继续深造,要么去培训增强实践能力这样才能较好的为找个满意的工作做好铺垫。
《软件工程》课程既强调基本概念和基本知识的理解和掌握,又侧重软件项目的分析、设计、实现和维护的基本技能。比较注意“点”和“面”的结合。我还是蛮喜欢这门课的,通过对这门课的学习让我意识到理论学习很重要,实践更重要,实践是检验真理的唯一标准,只有将理论与实际结合,才更能发挥我们所学的知识的作用,更能直接的创造效益,社会和国家做出贡献。
软件工程学习心得体会范文2软件工程心得体会未接触软件工程之前一直都很想学这门课程,因为觉得这门课很牛,是那些有工程师称号的高手才摆弄的东西。学了一个学期的软件工程课,终于知道了个软件工程的大概。学的时候总觉得很抽象,理解起来好像不难,但总是摸不着头脑一种很茫然的感觉。曾经以为程序就是软件,软件就是程序。学习这门课程第一个收获是,知道了二者的不同之处。以前做过的一些小型的软件比如加密软件,我也只是在程序旁边附上一个软件的说明,看来已经很接近作坊了。不过大的项目没有接触过,用软件工程的方法还是第一次。我想也是程序的不断复杂化导致了软件危机的发生,使得人们不得不探索新的解决方法。
经过倪老师的讲解,理解了软件工程,就是一套用于软件的团队开发,以提高软件质量和程序员工作效率为目的的规范。其核心就是,对于软件开发的5个重要组成部分:需求分析,设计,编码,调试,维护,如何组织这5个部分的工作,以及如何完成每一个工作。吾生也有涯,而知也无涯,学习永无止境。起初,对软件工程处于一知半解的状态,分工比较混乱。
在划分模块后明确了各自分工,渐渐形成良性循环。在学习过程中,知道了团队合作十分重要,争议固然存在,但通过讨论、协商,群策群力,在不断磨合中能够达成一致与默契。团队成员中能力各有高下,互相尊重,各取所长,不宜妄自菲薄。组长多加协调,组员积极配合,才能合作愉快。学习能力体现在能尽快接受新的知识,顺应变化,学为所用。
上《软件工程导论》这门课,我的收获大概如下:我们为什么需要软件工程呢?上面已经给出了一些原因。专业点讲,软件工程最终是为了实现“软件制造业”的社会化,工业化大生产,提高其劳动生产效率。只有如此,软件业才能实现社会化,工业化大生产,才能“做大做强”。没有管理的设计是失败和混乱的设计,没有设计指导的编程是无序的忙碌的。根据开发的软件的规模,应该适当程度的运用软件工程化的思想,需要灵活,毕竟我们开发的软件大多数是中小型的,大型的并不多见(我是这么认为的)。但只要涉及人员间的交流和沟通,或多或少都要需要软件工程才能更有效率,工作成果更稳定。
其实开发软件,就像是解决一个逻辑问题。想想自己平时是怎样写程序的。首先是要有一个想法,即我写的这个程序是要干什么的;然后就是对要实现的核心功能大概构思一种或多种实现方法,并从中选出一种自认为是较好的;接下来就是将涉及的各种主要或次要功能分成各个模块;最后就是分模块来编码和DEBUG。在我看来,除了第一步外,其余的步骤应该是一个循环的过程。在编码的过程中,你总是需要不断地回过头来修改原先的模块设计,甚至最初选定的实现算法。具体到每一步的工作要怎样完成,是非常灵活的,只要把握住大体的方向就行。在进行分析,设计,编码,调试,维护这几部分的工作的时候,最核心的就是文档的编写。
1.可行性分析就是关于当前项目能不能干的分析结果。
2.项目描述这是在决定立项以后,对当前项目的一份扼要说明。
3.需求分析就是对客户要求的功能的定义。
4.软件设计这就是对程序的每一个模块的详细设计的说明文档。
5.开发日志我一直都认为这是文档中最有趣的部分。开发日志相当于编码阶段的文档,它的形式可以很随意,主要是记录一些在写程序时突然萌发的灵感,或对代码的一些微小的修改,或对程序结构的一些微小变动等,还要对上述这些修改变动作些说明。
6.测试分析用于指出程序存在或潜在的缺陷和错误,以及程序性能的数字描述。
软件工程学习心得体会范文3在本学期的软件工程课程的学习中,我们学习了十一章的内容。第一章软件与软件工程的概念,这一章主要讲解的是一些概念性和基础性的内容,例如软件的概念、特性,软件危机的主要表现,软件工程的概念以及软件生存期、典型生存期模型等等。第二章软件工程方法与工具,这一章主要对软件工程方法进行介绍,包括三种方法:传统方法、面向对象方法、形式化方法。还引出了工具UML。第三章软件需求获取与结构化分析方法,本章详细介绍了需求获取与需求分析阶段的任务以及结构化分析方法,画分层的数据流图、E-R图以及状态图式本节的重点。第四章结构化分析方法,这一章重点讲解了使用变换型映射方法和事务型映射方法生成初始的模块结构以及模块结构的改进。第五章编码,这一章重点讲解了编码的风格及规范,还告诉我们编码规范说带来的好处,并告诫我们将来一点要形成好的编码风格。第六章软件测试方法,本章讲解了软件测试相关的概念及重要性,软件测试与开发各个阶段的关系;还介绍了白盒测试技术以及黑河测试技术。第七章统一建模语言UML概述,本章详细介绍了UML的基本模式、事物、关系及建模时用到的各种图进行了介绍。第八章面向对象分析,这一章主要讲解了面向对象分析的3种模型,包括功能模型、静态模型和动态模型。第九章软件体系结构与设计模式,本章对软件体系结构的基本概念、典型风格等进行了讲解。第十章面向对象设计,本章的重点是对面向对象分析时建立的对象模型进行调整和细化。第十一章软件维护,本章主要介绍软件维护的任务、软件维护活动以及软件维护方法进行了介绍。
要学习软件工程,学会如何系统的思考,以及养成良好的编码习惯,想学好软件工程,就必须知道软件工程的目标、过程和原则:软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的`约束。
软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。
软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。
我们学习了详细设计的方法,其原则是过程描述是否易于理解、复审和维护,进而过程描述能够自然地转换成代码,并保证详细设计与代码完全一致。包括程序流程图、N-S图、PAD图、HIPO图
程序流程图:程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。在流程图中只能使用下述的五种基本控制结构:顺序型;选择型;while型循环;until型循环;多情况型选择。
N-S图:一种符合结构化程序设计原则的图形描述工具,称为盒图,又称为N-S图。在N-S图中,为了表示五种基本控制结构,规定了五种图形构件。顺序型;选择型;WHILE重复型;UNTIL重复型;多分支选择型。
PAD图:它是用结构化程序设计思想表现程序逻辑结构的图形工具。PAD也设置了五种基本控制结构的图示,并允许递归使用。
HIPO图:HIPO图是由一组IPO图加一张HC图组成。它是美国IBM公司在软件设计中使用的主要表达工具。
HC图既是层次图,用于表示软件的分层结构。HC图中的每一个模块,均可用一张IPO图来描述。IPO图由输入、处理和输出三个框组成,需要时还可以增加一个数据文件框,这种图形的优点,是能够直观地显示输入—处理—输出三者之间的联系。
还有测试方法:按照测试过程是否在实际应用环境中来分,有静态分析与动态测试。测试方法有分析方法(包括静态分析法与白盒法)与非分析方法(称黑盒法)。
静态分析技术:不执行被测软件,可对需求分析说明书、软件设计说明书、源程序做结构检查、流程分析、符号执行来找出软件错误。
动态测试技术:当把程序作为一个函数,输入的全体称为函数的定义域,输出的全体称为函数的值域,函数则描述了输入的定义域与输出值域的关系。
还学习了其他很多工具、语言、方法等,虽然不是都学得很透彻,但我相信在今后的学习中一定会慢慢的完善的。
软件工程对于初学者来说,知识基础较薄弱,对一些应用操作、概念、工具方法等理解起来较为困难,要能从整体概念上较好地理解和把握、学好软件工程,不是仅仅把几本专业书籍细致地看几遍,然后上机练习几次就可以成功,学习过程中要注意多看多练要注意结合实际,更要多思考,面对错误不要一范就问,要尝试自己去解决。但是还要注意什么都学,肯定是什么都学不透的,要集中精力打攻坚战,学习软件工程首先要明白自己的学习目标究竟是什么,根据自己的实际工作出发,有针对性的在相应的学习方向上进行提高,制定出详细的学习规划。还要注意与其他科目的相辅相成,就像我们在学习面向对象分析的时候要结合大一学习的面向对象及其方法学这一专业科目进行研究拓展;在学习语言时,要看看与C语言的联系,多思多想,把从各个科目学到的知识通汇贯通。
在软件工程的学习中,我了解到了软件并非是一些代码这么简单,在开发软件的过程中,编写代码的工作量其实只占不到所有工程量的30%,而后期的管理和维护更是占了60%到80%之多。一个完整的项目规划须包括,软件的定义,可行性分析报告,项目开发计划,软件需求说明书,概要设计说明书,详细设计说明书,用户操作手册,测试计划,测试分析报告,开发进度报告,项目开发总结报告,软件维护手册,软件问题报告,软件修改报告,等多个文档,每个文档都要上级验收审查,而文档数量众多,要做好这点真的不是很容易,而恰恰写好文档正能保证完成软件工程其中一个目的的关键,既研究如何用最小的开销做出生存期较长的软件,再加上各个阶段都要进行周密的策划、详细的分工部署和人员安排,且各阶段要据具体情况不断的反复才能达成,所以代码只是开发软件这个浩大的工程的一个小小的过程。
而编码的学习中,我更了解到形成自己独特的规范的编码风格是非常重要的事。因为这影响到了软件后期繁重的维护,大家都要阅读你的程序,如果你写的程序毫无规范可言,那么别人怎么能读懂你的程序?读不懂程序,维护又从何谈起呢?所以,我们在今后的学习中,一定要注意这方面的培养,在写程序的过程中,要逐步的在规范的基础上形成属于自己的风格,即方便自己的修改,也方便日后他人的阅读。
在学习中,我们还要注意比较三种方法的优缺点,例如:传统方法虽然使软件摆脱了混乱和无序,但其在适应需求变化的方面不够灵活,而且传统方法要么面向行为,要么面向数据,缺乏两者的有机结合。而面向对象方法的程序设计和问题求解更符合人们日常自然的思维习惯,适合大型、复杂及交互性比较强的系统。形式化方法则是一中基于形式化数学变换的软件开发方法,它可将系统的规格说明转换为可执行的程序。
在今后的学习中要注意多读书、多思考、多练习、多讨论,不断熟悉书本的基础,并以此为基础将其扩散开来,应用于今后的实践。不断锻炼自己,向一名合格的程序设计师迈进。
第五篇:软件工程学习总结
软件工程学习总结
通过一个学期系统的学习软件工程这门课,结合与小组成员一起开发设备管理系统的经验,让我对软件的开发有了更深的了解,学习到每一个软件的开发都不仅仅是写代码,还有更加复杂的系统性的开发流程。
要开发一个软件,就拿设备管理系统来说,我们不能一上手就开始写代码,这样会浪费大量的人力物力财力还得不到理想的结果,首先我们应该先做好市场及需求方面的调查,了解用户需求有助于我们开发更加实用高效的软件,做好市场调研可以让我们对成本、利润、市场情况等有深层了解,让我们做出最优决策。
调查结束后,我们要写出详细的报告,包括项目开发计划书、软件需求规格说明书等,有了这些调查结果,我们才可以系统的,条理的来编写我们的软件。从前我们写代码都非常的盲目,杂乱无章,想到哪写到哪,浪费了大量的时间,写的代码结构也很松散,错误率高。学习软件工程后,我们学习了多种软件开发模型,学会了模块化的开发方法,小组成员每人完成不同的模块,最后综合起来,这样能够节省大量的时间,缩短开发时间,使代码结构更加紧凑,易于管理维护。如果说代码是一种工具的话,那么软件工程就是使用工具的经验指导,他能指导我们更好的使用这个工具,发挥它最大的潜能,帮助我们完成项目,不管使用什么程序语言,软件工程教给我们的开发方法都无条件适用,我们需要认真学习理解这门课程,它将伴随我们在程序开发的路上走下去。