1、软件工程是一门指导软件开发和维护的工程学科,主要研究软件开发和维护的工程技术和软件项目管理等内容,其中涉及如何保证软件产品的质量和可靠性,如何提高软件开发效率和拥护满意度等。
2、软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
3、软件生产历经4大阶段分别为:程序设计阶段(1946-1956年)、软件开发阶段(1956-1968年)、软件工程阶段(1968年以后)、计算机辅助软件工程阶段
4、常见的软件过程模型:边改边做模型、瀑布模型、演化模型、增量迭代模型、喷泉模型
5、软件过程的研究,标志着人们为解决软件危机问题,把关注的焦点由编程转移到了软件开发的整个过程,包括分析、设计、编程和测试4个核心阶段和需求调研、运行与维护两个延伸阶段说明软件质量、软件开发效率、软件的可靠性、可维护性问题涉及了软件生存周期的所有阶段。
6、软件生存周期:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件的生存周期可分为八个阶段:①问题定义;②可行性研究;③需求分析;④总体(概要)设计;⑤详细设计;⑥编码与单元测试;⑦综合测试;⑧软件维护。
7、需求分析:系统开发前期需求分析很重要,它是为了有效解决用户问题的需要进行的一项工程活动,所需要考虑的需求问题是功能需求、数据需求、性能需求和接口需求,开发者承担分析任务,核心是用户。其步骤有三个:①获取客户需求,客户泛指某个人或机构部门等,一般方法是调查,包括访谈、座谈、问卷、跟班和收集资料,需求规约可表达用户的软件价值。②建立需求模型,它是用户需求的图解,一些常用的模型有:业务树图、用例图、活动图。分别用于结构化需求建模、系统业务举例和反映系统工作流程。③进行需求验证,要验证的主要内容有:有效性验证、一致性验证、完整性验证、现实性验证和可检验性验证。
。。。
感悟:
了解了什么是“软件危机”,透过软件工程于解决“软件危机”的重要性、软件工程三条重要线索、软件工程知识体系函括内容及软件工程各类生存期模型,我对软件工程思想及“工程化”软件开发的流程有了较系统的了解,透过软件工程的起源,认识到:实现软件工业的产业化,软件工程必须是真正意义上的工程化。从软件开发三条线索(开发、管理、改进)来看,软件开发的过程必须规范化(各阶段都必须形成相应文档;编码必须依照通用可读性严格遵照编程规范……);软件项目管理的核心是项目规划和项目跟踪控制,保证软件工程开发的成功完成,软件开发流程的规范化在软件项目中有着重要的作用,通过不断地优化和规范过程,企业可以提高软件生产能力。
从需求分析到维护,透过软件的开发流程具体实施的学习,我对软件项目开发的流程有了更深的理解,例如通过需求规格说明书、可行性研究说明书、数据库设计说明书、需求分析说明书、总体设计说明书、详细设计说明书等六份作业的完成虽然很不完善,但仍让我对需求分析建模和设计中用到的方法有了更好的理解并熟悉了六份文档的格式。学了这门课才知道软件开发中每一阶段都有文档的产生,其管理与应用也是一门大学问……此外,这门课程里讲授了很多我以前从未接触过的方法和软件如UML模型、MVC模型、visio的强大绘图建模功能、这些知识不仅能应用于软件工程,也能应用于其他的很多领域,这门课结束了,但这些方面学习我还将继续的。
我要去应聘软件测试,面试官问为什么想进软件测试,我该怎么回答。
这个你不会?
面试就像恋爱是一样的,你女友问你为什么要准求她你不知道?
首先,面试官是为你对于“软件测试行业”的认知,其次是考核你对于未来职业发展方向的看法,如果你回答只是简单的这个行业简单、容易、工资高,这显然不是面试官想要得到的。
你应该从一下几点回答:(围绕STE基本素质阐述)
1 自身兴趣,喜欢软件测试工作,喜欢找BUG。
2 行业发展,测试行业属于朝阳行业,可持续发展。
3 缺口大,目前行业内人较少,按照黄金比例国内严重不足。
4 未来发展,随着国内对于软件质量越来越重视,发展将非常广阔。
5 职业寿命长,积累行业经验。
6 薪酬,目前测试薪酬已经可以跟开发持平了。
软件测试工程师的职业优势
入门门槛低
大中专学历即可,是不是计算机专业都可以。如果是其他有业务背景的专业更有优势,例如:会计、金融、办公自动化、酒店管理、网站设计等。对于有行业背景的人来说入门更快,因为对于测试工作来说,有时懂业务比懂技术还重要,你会了技术,去各行各业做测试都是要学习业务知识的,这是很正常的事。
初级技术要求低
目前大部分测试技术还属于手工测试,手工测试要求入门门槛很低。你只要会写用例,会提缺陷就可以了。测试人员需要简单了解业务知识,学习所开发系统的使用,也就是会使用系统就可以了。照着用例执行测试,发现缺陷直接提交缺陷就可以了。
很大的薪酬优势
刚开始工作时月薪最低4000多,但工作半年,对工作流程了解后,再去换工作,五六千没问题。如果做银行业务测试起薪六七千没问题,有一点银行业务知识的再去换工作八千以上没问题,现在银行测试人员缺口很大。尤其是在大的外包公司做好的项目,比如银行项目等待遇和同等工作经历的开发差不多。
就业好
国外开发与测试的比例是1:2。目前国内开发与测试的比例是6:1。所以测试行业人才缺口很大,就业前景很好。基本属于供不应求。
工作比较轻松
比起软件开发工程师来说,软件测试工程师的工作就相对轻松多了 测试分为三个阶段:手工测试、自动化测试、性能测试。这是一个逐步提升的过程。最初工作可能做手工测试,也是目前绝大部分测试人员所从事的工作。自动化测试是测试的发展趋势,而且现在自动化测试人员急缺,且薪资很高。现在最稀缺的是性能测试人员,目前性能测试人员的待遇比同等经历的开发可能还要高,因为现在性能测试人员属于稀缺状态。
(1)手工测试:现在比较普及,大多数测试都还停留在手工测试阶段。(2)自动化测试:是趋势,但目前用自动化测试的还比较少,需要适当的代码编写工作。做一段手工测试后,积累一定经验,可以慢慢步入自动化测试阶段,如果自动化测试比较熟练,月薪1万没问题,和开发工资差不多。
(3)性能测试:性能测试人员现在稀缺人群,一般能做性能测试,且做得可以的一般月薪都在1.6万以上,比开发要高。 计算机领域的专业技能是测试工程师应该必备的一项素质,是做好测试工作的前提条件。尽管没有任何IT背景的人也可以从事测试工作,但是一名要想获得更大发展空间或者持久竞争力的测试工程师,则计算机专业技能是必不可少的。计算机专业技能主要包含三个方面:
⒈ 测试专业技能
测试专业知识很多,本书内容主要以测试人员应该掌握的基础专业技能为主。测试专业技能涉及的范围很广:既包括黑盒测试、白盒测试、测试用例设计等基础测试技术,也包括单元测试、功能测试、集成测试、系统测试、性能测试等测试方法,还包括基础的测试流程管理、缺陷管理、自动化测试技术等知识。
⒉ 软件编程技能
软件编程技能实际应该是测试人员的必备技能之一,在微软,很多测试人员都拥有多年的开发经验。因此,测试人员要想得到较好的职业发展,必须能够编写程序。只有能够编写程序,才可以胜任诸如单元测试、集成测试、性能测试等难度较大的测试工作。
此外,对软件测试人员的编程技能要求也有别于开发人员:测试人员编写的程序应着眼于运行正确,同时兼顾高效率,尤其体现在与性能测试相关的测试代码编写上。因此测试人员要具备一定的算法设计能力。依据资深测试工程师的经验,测试工程师至少应该掌握Java、C#、C++之类的一门语言以及相应的开发工具。
⒊ 网络、操作系统、数据库、中间件等知识
与开发人员相比,测试人员掌握的知识具有“博而不精”的特点,“艺多不压身”是个非常形象的比喻。由于测试中经常需要配置、调试各种测试环境,而且在性能测试中还要对各种系统平台进行分析与调优,因此测试人员需要掌握更多网络、操作系统、数据库等知识。
在网络方面,测试人员应该掌握基本的网络协议以及网络工作原理,尤其要掌握一些网络环境的配置,这些都是测试工作中经常遇到的知识。
操作系统和中间件方面,应该掌握基本的使用以及安装、配置等。例如很多应用系统都是基于Unix、linux来运行的,这就要求测试人员掌握基本的操作命令以及相关的工具软件。而WebLogic、Websphere等中间件的安装、配置很多时候也需要掌握一些。
数据库知识则是更应该掌握技能,现在的应用系统几乎离不开数据库。因此不但要掌握基本的安装、配置,还要掌握SQL。测试人员至少应该掌握Mysql、MSSqlserver、Oracle等常见数据库的使用。 行业主要指测试人员所在企业涉及的行业领域,例如很多IT企业从事石油、电信、银行、电子政务、电子商务等行业领域的产品开发。行业知识即业务知识,是测试人员做好测试工作的又一个前提条件,只有深入地了解了产品的业务流程,才可以判断出开发人员实现的产品功能是否正确。
很多时候,软件运行起来没有异常,但是功能不一定正确。只有掌握了相关的行业知识,才可以判断出用户的业务需求是否得到了实现。
行业知识与工作经验有一定关系,通过时间即可以完成积累。 作为一名优秀的测试工程师,首先要对测试工作有兴趣:测试工作很多时候都是显得有些枯燥的,因此热爱测试工作,才更容易做好测试工作。因此,除了具有前面的专业技能和行业知识外,测试人员应该具有一些基本的个人素养,即下面的“五心”。
1.专心:主要指测试人员在执行测试任务的时候要专心,不可一心二用。经验表明,高度集中精神不但能够提高效率,还能发现更多的软件缺陷,业绩最棒的往往是团队中做事精力最集中的那些成员。
2.细心:主要指执行测试工作时候要细心,认真执行测试,不可以忽略一些细节。某些缺陷如果不细心很难发现,例如一些界面的样式、文字等。
3.耐心:很多测试工作有时候显得非常枯燥,需要很大的耐心才可以做好。如果比较浮躁,就不会做到“专心”和“细心”,这将让很多软件缺陷从你眼前逃过。
4.责任心:责任心是做好工作必备的素质之一,测试工程师更应该将其发扬光大。如果测试中没有尽到责任,甚至敷衍了事,这将会把测试工作交给用户来完成,很可能引起非常严重的后果。
5.自信心:自信心是现在多数测试工程师都缺少的一项素质,尤其在面对需要编写测试代码等工作的时候,往往认为自己做不到。要想获得更好的职业发展,测试工程师们应该努力学习,建立能“解决一切测试问题”的信心。
“五心”只是做好测试工作的基本要求,测试人员应该具有的素质还很多。例如测试人员不但要具有团队合作精神,而且应该学会宽容待人,学会去理解“开发人员”,同时要尊重开发人员的劳动成果——开发出来的产品。 1、质量意识:在整个软件测试的各个环节中,质量意识一定要贯穿其中。理解功能需求,书写测试案例,执行测试计划,发现问题,提交问题,描述问题,协助解决问题,以及问题的跟踪等,在所有的环节中,一定要注重质量,并且从质量的角度来思考问题。
2、细心并且系统:软件测试可能每天要重复同样的操作,其工作可能会枯燥无味,并且发现的问题可能很微小或者很杂乱无章、现象不一。在这样的情况下,软件测试人员一定要细心不放过任何微小的错误,并且从很多杂乱的现象中找出一定的规律和复现性。并且在测试中有很好的规划性,先测什么而后测什么,不放过任何软件的死角。在测试中,一定要系统的看待问题,功能模块A的改动会否影响到其他模块的功能,不能想当然,一定要系统性的看待。有时候一个内存地址的改变,都有可能引起准给软件的崩溃。所以一定要系统性的去处理和看待软件中修改的任意一处代码。
3、软件测试理论的掌握以及开发工具和平台的应用:黑盒测试,白盒测试,功能/系统/压力/性能等等。但不管测试任何东西,基本理论是不变的。需求文档,设计文档,根据文档制作测试用例(划分等价、边界测试、路径测试、用户体验、等等),执行测试,提交并跟踪问题。当然,行业的不同,其测试用的工具和方法也不太一样。手机App该如何测试,无线通讯产品该如何测试,C/B-S应用该如何测试,这些产品的差异性很大,其用到的工作也很不一样,但是其基本的测试理论还是一致的。
4、站的高看的细:不能光有理论,对测试的很多文档可以提出很多有建设性的意见,但当执行测试时却不能发现问题。这其中有几个原因,一是可能提出的意见并没有写进测试案例中,二是有可能执行不仔细总是忽视问题的存在,三可能就是没有去实施。所以一定要站在一定的高度去看待软件测试,但是又要很细致的实施。只有通过实践,才能发现问题改进问题到最后解决问题。
5、团队合作:这个无需多讲,在这个产品日渐复杂的年代,很难有一己之力就可以在各个方面做的最好。要充分发挥团队每个人员的工作能力和效率。
6、怀疑:有些书是这样定义软件测试的,软件测试不会去证明软件是正确的,而是去证明是错误的,但是我们不可能发现所有的错误。所以有很多时候要去怀疑要去假设。
软件测试的职业资格证书有哪些?
软件评测师属于我国计算机软件资格和水平考试中的中级内容,到目前已经开考三次,分别是2005年、2006年和2007年每年的上半年。他和软件设计师一样同属于计算机软件专业类别,因此其内容也和软件设计师最为接近。
虽然软件评测师至今已经开考三次,但是参加考试的人数并不多,通过的人数更是很少,这并不是因为软件评测师考试很难,相反,软件评测师和软件设计师相比,其考试难度反而要低。在另一方面,软件测试工程师的工作岗位却大量的缺人,在微软的项目中,软件测试人员的安排要多于软件设计人员和程序员得数量。那么在这样的一个好的社会需求下面,是什么原因造成软件评测师通过的人数如此少呢?
1、 对软件测试行业缺乏了解。
2、 国内软件企业对软件测试不够重视。
在这样的软件企业里面,几乎没有专门的软件测试人员,而是由程序员自己进行单元测试和组装。只要组装起来的软件可以实现客户的功能,就认为项目大功告成,而在客户使用的过程中,不断的出现各种错误和BUG。最后导致项目完成一两年后,项目组还无法从客户现场撤出。国内软件企业缺乏有效的企业和项目管理手段,没有完整的质量管理体系和为软件质量做保证的软件测试环节,因而导致人们在很多软件公司看不到或者很少看到软件测试人员。
3、 软件测试方面的学习资料很少。
国内在软件工程方面的发展要滞后于国外很多,而在软件测试方面滞后得更加严重,在2005年前,国内的软件测试方面的书籍很少,最近两年才开始陆续有部分软件测试的书籍开始出版。而觉大部分大学的计算机科学系还没有开出软件测试这门课程,虽然在某些高校两年前已经开始有试点尝试着开设软件测试课程,但是到如今大部分的大学计算机专业课程体系中仍然看不到软件测试的影子,我国大学课程体系的落后是造成软件测试得不到社会认识的一个很重要的原因。
从2005年开始,已经有很多职业教育品牌看上软件测试这个充满前途的行业,现在社会上已经推出了软件测试工程师课程,也从侧面反映出社会对软件测试人员的需求将越来越大。国内软件企业都处于发展壮大期间,软件产业的发展将带来无数的软件测试岗位。面对目前国内大学生就业难的问题,谁能够在软件测试领域取得先机,谁就能够在未来的职场竞争中取得核心竞争力。目前大连做软件测试处于起步阶段,软件测试培训也是06年底才有,目前只有一家。
在软件测试职业资格证书方面,目前国内最具有影响力的当数软考中的“软件评测师”。通过软件评测师既可以拿到软件测试的职业资格,还能够获得工程师职称,可以说是一举两得。而其他的认证要么就是社会团体推出,要么就是国外引进,得不到社会的广泛认可。
2005年上半年举行了第一次软件评测师考试,在这次考试中可以说所有的一切都是一种尝试。考试内容基本上紧贴考纲,但是却多出了多媒体和编译原理的题目,不知道是因为出卷人的疏忽还是对考纲不熟悉。这一次软件测试方面的题目所占的比例很小,这套试卷几乎成了软件设计师的试卷,可以看出当时国内软件测试方面是相当缺乏内容的。
2006年将软件测试方面的题目从05年的16个增加到了28个,增加的幅度比较大,并且再也没有出现多媒体和编译原理方面的题目。可以看出06年的出题趋于正常,并且各知识点的知识分布比较均匀。
2007年再一次增加了软件测试方面的题目分数,软件测试方面的题目增加到35道,几乎占上午试题的一般。而其他题目也主要集中程序设计和软件工程方面,计算机组成原理、和数据库所占的分值三年来几乎变化不大,而计算机网络知识点在06年削减的基础上,连一道都没有出,不可不谓为一个大改革。具体情况见下图。
图片和后续文章请见a href=hi.baidu/netant/blog/item/3d6e4dfb711c7f60024f5633.html target=_blankhi.baidu/netant/blog/item/3d6e4dfb711c7f60024f5633.html/a
软件测试工程师应该具备哪些技能?
软件测试基础学习需要掌握哪些内容?首先,要有宽泛的计算机基础知识。微机原理,数据结构,数据库,操作系统原理,编译原理,逻辑,编程语言,网络,等等,都要系统地学习过。都精通不大可能,因为人的兴趣都不相同,但是这些功课的基本知识点是应当了解的。
我们在谈到职业的类别的时候,我们可以说C程序员,C#程序员,Java程序员,而没有C测试员,C#测试员,Java测试员,程序员可以只擅长某一门编程语言,测试员却不行。为什么呢?
测试员是代表用户的,在做测试的时候,他(她)需要考虑到方方面面的事情。例如对于一个用C写的上网拨号程序,测试员需要考虑:
(1) 程序的功能是否正确;(要求计算机知识)
(2) 是否符合用户的使用习惯;(要求界面设计知识和换位思考能力)
(3) 性能是否满足要求,例如长时间使用;稳定性;(要求深入的计算机知识)
(4) 是否能够满足用户可能的不同操作系统的要求;(要求计算机知识)
(5) 如果在全球发布,是否满足不同语言和文化的需求;(要求软件国际化测试知识)
(6) 如何搭建测试环境;(动手能力,硬件知识)
(7) 做代码检查;(比较深入的C语言知识)
(8) …
所以,各方面都了解一点,你在做测试的过程当中你会感觉顺手得多。如果某写方面还差一些,没有关系,计算机行业的特点就是边做边学,只要是个有心人,学习是很快的。
其次,要掌握一门编程语言。原因很简单:一行代码不会,你始终是门外汉。
作为一名软件测试工程师,需要具备哪些能力
简单项目管理知识。
4.语言表达能力、沟通能力,良好的表达能力是解决问题的开始。
对产品、系统的认知能力:
1.熟悉所测产品功能、细心,不怕麻烦的人。
2,未来会拥有哪些方法,这个产品必须是经过不断重复测试并且没有漏洞的,同时也是用户体验不断完善的过程。那么作为一名企业软件测试从业人员,你在公司中身处软件测试团队.基本软件测试知识(各种测试理论软件测试的工作就是不断完善一个软件产品的过程,否则,最后难受的肯定是你自己。
3.随着测试工作日益专业化,原来的低水平测试人员越来越不能满足测试的需要,是评价一个测试人员最主要的方面,软件质量评估),在交到用户的手中的时候.基本计算机知识(操作系统,数据库,通讯协议原理,建议你最好不要进入这个行业,需要具备哪些素质呢.熟悉所测产品的一些隐藏需求或者功能(业务上的进阶能力),能够将产品文档内描述的UC转化成TC,这个最基本的,让自己随时处于一个准备状态。
2?
在这里将软件测试人员的能力分为几个方面来具体阐述,从不同的方面阐述作为一个软件测试人员所要具备的不同的能力,熟悉至少一门编程语言),测试用例编写,缺陷界定标准,也为读者在学习过程中指明一个方向,而不至于舍本逐末,有时候还起到阻碍作用。
2.测试工作是一个烦琐的工作,需要我们具备不断学习的能力。
以上三点就是一个合格的软件测试人员所必须具备的能力,新技术的应用都要求测试人员要不断提高自己的水平。
自身职业素养:
1.工作态度如何,我们无法预知,我们需要的是做好自己。软件测试人员需要具备以下素质能力:
通用能力。
团队合作意识:软件测试工作始终是一个团队完成的。
3,测试方法论:
1,测试工具的使用,一个高水平的测试人员(指纯技术能力)如果没有一个好的工作态度,在测试团队中有时候不但不能对测试工作起到推动作用,同时,工作时又和开发团队,质量团队的合作密不可分,所以与团队成员的互相合作非常重要,如果你不是认真,软件测试一个不断重复不断革新的行业,测试理论的更新,保证新来的知识我们能够快速学习吸收
软件测试工程师需要具备哪些技能
要成为软件测试工程师,我们应该掌握哪些技能。
1.描述问题的能力
程序是人写的难免会出Bug,但是也是因为是某个程序员写的,他对于内在的逻辑、可能发生问题的地方会有一个大致的判断。测试工程师的工作就是,告诉他发生问题数据的ID、发生问题的场景、当时的测试数据是怎样的等等。而不是,把一个截图甩给程序员,说:“这地方出错了啊。”
2.基础代码能力
如何增强对逻辑思维的锻炼?写代码啊,又学一门手艺又得到了大脑的锻炼,岂不是美滋滋?
貌似很多测试工程师都喜欢去学Python这门语言,确实这是一门对于代码入门者非常友好的语言,但是测试小哥都有一个困惑:学了Python能干嘛?我的建议是从写爬虫开始,学习爬虫的编写可以接触到网络请求的基本知识、可以学习到正则表达式,需要爬取大量数据时,还可以顺便学习一下数据库的使用。当然了,对于爬虫来说,学习一下非关系型数据库就可以了。这一方面是为自己学习自动化测试铺路,一方面也可以为以后转岗提供换一个后路:不做测试了我干脆去写代码好了。
3.乐观的心态
测试工程师每天面对的是程序中的“错误”,而程序员每天都在创造代码。起码我作为一个垃圾代码的创造者,是很讨厌去排错的。因此就我而言,测试时你很难保证心态的平和,因为你不知道什么时候会出一个莫名奇妙的错误。
假设这么一个场景,你测试出了一个bug,但是程序员自测之后发现无法复现,你的第一反应不应该是脱口而出:“不可能!”而应该是比对两个人的测试用例,发现可能存在的问题。
软件测试人员需要具备哪些素质?
有人说测试人员低于开发人员现今有些企业对测试人员也不是很重视你怎么看?要想成为优秀的测试人员应该具备哪些素质?
答:
(1)、我不认为软件的测试人员低于开发人员,首先如果软件的整个开发过程集聚了一个、几个甚至是数十个人的心血,当所有人都以为软件没有程序上的错误的时候,软件被发行到市面上,然而当客户花巨额资金买回家以后,发现软件的运行有错误,那么软件开发之前所做的一切都将功亏一篑,软件开发程序员说再多也只是纸上谈兵。就像美国迪斯尼公司的狮子王游戏软件的BUG缺陷一样。而一旦软件测试人员发现程序中的错误,或许是早在设计的时候就发现错误,那么将会节省巨额的资金及软件开发人员的时间和精力。也许有人会认为开发人员也能从事软件的测试工作,可是他们毕竟不是专业的测试,所做的测试工作也将达不到软件测试人员所能达到的境界、、、、、、
(2)、对于软件测试人员需要具备的素质,我觉得首先最重要的是要有一定的理论知识和测试技能,这是测试工作的基础,其次,要有一定的细心和耐心,当面对庞大的软件开发的档案及数字的时候,细心和耐心是真正发现错误的必要因素。当然要有怀疑的精神,正是因为这个原因软件的开发人员才不能做很好的软件测试,因为自己开发的软件,就会对自己有过分的信任,所以对问题的看待将和专业的软件测试人员不同。再有就是要有一定的软件开发测试行业的经验,有句话叫“老马识途”,正是经验才能以最快的速度发现最致命的错误。最后也是很重要的就是要有不断学习的能力和精神,毕竟时代在进步,要是你的思维认识赶不上软件专业知识更新的脚步,那么终将被软件测试的行业所淘汰。以上就是我对软件测试行业的认识。
转载请注明出处51数据库 » 软件测试职业认识 谈一谈对软件工程专业的认识