软件工程学习心得体会

时间:2024-07-11 17:47:05 心得体会 我要投稿

软件工程学习心得体会

  我们从一些事情上得到感悟后,有这样的时机,要好好记录下来,这样有利于培养我们思考的习惯。怎样写好心得体会呢?下面是小编精心整理的软件工程学习心得体会,供大家参考借鉴,希望可以帮助到有需要的朋友。

软件工程学习心得体会

软件工程学习心得体会1

  作为一个计算机相关专业的学生,学习软件工程概论课程是必不可少的环节,这门课程为我们提供了对软件工程学科的基础认知和框架规划,同时也为我们在未来的学习和工作中打下了坚实的基础。在这门课程中,我认真学习、反思,从中获得了不少收获和体会。下面,我将从以下四个方面展开我的学习心得,并结合自身的经历,谈谈我的理解和思考。

  第二段:软件工程学科的基本认识

  学习软件工程概论,我们首先需要了解软件工程学科的基本认识。首先,软件工程是一个系统性的学科,其目的是确保软件的质量和效率,最终达到客户和开发者双方的需求。其次,软件工程的目标是建立高质量、可靠、易维护的软件系统,在项目计划、需求定义、软件设计、测试等各个阶段下工作,最终形成一个完整的软件开发生命周期。同时,软件工程学科也需要同时考虑工程学、计算机科学和管理科学等多个学科的知识结构,要顺应软件市场、技术骨干和客户需求,利用日新月异的技术、方法和工具不断提高软件工程的水平。

  第三段:软件工程的主要原则和方法

  软件工程的实践和研究不仅需要基本认识和知识框架,还需要深入了解软件工程的主要原则和方法。软件工程的主要原则包括:分阶段开发、模块化设计、适应性规划、严格记录和文档、提前预防和检测、先进的.技术和工具等。软件工程的主要方法包括:结构化的系统分析和设计、模型驱动的开发、敏捷的方法和迭代式的开发过程等。具体方法的选择应根据具体的需求和现实情况,要根据实际情况精选方法、工具和流程,不断更新和完善软件工程的理论体系。

  第四段:软件工程的社会价值

  软件工程不仅是一门学科,更代表了一种价值观和责任感。它对于人类社会的发展和进步扮演着重要的角色。在当今信息技术迅速发展的时代,软件工程已成为技术与社会相结合的桥梁和纽带。软件工程的社会价值包括:提高信息处理和科技发展水平、提高软件开发和维护效率、创造高质量和高性能的软件、优化各行各业的流程和管理、推动工业化和信息化协同发展、加强个人和团队协作能力等。软件工程的社会价值无处不在,是不可忽视的一部分。

  第五段:结语

  在这门软件工程概论课程中,我了解了软件工程学科的基本认识,深入学习了软件工程的主要原则和方法,并且认识到了软件工程的社会价值。通过学习软件工程,我不仅拓展了自己的知识面,也意识到了自己在未来的专业发展中需要掌握的技能和素养。软件工程是一门学科,也是一种责任感和价值观念。我相信,在未来的实践和研究中,我会不断学习和探索,为软件开发行业做出自己的贡献。

软件工程学习心得体会2

  通过这半学期我对软件工程的学习,老师在课堂上从软件工程的基础到用户的需求分析,最后到黑盒白盒测试通过自身做过的一些案例,生动形象的讲解了软件工程这门本身枯燥乏味的课程,这不仅增强了学生学习的积极性,也通过让我们自己去做一些需求分析,我们从中学到了许多知识。

  老师不仅仅在课堂上对我们悉心的知道,在课外还让我们多看一些有关软件工程方面最前沿的理论,通过这段时间我读了《软件工程——实践者的研究方法》、《件工程案例》这两本书,通过自己的读书学习,我有以下心得体会。

  众所周知软件对于一个公司,一个企业乃至一个国家都是十分重要的,因此一个软件的维护也十分重要,下面我就讲一些关于软件维护的知识。

  维护阶段是软件生存期中时间最长的一个阶段,也是花费的精力和费用最多的一个阶段。由于操作系统软件和基础软件版本升级或应用管理系统软件的不断开发、完善,需要对软件进行维护。但当运行环境改变或者系统功能、性能需求发生变化,使原软件不能通过维护的手段满足用户需求时,则需要进行软件更新。

  1.软件维护的类型:

  软件的开发过程对软件的维护有较大的影响。若不采用软件工程的方法开发软件,则软件只有程序而无文档,维护工作非常困难,这是一种非结构化的维护。若采用软件工程的方法开发软件,则各阶段都有相应的文档,容易进行维护工这是一种结构化的维护。非结构化维护活动只能从阅读、理解和分析源程序开始,这样做难以弄清系统功能、软件结构、数据结构等问题,常常造成误解。同时由于没有测试文档,也不可能进行回归测试很难保证程序的正确性。这种软件维护方法仅在软件工程时代之前采用。在进行结构化维护活动时,需从评价需求说明开始,弄清楚软件功能、性能上的改变;对设计说明文档进行评价,并进行修改和复查;根据设计的修改,进行程序的变动;根据测试文档中的测试用例进行回归测试;最后,把修改后的软件再次交付使用。这对于减少精力、减少花费和提高软件维护效率有很大的作用。

  2.软件维护的困难:

  软件维护的困难主要是由于软件需求分析和开发方法的缺陷造成的。软件生存周期中的开发阶段没有严格而科学的管理和规划,就会引起软件运行时的`维护困难。这种困难表现在如下几个方面。

  (1)读懂别人的程序是困难的。

  (2)文档的不一致性。这种不一致性表现在各种文档之间的不一致以及文档与程序之的不一致。

  (3)软件开发和软件维护在人员和时间上存在差异。

  (4)软件维护不是一项吸引人的工作。

  3. 软件维护的费用:

  软件维护的费用在总费用中的比重是不断增加的,它在 1970 年占 35%~40%,1980 年上升到 40%~60%,1990 年上升到 70%~80%。软件维护费用不断上升,这只是软件维护有形的代价,另外还有无形的代价,即要占用更多的资源。由于大量软件的维护活动要使用较多的硬件、软件和软件人员等资源,这样一来,投入新的软件开发的资源就因不足而受到影响。由于维护时的改动,在软件中引入了潜在的故障,从而降低了软件的质量。

  4.软件维护的分类

  软件维护有改正性维护、适应性维护、完善性维护和预防性维护 4 类。

  (1)改正性维护。在软件交付使用后,由于开发时测试的不彻底、不完全,必然会有一部分隐藏的错误被带到运行阶段来,这些隐藏下来的错误在某些特定的使用环境下就会暴露。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程,就叫做改正性维护。例如,改正性维护可以是改正原来程序中未使开关(off/on)复原的错误;解决开发时未能测试各种可能情况带来的问题;解决原来程序中遗漏处理文件中最后一个记录的问题等。

  (2)适应性维护。随着计算机的飞速发展,外部环境(新的硬、软件配置)或数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化,为了使软件适应这种变化,而去修改软件的过程就叫做适应性维护。例如,适应性维护可以是为现有的某个应用问题实现一个数据库;对某个指定的事务编码进行修改,增加字符个数;调整两个程序,使它们可以使用相同的记录结构;修改程序,使其适用于另外一种终端。

  (3)完善性维护。在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性,这种情况下进行的维护活动叫做完善性维护。例如,完善性维护可能是修改一个计算工资的程序,使其增加新的扣除项目;缩短系统的应答时间,使其达到特定的要求;把现有程序的终端对话方式加以改造,使其具有方便用户使用的界面;改进图形输出;增加联机帮助(Help)功能;为软件的运行增加监控设施等。在维护阶段的最初一两年,改正性维护的工作量较大。随着错误发现率急剧降低,并趋于稳定,就进入了正常使用期。然而,由于改造的要求,适应性维护和完善性维护的工作量逐步增加,在这种维护过程中又会引入新的错误,从而加重了维护的工作量。实践表明,在几种维护活动中,完善性维护所占的比重最大。即大部分维护工作是改变和加强软件,而不是纠错。所以,维护并不一定是救火式的紧急维修,而可以是有计划、有预谋的一种再开发活动。事实证明,来自用户要求而扩充、加强软件功能、性能的维护活动约占整个维护工作的 50%。

  (4)预防性维护。除了以上三类维护之外,还有一类维护活动,叫做预防性维护。这是为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。通常,预防性维护定义为:“把今天的方法学用于昨天的系统以满足明天的需要”。也就是说,采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试。

  在整个软件维护阶段所花费的全部工作量中,预防性维护只占很小的比例,而完善性维护占了几乎一半的工作量,软件维护活动所花费的工作占整个生存期工作量的 70%以上。这是由于在漫长的软件运行过程中需要不断对软件进行修改,以改正新发现的错误、适应新的环境和用户新的要求。这些修改需要花费很多精力和时间,而且有时修改不正确,还会引入新的错误。同时,软件维护技术不像开发技术那样成熟、规范化,消耗工作量自然就比较多。

  5.软件维护:

  (1)数据维护

  大多应用软件的数据随着应用规模的日益扩大和用户环境的迅速发展,不但基础信息,其他所有专题信息也需要经常地进行维护和更新。应根据系统的规模和实际需求,建立系统的数据维护更新机制,规定数据维护更新的周期,使系统的所有数据均相对地始终处于最新的状态。数据对一个软件的重要性,越来越被人们认识。但是,数据如果不经常更新,则有可能失去应用价值,这是每个软件维护和运行所应重视的问题。

  (2)硬件维护

  在软件运行的过程中,应建立硬件设备的日常维护制度,并根据设备的使用说明进行及时的维护,以保证设备完好和系统的正常运行。但当设备的处理能力达不到要求,或者设备本身已经过时、淘汰,或者设备损坏,买不到零配件,或者修理不值得时,应考虑硬件更新。系统硬件更新应按关于硬件评价指标的规定要求重新进行选型。

  (3)软件维护的原因

  要求进行软件维护的原因多种多样,归结起来有 3 种类型。改正在特定的使用条件下暴露出来的一些潜在程序错误或设计缺陷。因在软件使用过程中数据环境发生变化(例如,一个事务处理代码发生改变)或处理环境发生变化(例如,安装了新的硬件或操作系统),需要修改软件以适应这种变化。用户和数据处理人员在使用时常提出改进现有功能、增加新的功能,以及改善总体性能的要求,为满足这些要求,就需要修改软件把这些要求纳入到软件之中。

  6. 软件维护的过程

  一个维护申请提出之后,经评审需要维护,则按下列过程实施维护。

  (1)首先要确定进行维护的类型。在许多情况下,用户可以把一个请求看作改正性维护,而软件开发者可以把这个请求看作适应性或完善性维护。此时,对不同观点就需要协商解决。

  (2)对改正性维护从评价错误的严重性开始。如果存在一个严重的错误,例如,一个系统的重要功能不能执行,则有管理者组织有关人员立即开始分析问题。如果错误并不严重,则改正性维护与软件其他任务一起进行,统一安排,按计划进行维护工作。

  (3)适应性和完善性维护如同它是另一个开发工作一样,建立每个请求的优先权,安排所需求的工作。

  (4)实施维护任务。不管维护类型如何,大体上要开展相同的技术工作。这些工作包括修改软件设计、必要的代码修改、单元测试、集成测试、确认测试及复审。每种维护类型的侧重点不一样。

  (5)“救火”式维护。并不完全适合上面所述的经过仔细考虑的维护申请,而是对于出现突发性的重大故障的维护。

  以上是我对软件工程中软件维护的初步认识,以后我会更加努力的学习软件工程这门课程。

软件工程学习心得体会3

  学习了这门课程, 还有老师们的多元化教课,不但使我们从理论上掌握软件工程,还有从不同的实例,让理论和实践得到了很好的结合,老师主要是从六个方面来描述软件工程,分别是信息和多媒体,JAVA编程技术,数据库系统,布线系统,管理信息系统,网络编程.有很多都是老师们多年的工作经验的总结,下面是我听课后自己的一点心得和自己对软件开发一点感想,我知道还有好多的不懂,只有通过不断的学习才能一一解开。

  信息和多媒体

  课中老师给出一些案例,其中主要展示了Authorware,Visual Basic软件,让我了解信息多媒体中,用Authorware开发出的一些管理系统,并用在触摸屏上,而在实际的生活中是很多见的,比如在什么展览厅中,在开发这类软件中特别要注意的地方是界面方面和功能方面要一目了然,要想像一下别人在用你系统的时候是用手指去触摸操作而不是鼠标,特别在数据库后台的时候是整机的,所以在设计时一定要求完美,做成系统就不应该有什么要改的,还有要有扩展性,可方便的与各种外部设备挂接,实现数据交换,所以在这方面开发的时候,一定要从用户的角度来看,思维不能用传统的开发思想,我认为做这类系统时候,并不是开发环境的难点,最重要的是思维的转变,这样才能做出用户用得满意的系统。

  JAVA

  这门语言的发展是相当迅速的,老师关键讲了Jsp,目前流行的四种开发WEB页语言,Jsp,Asp,Php,Asp.net,而Jsp是从JAVA语言中派生出来的,继承了JAVA的优良性,所以Jsp的强大之处就在这了,轻松的跨越操作系统的平台,而且他不像Asp, 所有的解析全部由IIS 来完成, 量过大时,IIS就无能为力,,Jsp和Tomcat的组合是相当完美的,Tomcat的强大之处就在他在处理请求页面的时候实现了多线程分配,这样就能保证访问量不会过量占用内存和CPU,在开发Jsp的时候,老师给我们一款式Jcreater,可以看到JAVA的开发工具界面都是非常友好,Jsp与Asp有许多相类的地方,相比较,Jsp有两方面的优点,首先,动态部分用JAVA编写,而不是VB Script或其他Microsoft语言,不仅功能更强大而且易于使用.第二,Jsp应用可以移植其它的操作系统和非Microsoft的web服务器上.再者Jsp的安全性和访问速度也是在其它几个web开发语言中出类拨萃,JAVA语言的纯面向对象让我们在Jsp中得到真正的体现,Jsp的后台数据库很随意,不过Mysql是最佳选择,其实在掌握了Asp的开发后,我认为Jsp的开发就是在于语言的不同,数据库的开发思想都是相通,最重要是做些开发,慢慢的就知道其中的一些技巧和经验。

  数据库系统

  计算机中最重要就是数据,现在数据库中比较大型号的系统就是SQL SERVER,MY SQL,ORACLE,在windows下最常用的是SQL SERVER,从数据库的设计到数据库的实现, DBMS的研制包括研制DBMS本身以及以DBMS为核心的一组相互联系的软件系统。研制的目标是扩大功能、提高性能和提高用户的生产率, 数据库设计的主要任务是在DBMS的支持下,按照应用的要求,为某一部门或组织设计一个结构合理、使用方便、效率较高的数据库及其应用系统,在我们使用的SQL SERVER中,其实是把数据库原理都己封装好,所以我们就只是新建Database,再建Table,我们只是需要调用就行,再用SQL语句来实现,读取,添加,删除,修改,更新等功能,数据库对于用户来说就是这些基本的功能,数据库理论主要集中于关系数据的规范化理论,关系数据理论,但随着人工智能与数据库理论的结合,新的数据库理论如演绎数据库系统,知识库系统,随着数据库的发展,以后的各个领域都将有数据库系统的存在,数据库将和我们的生活紧密相连,新型数据库理论的出现必将有新的数据库系统,而新的系统将趋于界面简洁化,使用简单化,功能强大化,可扩展性强,还有就是智能性强!

  布线系统

  课上老师从他做过几个工程来讲,其中自上而下的设计思路很是有用,就是从顶层开始,网络服务,NetwokrSystem,硬件系统,OA_CA_BA,网络系统,综合布线,楼层,设计是从上而下,而实施时是从下而上的,这样就有一个比较开放的设计模式,在以后的大楼中,都会是楼宇自动化和智能大厦,而综合布线系统则更是要考虑各方面的困素,如楼层的设计,你设计出来的布线系统一定要符合大楼的实际情况,这样才能做到因地制宜,从根本上做好。

  综合布线系统可划分成六个部分,其中三个子系统:配线(水平)子系统;干线(垂直)子系统;建筑群子系统;外加三个部分:工作区、设备间、管理独立的需要设置终端设备的区域宜划分为一个工作区。工作区应由配线布线系统的信息插座延伸到工作站终端设备处的连接电缆及适配器组成。

  工作区的每一个信息插座均应支持电话机、数据终端、计算机、电视机及监视器等终端的设置和安装。

  配线子系统应由工作区的信息插座、信息插座至楼层配线设备(FD)的配线电缆或光缆、楼层配线设备和跳线等组成。

  干线子系统应由设备间的建筑物配线设备(BD)和跳线以及设备间至各楼层配线间的干线电缆组成, 干线子系统应由设备间的建筑物配线设备(BD)和跳线以及设备间至各楼层配线间的干线电缆组成。

  设备间是在每一幢大楼的适当地点设置电信设备和计算机网络设备,以及建筑物配线设备,进行网络管理的`场所。对于综合布线工程设计,设备间主要安装建筑物配线设备(BD)。电话、计算机等各种主机设备及引入设备可合装在一起。 设备间内的所有总配线设备应用色标区别各类用途的配线区上面都所都是书上的一些慨念性知识,在设计上划分这些子系统时就是从这些慨念来区分,这样就能在本质上区别他们之间的不同,就像老师所说,跟着别人做一次工程,就什么都明白了,设计布线系统一定要从做实际出发,做过几次后,一些程管理信息系统 信息系统(Information System, IS):基于计算机技术、网络互联技术、现代通讯技术和各种软件技术,各种理论和方法于一体,提供信息服务的人机系统.它的组成是信息源,信息处理器,信息用户,信息存储器,信息管理者和传输通道。

  在信息系统中

  信息管理者起着主导作用,做一个信息系统是要靠几个人一起合作的,信息系统开发的阶段可分为,规划阶段,分析阶段,设计阶段,实施阶段,支持阶段,其中最重要的就是第一阶段,它是由系统分析员,也是总体的设计师设计师完成,而我们传统的思想中的程序员写的代码应该是很重要的,但是事实上并不是这样,代码的编写是在实施阶段,所以不要以为在做系统时,代码是很重要的,可能我们在做系统时,从规划到实施都是一个人来完成,所以并没有意识到设计的重要性,只有一个好的设计才能从根本做一个好的系统!

  网络编程

  在网络编程中可以用到的语言有很多,VB,VC,C++,JAVA,Delphi,还有就是微软VS.net,它是从框架的模式来总估设计,最新的Delphi20xx也是支持.net框架,框架的慨念我个认为是, .net框架的核心是通用语言运行,.net框架中的类为开发人员提供了统一的,面向对象的,层次化的,可扩展性的类库集(API),现今,C++开发人员使用的是微软基础类库,JAVA人员使用的是WINDOWS基础类库,而Visual Basic用户使用的又是Visual Basic API集.就是说.net框架统一了微软当前同的框架,这样,开发人员不再而需要学习多种框架就能顺利编程.还有就是通过创建一个公共的跨编程语言的API集,.net框架可实现跨语言继承性,错误处理功能和调试,实际上,从Jscript到C++的所有编程语言都是相互的,开发人员可以自由选择理想的编程语言.网络编程在现在己成为一种流行的趋势,互连网的迅猛发展让网络编程成为程序员发展的新空间,而以后什么语言最流行,可能就是JAVA,VS.net,Delphi这三种语言占大数了,记得比尔盖次曾经说过,我们的编程水平还是非常的低,在以后的时间将有很大的发展空间,很可能我们以后所用的系统也许就高语音识别,或人的触觉来操作.而在我们身边,QQ这个软件可以说是中国人开发的最为成功的网络软件,不但是方便使用而且成为当前互连网上最可靠的点到点的网络传输工具,还记得原来用的第一款QQ软件,就只能单纯发文字,当然也是互连网的发展给了QQ一个非常好机遇,网络编程的发展让我们在互连网通讯越来越方便,对我们学计算机的人也是机遇和挑战.并存。

  以上就是学习这门课程的心得,软件工程并不是教你怎么写程序而是教你在理论上如何设计最为成功的软件开发,学完后也许认为什么都没有学到,但是在做软件开发上它能给你指导,设计出可靠,可行,可实施的方案。

软件工程学习心得体会4

  一、需求分析和概要设计。

  1)需求分析

  按照软件工程的软件过程来说:

  1需求分析产生了软件功能规格说明书,需要确定用户对软件的需求,要作到明确、无歧义。不涉及具体实现方法。用户能看得明白,开发人员也可据此进行下面的工作(概要设计)。

  2.概要设计产生了软件概要设计说明书,说明系统模块划分、选择的技术路线等,整体说明软件的实现思路。并且需要指出关键技术难点等。

  在进行需求分析时,我们既是开发者又是用户,本系统的业务流程与业务分类的定义比较难。我们的团队进行了研讨,还充分运用了身边的各种资源,大量的查找了很多网络上关于工资系统的资料。通过资料的进行讨论、根据我们的课题进行分析,最后确定了用户的需求为:

  1.本系统在高校应用后高校工资管理方面的教职工将减少至目前的50%左右;

  2.本系统在高校应用后将在高校各方面的成本将会有所降低;

  3.本系统在高校应用后将教职工的工资达到完全透明,计算更加精确教职工因纠纷事件减少到1%。 根据分析将系统的功能从一般教职工与系统管理者两个角度将功能划分为7个模块,当然介于我们的知识有限,有的功能没有实现:员工工资与考勤直接挂钩,但本系统无法与员工考勤系统挂钩相连,由于涉及此系统时该高校并没有员工考勤系统,而且我们在最初进行商量的时候也没有提出该要求。

  2)概要设计

  从概要阶段开发正式进入软件的实际开发阶段,本阶段完成系统的大致设计并明确系统的数据结构与软件结构。在软件设计阶段主要是把一个软件需求转化为软件表示的'过程,这种表示只是描绘出软件的总的概貌。由概要设计说产生大的概要说明书的目的就是进一步细化软件设计阶段得出的软件总体概貌,把它加工成在程序细节上非常接近于源程序的软件表示。

  在本阶段主要涉及处理流程的设计、总体结构和模块外部设计、功能分配。在接口设计上有用户接口、外部接口、内部接口;数据结构设计有逻辑结构设计、物理结构设计等等。在接口设计时参考了大量的资料。

  最后就是编写文档——软件需求说明书、概要分析说明书。

  而文档的作用在于:一是可以帮助整理思路。把要完成的目标,系统的结构,每一个模块的功能等整理一下,然后分门别类地写下来,这样在开发的过程中,就有据可依,在需要回过头来修改设计的时候,也有证可考。二是便于交流。三是可以作为以后维护时的参考资料。

  三、软件工程课程设计——心得体会

  我们进行了为期一周的课程设计。通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。安排课程设计的基本目的,在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟。尤其是观察、分析和解决问题的实际工作能力,以便培养成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。作为整个学习体系的有机组成部分,课程设计虽然安排在一周进行,但并不具有绝对独立的意义。它的一个重要功能,在于运用学习成果,检验学习成果。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。对我们信息管理与信息系统专业的学生来说,实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。这也是一次预演和准备毕业设计工作。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。课程设计促进了我系人才培养计划的完善和课程设置的调整。

  在一个星期的课程设计之后,我们普遍感到不仅实际动手能力有所提高,更重要的是通过对软件开发流程的了解,进一步激发了我们对专业知识的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。

  软件工程课程虽已结束,但我对于软件工程的学习才刚刚开始。我体会到项目管理的重要性,随着软件规模、复杂度的不断增加,项目开发中更多的是协作、管理和控制。我学习到很多一般性的方法,例如:需求获取、模块化、计划等等。同时,我也认识到使用计算机解决实际问题的复杂性,人们认识表达的过程不断反复、逐步深化,软件工程方法要提供给程序员们一种更加有效的对客观世界问题域进行形式化的过程方法。

软件工程学习心得体会5

  学习了这门课程, 还有老师们的多元化教课,不但让我从理论上掌握软件工程,还有从不同的实例,让理论和实践得到了很好的结合。整一个学期下来,总的来说还是学到了很多东西的,有很多地方是值得肯定的,其实在我看来,软件工程与其说是一门课程,不如说是一门思想。是一个如何去分析和处理问题的过程,应该说其范畴已经远远不止局限于该门课程,成为了一个综合的一个能够解决问题的思想集合。

  整本书的内容逻辑很清晰明了,由浅入深循序渐进,首先我就大概描述下我们所学的内容,第一章是从整体分析软件工程这门学科的发展和所处的社会环境,接着后面的几章深入分析了软件开放过程和模式、软件项目管理、计算机工程、需求分析、结构化分析建模以及基于UML面向对象分析建模等。接着我就详细介绍下我对这门课程知识点的理解概括:

  软件:软件是能够完成预定功能和性能的可执行的计算机程序和使程序正常执行所需要的数据,加上描述程序的操作和使用的文档。软件的特征:①软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。②软件是通过人们的智力活动,把知识与技术转化成信息的一种产品。③软件成为产品后,其生产只是简单的拷贝,不同于硬件制造。④维护过程比硬件复杂的多,甚至会引发新的错误。软件危机:指的是软件开发和维护过程中遇到的一系列严重问题。出现软件危机的原因:①软件维护费用急剧上升,直接威胁计算机应用的扩大。②软件生产技术进步缓慢。软件工程是指导计算机软件开发和维护的工程学科。 软件生存周期:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件的生存周期可分为八个阶段:①问题定义;②可行性研究;③需求分析;④总体(概要)设计;⑤详细设计;⑥编码与单元测试;⑦综合测试;⑧软件维护;

  瀑布模式:是传统的软件开发模式,其中的“瀑布”是对这个模式的形象表达,由山顶倾泻下来的水,自顶向下、逐渐细化。其特点是:线性化过程;分为分析、设计、编码、集成等几个阶段,并且各阶段逐级推进,不允许跨越。里程碑管理;阶段评审;文档驱动;简洁便于工程应用的线性化过程步骤,并可以通过里程碑管理机制而使项目进程量化。其明显的优点就是没个阶段结束前都要对所完成的阶段成果进行评审,这使得软件的错误能够在个阶段内尽早发现并尽早解决,总的来说瀑布模式具有良好的质量保证机制,有很强的生命力。

  原型进化模式:对软件进行直接模拟或仿真,只需要分析需求框架后进行原型创建,再对原型系统进行逐步细化与完善,通过版本更新逐步满足用户对于软件的多方面需要。

  增量模式:开发过程有三个任务域,分别是设计结构、开发构件和集成系统,它既有完善的工程管理机制,又能适应用户需求变更,有利于质量的监控,并且各局部基于构件构造,有利于逐步构建与完善;由于先交付核心构件可利于降低项目的技术风险。

  螺旋模式:是一种可较好的规避开发风险过程的模式,项目是基于任务的螺旋式推进,每个螺旋由内之外分别是需求分析、软件设计、系统集成、验证与交付。

  软件开发的整个过程:①需要项目团队,组建优秀的团队可以开发出更搞质量的软件产品。任务开发团队要求小而精,成员大多在8人以内,主要成员有项

  目负责人、开发人员、资料管理员和软件测试员。②项目计划是为了使软件开发各项工作有秩序地进行,包括任务分配和基于里程碑的进度安排,甘特图和任务网络图是用来描述进度计划的工具。项目计划书可以作为软件开发的工作指南。③项目成本估算,由于项目有来自各方面的成本包括工资开支、场地费、差旅费、设备费和资料费等,但是软件主要是对人力成本的估算,常用的方法有程序代码成本估算法等。④软件风险管理包括很多不确定的风险因素,如计划风险、管理风险、需求风险、技术风险、人员风险、产品风险、用户风险和商业风险等等,而风险管理的主要任务是:风险识别、风险评估、和风险防范。⑤软件文档管理,软件文档是工程模式软件开发的成果体现,包括技术文档、管理文档和用户文档。 ⑥软件配置管理与软件质量管理,包括配置规划、软件变更控制、软件版本控制和质量控制计划。

  计算机系统由硬件、软件、数据资源、网络资源、使用系统的人等诸多元素。有三种典型的计算机体系结构:①主机结构,主机集中了全部智能,并依靠终端接口与外部设备连接。②Client/Server结构,智能分布于服务器与客户机,并依靠网络连接成系统,其中,服务器处于核心位置,提供被动核心服务;客户机处于边缘位置,可主动访问服务器,寻求服务支持。③Browser/server结构,可适应互联网远程交互的特殊结构,基于Web服务器构建。

  需求分析:系统开发前期需求分析很重要,它是为了有效解决用户问题的需要进行的一项工程活动,所需要考虑的需求问题是功能需求、数据需求、性能需求和接口需求,开发者承担分析任务,核心是用户。其步骤有三个:①获取客户需求,客户泛指某个人或机构部门等,一般方法是调查,包括访谈、座谈、问卷、跟班和收集资料,需求规约可表达用户的软件价值。②建立需求模型,它是用户需求的图解,一些常用的模型有:业务树图、用例图、活动图。分别用于结构化需求建模、系统业务举例和反映系统工作流程。③进行需求验证,要验证的主要内容有:有效性验证、一致性验证、完整性验证、现实性验证和可检验性验证。 结构化分析建模:它是建立在需求规约基础上的,对软件问题进行全面解说,包括四个方面:①数据建模,它与数据库设计密切相关,ER图涉及实体、关系、属性等图形元素,在业务层面建立数据库概念模型,一般用于前期的建模构想。②功能建模,是对系统数据加工的图解,数据流程图是常用的建模工具,涉及数据接口、数据处理、数据流、数据存储等图形元素,用于描述系统数据加工细节。③行为建模,行为模型用于说哦名软件系统与环境的交互,状态转换图常用的软件行为建模工具涉及状态、事件等图形元素。⑤数据字典,是用于定义软件的元素,使软件元素获得严肃的、详密的、精确的规格说明。需求分析模型中的数据、功能、行为等诸多方面的元素,都有必要通过数据字典给予细节说明,以达到对系统较完整全面的规格定义。

  基于UML对象面向对象分析建模:UML是统一建模语言,有统一的语法、语义和语用规则,其建模过程的特点是:用例驱动、以构架为中心和增量迭代,通过包实现对模型的有效的一体化管理。包括三部分:①用例建模,它面向用户需求的,能够反映系统的用户价值,用例图的基本元素有用例、参与者、交流;用例之间有泛化、延伸和包含关系。②活动建模,活动图用于描述系统动态过程,主要图形元素有:活动、转换、起点、终点、判断、并发、同步、泳道等。可描述高层业务级活动,涉及整个业务流程,针对每个用例活动建模,反映用例内部活动细节。③类分析建模,这里就只考虑实体类,实体类所代表的数据相互之间通常有一定的关系,依靠这种关系可形成有组织的程序数据结构。实体类之间的'

  主要数据关系有:关联、聚类、泛化。

  接下来我就简单说下我上这门课的简单的心得体会,我们是大四的学生了,也只有这个学期有课了,刚开始课表安排出来的时候觉得挺意外的,只有前八周有课,当时我还是有点小感动的,大四事情很多,有要考研的和工作的,大家也都有各自的事情,如果有16周的课,那么每周课不是特别多,但是时间特别分散,也不能集中某段时间去做什么事情。但是相对于老师的压力也有,课程压缩了相当于每节课的教学任务大大增加了,在加上有些假期冲掉课,就感觉我们好像上课学不到什么东西,也只是一些关键的和考试挂钩的才重点讲,完全没有扩展的时间和空间了。但是总的来说,学校开了这门课,我们上了这门课,总是学到了点东西的,不可能明明上了软件工程这门课,却像没上一样什么都不懂。在上课的时候我还是很认真地去听老师所讲述的内容的,我觉得他的思想和我一向而来的培养计算机学生综合素质的理解还是在一定程度上不谋而合了,所谓的需求获取,那就是一个谈判,辩论,交流的过程,已经不是单纯的编编程序就能解决的问题了。从我所看到的听到的来说,我最怕的就是计算机系的学生被别人说成是个带着厚眼镜的,只能够在电脑前编编程序的,在交际场上不知道说什么而一个字都说不出来的人。我觉得这样的人进入社会之后是没有什么前途的,起码他们缺乏了与人沟通交流的能力。而这门课程在一定程度上给了我们这些学生一个机会来锻炼自己在另一方面的能力,设想一下,一个又有技术又能够与人交流合作的人所取得的成就自然要比一个单单只会编程序的人要大得多。其次,这门课程教给了我们在完成一个实际项目时的一般程序及过程,我认为这是一份非常具有实际意义的教学内容。当我们在毕业之后,这是我们实际要运用的一项非常有用的技能,而且不仅仅局限于软件工程的范畴,我们即使是从事与其它行业,不也是要从需求获取开始,一直有条有理地到最后成品的出炉吗?应该说这就是这门课的价值所在。无论是在上课,还是在学生会里面做学生工作,我都深深地感觉到,技术性的工作就好比变魔术,其实原理是非常简单的,甚至可以说简单的可笑,但是当你就是做出这么一个简单的东西出来之后,一些外行们有时候会用崇拜的眼光看着你,觉得你很厉害,很高深莫测。但是制作的过程他们却不知道,也许知道之后他们只是会哑然失笑,原来这个东西的制作过程是如此的简单。这个可以说就是技术的魅力了,而作为需求获取及之后的一系列过程则是类似于魔术揭秘的过程,但是作为这个秘密我们并不需要一揭到底,至于揭的程度如何那就是我们那就是我们学出的程度如何了,我们要让对方知道我们在做什么?以及如何去做?这些东西需要我们以一定的技巧叙述出来,所起到的作用就是能够让对方了解自己的进度,却又能够不让对方来干涉自己的工作过程。因为我们是技术员,对方只是外行,即使对方知道了这个魔术的操作过程,也并不代表他们就能够向变着魔术的我们来随便修改这个魔术的变法,况且我们能够用不同的过程来得出一个同样的结果,这个过程的得出的主动权如何掌握在我们的手上,就看我们如何以高明的方式来揭开这个魔术的谜底了。当然了,在纯粹的理论上,我觉得开设这样一门课程是很成功的。但是毕竟现实里有太多的不确定的因素。最重要的因素就是授课的老师和听课的学生。这两个可以说是这门课成与败的决定性的因素。

  作为我们学生来说,应该负起比较主要的责任。在大学里有了太多的基础课程,基础课程大多都比较枯燥无味,也许在第一个学期里我们还能够保持着新鲜感,但是在6学期之后,可以说再有新鲜感就是一件比较困难的事情了,我们都已经开始变得迟钝了。其次的,没有认识到这门课程的价值。这门课的价值我已

  经在上面说过了,是不言而喻的。但是并不是每个同学毕业之后都回从事计算机行业,也不是每个同学都知道这门课程的意义已经不仅仅局限于计算机这个范畴。或许有些人觉得反正以后不是这个发展方向,也就不在乎这个课程吧。我个人觉得这门课确实是挺好的,如果认真学必能学到很多东西,动手实践能力和从整个大体分析系统开发的逻辑性思维也会明显增强,不管以后从事哪个方面的工作,这对以后来说都是一笔很大的隐性财富。说到我自己对这么课的学习,还是有点愧疚的,前面四周我每周每节课都去上的,并且上课也认真听,一边听老师讲课一边自己看书本的介绍,但是后来我上这门课的次数就降低了,因为觉得时间很紧吧,而且老师上课的节奏我个人觉得有点慢,我都可以自己预习看到后面去了,但是这门课我还是每周至少上一节课的,虽然我早上7点多一点就出门,在自习室,但是有时候明明知道到了上课的时间,明明上课的地方离自习的地方不远也不太想去。我记得有次上课时候老师生气了,说来上课的人少,我仔细环顾了下四周发现确实人很少,稀稀疏疏的分散着,看起来确实不太舒服,让我不得不反思了,这大学的教育到底怎么了,怎么到了大四大家都不来上课,虽然我不是每节课都来,但是我还是时不时来上课的,可能是比较浮躁吧,快毕业了,觉得上课学不到什么实际的东西,要么实际一点好好考研继续深造,要么去培训增强实践能力这样才能较好的为找个满意的工作做好铺垫。

  《软件工程》课程既强调基本概念和基本知识的理解和掌握,又侧重软件项目的分析、设计、实现和维护的基本技能。比较注意“点”和“面”的结合。我还是蛮喜欢这门课的,通过对这门课的学习让我意识到理论学习很重要,实践更重要,实践是检验真理的唯一标准,只有将理论与实际结合,才更能发挥我们所学的知识的作用,更能直接的创造效益,社会和国家做出贡献。

软件工程学习心得体会6

  整本书的内容逻辑很清晰明了,由浅入深循序渐进,首先我就大概描述下我们所学的内 容,第一章是从整体分析软件工程这门学科的发展和所处的社会环境,接着后面的几章深入分析了软件开放过程和模式、软件项目管理、计算机工程、需求分析、结构化分析建模以及基于UML面向对象分析建模等。接着我就详细介绍下我对这门课程知识点的理解概括:

  软件工程是指导计算机软件开发和维护的工程学科。

  软件生存周期:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件的生存周期可分为八个阶段:

  ①问题定义;

  ②可行性研究;

  ③需求分析;

  ④总体(概要)设计;

  ⑤详细设计;

  ⑥编码与单元测试;

  ⑦综合测试;

  ⑧软件维护; 瀑布模式:原型进化模式:增量模式:螺旋模式:

  软件开发的整个过程:

  ①需要项目团队,组建优秀的团队可以开发出更搞质量的软件产品。任务开发团队要求小而精,成员大多在8人以内,主要成员有项目负责人、开发人员、资料管理员和软件测试员。

  ②项目计划是为了使软件开发各项工作有秩序地进行,包括任务分配和基于里程碑的进度安排,甘特图和任务网络图是用来描述进度计划的工具。项目计划书可以作为软件开发的工作指南。

  ③项目成本估算,由于项目有来自各方面的成本包括工资开支、场地费、差旅费、设备费和资料费等,但是软件主要是对人力成本的估算,常用的`方法有程序代码成本估算法等。

  ④软件风险管理包括很多不确定的风险因素,如计划风险、管理风险、需求风险、技术风险、人员风险、产品风险、用户风险和商业风险等等,而风险管理的主要任务是:风险识别、风险评估、和风险防范。

  ⑤软件文档管理,软件文档是工程模式软件开发的成果体现,包括技术文档、管理文档和用户文档。 ⑥软件配置管理与软件质量管理,包括配置规划、软件变更控制、软件版本控制和质量控制计划。

  《软件工程》课程既强调基本概念和基本知识的理解和掌握,又侧重软件项目的分析、设计、实现和维护的基本技能。比较注意“点”和“面”的结合。我还是蛮喜欢这门课的,通过对这门课的学习让我意识到理论学习很重要,实践更重要,实践是检验真理的唯一标准,只有将理论与实际结合,才更能发挥我们所学的知识的作用,更能直接的创造效益,社会和国家做出贡献。

软件工程学习心得体会7

  未接触软件工程之前一直都很想学这门课程,因为觉得这门课很牛,是那些有工程师称号的高手才摆弄的东西。学了一个学期的软件工程课,终于知道了个软件工程的大概。学的时候总觉得很抽象,理解起来好像不难,但总是摸不着头脑一种很茫然的感觉。曾经以为程序就是软件,软件就是程序。学习这门课程第一个收获是,知道了二者的不同之处。以前做过的一些小型的软件比如加密软件,我也只是在程序旁边附上一个软件的说明,看来已经很接近作坊了。不过大的项目没有接触过,用软件工程的方法还是第一次。我想也是程序的不断复杂化导致了软件危机的发生,使得人们不得不探索新的解决方法。

  经过倪老师的讲解,理解了软件工程,就是一套用于软件的'团队开发,以提高软件质量和程序员工作效率为目的的规范。其核心就是,对于软件开发的5个重要组成部分:需求分析,设计,编码,调试,维护,如何组织这5个部分的工作,以及如何完成每一个工作。吾生也有涯,而知也无涯,学习永无止境。起初,对软件工程处于一知半解的状态,分工比较混乱。

  在划分模块后明确了各自分工,渐渐形成良性循环。在学习过程中,知道了团队合作十分重要,争议固然存在,但通过讨论、协商,群策群力,在不断磨合中能够达成一致与默契。团队成员中能力各有高下,互相尊重,各取所长,不宜妄自菲薄。组长多加协调,组员积极配合,才能合作愉快。学习能力体现在能尽快接受新的知识,顺应变化,学为所用。

  上《软件工程导论》这门课,我的收获大概如下:我们为什么需要软件工程呢?上面已经给出了一些原因。专业点讲,软件工程最终是为了实现“软件制造业”的社会化,工业化大生产,提高其劳动生产效率。只有如此,软件业才能实现社会化,工业化大生产,才能“做大做强”。没有管理的设计是失败和混乱的设计,没有设计指导的编程是无序的忙碌的。根据开发的软件的规模,应该适当程度的运用软件工程化的思想,需要灵活,毕竟我们开发的软件大多数是中小型的,大型的并不多见(我是这么认为的)。但只要涉及人员间的交流和沟通,或多或少都要需要软件工程才能更有效率,工作成果更稳定。

  其实开发软件,就像是解决一个逻辑问题。想想自己平时是怎样写程序的。首先是要有一个想法,即我写的这个程序是要干什么的;然后就是对要实现的核心功能大概构思一种或多种实现方法,并从中选出一种自认为是较好的;接下来就是将涉及的各种主要或次要功能分成各个模块;最后就是分模块来编码和DEBUG。在我看来,除了第一步外,其余的步骤应该是一个循环的过程。在编码的过程中,你总是需要不断地回过头来修改原先的模块设计,甚至最初选定的实现算法。具体到每一步的工作要怎样完成,是非常灵活的,只要把握住大体的方向就行。在进行分析,设计,编码,调试,维护这几部分的工作的时候,最核心的就是文档的编写。1。可行性分析就是关于当前项目能不能干的分析结果。

  2。项目描述这是在决定立项以后,对当前项目的一份扼要说明。

  3。需求分析就是对客户要求的功能的定义。

  4。软件设计这就是对程序的每一个模块的详细设计的说明文档。

  5。开发日志我一直都认为这是文档中最有趣的部分。开发日志相当于编码阶段的文档,它的形式可以很随意,主要是记录一些在写程序时突然萌发的灵感,或对代码的一些微小的修改,或对程序结构的一些微小变动等,还要对上述这些修改变动作些说明。

  6。测试分析用于指出程序存在或潜在的缺陷和错误,以及程序性能的数字描述。

【软件工程学习心得体会】相关文章:

软件工程学习心得体会11-26

软件工程心得体会02-19

软件工程实验心得体会12-17

软件工程心得体会(精选11篇)08-10

软件工程实训心得体会03-22

软件工程专业简历08-04

软件工程个人总结09-10

软件工程实习总结11-26

软件工程实习报告01-13