软件工程心得体会8篇
心得体会是我们在经历中的教训,让我们不断成长和改进,写心得体会需要我们用心去感受和体验,只有这样才能写出真实、有深度的文字,以下是淘范文小编精心为您推荐的软件工程心得体会8篇,供大家参考。
软件工程心得体会篇1
时间过的很快,转眼间已经实习将近5个月,其中有2个月是属于完全被流放的。最先在内部系统组参与内部管理系统开发(struts+mysql+spring+hibernate),之后是去做网络交换机软件的脚本测试。现在又回归内部系统,虽然在脚本组期间,编码能力被别人甩在后头,但至少具有了一些测试经验。
至少自己做的东西,是真正交付到了客户手上,到也稍微有些成就感。
1、浅谈测试
一直以来,我都认为测试是脱离了软件工程范围的工作,不以为屑。但在实际情况中,测试是既重要且难以精湛的.其真正的压力,在于找不到bug,责任在你,而不在于编码人员。一般的测试人员不懂编码,他们靠的是日以累计的经验总结和想象力。而要做到高级测试工程师,则一定要懂编码,因为这是你完全掌握整个系统的方方面面具体运作的前提。但占主导地位的,还是大型系统的集成测试经验。实际项目中,编码时间一般只占30%左右,真正耗费时间的是it阶段的`找 bug与对应bug,此阶段基本评定了coder的编码质量。
2、程序员的困惑
有些人,以为教学视频和代码看多,自己就懂的多,实际做起来,却不知从何下手,
问题在那?如何定位?如何解决?通通跟一样能力有关,debug追踪能力,也称调试。在项目组工作不愁源码资源,但问题是蛋糕摆在面前,你如何去消化?
有位同事告诉我:代码看几遍都没用,要去抄,例如一个查询模块,在此基础上去做具体记录的历史记录查询模块,你可能会觉得很简单,但实际情况却往往报一堆异常,配置问题涉及到方方面面,以及数据库字段,传值问题等等,一大堆对于新人来说很郁闷的问题。但不用怕,只要学会调试,一个个问题去追踪,一个个去解决,自然而然,那段“源码”才真正属于你。
3、如何调试追踪
如果你能在短短的时间内就看到问题点在那,放下断点去追踪,出去找工作,绝对没问题。出现问题的时候,不要光看代码,要用实际行动去追踪运行期间的具体值,那是最好途径。eclipse是个很爽的ide,这点做的很好。例如页面内容显示不是自己想要的数据,我们要先从数据库查询语句去下手,设置断点,一步一步step over,让sql字段(存取最终sql语句的字符串)运行到有值,inspect进去看,如果还看不出来,就点击它,copy后在sql客户端去实际运行,看看实际查询出来的表是什么,如果是对的,有可能就是页面调用的错误或者action逻辑的传值问题。
页面错误的调试,基本方法是用右键点击实际网页查看源代码,copy到editplus,就能看到具体错误发生在那几行。通常有几种常见的错误,例如:缺少对象这种很多时候是有些被你调用的字段有可能为空的情况出现的,可以加if(xxx=null)语句加保护。追踪的方法基本就是用alert语句,放在有可能出错的地方。
4、一些习惯
遇到问题先自己思考,无从下手再找高手帮忙看看,注意他帮你看的思路,别在一旁闲着,看多了自己也会了,不然你一辈子都停留在那种水平,从人身上学到的东西远远比书多的多。
解决了一个问题后,要去究根问底去找到问题产生的起因,以防你下次遇到类似的问题再浪费同样的时间。
把代码写的漂亮,注释、空行、规范一样不能少,可读性是放在第一位。曾经看过一个高手写的代码,真的一看就是不同水平的人写的,几乎很完美,读起来很流畅,方便自己也方便别人。
任务完后不要呆着,去要求经理给你更有挑战性的任务,只要你肯去尝试,他们就会对你另言相看,把三天的任务一天加班搞定,效率和忠诚都有了,路也比较好走了。
软件工程心得体会篇2
在沙盘对抗中直面市场竞争之激烈,通过不同角色的扮演,运用企业经营管理理论和信息化管理技能,进行市场选择,投资决策和生产运营,增长才干,搏击商场,百战不殆。
我们通过模拟企业实训,置身于仿真的生产经营过程,完成企业生产经营中各种信息的采集和处理。体验与其他部门的协作,作到边学边练,学用结合,迅速掌握erp软件的使用要领,提高信息化管理技能,经历完整的企业经营进程,感受现代化信息技术的魅力。
在仿真的企业环境中,构建传统的手工管理模式和利用计算机技术信息化技术的现代化管理模式,模拟现实企业的生产经营管理过程。
(一)我在学习中学习的知识
1、在一个仿真的企业环境中我作为ceo带领整个企业进行了8年的商业抗战,我的搭档分别扮演了生产总监,采购总监,营销总监,财务主管,财务助理,信息总监及商业间谍。在学习中我们互相帮助,互相进步,互相学习。在前一年的学习中我们还刚刚接触并不了解太多的东西,在之后的两年和三年的学习中我们光荣“破产”了,成为了给老师干活的最早的一个企业。我们模拟了企业的职能岗位熟悉了企业的业务流程。充分扮演了自己所担当的角色。
2、体验了整个企业的经营过程,并把所学的理论知识应用到实践中,由此加深对企业的物流,商流,资金流和信息流的体会,促使我们进行了积极的思考,了解了企业的运作,提高了学习和实践能力。
3、开阔了视野,提高了综合素质,加深了对企业管理信息化的认识和理解,提高企业信息化管理技能,掌握了企业信息管理流程。
(二)在学习中发现的问题
1、企业核心竞争力缺乏持续增强和系统改进,严重制约企业长远的发展,客观上需要一种先进的管理工具帮助企业系统解决自身发展中的种种问题。
2、充分的准备是经营成功企业的基??
由于第一天的学习前我们都没有进行预习导致我们企业的所有员工没有一个概念,在老师的培训下还是没有一个清晰的概念及相关的知识,以至于在沙盘对抗中失去大量资金与订单。
3、将失误降到最低
在信息总监的两次误操作下我们在第二年的经营中丧失了投递p1广告的机会,在之后的订单中我们也无权在进行抢单,因此我们企业的p1被积压了很多库存,尽管通过我们的营销总监的分析我们将会在未来将产品卖出并且是大卖,可是我们还是由于短期贷款的到期使企业破产。我相信在真实的企业中误操作也会发生但是我清楚这样的错误给企业所带来的将是无法弥补的损失。所以我相信失误的出现率也是一个企业成功的关键问题。
4、合理的运用媒介
广告的投入也是企业取得好的业绩的重要组成部分。
广告策略是指为了达到预期广告目标而进行的各项谋划运作,是广告的手段、对策和谋略等的组合。站在企业家的立场来看,广告策略首先是促销的一种手段,是企业的一种投资行为,而不是艺术家的个性作品,也不是学者的理论实践,用广告大师奥格威的经典名言来说:“我们的目的是销售,否则便不是做广告。"所以我们评价广告策略的标准是广告成本投入对经济效益产出的贡献程度,即最好的广告策略将是以最少的广告投入达到最大的效益产出。
在广告策略中投资广告和最后的广告收益都应该用科学的方法进行计算然后作出合理的判断及预测方能为企业最终取得利润做出应有的贡献。
5、采购的合理化
预测准确的市场需求对采购来说也至关重要,不浪费材料又能满足市场,保证供给也成为了一个企业的核心问题。
软件工程心得体会篇3
经过这学期软件工程实验的学习,深深感到用户需求对软件的重要性。成功的软件产品是建立在成功的需求基础之上的,而高质量的需求来源于用户与开发人员之间有效的沟通与合作。当用户有一个问题可以用计算机系统来解决,而开发人员开始帮助用户解决这个问题,沟通就开始了。
需求获取可能是最困难、最关键、最易出错及最需要沟通交流的活动。对需求的获取往往有错误的认识:用户知道需求是什么,我们所要做的就是和他们交谈从他们那里得到需求,只要问用户系统的目标特征,什么是要完成的,什么样的系统能适合商业需要就可以了,但是实际上需求获取并不是想象的这样简单,这条沟通之路布满了荆棘。首先需求获取要定义问题范围,系统的边界往往是很难明确的,用户不了解技术实现的细节,这样造成了系统目标的混淆。
其次是对问题的理解,用户对计算机系统的能力和限制缺乏了解,任何一个系统都会有很多的用户或者不同类型的用户,每个用户只知道自己需要的系统,而不知道系统的整体情况,他们不知道系统作为一个整体怎么样工作效率更好,也不太清楚那些工作可以交给软件完成,他们不清楚需求是什么,或者说如何以一种精确的方式来描述需求,他们需要开发人员的协助和指导,但是用户与开发人员之间的交流很容易出现障碍,忽略了那些被认为是"很明显"的信息。最后是需求的确认,因为需求的不稳定性往往随着时间的推移产生变动,使之难以确认。为了克服以上的问题,必须有组织的执行需求的获取活动。
需求获取活动要完成的任务或者步骤的过程如下:
1、编写项目视图和范围文档
系统的需求包括四个不同的层次:业务需求、用户需求和功能需求、非功能性需求。业务需求说明了提供给用户新系统的最初利益,反映了组织机构或用户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。用户需求文档描述了用户使用产品必须要完成的任务,这在使用实例文档或方案脚本说明中予以说明。功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。
非功能性需求是用户对系统良好运作提出的期望,包括了易用性、反应速度、容错性、健壮性等等质量属性。需求获取就是根据系统业务需求去获得系统用户需求,然后通过需求分析得到系统的功能需求和非功能需求。项目视图和范围文档就是从高层次上描述系统的业务需求,应该包括高层的产品业务目标,评估问题解决方案的商业和技术可行性,所有的使用实例和功能需求都必须遵从的标准。而范围文档定义了项目产品所包括的所有工作及产生产品所用的过程。项目相关人员对项目的目标和范围能达成共识,整个项目组都应该把注意力集中在项目目标和范围上。
2、用户群分类
系统用户在很多方面存在着差异,例如:使用系统的频度和程度、应用领域和计算机系统知识、所使用的系统特性、所进行的业务过程、访问权限、地理上的布局以及个人的素质和喜好等等。根据这些差异,你可以把这些不同的用户分成不同的用户类。与ulm中usecase的actor概念一样,用户类不一定都指人,也可以包括其他应用系统、接口或者硬件,这样做使得与系统边界外的接口也成为系统需求。将用户群分类并归纳各自特点,并详细描述出它们的个性特点及任务状况,将有助于需求的获取和系统设计。
3、建立核心队
通常用户和开发人员不自觉的都有一种"我们和他们"的想法,产生一种对立关系,把彼此放在对立面,每一方都定义自己的"边界",只想自己的利益而忽略对方的想法。他们通过文档、记录和对话来沟通,而不是作为一个合作的整体去识别和确定需求完成任务。实践证明这样的方法是不正确的,不会给双方带来一点益处,良好的沟通关系没有建立导致了误解和忽略重要的信息。只有当双方参与者都明白要成功自己需要什么,同时也知道要成功对方需要什么时,才能建立起一种合作关系。
为了建立合作关系通常采取一种组队的方式来获取需求,建立一个由用户代表和开发人员组成的联合小组作为需求获取的核心队伍。联合小组将负责识别需求、分析解决方案和协商分歧,小组成员可以采用会议、电子邮件、综合办公系统等方式进行交流,但交流时应注意以下原则:小组会议应该由中立方来组织和主持,用户和开发人员都要参加;交流预先要确定准备和参与的规则;议题要明确并覆盖所有关键点,但信息来源应该自由;交流目标要明确,并告知所有的成员。
4、确定使用实例
从用户代表处收集他们将使用系统完成所需任务的描述,讨论用户与系统间的交互方式和对话要求,这就是使用实例,一个单一的使用实例可能包括完成某项任务的许多逻辑相关任务和交互顺序。使用实例方法给需求获取带来的好处来自于该方法是用以任务为中心和以用户为中心的观点,比起使用以功能为中心和以开发者为中心的方法,使用实例方法可以使用户更清楚地理解和认识到新系统允许他们做什么和怎么做。描写使用实例的时候要注意使用简洁直白的表述,尽量使用主动语态,用"系统"或者"用户"作为主语,比如"用户提交用户密码,系统验证用户密码是否正确",还有一点在描述中不要设计界面细节,比如"用户从下拉框中选择产品类型"。使用实例为以后写用例场景描述中的基本路径和扩展路径提供了素材。
5、分析用户工作流程
分析用户工作流程观察用户执行业务任务的过程,通过分析使用实例得到系统的用例图。编制用例图文档将有助于明确系统的使用实例和功能需求,统一建模语言的使用有助于与用户进一步交流。每个用例的描述应包括:编号,为每个用例分配一个唯一的编号,为需求的追溯提供了方便;参与者,与这个用例交互的actor;前置条件,开始用例前所必须具备的系统状态;后置条件,用例完成后系统达到的状态;基本路径,用例完成的关键路径,也是用户期望的路径;扩展点,基本路径的分枝,表示意外情况;字段说明,路径中名称的进一步分解说明,对以后类属性的定义和数据库字段设计起作用;设计约束,实现用例的非功能约束。
6、检查问题报告
通过检查当前已经运行系统的问题报告来进一步完善需求客户的问题报告及补充需求为新系统或新版本提供了大量丰富的改进及增加特性的想法,负责提供用户支持及帮助的人能为收集需求过程提供极有价值的信息。
7、需求重用
如果客户要求的功能与已有的系统很相似,则可查看需求是否有足够的灵活性以允许重用一些已有的软件组件。业务建模和领域建模式需求重用的最好方法,像分析模式和设计模式一样,需求也有自己的模式。
总结:经过一学期的软工实验,深刻感到其重要性的同时也学到了不少的东西,将对我在今后的软件开发过程中起极大的作用。
软件工程心得体会篇4
软件是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档。软件工程(softwareengineering,简称为se)是针对软件这一具有特殊性质的产品的工程化方法。se涵盖了软件生命周期的所有阶段,并提供了一整套工程化的方法,来指导软件人员的工作。任何事物都是从无到有的,软件当然也不例外。上世纪中期,软件产业从零开始起步,经过半个多世纪的发展,其大致经历的3个阶段:程序设计阶段、软件设计阶段和软件工程时代,现已成为推动人类社会发展的龙头产业,随着信息化时代的发展,软件对人类社会也将越看来越重要。人们对软件的认识自然经历了一个由浅入深的过程,在得到巨大需求的同时,也遇到了一系列严重问题,即软件危机。所谓软件危机,是指在计算机软件的开发和维护过程中所遇到的一些严重问题,其实质是软件产品的供应赶不上需求的增长。概括的说包含两方面的问题:一、如何开发软件,以满足不断增长,日趋复杂的要求;二、如何维护数量不断膨胀的软件产品。为研究和解决软件危机,一门新兴的学科软件工程,应运而生。
软件工程的概念是为了有效地控制软件危机的发生而被提出来的,它的中心目标就是把软件作为一种物理的工业产品来开发,要求“采用工程化的原理与方法对软件进行计划、开发和维护”,它的主要对象是大型软件,它的最终目的是摆脱手工生产软件的现状,逐步实现软件开发和维护的自动化。软件工程的概念自提出来后,经过几十年的发展,虽然软件危机没有得到彻底的解决,但在软件开发方法和技术方面已经有了很大的进步,提出了软件工程知识体系、软件工程三段论、软件工程生存期模型、服用原则等等。
软件开发过程大致经过7个阶段:可行性分析、需求分析、概要设计、详细设计、编码、测试、提交与维护。接下来逐一分析本人见解:
一、可行性分析:顾名思义,就是看项目究竟“能不能做”。有3个方面:技术可行性、经济可行性和操作可行性。要确定项目,首先要客观的、科学的了解项目的规模、难度和时间限制,才可以确定应该投入多少人力、物力和财力去做这个项目,必须准确的估计项目的规模与难度。看项目是否有价值去做,如果没有价值,就放弃;如果有价值,就要看目前的资源是否能满足项目的开发。如果项目有价值,且有必需的资源,那么就可以确定能做这个项目了。
二、需求分析阶段:解决“做什么、不做什么”的问题。围绕两个核心问题开展需求分析:应该了解什么?通过什么方式去了解?
1、了解什么:应该先了解宏观的问题,再了解细节的问题。最好为每个需求注释“为什么”,这样可以让程序员了解需求的本质,以便选用最合适的技术来实现此需求。同时,需求说明不可有额二义性,更不能前后矛盾,如果有二义性货前后相矛盾,则要重新分析此需求。然后,选择合适的生存周期,建立合适的需求模型;
2、通过什么方式去了解:直接与客户交谈;有些需求客户讲不清楚,分析人员又猜不透,这是就要请教行家。需求分析是非常重要的阶段,如果做不好的话,后果很麻烦。
三、概要设计:解决“怎么做”的问题。将需求描述的“做什么”问题变为一个实施方案的创造性过程,使得整个项目在逻辑上和物理上能够得意实现。概要设计是第一个开发活动,也是最重要的活动,是软件项目实现的关键阶段。设计质量的高低直接决定了软件项目的成败,缺乏或者没有软件设计的过程会产生一个不稳定的、甚至是失败的软件系统。一个良好的软件设计是进行快速软件开发的根本,没有良好的设计,会将时间花在不断的调试上,无法添加新功能,修改时间越来越长,随着给程序打上一个有一个的补丁,新的功能需要更多的代码实现,就变成一个恶性循环了。概要设计是软件设计级别中的高级设计,是从需求出发,描述了总体上系统架构应该包含的要素。概要设计尽可能模块化,因此描述了各个模块之间的关联,主要是根据需求规格或规格定义,合理、有效地实现产品规格中定义的各项需求,完成软件模块的划分并描述模块之间的关系,并不断分解系统模块,从高层分解到低层分解。它注重框架设计、总体结构设计、数据库设计、接口设计、网络环境设计等,将产品分割成一些可以独立设计和实现的部分并保证各个部分可以和谐的工作。此过程中画数据流图、ipo图、e-r图、界面设计等。
四、详细设计:解决“具体做什么”的问题,将解决问题的办法进行具体化。软件设计的低级设计,亦即详细设计,主要描述实现各个模块的算法和数据结构以及用特定计算机语言实现的初步描述,是针对程序开发部分来说的,但这个阶段不是真正编写程序,而是设计
出程序的详细规格说明,这种规格说明类似于其他工程领域中工程师经常使用的工程蓝图,程序员根据其中所包含的必要的细节写出实际的程序代码。用另一种方式说就是,详细设计是将概要设计的框架内容具体化、明细化,将概要设计转化为可以操作的软件模型,但在实际项目进行过程中,依据项目的具体情况和项目要求,这个过程可能可以省略(逻辑上没有省略,表现在概要设计阶段或者编码阶段),直接按照概要设计进行编码;不过,个人认为最好有,有详细设计可以更好的保证编码顺利的进行,可以预先扫清编码过程中的障碍,提高代码的质量和编码的效率。主要包括模块描述、算法描述、数据描述,可以采用图形、表格或者文字描述等方式表达出来。
五、编码:实现项目。由项目的概要设计和详细设计,将设计变为代码需要通过编码过程来完成。实现设计有很多种选择,有很多实现语言、工具等可供选择,但一般而言,在设计中会直接或间接地确定了实现语言。编码过程的一个主要标准时变成与设计的对应性和统一性。如果编码没有按设计的要求进行,设计就失去意义了。设计过程中的算法、功能、接口、数据结构都应该在编码过程中体现。如果需求发生变更,设计业对应地发生变更,同时代码也应该一致地发生变更,这可以通过配置管理配置控制。可见,如果编码和设计不一致,很容易“跑偏”,走火入魔。编码时要严格遵循编码标准和规范,并提供必要的程序注释,增加可读性。另一个就是重构的理解,所谓重构是对软件内部的一种调整,目的是在不改变软件基本功能和性能的前提下,提高其可理解性,降低成本,当添加功能、修改代码和复查
代码的时候,更不要错过重构,另外,重构可以和设计互补。还有一点值得注意,要在必要的时候部署编码文档。
六、测试:看软件是否符合标准。软件编码完成之后,将软件提交给用户之前,需要对软件进行测试,这是保证软件产品质量的一个重要标准,也是评估产品质量的主要手段。软件测试是从软件工程中演化出来的一个分支,有着非常广泛的内容,并且随着软件产业的发展,它已经变得越来越重要。软件与生俱来就可能存在缺陷,为了防止和减少这些可能存在的缺陷,进行软件测试是有必要的,测试是最有效的的排错和防止缺陷和故障的手段。最原始的测试莫过于直接运行软件了,后来测试手段逐渐多样化。测试手段有静态测试、动态测试面向对象的测试、自动化测试等等之分。静态测试或称静态分析是指一种不通过执行程序来进行测试的一种技术,主要是检查软件的表示和描述是否一致,覆盖程序的编码格式、程序语法、检查独立语句的结构和使用等,主要包括代码检查、静态结构分析、代码质量等等,可以通过人工进行,亦可借助工具(如:语法分析器)自动进行。动态测试是运行被测试的程序,通过输入测试用例,对其运行情况进行分析,以达到检测的目的,显然动态测试封像我们通常意义上的“测试”。动态测试主要包括白盒测试、黑盒测试、灰盒测试(介于黑盒和白盒之间)。其他测试不再一一介绍。
七、提交与维护:测试完之后,就要把软件交给用户使用了。提交不是剪裁,给人家就行了,还要教会客户怎么使用这个系统。如果用户不会使用系统,就会不满意系统的性能,那之前的努力就白费了,
打水漂了。为了保证成功地将我们开发的软件提交给用户,我们需要对用户进行培训,同时提交必要的文档及用户手册软件。维护就不用多说了,就是售后服务了。维护需要分析人员、编码人员和设计人员等角色的参与,有纠错行维护、适应性维护、完善性维护、预防性维护等。维护后,要写软件维护过程文档,至少提交一个软件维护记录。以上是软件工程及其几个阶段的介绍,知道怎样开发软件只是软件工程的一部分,搞好团队合作也是很重要的。项目是一个很大的工程,需要一个团队的统筹规划,团结协作,集思广益,举一反三,才能够按预期完成。
软件工程心得体会篇5
通过实训中心老师的课堂讲解与企业化标准的培训,使我加深了对自己专业的认识。从而确定自己以后的努力方向。要想在短暂的实训时间内,尽可能多的学到东西,就需要我们跟老师或同学进行很好的沟通,加深彼此的了解。只有我们跟老师多沟通,让老师更了解我们,才能跟真切的对我们进行培训工作。由此,班级的文化“共享”就在生活中慢慢形成了。
“纸上得来终觉浅,绝知此事要躬行!”在这短短的时间里,让我深深的感觉到自己在实际应用中所学专业知识的匮乏。让我真真领悟到“学无止境”这句话的涵义。而老师在专业认识周中所讲的,都是课本上没有而对我们又非常实用的东西,这又给我们的实训增加了浓墨淡采的光辉。我懂得了实际生活中,专业知识是怎样应用与实践的。在这些过程中,我不仅知道了职业生涯所需具备的专业知识,而且让我深深体会到一个团队中各成员合作的重要性,要善于团队合作,善于利用别人的智慧,这才是大智慧。靠单一的力量是很难完成一个大项目的,在进行团队合作的时候,还要耐心听取每个成员的意见,使我们的组合达到更加完美。
这次实训带给我太多的感触,它让我知道工作上的辛苦,事业途中的艰辛。让我知道了实际的工作并不像在学校学习那样轻松。
人非生而知之,虽然我现在的知识结构还很差,但是我知道要学的知识,一靠努力学习,二靠潜心实践。没有实践,学习就是无源之水,无本之木。这次实训让我在一瞬间长
大:我们不可能永远呆在象牙塔中,过着一种无忧无虑的生活,我们总是要走上社会的,而社会,就是要靠我们这些年轻的一代来推动。这就是我们不远千里来实训的心得和感受,而不久后的我,面临是就业压力,还是继续深造,我想我都应该好好经营自己的时间,充实、完善自我,不要让自己的人生留下任何空白!
实训中除了学到不少专业知识,也了解一些社会的现实性,包括人际交往,沟通方式及相关礼节方面的内容,对于团队开发来说,团结一致使我深有体会。团队的合作注重沟通和信任,不能不屑于做小事,永远都要保持亲和诚信,把专业理论运用到具体实践中,不仅加深我对理论的掌握和运用,还让我拥有了一次又一次难忘的开发经理,这是也是实训最大的收获。
现在我对“一个人最大的财富是他的人生经历和关系网络”这句话非常的有感情,因为它确实帮了我们不少。除此课本上的知识毕竟有限。通过实训,我班同学都有这样一个感觉,课本上的理论知识与实际工作有很大差距,只有知识是远远不够的,专业技能急需提高。
从最初的笨手笨脚,到现在可以熟练的按照流程开发软件,这都与我班每个人的努力是分不开的。十个月的实训,教会了我们很多东西,同时也锻炼了大家踏实、稳重的能力,每个人都很珍惜这来之不易的实训机会。
在实际工作中经常会和不同的'人打交道,然而他们的态度是不可恭维的,你会感觉到他的不耐烦以及他的高傲,所以这就需要学会沟通的方式及说话技巧,学会灵活面对。通过这十个月的实训,我班同学都收获颇丰,总体来说对这次实训还是很满意的。尽管实训很累,每天早出晚归。但真的很感谢学校能够提供我们这样好的实训机会,以及东软给予
但是我们从中受到了很多知识,不仅是专业的知识,更让我明白了一个软件从设计到实现的每一个环节真的很不容易,不仅需要扎实的专业知识,更需要一个团队的配合,这才是一个软件成功的关键。这就告诉我们,一个人的出色不算什么,一个团队的出色才是真正有用的。
刚开始拿到题目我们组员都不知如何下手,经过小组成员一起查找资料,并且开会讨论,我们确定了设计的设计目标以及具体实现方式,包括如何将java的思想运用到实际系统的详细设计之中。
在实验课上,我学会了很多学习的方法。而这是日后最实用的。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我的将来也有很大的帮助。以后,不管有多苦,我想我都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我都可以在实验结束之后变的更加成熟,会面对需要面对的事情,以及学会遇到问题,不急不慌,慢慢解决它。
虽然过程辛苦是不可避免,但收获还是令人感到尤其的欣慰。在这次的软件设计中不仅检验了我所学习的知识,也培养了我的实践能力,让我知道遇到一个问题,如何去寻找思路,如何去解决问题,最终完成整个事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了宽容,学会了理解,也学会了做人与处世。课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程。实验过程中,也十分感谢实验指导老师陈中育老师的指点与教导。这次软件设计不仅是对这学期所学知识的一种综合检验,而且也是对自己动手能力的一种提高,增强了自己实践能力。通过这次课程设计使我明白了自己知识还比较欠缺,只是学习书本知识还是远远不够的,自己不会的东西还有太多,学习需要自己长期的积累,在以后的学习、工作中都应该不断的学习,将课本的理论知识与生活中的实践知识相结合,不断提高自己文化知识和实践能力。
软件工程心得体会篇6
学习了这门课程, 还有老师们的多元化教课,不但让我从理论上掌握软件工程,还有从不同的实例,让理论和实践得到了很好的结合。整一个学期下来,总的来说还是学到了很多东西的,有很多地方是值得肯定的,其实在我看来,软件工程与其说是一门课程,不如说是一门思想。是一个如何去分析和处理问题的过程,应该说其范畴已经远远不止局限于该门课程,成为了一个综合的一个能够解决问题的思想集合。
要学习软件工程,学会如何系统的思考,以及养成良好的编码习惯,想学好软件工程,就必须知道软件工程的目标、过程和原则: 软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。
可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。 软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。
pad图:它是用结构化程序设计思想表现程序逻辑结构的图形工具。pad也设置了五种基本控制结构的图示,并允许递归使用。hipo图:hipo图是由一组ipo图加一张hc图组成。它是美国ibm公司在软件设计中使用的主要表达工具。hc图既是层次图,用于表示软件的分层结构。hc图中的每一个模块,均可用一张ipo图来描述。ipo 图由输入、处理和输出三个框组成,需要时还可以增加一个数据文件框,这种图形的优点,是能够直观地显示输入处理输出三者之间的联系。还有测试方法:按照测试过程是否在实际应用环境中来分,有静态分析与动态测试。测试方法有分析方法(包括静态分析法与白盒法)与非分析方法(称黑盒法)。静态分析技术:不执行被测软件,可对需求分析说明书、软件设计说明书、源程序做结构检查、流程分析、符号执行来找出软件错误。动态测试技术:当把程序作为一个函数,输入的全体称为函数的定义域,输出的全体称为函数的值域,函数则描述了输入的定义域与输出值域的关系。还学习了其他很多工具、语言、方法等,虽然不是都学得很透彻,但我相信在今后的学习中一定会慢慢的完善的。
软件工程对于初学者来说,知识基础较薄弱,对一些应用操作、概念、工具方法等理解起来较为困难,要能从整体概念上较好地理解和把握、学好软件工程,不是仅仅把几本专业书籍细致地看几遍,然后上机练习几次就可以成功,学习过程中要注意多看多练要注意结合实际,更要多思考,面对错误不要一范就问,要尝试自己去解决。但是还要注意什么都学,肯定是什么都学不透的,要集中精力打攻坚战,学习软件工程首先要明白自己的学习目标究竟是什么,根据自己的`实际工作出发,有针对性的在相应的学习方向上进行提高,制定出详细的学习规划。还要注意与其他科目的相辅相成,就像我们在学习面向对象分析的时候要结合大一学习的面向对象及其方法学这一专业科目进行研究拓展;在学习语言时,要看看与c语言的联系,多思多想,把从各个科目学到的知识通汇贯通。
在软件工程的学习中,我了解到了软件并非是一些代码这么简单,在开发软件的过程中,编写代码的工作量其实只占不到所有工程量的30%,而后期的管理和维护更是占了60%到80%之多。一个完整的项目规划须包括,软件的定义,可行性分析报告,项目开发计划,软件需求说明书,概要设计说明书,详细设计说明书,用户操作手册,测试计划,测试分析报告,开发进度报告,项目开发总结报告,软件维护手册,软件问题报告,软件修改报告,等多个文档,每个文档都要上级验收审查,而文档数量众多,要做好这点真的不是很容易,而恰恰写好文档正能保证完成软件工程其中一个目的的关键,既研究如何用最小的开销做出生存期较长的软件,再加上各个阶段都要进行周密的策划、详细的分工部署和人员安排,且各阶段要据具体情况不断的反复才能达成,所以代码只是开发软件这个浩大的工程的一个小小的过程。
而编码的学习中,我更了解到形成自己独特的规范的编码风格是非常重要的事。因为这影响到了软件后期繁重的维护,大家都要阅读你的程序,如果你写的程序毫无规范可言,那么别人怎么能读懂你的程序读不懂程序,维护又从何谈起呢所以,我们在今后的学习中,一定要注意这方面的培养,在写程序的过程中,要逐步的在规范的基础上形成属于自己的风格,即方便自己的修改,也方便日后他人的阅读。
在学习中,我们还要注意比较三种方法的优缺点,例如:传统方法虽然使软件摆脱了混乱和无序,但其在适应需求变化的方面不够灵活,而且传统方法要么面向行为,要么面向数据,缺乏两者的有机结合。而面向对象方法的程序设计和问题求解更符合人们日常自然的思维习惯,适合大型、复杂及交互性比较强的系统。形式化方法则是一中基于形式化数学变换的软件开发方法,它可将系统的规格说明转换为可执行的程序。在今后的学习中要注意多读书、多思考、多练习、多讨论,不断熟悉书本的基础,并以此为基础将其扩散开来,应用于今后的实践。不断锻炼自己,向一名合格的程序设计师迈进。
软件工程心得体会篇7
早在我选择民政职业技术学院就读软件开发与项目管理这门专业的时候,我一直认为软件开发无非是努力的敲代码,从敲代码的过程中去体会各行代码的意思和用处,在没学软件工程时我一直都是努力的敲代码去学习软件开发这门专业。在大一的时候我敲代码的激情很好,但是到大二的时候就出现问题了,我根本就不喜欢敲代码了,看见代码就头疼。所以感觉厌恶这门专业,对学习也不感兴趣了。而且,还有一件更头疼的事是在写一个简单的程序时竟然老是出错,难一点的,复杂一点的程序竟然无从下手。但是去看程序的参考答案时都看得懂,又感觉很容易。学了软件工程以后,我就感觉我以前的学习方法是错误的。以前我只注重于代码,而不注重理论知识以及编程的思路,程序的架构。以至于在些程序时没有写程序的思路,不能形成程序的架构。只想到看脑袋里是否有与此类似的代码。越想程序越乱,最后脑袋里一片空白。不知道程序从哪个方面下手了。
软件工程这门课程是做软件开发的人必学的课程,通过学这门课程,程序员就会注重软件开发的理论知识,以及做项目开发的思路。学了这门课程后你写程序就不会去盲目的去套用代码,而是理清此程序的架构以及思路。程序该从什么时候开始,什么时候结束。在中间需要添加什么样的功能,以完善该软件。其实学软件工程并不难,而且很容易。软件工程与日常生活联系起来的话,就是在一天中你该先做什么,后做什么。理解了先做什么,后做什么了以后写程序就不是那么难了,再复杂的程序也可以分成几大块。你理清程序的思路后就可以一步步的解决其中的难题,最终实现软件的功能。如果没学软件工程不知道理清程序的思路的话,做一个大的项目开发,那么多的代码,没有一个很好的结构,最终只会导致程序混乱,错误百出,知道代码再多也会素手无策的。
总而言之,作为一个程序员学习软件工程这门课程是至关必要的,如果没学习软件工程,你就不会做项目开发,也不可能开发出一个完善的软件出来。
软件工程心得体会篇8
学期就快要结束了,到了最后一周居然还有软件工程课程设计,还要考试真的有点忙啊,不管怎样还是好好干吧,把对工程的理论研究、学习成果用于实践也是一种检验学习成果和提升工程能力的有效手段嘛。
工作内容安排
软件工程课程设计的第一天拿到题目,听取老师对于课程设计的要求、要完成的工作、预期要达到的效果和注意事项。然后分组、讨论和确定选题。这真正的课程设计才算开始了,经过组长,组员的反复研究、论证后一致决定选择: 实习题目4:开发一个基于web的bbs系统,包含一般bbs所具有的功能,如用户注册、用户信息管理、发贴功能、贴子管理、主题词查询、用户信息修改和查询等。
这个题目对于现代化的网络交流来说发展的成熟而且符合当代互联网大众的网络需求,符合现代网络对信息分享讨论的爱好,我们一致预测在今后很长的一段时间内也将会是非常流行的一种交流介质。
确定选题后我们开始软件开发的第一步,需求分析,详细设计等内容,分块分工完成模块,我分到的主要部分就是分析论坛里面的帖子内容,用户的爱好,然后解决用户的索引需求,把用户的索引需求智能的、友好的呈现给用户,把这部分的代码编写,测试,把用户界面做好就是我接下来几天的工作内容。 俗话说:磨刀不误砍柴工,要想把我的这部分内容做好,做得完美,我的好好的分析一下,对全组对整个系统的需求分析的基础上又认真分析了本部分的内容和本部分要实现的功能,对本部分实现的主要思想理清,认真设计界面,还有对队员们的模块能有效的结合起来,让他们的模块也能有效的供我使用,做好我的接口也方便其他模块与此的衔接。
问题与解决
在本次课程设计中遇到了好多前所未有的问题,第一次接触html网页开发,第一次邂逅jsp web应用程序开发,第一次有了原来开发应用程序是需要数据库的,对于这些都是第一次接触,需要了解html的基本语法,需要学习jsp web应用程序web app的开发方法,需要实践配置数据库tomcat、 sql sever,居然有这么多的东西需要从头来,对于这些方面我就像一张崭新的白纸,怎么能在短短的四五天时间内将这张白纸绘成一幅栩栩如生的画卷呢,这是我们面对的亟待解决的问题。
为了解决这一系列的问题,我们没有找借口,我们没有懒惰,我们更没有放弃,而是迎难而上,到图书馆“大采购”求资料,找到想要的,真想把图书馆搬到课程设计实验室。接下来就是根据我们的需求分析,概要设计,详细设计等内容分模块编写网页源代码,修复bug,测试代码,连接数据库这样我们的全新的基于web的bbs论坛就成功上线了。
但是,事实上不是这样的,而是时间过得很快,我们的原计划日程上的内容越欠越多,由于对html、jsp不熟悉代码没写好,测试无从谈起,数据库连接遇到了一堆错误代码比如sql 01000、08001错误,这些每一样东西解决起来都是有难度的,百度一下还是不知道这么做,只知道了时间过得比想象的要快多了,得到的体会就是“百度一下,你的时间就没了”。现在我们遇到的最大的问题就是时间真的太不给力了,如果有来世我一定好好学习各方面知识,哎!好像扯远了。时间真的很快,周六就要考试了,已上三年大学的我们都知道考试比神马都要重要,我们就开始了学习和实践结合的'生产方式,据说这是最有效、最给力的,希望如此!
收获与体会
课程设计总会是要结束的,不管做得怎么样总归是要给老师看看我们的成果的,都做了这么多天了,成果虽然不是很理想,但是收获还是有的。这期间学到了html网页的编写方法,一些html的基本语法,也能编写出一个简单的网页,对于互联网应用程序的开发还要了解和解决网络带宽的限制,服务器响应的时间比,知道了这么安装和配置tomcat服务器,在期间学习了uml用例图的绘制,软件工程开发的一些基本工具的使用,软件开发文档编写的方法和实践,人机交互应用程序开发时人机界面的设计,人机对话的实现,人性化的界面设等是需要认真努力做得,要充分考虑用户的感受和体验。觉得“百度一下,你就知道”也不过如此,还是知识装在大脑里比神马都要重要,比任何来的知识都要详细和易懂。打字速度也有了一定的提升。
努力与改进方向
经过本期的软件工程课程设计,发现了学习和实践中的不足。互联网的基础知识知道的太少了,相反需要了解和掌握的还很多,在下学期要开设一门计算机网络课程,现在生活已经不能离开互联网了,不管以后是否从事这方面的工作,这部分都是需要认真学习的,网络应用程序的开发需要认真理解与提升。软件工程中需求分析的不充分,软件开发方法的体会这些都是需要以后改进和学习的,软件开发中的各种文档编写能力还需要提升,在以后学习和实践中认真总结和完善,参考他人的软件工程项目,体会优秀软件工程的思想。在做任何事情的时候都要有觉得是站在巨人的肩上,而不是重复的生产车轮的思想来坐事情,要对前人的经验教训加以总结,学习、参考和引用别人的先进研究成果,重视团队的协作,虚心的学习精神。
这期间得到了老师的悉心指导,得到了队员的理解,得到了同学们的热心帮助,谢谢你们!