程序员工作展望范文

时间:2023-03-21 15:40:29

程序员工作展望

程序员工作展望范文第1篇

软件心理学的发展史

软件心理学发展大致可分为两个阶段[7],第一阶段是软件心理学的创立和初探阶段,第二阶段为软件心理学的丰富和发展阶段。两个阶段的主要区别是理论基础、研究对象和研究方法不同。20世纪70年代为软件心理学研究的第一阶段,研究学者主要由计算机科学家组成。1971年,Weinberg出版了《程序开发心理学》一书,开辟了软件心理学的新领域。该书从人类行为、社会行为和个人行为等3个角度审视程序开发。但是温伯格坦言,该书中的许多思想未找到“科学依据”,没有很好的理论基础。该阶段采用实验手段研究的代表是Shnei-derman,他采用内省、案例研究和实地研究等手段,对编程风格、项目组织、团队进程、程序员能力倾向和人格特质因素等方面进行了探索[4]。但是,Shneiderman的实验缺乏认知模型的支撑,面临设计问题简单、编程环境失真等问题。20世纪80年代至今为软件心理学发展的第二阶段,吸引了计算机科学家、心理学家和人素工程学家的参与。该阶段以认知模型的构建为特征,采用客观的行为分析作为严格试验方法的补充。从认知心理学引进理论框架,并将其研究成果引入到软件工程中,以促进软件工具的研发,改进编程活动。该阶段弥补了第一阶段的不足:研究对象扩展到专业程序员,而第一阶段的研究对象几乎都是学生;考虑了软件开发的集体性及协作性;所涉及的活动不只是编码,也研究需求规格说明及软件设计;考虑了语言和编程范式对编程活动的影响。纵观软件心理学的发展史,软件心理学的研究方法渐趋成熟、研究内容逐渐丰富、研究学者日益多元化。软件心理学的发展过程是软件工程与心理学融合程度逐步提高的过程。

软件心理学研究体系

从学术文献来看,软件心理学研究的热点主要集中在7个领域:程序设计的认知机制、程序理解理论、专家与新手的差别、程序员人格特质与绩效的关系、程序员情感与绩效的关系、程序员能力倾向测试和人机界面设计。笔者分析了各项研究内容之间的关系,如图1所示。软件心理学的研究从3个层面展开:第一层面为认知活动机理层,第二层面为根源因素层,第三层面为应用层。第一层面从软件生命周期的核心活动出发,研究其认知机制,主要包括软件设计活动的认知机制,以及编码、测试、维护中的程序理解机制。第二层面在第一层面的基础上,研究影响主体绩效的根源因素,一方面研究情感、人格特质对主体绩效的影响;另一方面从“主体的能力是由学习和训练得来的”这一观点出发,研究专家与新手在知识、策略和元认知方面存在怎样的差别。第三个层面是将前两个层面的研究成果应用到软件工程相关的活动中,如将根源因素层的研究成果与心理学测量方法相结合,研究程序员能力倾向测试,用于选拔适合从事软件开发的人员。将程序员的行为和认知机制的研究结果用于指导软件开发环境的人机界面设计。将专家与新手的差别的研究成果应用于软件工程人员的教育与培训。软件心理学在人机交互中主要应用于用户建模及可用性的设计与验证,关注用户描述,对用户的感知、认知和动作进行建模,并构建感知-认知-动作的集成建模。该方面的应用旨在了解和支持人与计算机的交互,使设计的软件或系统的可用性更高。该领域是软件心理学与计算机科学结合最成功的研究领域,存在的评述较多。本文接下来对前6个领域的研究现状及其对软件工程领域的启发展开论述。

主要研究进展

1程序设计的认知机制

研究进展程序设计认知机制主要包含3类元素:知识、策略和过程组织。程序设计知识分为句法知识、语义知识和图式知识[5]。前两类知识与程序语言紧密相关,而图式知识是程序设计的核心。图式(Schema)是主体内部的一种动态的、可变的认知结构单元,是由旧知识组成的无意识的心理结构。图式理论的核心思想是,将主体过去的经历形成模式,在解决问题的时候无意识地匹配和调用与目前情况相符的模式。图式的存在使得人类的认知具有自动加工的特点,同时也是认知失误的重要原因[6]。程序设计图式包括编程图式、结构图式和问题域图式[13]。编程图式是编程领域特有的图式,包括编程基础知识和算法知识等。结构图式是生成和理解文本的重要知识,如1个功能程序的结构图式由3个角色组成:输入、计算和输出。问题域图式是程序要解决的特定问题的领域知识。根据图式理论,程序设计的核心活动是相关图式的激活。程序设计过程就是程序员激活储存于记忆中的适合解决当前问题的若干图式,并对这些图式进行组合的过程。以图式为核心的程序设计模型以Adelson模型[7-9]和Détienne模型[10]为代表,将程序设计认知活动视为图式检索、图式匹配、解决方案评价、调试和通用化[7,8]的过程。程序设计的策略[11-13]包括:①自顶向下和自底向上。自顶向下是指将总体问题逐层分解为小问题解决的策略,自底向上是从细节到总体逐步构造的策略。②向前和向后。向前设计模式即程序解决方案按照执行方向设计,向后设计模式即程序解决方案按照与执行相反的方向设计。③广度优先和深度优先策略。广度优先策略是先解决完一个层面的所有问题,再解决低一个层面的问题,深度优先策略是将一个问题从上到下解决完成后再解决其它问题。④过程式和声明式策略。若编程方案是规程控制,则是过程式的。若编程方案用于声明静态属性,如对象、角色等,则是声明式的。⑤心理模拟,用于评价问题解决方案。程序员在不同情境下会使用不同的策略,策略的触景包括编程语言的认知维度[14]、编程环境特征、问题类型和程序员自身思维方式和已获得的图式,程序员趋于选择自己熟悉和使用频率高的策略[15]。程序设计的过程组织有两种方式。一种为结构化组织方式,认为程序设计是按照自顶向下、宽度优先的方式组织的。但是实验发现,实际的程序设计过程并不是严格按照这种结构化的过程进行的。程序员设计或编程过程中会出现机会性的偏离[16],即程序员(设计师)以实现目标为第一要务,不受规则的限制,自顶向下和自底向上、深度优先和宽度优先策略都会用到,取决于具体的情景。存在许多支持该模型的实验研究结果,如程序员有时会优先实现他认为最重要的功能。这种认知策略会被多个因素触发,如资源限制。当工作记忆超出容量时,结构化的工作模式就会失效,由宽度优先策略跳变为深度优先策略,产生机会主义偏离,即机会主义组织方式。

应用与启示从程序设计认知机制可以看出,良好的知识结构(设计模式)、恰当的策略和过程组织将促进设计工作的开展。基于此,可设计出更适合程序员使用的软件开发工具。在软件开发环境中提供可视化的结构图式和知识图式支持,对程序员具有重要的辅助作用。如在面向对象编程工具中提供一个通用化的对象图式,包括创建、初始化、读、写、输入和输出功能;在开发工具中提供控制流、数据流和功能分解图等。同时,领域知识库的构建对软件开发具有重要意义,也是软件开发工具面临的一个新挑战[17]。程序员机会偏离现象说明,编程环境不能过分强制程序员按照自顶向下的方式编程[18]。编程环境应提供相对灵活的导航工具,以便程序员在不同对象之间快速切换。在支持机会主义偏离的情况下,同时也要提供未完成任务的追踪功能,因为发生机会主义偏离后,被中断的任务搁置后容易被遗忘。

不足与展望程序设计的一个重要特点就是解决的问题是“不明确的问题”(ill-definedproblem)[13,18],存在需求描述不清晰、缺失等问题;并且,一个问题可能存在多个解决方案,无法通过单一的标准进行评价,甚至无法评价。因此,对所要解决的问题的表征(representation)非常重要,问题表征中生成的情景模型直接影响设计方案的生成,也与设计方案共同演化,是造成个体差异的重要活动之一[19]。而目前的研究都是假设所有程序员对问题的表征是一致的,缺乏对程序员问题表征的研究。分析程序员的问题表征,将其集成到程序设计认知模型中,是未来的研究趋势[13,19]。目前的认知模型将设计的核心活动简化为图式检索、匹配和评价的过程。而实际项目中,程序员可能面临知识不足的问题。因此学习成为程序设计中一项重要的认知活动。学习中理解和集成图式将占用大量的工作记忆资源(germaneload)[20],对程序设计的其它活动存在重要影响。而目前的认知模型均缺乏对学习活动的研究,这将是未来研究的一个重要内容。最后,人类认知的一个重要特性就是具有主动监控和调节的高级能力,即关于“认知的认知”———元认知能力。元认知能力与认知失效调节及问题解决能力密切相关[21],而目前的认知模型几乎都没有考虑这一全局性的认知活动。研究程序设计元认知能力对程序设计其它活动的影响机理及其评价和训练方法,对程序员的选拔和培训具有重要应用价值,将是未来一项重要的研究方向[22]。

2程序理解机制

程序理解可谓是程序开发心理学最古老的课题之一。它解决的核心问题是,程序员如何处理源代码和构建高效的软件系统[23]。研究程序员程序理解的行为和策略,以此指导软件可视化编程环境的开发[24]。

研究进展程序理解理论最初从文本理解理论借鉴而来。文本理解是通过信息加工构造表征的过程。该过程翻译文本中包含的显式信息,并调用经验知识得到推断信息,再将两类信息综合为一体。即信息加工过程的信息有两个来源:外源,编码在文本中的信息;内源,存储在记忆中的知识。Letovsky模型[25]使用知识库、心智模型(内部表征)和同化过程,从较高的抽象层次描述了这一过程。程序理解模型包括3类:功能方法,理解程序等价于利用知识图式;结构化方法,理解程序等价于构造关系网;心智模型方法,理解程序等价于构造详细的情景表征。功能方法的核心假设是,程序理解就是激活和实例化知识图式。程序理解的活动包括:激活储存在记忆中的图式,利用从程序代码中提取的索引,并从援引的图式出发推断程序所包含的某些信息。功能理解模型的主要代表是Soloway模型[26]。结构化方法认为,理解程序就是构造命题之间的关系网。程序可以用顺序、迭代和条件等控制结构的基本单位来描述。专家利用结构图式识别结构单元(顺序、迭代和条件),然后构造不同层次的表征。结构化方法的模型主要有Shneiderman&Mayer模型[27]。心智模型方法认为,程序理解就是构造情境表征。这就需要区分两类模型:程序模型和情景模型。程序模型与自然文本理解中的命题模型和文本库概念类似,反映程序在命题层次包含什么内容。而情景模型反映问题领域的实体及其关系,即问题目标及数据流。程序的理解首先需要构造程序模型,这依赖于结构化知识,特别是编程语言的语义和句法知识;在此基础上,构建情景模型,从而达到对程序的理解。心智模型主要有Pennington模型[28]。Mayrhauser集成元模型[29]将Soloway模型和Penning-ton组合起来,并且实验证明,程序员在3个理解过程中转换。该模型由4个部分组成:自顶向下、情境模型、程序模型和知识库。前3个部分反映理解过程,知识库是构建其它3个部分的必要因素,为程序理解过程提供相关信息并存储推断得出的新信息。

应用与启示对程序理解原理的研究,可指导程序理解辅助工具的设计[30]。如在程序浏览方面,对于自顶向下的理解过程,需要提供从顶层的抽象信息到底层的细节信息的浏览;对于自底向上的理解过程,需要提供控制流和数据流浏览;工具还需要同时提供宽度优先和深度优先的浏览,才能同时满足专家和新手的要求。除此之外,工具代码及注释检索功能将大大提高程序理解效率[31]。同时需要提供能够让程序员询问变量角色等的询问功能。最后,应考虑为程序理解提供一些其它认知支持手段,如为专家提供外部便签薄,为新手提供教学辅助,使其能够实时地获得语言和领域知识。集成领域知识将提高程序理解效率[32]。

不足与展望首先,在实际的软件项目中,维护人员很可能不是程序编写者,程序理解过程中通常伴随新知识的学习。因此,随着编程人员和技术的变化,终端用户相关的学习理论将成为一个研究趋势。第二,从理解模型可以看出,领域知识在程序理解过程中发挥重要作用。领域知识的集成是一大难点,也是未来的重要研究方向之一。第三,目前程序理解理论主要研究个体的认知机制,程序理解将向社会化组织化的方面扩展,同地合作和分布式合作方面将受到关注。第四,在工具方面,未来程序理解辅助工具将向快速改进、综合化、集成建议和搜索功能、接口高适应性、可视化、支持团队合作等方向发展[30]。

3专家与新手的差别

研究进展程序员的技能在很大程度上是一种习得性能力,因而研究专家与新手的差别对程序员的教育和培训有着重要意义。专家和新手的差别主要表现在4个方面:知识、策略、熟练程度和元认知[33]。专家与新手在领域知识和编程知识方面存在较大差别。Adelson&Soloway[7]和Burkhardt等人[34]发现,新手在领域知识方面的欠缺将导致其在构建情景模型方面存在困难,但是并不影响其构建程序模型。Schraagen[35]发现,即使都是有经验的程序员,领域知识欠缺的程序员的解决方案也会比领域知识丰富的程序员给出的方案差。因此,区分专家与新手的一个重要因素就是领域知识的掌握情况。在编程知识方面,Rist[36]发现新手更关注语言句法等表面细节信息,而专家更关注于语义信息或设计模式等深层次的信息。Soloway和Adelson等人发现[7],专家在解决模式化问题时的表现比新手好,而在解决非模式化问题时却不存在显著差别。Wiedenbeck[37]同样发现专家倾向于记住程序的语义等抽象表征信息,而新手倾向于记住程序的函数和语义等具体信息。Ye[38]指出,专家比新手拥有更大的图式组块(chunks),在他所研究的样本中,与新手相比,专家在C语言方面的概念块更抽象,组成元素更多。由于知识的组块,对新手是多个图式,对专家却可能只是一个图式,这使得专家的工作记忆能够调用和处理更多的信息。专家与新手除了在知识的数量与组织结构上存在差别之外,在知识的使用策略方面也存在显著差别。经验丰富的程序员倾向于使用自顶向下、宽度优先和向前的策略,而新手倾向于使用自底向上、深度优先和向后的策略[7,33,40,41];并且专家的编程策略可以在不同的问题上重用。Schraagen[35]指出,即使面临新的问题,良好的策略也能保障他们以较为结构化的方式解决问题。Ko[42]发现,即使在陌生的编程环境中,也不会影响专家程序员的问题理解策略。专家与新手在元认知方面存在重大差别。研究[33]发现,专家能够更好地意识到所犯的错误,并及时对生成的问题解决方案进行验证。专家元认知能力也表现在专家更善于利用外界记忆辅助设施(如笔记)作更多的注释[43]。

应用与启示专家和新手不只是存在知识占有多少的差别,在知识的组织、知识的使用策略、熟练程度和元认知方面也存在差别,这对软件工程人员的培训和学习以及专家系统的设计有重要指导意义。对程序员的培训不能只灌输编程语言规则等显性知识,还需要启发其分析知识之间的关系,以及不同解决方案使用的场景,进而形成高层次的图式;还需对知识使用策略和元认知进行训练;在培训的方式上,仅采用书本和授课方式是不够的,由于专家具有实用主义和自动化的特点[44],因此需要设计具体的任务对其进行实战训练。

不足与展望在弄清专家与新手的差别,特别是找到新手存在的缺点后,新手的学习和教育就成为重要的研究课题[45,46]。面向对象编程教育及可视化教育工具的开发成为近年来的一个研究热点[47]。

4程序员人格特质与绩效的关系

大量证据表明,软件开发中程序员的生产率和能力存在着巨大差别。具有相似背景的程序员在编程绩效方面存在巨大差别,学者们猜想,只有存在某种“固有的人格特质”才能解释这种差别。该领域的研究对程序员的选拔具有重要指导意义。

研究进展目前软件心理学领域主要采用迈尔斯-布里格斯类型指标(MBTI)和五因素模型[48]来研究人格特质类型与程序员绩效之间的联系。根据MTBI理论分析[49]:①在思考(thinking)/情感(feeling)维度方面(T/F),要检测和修改编程错误,克服语言错误,编程工作需要逻辑和分析能力,思考型比情感型更能胜任编程工作。②在感觉(sensing)/直觉(intuiting)方面(S/N),感觉型人更倾向于一步一步达到目标,对工作和细节更有耐性;而直觉型人工作更依赖于预感和直觉;但是直觉型人对复杂任务更感兴趣,感知型人更适合简单任务。③外向型(extrovert)/内向型(introvert)维度(E/I),内向型人更注意细节,在行动前喜欢彻底思考事情;外向型人思考问题倾向于表面化。在E/I维度的实证研究方面:David研究了MBTI与代码审查能力之间的关系,实验证明,E/I维度与代码理解能力之间存在强关联关系[50];Capretz[51]研究结果表明,软件工程人员大部分都是内向型性格;Chandler等人[52]发现,计算机专业的研究生主要都是内向、感知和判断型的;在程序员人格特质调查中,Turley发现软件行业样本中90%是内向型人[53]。在SN维度实证研究方面:Bishop[54,55]发现直觉型人在解决问题中表现得更好;Whitley[49]发现直觉型的学生确实更具编程潜能;Capretz[56]研究发现,他的专业程序员样本中直觉型人所占比例远远超过一般人群,他认为直觉型、思考型,特别是直觉-思考型在编程相关任务中能够工作得更好;Devito研究了MBTI与代码审查能力之间的关系[57],发现直觉型人比感知型表现好,直觉-思考型表现尤其好。在TF维度实证研究方面:Bishop[55]认为,完成软件开发中的一些任务(特别是问题解决相关领域的任务),需要在规定的限制条件下执行标准化过程,需要进行客观的逻辑的分析,思考型人更能胜任;Turley和Bieman[53]的研究表明,他们的样本中85%是思考型人;Capretz的专业程序员样本中81%是思考型;Chandler等人的计算机专业学生中86%是思考型;Myers研究表明,思考型人更适合于与逻辑思考有关的任务[58]。

应用与启示在现代软件人员选拔和项目管理中,人员的性格因素不容忽视。人员选拔需要根据角色的任务特点,选择适宜性格的人员,如直觉-思考型人普遍更适宜作编程工作;而需求分析更偏重交流能力,外向型性格比内向型性格更为适宜。实验表明,如果IT企业能够根据雇员的性格特点和潜能进行优化组织,生产效率和质量都可能得到提高[56,59]。

不足与展望正如Whitley所说[49],人格特质与绩效方面的研究是相关性研究,而不是本质上的实验研究,不能得出因果关系推论,不能说编程潜力、态度和行为的差别是由于人格类型导致的。需要对这种相关关系进行深入的机理研究,给出人格特质与绩效之间的相关关系的合理解释,这将是未来的一项重要的研究内容。在找到性格类型与能力偏好的关系的基础上,对于一个特定任务,如何选择和搭配团队成员以形成更加和谐、高效和多样化的团队也是未来一项重要的研究内容[48]。

5程序员情感与绩效的关系

情感(moods)是指“心境或主要情绪的意识状态”[60]。Merriam-Webster字典将情绪(emotion)定义为“意识的情感方面,一种感觉状态,是一种有意识的心智反应(如愤怒或恐惧),对特定对象的强烈感觉体验,一般伴随有身理的和行为的变化”。情感和情绪都是感情状态。情感持续的时间更长,引起的原因没有情绪明确。情感可以持续一两天或者更久,而情绪在几分钟或者几秒钟之内发生或者消逝。大多数心理学家认为情绪和情感在本质上是一样的。几乎所有的日常活动都受到情绪的影响,从驾驶飞机到编程,无一例外都能感受到正面或者负面情绪。情绪可能破坏日常任务,通常会对精力、睡眠和思维造成干扰,严重的可能导致疼痛。研究发现,情感会影响人类的多种活动,如创造性、记忆、推理、行为、认知加工、信息加工、学习、决策和工作绩效[60]。

研究进展虽然情感与绩效关系方面存在大量研究,但是很少有针对IT专业人士的情绪研究。近年心理学领域开展了情绪对行为的影响研究,情绪对IT专业人士的影响的研究却很少[60]。情绪心理学相关研究表明,情感影响推理。而推理是编程的必要元素,如果情感能影响推理能力,那也可能会影响程序员的绩效。Khan[61]设计了实验来测试情感对程序员调试任务的影响。其方法是让程序员在开始调试任务之前,先观看几组激发特定情绪的录像带,比对各组任务绩效。结果表明,情绪的觉醒水平对调试任务存在重大影响,而情绪的效价对任务的影响却不明显。即程序员检测和改正错误的能力依赖于情绪的觉醒水平。Good等人[62]意识到情感对程序员绩效的影响,在计算机实验室中引进了表达和监控学生情绪的设备。实验表明,此设备有助于学生的情绪表达、交流与修复,进而促进学业成绩,获得了良好的反馈。

应用与启示情感对编程绩效存在影响,该领域的研究对程序员的管理有着重要指导意义。如情绪的觉醒水平对调试任务存在重大影响,企业管理中就需要尽量避免员工情绪出现大幅波动,过于高兴或悲伤都对工作不利。需要避免员工带着负面情绪工作,思维受到影响可能引入严重的软件缺陷。情感波动对编程绩效存在较大影响,组织在选拔程序员过程中可参考此因素,优选那些情绪稳定型人格特质程序员负责关键性任务。可用大五人格测量中的神经质维度(neu-roticism)问卷衡量情绪稳定性。

不足与展望针对程序员情绪的研究目前还处于实验室研究阶段,这与实际工程项目中程序员的工作环境存在巨大差别;并且情绪具有实时性和积累效应,如何在不侵扰程序员编程工作的条件下,实时地检测程序员情绪进而帮助其调节情绪是未来的发展趋势。文献[63]提出通过程序员使用鼠标和键盘的信息来监测程序员的情绪。文献[64]提出通过增加人机界面的情感意识(emotionawareness)设计来促进用户的正面情绪。

6编程能力倾向测试

众所周知,有些人认为学编程很困难,而有些人却觉得很简单。要可靠地将这两类人识别出来却是一个大问题。编程能力倾向测试旨在解决这样的问题。

研究进展Wilson&Shrock[65]研究了12个预测因子后发现,有3个预测因子与编程能力有着重要的相关关系,依次是:舒适水平、数学和归因(把成功归因于运气的学生编程能力较差)。Beise等[66]考察了年龄、种族和性别与编程入门课程之间的关系,从统计学上表明,性别和年龄都不是有效的预测因子。Nathan等人发现学生的预期是一个重要影响因素,那些预期自己能得“A”的学生更容易成功[67,68]。Lister等[69]、Fincher等[70]、deRaadt等[71]、Simon等[72]、Tolhurst等[73]指出,在编程入门课程中表现差的学生缺乏问题解决能力。Stuart实验发现,系统商数(SQ)-移情商数(EQ)与编程存在强正相关[74]。Simon等人[75]、Sue&Gary[76]、Tolhurst等人[73]都发现,学生的空间观想能力与编程能力存在正相关,地图描绘实验中画俯瞰图的学生在课程中得分更高,画路线图的学生成绩比俯瞰图的差,画路标图的学生成绩最差。空间观想能力与代码导航能力有关,进而关系到程序心智模型的构建。

应用与启示编程能力倾向测试可以提供学业和就业方向咨询,选择那些适合学习编程的学生,提高编程课程的通过率,减少计算机学生的退学率[77];为企业选拔更适合编程的员工,并识别哪些员工需要进行计算机相关训练。

不足与展望可以看出,目前该领域的研究未能取得公认统一的结论。学者们对预测因子的选取具有较大随意性,各自提出的预测因子繁多且缺乏系统性。究其原因,研究者们未能对软件工程中各种角色所需的认知能力进行机理层面的分析。相关性分析不能说明因果关系。学生在某种任务中的绩效与编程绩效相关只能说明该项任务与编程任务在所需的认知活动上存在某种程度的交叠。因此,用这些因子预测学生将来的编程表现是不够合理的。作为编程能力潜力的预测因子,需要选取与编程认知活动密切相关且相对稳定的因素。本文前几节的分析和总结对编程能力倾向测试的未来研究方向具有重要启发:1)编程能力在很大程度上是习得性能力,知识与经验的差异是程序员个体差异的最主要原因。因此在个体经历和其它条件相同的情况下,学习能力的差异是影响程序员未来编程能力的一个重要因素。同时,学习能力是一项较为稳定的能力,可作为编程潜力预测因子之一。2)软件工程的核心认知活动是问题解决(problemsol-ving),而元认知对问题解决活动进行监控与调节。元认知能力的高低对问题解决绩效起着重要影响[78],并且元认知能力也是较为稳定的高级能力[21],可作为编程潜力预测因子之一。3)情绪、动机(motivation)等因素对认知活动存在较大影响。同样,在外界刺激条件下,人格特质是个体情绪动机差异的决定因素,且人格特质具有长期稳定的特点,可探索部分人格特质维度作为编程潜力的预测因子,如情绪稳定性。总之,编程能力倾向测试的未来研究应着眼于分析软件工程的任务活动特征,识别那些对编程活动有着因果关系且较为稳定的因素作为预测因子,才可能达到“潜力测试”的效果。

结束语

尽管自1987年召开首届程序开发心理学年会以来,软件心理学研究领域取得了上述的若干成果,但其总体上仍存在不足:1)目前软件心理学的研究对象主要是程序员,对软件工程中的其它角色如需求分析师、软件测试工程师、项目管理人员等研究较少。2)目前的研究主要考察个体的行为。而现代软件项目是大量人员合作完成的,个体之间的合作与交流日益重要。对编程中的合作与交流的研究是近年呈现的新热点[79]。3)软件心理学研究成果未能在软件工程中得到充分应用。如软件工程中缺乏对程序员使用的编程环境可用性的考虑,即使有少数系统考虑,也将其视为技术问题,而不是人-机系统问题。近年来软件工程学者开始意识到人的问题,开始采用编程活动模型来评价开发工具的可用性。但总体而言,软件心理学呈现与软件工程应用结合越来越紧密的趋势。将软件心理学与软件可靠性工程中各项技术相结合[80],对改进缺陷预防[22]、改善容错设计都具有重要应用价值。最后,笔者建议,进一步加强软件心理学和软件工程两大团体之间的交流,以软件工程需求为牵引,开展软件心理学基础研究,同时给出软件工程可实施的方法和技术,这将是推动软件心理学发展、实现其应用价值的根本思路。

程序员工作展望范文第2篇

java程序员试用期个人工作总结范文一

领导您好,来咱们公司已经两个月,在紧张的工作与学习中,感觉时间过得很快。转眼到了试用期结束的时侯了。我在这两个月的工作中,从技术层面,到与项目组的融合度契合度,这两方面上讲都有了一定的提高。这与公司的各位领导,同人的支持与帮助分不开。在这里说一声:谢谢您!

在两个月工作中,初期熟悉公司技术,钻研项目业务,配合项目组完成阶段性的任务。

从主要职责具体上讲:

1.负责时代项目的模块编码工作,完成功能应符合设计的功能及性能要求,符合部门相关规范;

在时代项目组基本完成了公告管理模块,与部分特配单模块,正在进行主界面菜单的完善与更新;

在地质调查局项目组,完成了审批与全文搜索功能,与修洪海经理共同完成远程数据库同步更新功能,与贾俊奎经理完成了CMS站点远程实时更新功能;

所完成功能符合设计的功能与性能要求,符合规范;

2.负责对所分配模块的单元测试,同时应配合测试人员进行系统集成测试

所作模块完成时,先做测试,然后提交组内测试人员集成测试,遇到错误能够及时修改。

3.协助实施人员进行系统实施,并在项目经理的组织下进行问题的修改;

还没有实施任务;

4.负责编写相关模块的开发文档,文档应符合部门的开发文档规范;

能够根据模块编写开发文档,基本符合部门开发规范;

5.完成上级交办的其它工作。

能够及时完成上级交办的其他工作;

从工作要求上讲:

1.自觉遵守公司各项规章制度

认真完成工作,遵守员工守则;

2.努力学习、掌握并能熟练应用岗位相关业务知识,以饱满的工作热情、积极的工作态度投入到工作中,按要求完成岗位工作;

在工作中,做到努力学习不懂就问,及时与项目组同时之间的沟通,避免失误。工作热情高,不迟到不早退,能够按要求完成岗位工作;

3.高度的责任感和良好的团队合作精神;

在工作中敢于承担压力,有责任感。与同时之间关系融洽。共同合作完成本职工作。

4.对公司外部的工作要高度保持公司形象,对公司内部的工作要高度保持部门的良好形象;

能够做到维护公司形象,与部门形象,有主人翁意识;

5.按公司要求提交周报、完成各种公司流程。

可以按公司要求提交给上级部门周报,做事安公司流程规章制度;

6.按时提交项目阶段性成果。

基本能够及时按质按量完成项目阶段性成果;

以上是我试用期的工作总结,还有技术与能力还有很多地方需要改进,需要加强。以后会多多学习,多多提高。努力工作。为公司尽一份自己的力量!

java程序员试用期个人工作总结范文二

伴随着充实紧凑的工作生活,两个月的时间已经过去了。这一段时间里有工作上的收获,知识的丰富,经验的增长,同时也暴露出很多问题和不足。总结经验,吸取教训,本文将主要从几个方面来对工作进行总结:工作的主要内容;其中的失败和教训以及成功和经验;展望下一阶段的工作,确定自己的目标。以此作为惩前毖后的记录。

来到一个新的工作环境,最能发现自身的不足,这几个月,抱着虚心学习的态度,学习公司的开发流程,熟悉公司的企业文化,了解公司产品框架,主要技术,主动和同事沟通、学习经验,希望能更快的融入公司、融入开发团队,能够全心的投入工作。试用期期间完成的工作还十分有限,简单列了一些:掌握java开发语言和环境,由于在校学习时主要是以.net作为开发语言,所以在刚入职时通过一段时间学习并基本掌握了java开发技术。

熟悉公司开发流程,熟悉cbp产品框架。了解了核三框架的总体结构和开发流程,并能在核三的基础上进行项目开发。

参与了社保电子支付项目的开发。主要负责web端的模块开发,通过开发的过程,学习和掌握了flex界面开发,hibernate和oracle数据库

因为自己在经验上的不足,所以,在项目的开发过程中碰到开发进度慢的问题。综合起来看原因在于:

1、没有项目经验,没有经历过系统和完整的系统开发。

2、对于技术的学习和掌握还不够深入。

3、发现问题的能力不够,在自己以往的学习方式中,欠缺一种主动发现问题的能力。今后,我会多注意在这些方面的学习和积累。

这两个月的工作生活是充实且富有乐趣的,结识了很多同事和朋友,公司的氛围是非常轻松愉快的。感谢两个月来经理的关心,感谢部门同事的悉心指导,感谢公司各位同事的热心帮助,希望能在接下来的工作中能惩前毖后,总结经验,吸取教训,做到个人与公司共荣辱同进退,共同实现中地的辉煌。

java程序员试用期个人工作总结范文三

回首这一年的工作,有硕果累累的喜悦,有工作当中的艰辛,也有遇到困难和挫折时的惆怅。在项目可开发的过程中,难题一个接一个的出现,自信心不止一次的受到过打击,虽然自己早就知道,要做到符合公司的要求,做一名合格的程序员,这些是远远不够的。每天我都会不断勉励自己,好好学,以后会好的。在此同时,公司也给了我很多学习的机会,这是我对以后的编程之路又有了信心。在担任公司程序员一职已经有一年多的时间,在这一年时间里,我学到了很多东西。每个人都是在不断的总结中成长,不断的是审视中完善自己。在这一年里自己也是在总结、审视中脚踏实地完成好自己的本职工作,现将这一年的工作总结如下:

思想方面

严格按照一个程序员应有的素养来约束自己,爱岗敬业,具有强烈的责任岗和事业心,积极主动认真的学习专业知识,工作态度端正,听从公司的安排,积极配合客户完善数字化校园系统。

工作方面

热爱自己的本职工作,能够正确认真的对待每一项工作,工作投入,热心为大家服务,认真遵守劳动纪律,按时上下班,有效利用工作时间,坚守岗位,需要加班完成工作的要按时加班加点,保证工作能够按时完成。在这一年多的时间里面,我本着把工作做的更好这样一个目标,主动了解公司的开发项目流程,请教他们开发技术上的问题。

工作心得

1. 在这一年多的时间里面,我参与的都是团队合作的项目,无论是自己还是同事,我们都将就团队精神。在信任自己和他人的基础上,思想统一,行动一致,这样的团队一定会攻无不克战无不胜。我们的很多工作是一起完成的,在这个过程中,大家互相提醒和补充,大大提高了工作效率,所有的工作中沟通是最重要的,一定要把信息处理的及时,有效和清晰。

2. 每一个项目在开始着手的第一步,一定要和客户把需求沟通清除,只要了解项目的需求,才有可能真正做好一个项目。我们需要向客户提出,要求客户提供所有涉及该项目的资料,每次与客户见面都需要熟悉业务与程序的程序员随时记录需求。

3. 工作中,将任务详细化,详细到每个页面,甚至是一个页面中的图片什么时候做好,做好到什么程度,这样把工作进度有计划有方向的定下来,做事很有效率。

4. 每天的工作小结真的很重要,这让我们每天都有计划的知道自己干了什么,不是漫无目的的工作,所以我们应该养成,日记、周记、月记、年记的工作习惯。

5. 工作并不是一成不变的,也许有一天你要去其他岗位帮忙,所以同事之间的技术要相互学习,也许有一天,公司需要你发挥其他的技能帮忙,所以相互学习也是很重要的。

工作教训

在公司工作的期间,我也发现了自己离一个符合公司要求的程序员还有很多差距,主要体现在工作技能与工作经验的不够,也是我以后要在工作中不断磨练和提高自己的地方。仔细总结一下,自己在工作中主要有以下方面做的不够好:

1. 工作的条理性不够清晰,要分清主次和轻重缓急。

在开发时间很仓促的情况下,事情多了,就一定要有详细而主次分明的计划,哪 需要立即完成,哪些可以缓缓加班完成,在这方面还有很大的优化空间。

2. 对流程、业务需求不够熟悉。

在工作中,发现因为流程或业务需求的问题而不知道如何下手的情况有点多,包括错误与缺漏还有当时设计考虑不到位的地方,对于这块的控制力度显然不够,平时总是在开发,但说到底对业务很熟悉才是项目很好完成的前提。

3. 缺乏工作经验。

4. 学习的知识不够广泛。

一个项目中,涉及的技术往往有很多种,知识多了,就会灵活变通,以后我也会加强这方面的学习。

工作计划

1.

2.

3.

4.

5.

6. 要提高工作主动性,做事干脆果断,不拖泥带水。工作要注重实效、注重结果,一切工作围绕着目标完成。 要提高大局观,是否能让其他人的工作更顺畅作为衡量工作的标尺。 把握一切机会提高专业能力,加强平时知识总结工作。精细化工作方式的思考和实践。 虚心请教比我做的优秀的其他同事,向他们学习技术或经验。

其实作为一名员工,所有的地方都是需要学习的,多听、多看、多想、多做、多沟通,向每一个员工学习他们身上的优秀工作习惯,丰富的专业技能,配合着实际工作不断的进步,不论在什么环境下,我都相信这两点:

一是:三人行必有我师

程序员工作展望范文第3篇

关键词:编程语言;计算机;应用软件开发;影响效果

因为各种编程语言思路上存在差异性的缘故,所以采用不同的语言对计算机软件进行研发之时,编程人员一定要及时调整思路,从而使计算机软件开发、系统软件编写的质量有所保障,并且在编程手段的协助下,各类现实问题能够有效处理,借用合理的数学模型去节省了劳动资源。而正确选择计算机编程语言是软件开发质量有所保障的依据。本文以不同编程语言在计算机应用软件开发中应用效率为论点,现进行详细解析。

1计算机常用的编程语言

1.1C语言

20世纪七八十年代,C语言被开发,迄今为止这一编程语言在社会各个领域中均有较高的应用,同时在不断改进中演变成现代性的编程语言,得到了各界人士的青睐与肯定,从某种程度上可以证实C语言存在的意义与不摧的生命活力。C语言在编写进程中,最大的特征体现在无须计算机硬件或他类功能辅助就可以运行方面上。当然C语言的优点不仅在编辑环节上体现出来,还具有以下几种优势:(1)拥有优良的设计语言;(2)参照工作系统运行特征编写出有效的应用程序;(3)短小精炼;方便、语法简练、语法要求宽松、数据结构种类多样、运算符整体、功能灵活强大等特征;(4)因为数据模型是具备字符型、数组型以及构造型等属性的模型,那么就会使C语言能够为计算机软件的研发营造优良的运转环境,软件编写效率大幅度提升;(5)C语言可以直接访问物理区域,从而确保软件开发工作运行的动态性,这也是多数软件商安装C语言的原因之一。

1.2C++语言

C++语言可以被视为C语言的升级版本,C++语言最大的特征体现在囊括了C语言全部功能与优势方面上,这也促使目前C++语言在软件领域中被普及应用。C++语言适用于多变的环境,故此C++语言应用范畴不断拓展,在操作平台有广泛的应用。与C语言相比较,C++语言编写进程复杂性特征显著,学习起来具有一定难度,只有在对C++语言支持数据封装与数据隐藏、支持传承与多次应用、支持多态性等特征有认识,同时对C++语言工作原理有深刻认识上,才能确保在计算机相关软件研发的进程中,C++语言的实用价值发挥出来。在对以往实践数据解析过程中,发现C++语言为他类编程语言学习的入门学科,对C++语言编程要点有全面、娴熟掌握的基础上,软件学习者在学习与掌握他类编程语言应用要点上就更为容易了。

1.3Java语言

Java语言是继C语言之后出现的,有效地整合了C语言的全部优势,并填补了C++语言存在的不足,体现出特质性与优越性[]。概括地讲,Java语言大体上是以面向对象为主的编程语言。在语法属性方面上,Java语言与C#语言也存有显著差异性,Java语言使用package的概念将指针取而代之,导入包采用的是import语句,在Java内还存有特性的概念,以setXXXO、getXXXO为媒介进行设置。但是C#语言应用了指针概念,在unsafe状况中可以顺利地落实指针操作指令,Java语言特点在以下几方面体现出来:(1)跨平台性。即软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行;(2)面向对象。而通过使用方法来操作这个对象;(3)安全性。具体是在语言级安全性、编译时安全性、运行时安全性、可执行代码安全性四方面体现出来;(4)多线程。允许一个应用程序同时存在两个或两个以上的线程,用于支持事务并发和多任务处理:(5)简单易用。用记事本、文本编辑器等编辑软件来实现,然后将源文件进行编译,编译通过后可直接运行,通过调试则可得到想要的结果。

1.4C#语言

C#语言是一类最新的、面向对象的编程语言。它最大的特征体现在能够协助程序员迅速的编写多种以平台为基础的应用程负面上,提供了多样化的工具与服务内容,去协助程序员最大程度地开发利用计算以及通讯领域。也就是因为C#语言具备面向对象的超长规划能力,初始它转型为建设多种组件的最佳编程语言——不管面对的是高级的商业对象还是系统级的应用程序。程序员采用简单的C#语言结构,这些组件就可以开解的转型为XML网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调整与应用。

1.5Python是一种面向对象的解释型计算机程序设计语言

Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++语言对其进扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。综合以上论述的内容,对C语言、C++语言、Java语言、C#语言以及python这五种常见的编程语言各自特征、优点、应用范畴以及取得的应用成果有更为全面的认识。计算机软件开发人员应以设计目标为基点,科学的选用编程语言,进而实现提升软件开发效率的目标,在编程语言的协助下,软件开发人员工作强度得以降低。

2编程语言在计算机软件开发中的应用规则

计算机软件研发的主要目的是在现实生产生活中产生价值。在对计算机软件开发之前,相关人员为了能够选用最佳的编程语言,对不同类型编程语言的概念、特征、主要功能、工作原理,以及编程语言具体能够处理哪些问题等信息有全面性认识是基础。继而编程人员就会对一段代码的内容与编写的意义进行解析,若遇到难以理解或辨识的情况,程序员会一般就不采用该段代码或对其进行二次编写,在此书写的代码应带有通俗易懂的特征,这样才能为后续人员解析工作的开展与运行提供便利条件。比如在“parm=15”这一代码中,因为不存在声明变量的信息,那么程序员怎么判断该代码的正确性呢?在编译器没有用武之地的情况下,程序员通常是存有顾虑心理执行该语句的,故此他们只能借助解读后面代码含义的方式,才可以辨识“parm=15”确切意思。2.1整体结构通常来讲,被开发项目整体结构决定了被开发软件的功能,以及程序员选用哪种编程语言。因为计算机整个系统是由多个部分构成的,这间接的说明系统软件在开发过程中有很大的可能应用多种编程语言进行编写。而怎样在众多编程语言中将有效语言挑选出来?这是所有程序员需要面对的难题,通常情况下项目属性与功能决定所用编程语言的类型。但是对于资金投入金额相对较大的操作程序,最好选用一些静态类型的编程语言,成本较高的操作通常是指图形渲染、密码学、视频以及信号处理等。2.2最好应用自体能够娴熟使用的语言如果程序员能够娴熟的运用某一编程语言对计算机软件进行开发,那么就可以节省反复试用不同编程语言的时间,同时相关人员也能够达到对软件工程项目时间表精确估算的目标,从而确保软件开发工作结束的准时性。此外,程序员在娴熟掌握有关编程语言应用要点的情况下,还可以参照被开发项目运转需求,对语言进行适度整改与创造。比如,被研发的软件性能倾向于多次处理手工劳动时,那么程序员就可以参照现实中人工劳动量,选用简易性、敏捷性的编程语言,最好是选用那些自体就带有相应功能的编程语言进行操作。2.3充分考虑硬件环境众所周知,硬件环境是计算机软件开发目标顺利实现的前提条件,也就是说任何类型软件的开发均要有适宜的硬件环境去辅助,故此在应用编程语言对软件开发进程中应充分解析外部硬件环境。一般情况下,编程语言能够在当下版本的硬件环境下运行,但是在科学技术不断进步的时代中,硬件设备更新不断提速,那么过去适用的编程语言有很大可能不能满足当下软件发展需求了,从而使不匹配的问题衍生出来。故此,为了使软件开发的质量有所保障,在对有关程序进行设计之前应准确选择适应硬件环境运行的最佳编程语言,只有这样才能够使编写出的语句长时间、安稳的运转。此外,只有结合硬件设备环境特征选用编程语言对被开发软件程序进行编写,在对所得软件性能进行调整环节中才不会存在较大难度。由此可见,迅速对软件系统进行复原是极为必要的,动态编程语言的应用,能够使上述目标顺利达成,具体是借助和数个库相整合的方式。2.4语言的选择要考虑是否支持平台在选用编程语言对软件编写过程中,支持平台也是不可忽视的重要因素之一。比如说在浏览器内运转的程序语言,参照语言的适用性就可以有针对性的选用某些语言。支持平台可以被视为一个大型环境,全部操作行为均要紧扣平台运行模式。某些程序在研发的过程中,在程序语言格式这一因素的作用下,需产生大批量的位操作,那么在这样的形势下,程序员要分析这些位操作对软件开发进度与质量造成的影响效果,是否可以省略某些操作内容,若一定要进行这些位操作,那么就应该对编程语言类型进行科学选择,最好是位操作相对简单,以及能够供应合适数据的语言同时,此外,在一些特殊情况下,程序员应采用专业化的在的编程语言,节省时间的同时,也有效规避编程中较大的偏差。

3结束语

综合全文论述的内容,对C语言、C++语言、Java语言、C#语言以及Python五种常见计算机编程语言特征与适用范畴有更为全面的认识,同时也掌握了几种编程语言在计算机软件开发中的应用规则。总之,编程语言对软件的开发质量产生直接的影响,软件开发的项目与硬件环境又作用于程序语言。故此,选择最适编程语言是极为必要的,程序员在实践中应不断学习与总结经验,实现提升软件开发效率的目标。

参考文献

[1]王志刚,柴功昊.智能住宅计算机应用软件开发研究[J].科技视界,2015(05):153-154.

[2]李开元.探究计算机应用软件开发过程中不同编程语言的影响[J].信息化建设,2015(06):48.

[3]张彤.计算机应用软件开发中编程语言的选择研究[J].电子技术与软件工程,2015(21):57.

[4]康超.基于计算机软件开发的JAVA编程语言探讨[J].科技展望,2016,26(04):11.

[5]恽健.基于计算机应用软件开发的Java编程语言探究[J].电脑编程技巧与维护,2016(16):26-27.

[6]周霞.计算机软件工程的调试预编译作用解析[J].软件工程师,2014,17(06):59-60.

程序员工作展望范文第4篇

程序员试用期转正总结范文一

一年的时间,每当自己在总结它的时候,感觉是那么的短暂弹指一挥间.而也就是在这一挥间,承载着太多太多,有收获与成就,有失败与不足.回头看看2016年的足迹,伴随着自己一年的是学习与坚持.

2016年伊始是通过分销资源计划系统(DRP)拉开序幕.此次项目是一个相对比较完整的Java Web项目,从最基础的业务介绍,到需求分析,数据库分析与设计,页面设计,代码编写.直到整个项目的完成,通过这个项目学到了很多新的知识,同时对很多已经学过的知识进行很好的摩擦和补充.因为在其中还穿插着其他的内容,所以用了有半年左右的时间.具体总结可以参见博客:DRP项目总结.

从4月初到5月末,准备并进行软件设计师的考试.这是我第二次参加软件设计师考试.通过两次考试的对比可以明显的发现产生在自己身上的一些改变和进步.具体可见无经历,不成熟软件设计师考试后总结

但是最终的考试结果是没有通过,和第一次一样,差两分.虽然成绩的结果没有通过,但是通过这次软件设计师的复习考试,很给力的给自己补充了计算机基础方面的知识,同时也解了自己很多的疑惑,真正的学到了很多的知识.回顾自己整个的复习过程,收获是很大的,不仅仅是计算机基础,更是一种面对失败的心态收获.而这种心态将会在自己未来的路上会起很大的作用.

后半年进入SSH项目的实践和学习.

SSH为struts+spring+hibernate的一个集成框架,是目前较流行的一种轻量级Web应用程序开源框架。

Struts就是一个MVC的架构,在控制器,视图和模型方面都有其特定的组件,在SSH框架中,更多的是利用了Controller这个组件。

Spring实现了反转控制(Inversion ofControl)和面向方面编程(Achievement-OrientedProgramming)。Spring框架的能实现应用的分层架构,在应用中要使用的对象可以被一个简单的XML文件连在一起,这个XML文件含有到像事务管理器、对象工厂、包含业务逻辑的服务对象、和数据存取对象这些对象的引用。

Hibernate是一种ORM映射工具,它不仅提供了从Java类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用JDBC和SQL来手工操作数据库,使用Hibernate,可以大大减少操作数据库的工作量。

通过对SSH框架的学习,认识到框架给我们开发所带来的便利,更重要的是在框架形成的过程中所包含的原理和思想.收获都在一篇篇的博客中.

程序员试用期转正总结范文二

我于xxxx年xx月xx日成为公司的试用员工,作为一个应届毕业生,初来公司,曾经很担心不知该怎么与人共处,该如何做好工作;但是公司宽松融洽的工作氛围、团结向上的企业文化,让我很快完成了从学生到职员的转变。在实习期间我基本上了解了工作环境,在本部门工作中,我一直对自己要求严谨,认真及时做好领导布置的每一项任务,同时主动为领导分忧;专业和非专业上不懂的问题虚心向同事学习请教,不断提高充实自己,希望能尽早独当一面,为公司做出更大的贡献。当然,工作也有困难的时候,比如用到我所不熟悉的技术,使得在工作中遇到点小挫折,最后在部门经理协助下问题得以解决,非常感谢部门经理对我的耐心指导及帮助,让我学习和了解了新的技术并运用到项目中来。但是应用中难免出现一些小差小错需领导指正;但前事之鉴,后事之师,这些经历也让我不断成熟,在处理各种问题时考虑得更全面,杜绝类似失误的发生。在此,我要特地感谢部门的领导和同事对我的入职指引和帮助,感谢他们对我工作中出现的失误的提醒和指正。这是我的第一份工作,这两个月来我学到了很多,感悟了很多;利用技术实现软件的功能只是软件的表面,认识问题、分析问题、解决问题才是最重要的。不论是做事还是做程序,一定要有清晰的思路,要认真仔细的去做,要有耐心和信心。

在这两个月里,我主要参与了项目综合查询报表一块,期间学习了报表工具,刚刚看到页面上的合计分组时,感觉非常的难,同时也好奇怎么可以做到。在熟悉了存储过程后,有了了解,以前只是知道但是没有自己写过,不理解存储过程执行,但是在这短时间了,我明白了很多,学习了以前没有用过的知识,也是在这里认识了游标,懂得了游标,深深感到多练的好处。写的多了,自然也就懂了,非常感谢部门同事对我的耐心指导及帮助。

我也认识到了自己的不足,1、没有项目经验,没有经历过系统和完整的系统开发。我希望同时也相信自己在这次综合查询中可以学到不少经验。2、沟通能力欠缺,没有及时有效的和领导交流。这个可能和我的性格有点关系,我也希望能够有所改变。3、发现问题的能力不够,在自己以往的学习方式中,欠缺一种主动发现问题的能力。今后,我会多注意这方面的训练。

看到公司的迅速发展,我深深地感到骄傲和自豪,也更加迫切的希望以一名正式员工的身份在这里工作,实现自己的奋斗目标,体现自己的人生价值,和公司一起成长。

程序员试用期转正总结范文三

伴随着充实紧凑的工作生活,两个月的时间已经过去了。这一段时间里有工作上的收获,知识的丰富,经验的增长,同时也暴露出很多问题和不足。总结经验,吸取教训,本文将主要从几个方面来对工作进行总结:工作的主要内容;其中的失败和教训以及成功和经验;展望下一阶段的工作,确定自己的目标。以此作为惩前毖后的记录。

1. 工作的主要内容

在这两个月的工作中,我的总体任务是协助苏薇做好武警黄金部队矿业权管理系统的后期测试,编码,修改,文档编写的工作,分解开来之后,我主要做了三件事:1.编写矿业权系统的各类文档;2.矿业权系统的编码及bug勘误工作;3.矿业权系统的测试工作。下面依照时间来对我的工作进行介绍。

初踏入职场,进入专业的软件制造公司,对我,一个没有接触过标准软件制作过程的新人来说,起步就是一个很大的难题。若直接做开发,则业务不熟练,代码不规范,弊大于利;若仅做学习,则不能跟上项目的步伐,不能以最快的速度融入工作中去。

在我还在忐忑自己到底要做什么工作的时候,任务已经下达了,首先进行矿业权系统的测试工作。这样的好处在于能够在测试的过程中,了解项目的整体布局,了解项目中的业务逻辑,了解项目中尚未完成的工作并以此作为下个阶段的工作目标。至此,入职工作顺利起步。

在对矿业权系统进行测试之后,暴露了系统的诸多问题,测试过程中发现矿权系统没有进行输入限定,为了解决这个问题需要对整个系统的数据进行整理,我的下一个任务就是编写矿业权系统的数据需求文档。在编写该文档的过程中,对矿权系统进行了更深入的了解,为之后的bug勘误工作奠定了一定的基础。

完成了矿业权系统的数据需求文档的编写之后,新的任务是对整个矿权的输入数据进行输入限定,在任务开始之处是极为困难的,幸而得到了同事们的帮助才得以顺利完成任务。任务虽然完成,但是对输入限定实现方法的一知半解以及任务完成过程中的不仔细,为之后发生的问题也埋下了苦果。

在对矿业权系统添加输入限定完成之后,进入了解决程序小问题的阶段,对矿权系统进行细微的缝补工作。这段时间是学习多于工作的,不同的问题督促我要每天和百度亲密接触数百次,又要劳烦诸位在百忙中的同事抽出时间来给我帮忙。虽然辛苦一点,但收获却是满满。

完成了系统的修补之后,我们的程序送到了四惠进行第一轮测试,在测试的一周里,我主要是补充网络编程的基础知识。

第一轮测试结果出来之后,我们项目组开始了紧张的第一轮矿业权系统bug勘误工作。拿到bug列表之后,发现有一小半错误皆是因我而起,输入限定问题很多,我也主动承担了输入限定部分的bug勘误工作。

第一轮bug勘误工作完成后,进行了第一轮了回归测试,测试结果已然不尽人意,仍然存在大量的问题需要修改,而且很多问题还是因我而起,输入限定仍然存在大量问题,再一次进行修改之后,我们的程序送到了十五所进行所检。

在进行所检之余,我又接到了新的任务,完成矿权系统的概要设计以及详细设计文档的编写。这两份文档已于9月2号编写完毕。

现阶段我的任务是根据所检的bug列表,对矿权系统进行回归测试。

2. 工作中失败的教训以及成功的经验

对于失败的教训要吸取,成功的经验要进行总结。我对成功的定义是:在保证质量的前提下完成既定的计划或目标就是成功。其他的所有结果都是失败。

成功的经验:

1) 敢于接受任务并想尽一切办法完成

入职两个月最大的收获就是敢于接受任务并想尽办法完成,每一个任务对于初入职场的我都是一个挑战,如何保质保量完成任务是最基本的要求。这两月最大的成功在于没有一次任务是拖沓的,每次都尽最大努力完成了任务。

2) 勇于承担错误,正视自身的问题

在这两个月的工作中可谓是错误不断,从文档的错别字这种小问题到矿权系统bug修改不正确导致崩溃这种大错误,暴露出来了很多的问题,我秉承着有错即改,下不为例的思想,正视自己的错误并积极改正,因此这也算是一个成功。

失败的教训:

1) 重视每一个细节,不要忽视小问题

在最初进行矿业权系统数据需求文档的编写的过程中,对某些页面的数据在数据库中没有存储的情况没有加以重视,在后期进行数据限定的时候,还要重新修改数据需求文档,造成了不必要的时间浪费。从这个事情上得到教训就是不要放过任何一个小问题,这个小问题可能导致之后的大问题。

2) 进行重复工作也不能大意

在对矿权系统进行输入限定的方法熟悉之后,都是重复性的工作,给每个页面,每个字段进行输入控制语句的添加,在进行了数个页面之后,出现了有的页面没有添加完整,或者提示语句不正确的情况,在后续的bug勘误中出现了大量此类问题,浪费了大量的时间和精力修改。从这个事情上得到的教训就是工作不能大意,重复性的工作更要完成好。一般重复性的工作第一次做不好,后续检查修改是非常浪费时间的。

3) 考虑问题要严谨

在对矿权系统bug勘误的过程中,对输入限定条件的判断出了问题,我想当然的按照我的主观思路对数据进行了限定,而在回归测试的时候出了问题,这些都是考虑不严谨的后果。这个事情的教训就是考虑不严谨直接导致问题推倒重来,影响了工作效率,而且很容易埋下隐患。

4) 注重用户体验

在矿权系统bug勘误的过程中,修改最多的在于坐标系统的提示语句,因为坐标系统不仅要求数据必须填入,而且每一个数据都有严格的格式限定,因此每一个错误提示的弹出都要本着如何让用户知道哪里错了为原则进行设置。在最初的限定里面,语句粗糙,弹出语句不明确,造成了用户使用的不方便,还得重新进行改造。这个问题的教训是一定要从用户的角度出发考虑问题,注重用户体验从简单的提示语句做起。

3. 展望下一阶段的工作

下一阶段短期内我们的工作主要针对矿权系统的使用的数据库变更来对我们的系统进行修改。我的工作任务主要是学习oracle数据库和sql数据库的使用上的区别,做好从sql数据库向oracel数据库的迁移工作。

程序员工作展望范文第5篇

我于2012年7月4日进入公司,根据公司的需要,加入了XXX部,加入了XXX项目组,目前担任java程序员一职。到今天2个月试用期已满,根据公司的规章制度,现申请转为公司正式员工。

软件开发是我大学以来的志向,公司给了我这个机会,让我的梦想得以实现,这也是我职业生涯的一个起点,我十分珍惜。初到公司我曾担心自己不知道该怎么与项目组的同事沟通,担心不知道怎么做好工作,但是项目组的前辈们都很亲切,也很耐心的教导我,解答我的疑问,以及他们团结向上的精神,让我很快的熟悉了工作,融入了项目组。通过两个月的不断学习,在项目开发中的不断锻炼以及同事、领导的帮助,我已逐渐融入这个大家庭,个人的工作技能也有了明显的提升,虽然仍有不足,但是收获了不少,我感觉自己成长了,也逐渐成熟了。现将工作情况简要总结如下:

1.我主要在系统软件事业部进行软件开发和熟悉公司业务流程,初来乍到,对公司还有很多不熟悉的地方,但是在领导和同事的耐心指导下,使我在较短的时间内适应了公司的工作环境,也熟悉了公司的部分业务流程。

2.熟悉了公司现有项目主要使用的技术及开发框架,能迅速上手开发。

3.通过参与XXX系统、XXX系统两个项目的开发,现已能独立完成领导交付的任务。

4.项目基本流程、业务种类,有了相关的掌握与了解。

5.按时按量的自己给自己分配当天应当完成的任务,保证项目的进度。 在这两个月的学习和工作中,我一直严格要求自己,遵循公司的规章制度,认真完成领导布置的每一项任务,遇到的问题虚心的向项目组的前辈们学习、请教,不断的提高、充实自己。开发过程中出现的一些问题,前辈们会耐心的指出和指导我修改,这些经历让我不断成熟,处理问题时考虑得更全面,避免类似情况的再次发生。在此我要特地感谢部门的领导和同事们对我的指引和帮助,感谢他们对我工作上失误的提醒和指正。

经过这两个月,我已经能独立进行开发任务,按时按质的完成分配的工作任务,当然还有许多不足,开发的经验仍有待提高,编写代码的简洁性和完整性也需要进一步增强,需要不断的继续学习以提高自己的工作能力。

总之,这两个月来我学到了很多,感悟了很多。看到公司的迅速发展,看到部门的同事越来越多,我深深地感到骄傲和自豪,也更加迫切的希望以一名正式员工的身份在这里工作,实现自己的奋斗目标,体现自己的人生价值,和公司一起成长。

在此我提出转正申请,希望自己能成为公司的正式员工,恳请领导给我继续锻炼自己、实现理想的机会。我会用谦虚的态度和饱满的热情做好我的本职工作,为公司创造价值,同公司一起展望美好的未来!

此致 敬礼

申请人:XXX

程序员工作展望范文第6篇

程序员试用期工作总结范文一

这段时间,在领导和同事们的关怀和指导下,我通过不懈努力,各方面均取得一定的进步,现将我的工作情况做如下汇报:

一、通过理论学习和日常工作积累经验我的各方面有了很大的进步。

刚到公司不久,我便开始负责.NET方面的网站开发和广告平台开发和维护,刚开始的时候对我来说确实压力很大,因为各方面都还不熟悉,而且与之前的公司相比,节奏也有点快,不过我慢慢的习惯了环境,和同事相处的比较融洽,领导对我也比较关心,在公司里工作就像是在一个幸福的大家庭里一样,我很快喜欢上了这里。

我到公司不久,第一个项目是xxx公司网站,做这个项目的时候我遇到了几个问题,我在以前公司做的时候没有在这么短的时候完成一个项目的,在效率上提高了我的能力。做这个项目的时候我也遇到了许多以前没有遇到过的问题,我请教同事和朋友,还有借助网络一一解决了难题。

之后,我将B2B广告招商平台进行了改版,开发了xxx智能建站广告平台以及以后网站的维护工作。

接下来,我又做了一个比较棘手的项目xxx在线咨询系统。为什么说棘手呢,因为我以前没有做过这方面的项目,而且我问遍了所有认识的朋友,搜遍了网络也没有找到如何解决的方法,之后我翻书籍,接着搜索网络。功夫不负有心人,终于我找到一个聊天室的小例子,但是功能差的太远,于是我把这个示例一点点的研究,从一点也不懂到后来慢慢看懂,从对AJAX技术一无所知到基本熟练运用。接下来我就开始自己开发,到最后终于把它开发了出来,虽然不是很完美,功能不是很强大,但是它是我辛苦的劳动结晶,我相信以后会把它开发的更强大,更完美。

二、明确岗位职能,认识个人技术能力不足。

经过三个多月的工作,虽然完成了一些项目的开发,我的技能也提高了很多,但是感觉我的技术还有待提高,所以我会在以后的工作中更加努力,努力提高自己的技术和各种不足,努力使自己成为一名称职的职员。

三、提出自己努力计划

1、学无止镜,时代的发展瞬息万变,各种学科知识日新月异。我将坚持不懈地努力学习各种技术知识,并用于指导实践。

2、业精于勤而荒于嬉,在以后的工作中不断学习知识,通过多看、多学、多练来不断的提高自己的各项技能。

3、不断锻炼自己的胆识和毅力,提高自己解决实际问题的能力,并在工作过程中慢慢克服急躁情绪,积极、热情、细致地的对待每一项工作。

4、努力提高自己的日常交际能力。

时光流转间,我已到公司工作三个多月。非常感谢公司领导对我的信任,给予我体现自我、提高自我的机会。这三个多月的试用期工作经历,使我的工作能力得到了由校园步入社会后最大幅度的提高。

程序员试用期工作总结范文二

本人自20xx年2月份参加工作至今,六个月的实习时间已经结束。在这段时间里,在领导和同事们的悉心关怀和指导下,通过自己的不懈努力,在各方面都取得了进步。

实践让我的技能不断增长,工作能力不断加强。刚开始工作的时候,发现自己以前在学校学习的知识很死,知识面很窄,以前做的练习项目的实用性也不是很好。在开始的几周公司给我们实习员工培训了XXXX平台的使用,通过这次培训使我认识到XXXX平台的优势,可以大大提高软件开发效率。随后我就加入到XXXXX税源控管系统项目的开发中,成为开发小组中的一员。在项目开发过程中一边是同事们的悉心指导,一边是自己反复琢磨与理解,几个月下来大大提高了自己业务和技术两方面的技能,已经能够比较熟练的掌握基本的工作方法和一些技巧,而且能够独立完成一些模块的开发。通过实践,我解决实际问题的能力得到了很好的锻炼。工作中也遇到了很多的以前没有遇到过的新技术,面对技术难题我总是直接面对,没有逃避,也因此自学了好多新的技术,大大提高了自己的自学能力,也加深了对自己工作要负责的信念。在项目开发过程中也遇到了一些自己确实无法解决的困难,在经理和同事的帮助下也顺利的解决了,在此表示感谢。在开发团队中,加强了自己的团结精神和集体感,对工作认真负责,对团队认真负责。通过这个项目不仅学习到了很多技术也了解了整个项目的大体流程,从需求分析、数据库设计、详细设计、代码编写、测试、项目维护等方面,使自己不仅从一个代码编写人员的角度还从一个整体的角度来看整个项目开发,加深了软件开发概念的理解。

不断学习使我对工作有了更进一步的认识和了解。不懂就学、就问,是一切进步取得的前提和基础。因为有大学专业课的底子和参加过专门的JAVA培训使我在工作过程中遇到的技术知识能更快的理解和掌握。工作中时常遇到新的问题,就需要查阅相关资料,请教同事和经理,一个问题一个问题的解决,一个困难一个困难的克服,不仅将原有知识温习巩固,产生新的理解,而且学到很多新知识,有了许多新的认识。但某些认识都还是肤浅的,还需要我在实践当中去不断深入地理解。

现场开发与维护使我不仅从一个开发人员的角度而且从客户的角度去思考问题。在项目的开发后期,也就是项目即将上线的阶段我与其他几位同事被派往现场去开发与维护项目。以前的开发都是根据需求分析来进行,功能要求一般在分析里面都写的很清楚,但是在现场开发直接面对客户,客户提出的需求一开始只是一个大体的功能描述,如何将这个只是语言描述的功能转化为技术实现需要很强的抽象能力和对业务的深入理解,这个过程大大锻炼了自己的综合能力。在第一时间接触客户的需求,从客户的角度思考问题,只有更了解客户需求才能更合理的设计软件的结构,功能。了解客户,了解需求,转化到技术层面。这个过程得到的经验很难得。

良好的心态转换。从学校到社会,从学生到职员,自己做到了自然的转换过程,希望自己以后对工作更加认真负责。在今后的工作中,我将发挥优势克服不足,朝着以下几个方向努力: 1、学无止镜,时代的发展瞬息万变,各种新技术知识日新月异。我将坚持不懈地努力学习各种理论知识,并用于指导实践,以更好的适应行业发展的需要。 2、熟练的掌握各种业务技能才能更好的投入工作,我将通过多看、多学、多练来不断的提高自己的各项业务技能。 3、业精于勤而荒于嬉,实践是不断取得进步的基础。我要通过实践不断的总结经验,提高自己解决实际问题的能力,并在实践的过程中慢慢克服急躁情绪,积极、热情的对待每一件工作。

总之,短短的半年实习期,是我人生角色转换,不断成长的一个重要阶段,也是我对编程由陌生进而熟悉、热爱并愿意为之终生默默奉献的重要阶段。

程序员试用期工作总结范文三

伴随着充实紧凑的工作生活,两个月的时间已经过去了。这一段时间里有工作上的收获,知识的丰富,经验的增长,同时也暴露出很多问题和不足。总结经验,吸取教训,本文将主要从几个方面来对工作进行总结:工作的主要内容;其中的失败和教训以及成功和经验;展望下一阶段的工作,确定自己的目标。以此作为惩前毖后的记录。

来到一个新的工作环境,最能发现自身的不足,这几个月,抱着虚心学习的态度,学习公司的开发流程,熟悉公司的企业文化,了解公司产品框架,主要技术,主动和同事沟通、学习经验,希望能更快的融入公司、融入开发团队,能够全心的投入工作。试用期期间完成的工作还十分有限,简单列了一些:掌握java开发语言和环境,由于在校学习时主要是以.net作为开发语言,所以在刚入职时通过一段时间学习并基本掌握了java开发技术。

熟悉公司开发流程,熟悉cbp产品框架。了解了核三框架的总体结构和开发流程,并能在核三的基础上进行项目开发。

参与了社保电子支付项目的开发。主要负责web端的模块开发,通过开发的过程,学习和掌握了flex界面开发,hibernate和oracle数据库

因为自己在经验上的不足,所以,在项目的开发过程中碰到开发进度慢的问题。综合起来看原因在于:

1、没有项目经验,没有经历过系统和完整的系统开发。

2、对于技术的学习和掌握还不够深入。

3、发现问题的能力不够,在自己以往的学习方式中,欠缺一种主动发现问题的能力。今后,我会多注意在这些方面的学习和积累。

程序员工作展望范文第7篇

关键词:软件开发;软件测试;测试手段;重要意义

中图分类号:TP311.52

软件开发是一项集信息量大、程序代码多和时间长的工程,一个软件的好坏、质量的优劣不仅取决于软件的开发目标及其可行性的评估、功能需求的分析、软件的设计以及程序代码的编写,还取决于软件测试。软件测试是软件开发中的最后一个阶段,软件测试是使用人工或者自动手段来运行或测试某个系统的过程,通过测试发现软件开发设计过程中存在的问题,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。因此,软件测试在软件开发中的重大作用由此可见一斑。本文将从软件开发中的软件测试的内容、软件测试的方式方法、软件开发在软件开发中的作用及对软件测试的展望等几个方面对软件开发这一话题进行一番论述,从软件功能测试的作用谈起,浅析软件测试在软件开发中的重要意义。

1 软件开发阶段概况

当下软件开发一般分为五个阶段,从软件开发中的计划、分析、设计、编码到测试。(当然从广义上来说:软件维护也可以算是软件开发中的一个阶段)主要阶段具体可为:

1.1 问题的定义及规划

作为软件开发的第一步,对问题的定义及规划是软件开发的首要工作。软件计划中软件工作人员需要完成对所需解决的问题从市场需求、用户要求现实环境对所要解决的问题进行总体上的定义,在完成定义的同时,在这个阶段中还要就技术和经济层次上对所定义的问题进行合理的规划,做成资源、经济成本分析,就软件设计项目的有效实施提出具有可行性、操作性强的最优化方案,最大限度的规避在项目开发实施过程中不必要的问题。

1.2 需求分析

在完成问题的定义及规划之后,就要对软件需要实现的各个功能进行详细需求分析。需求分析阶段软件需求分析就是对开发什么样的软件的一个系统的分析与设想。它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言表达出来的过程。是一个很重要的阶段,需求分析的好坏,直接决定了软件功能基础,只有在需求分析阶段打下了良好的基础,才能为后面的软件开发过程省去不少的工作,才能设计出好的软件。

1.3 软件设计

软件设计是根据软件需求分析的结果来进行的,有什么样的需求,对应之进行怎样的功能设计,这个阶段是对整个软件系统进行设计,主要包括概要设计和详细设计两个阶段:主要用软件结构图表示方法和结构化程序设计方法分别对概要设计和详细设计进行说明,完成软件模块结构、程序流程等主要目标,为程序编码提供依据。

1.4 程序编码

此阶段是将软件设计的结果转化为计算机可运行的程序代码。在程序编码中必定要制定统一、符合标准的编写规范。以保证程序的可读性、易维护性。提高程序的运行效率。程序编码的正确与否直接决定了软件测试工作量的大小。所以软件编码在保证程序可读性还要做到越简约越好,为后续的工作打下坚实的基础。

1.5 软件测试

在软件设计完成之后要进行严密的测试,一发现软件在整个软件设计过程中存在的问题并加以纠正。整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。测试方法主要有白盒测试和黑盒测试。

2 软件测试的内容

软件测试是使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。

测试是为了发现程序中的错误而执行程序的过程,是一个寻找软件中尚未发现的错误的测试,一个成功的软件测试可能是一个新的测试方式方法,不但可以发现、改正软件中的错误,还能进一步的提升软件质量。软件功能测试一般包括了从以前段准备的测试用例进行测试为测试策略,通过对页面友好,安全性,可靠性,性能等内容进行测试的分支的测试、以解决合并时出现的冲突的测试和回归测试为主的合并到主干后的测试、以回归主要功能,关注特殊数据的预测试及可以监控了用户的某些行为的Beta测试这几个阶段一一进行。

3 软件测试的方式及特征

软件测试是一个系列过程活动,贯穿于软件项目的整个生命过程,很多软件项目的开发还停留在“作坊式”阶段,项目的成功往往靠个别程序员决定。软件测试看似只是一个寻找在软件开发中出现问题,解决问题的过程,其实软件测试是一个十分困难,耗时非常多,工作量巨大的任务,需要测试员工不但需要有良好的技术知识和测试经验,还需要拥有细心、恒心和耐心。在软件测试中主要用到的测试方式为白盒测试和黑盒测试。

3.1 白盒测试

白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。

3.2 黑盒测试

黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。通过边界值分析、错误推测法、因果图法、和正交试验设计法进行测试。。黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。

4 软件测试的作用

软件测试在软件开发中的重要性不言而喻,软件测试是质量保证的重要手段之一。软件测试的作用,具体地说明的话,可以概括为下列四个方面:

对产品质量完成全面的评估,为软件产品(如验收测试)、软件系统部署(如性能规划测试)、软件产品鉴定(第三方独立测试)委托方和被委托方纠纷仲裁(第三方独立测试)和其它决策提供信息。

通过持续的测试(包括需求评审、设计评审、代码评审等)可以对产品质量提供持续的、快速的反馈,从而在整个开发过程中不断地、及时地改进产品的质量,并减少各种返工,降低软件开发的成本。

通过测试发现所要交付产品的缺陷,特别是尽可能地发现各种严重的缺陷,降低或消除产品质量风险,提高客户的满意度,扩大市场份额,提高客户的忠诚度。

通过对缺陷进行分析,找出缺陷发生的根本原因(软件过程中的问题,包括错误的行为方式)或总结出软件产品的缺陷模式,避免将来犯同样的错误或产生类似的产品问题,达到缺陷预防的目的。

从具体的市场需求和客户的使用情况来看,软件测试在软件开发中占据着不可或缺的位置,因为软件测试决定了软件的质量。从1982年,最大的一次非核子爆炸――软件BUG导致横跨西伯利亚的输气管爆炸事件到1996年6月4日的Ariane 5火箭的飞行计算机中的软件BUG问题使得其升空40秒后爆炸事件;从近年来的奥运门票预定系统瘫痪到诺顿病毒误杀事件;从2000年11月,巴拿马国家癌症中心的放射线医疗仪的软件出现BUG到NOKIA新款手机的推迟等一系列的由软件质量引起的问题甚至可以说是灾难,都无不警示着我们,都无不告诉着我们软件质量是一个软件的命脉,而决定这一命脉的则是软件测试。当然,在市场的需求和客户的具体使用情况分析来看,有缺陷的软件产品带给用户的问题会给该软件带来危机,让该款软件很快的淘汰出市场,甚至会很大程度上的危害到企业的利益。由此来看,要想很好的规避质量问题,把好软件测试至关重要。

总之,软件测试更适宜被视为试图发现程序中错误(假设其存在)的破坏性的过程。一个成功的测试,通过诱发程序发生错误,可以在这个方向上促进软件质量的改进。

5 对软件测试的展望

软件测试为软件质量控制中的重要一环,利用测试工具按照测试方案和流程对产品进行功能测试和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对侧四方案可能出现的问题惊醒分析和评估。执行测试用例后,需要跟踪故障,以确保开发的差频频满足需要。从软件业发达的美国、印度的发展不难得出:软件测试不仅成为软件开发的一个有机组成部分,而且在软件开发的系统工程中占据着相当大的比重。当然,在近些年,随着国内软件工程的不断发展,软件测试的人才培养、引进也显得尤为火热。软件测试人才的空缺也很好的说明了软件测试的重要性。所以,可以预见的是:在未来的软件工程的发展过程中,在软件开发中的软件测试会变得更为重要,不仅是因为软件测试能够完善软件功能,更为重要的是软件测试能够把好软件的质量关,从而保证软件在使用过程中的安全性。面向未来,软件测试的作用不可替代,软件测试的重要性日益剧增。

6 结语

通过从软件开发阶段概况、软件测试的内容软件、测试的方式及特征、软件测试的作用及对软件测试的展望这五个方面对对软件测试在软件开发中的重要意义有了更为深刻的理解:软件测试不仅仅是局限于在发现软件中存在的问题,解决发现的问题,还是保证软件质量的至关重要的一步,只有把握好软件测试的关,才能让软件质量拥有更好的使用寿命和使用价值,才能更好地得到市场的认可,满足客户的需求。所以可以说,软件测试是软件成功与否的一个门槛,迈过这个门槛,才能拥有美好的未来。

参考文献:

[1]I Jacobson,G Booch,J Rumbaugh,周伯生,冯学民.统一软件开发过程[M].北京:机械工业出版社,2002.

[2]基于W模型的面向对象软件测试教学研究[J].承德石油高等专科学校学报,2012,1(14).

[3]李海峰,马琳.软件测试 PC Jorgensen[M].北京:人民邮电出版社,2011.

[4]浅谈软件测试用工具的设计与实现[J].科技创新与应用,2012,3.

[5]单锦辉,姜瑛,孙萍.软件测试研究进展[J].北京大学学报(自然科学版),2005.

[6]浅谈软件测试的研究热点[J].民营科技,2012,2.

[7]余久久.软件功能测试用例的设计过程及实践[J].电脑知识与技术,2008.

[8]颜炯,王戟,陈火旺.基于模型的软件测试综述[J].计算机科学,2004.

作者简介:亓静(1978.10-),女,山东人,盛大网络,软件测试,软件测试与质量保证。

程序员工作展望范文第8篇

[关键词] 体系结构 用例 UML 2EE

一、引言

考勤管理是企业人力资源管理的一部分,随着企业规模的扩大,企业的子部门不断增多,楼宇趋于分散,传统的考勤方式已不能满足现代企业管理的需求。成熟的Intranet企业网络及企业内部大型数据库管理平台的建立,为企业考勤管理系统的实现提供了便利条件。

在系统开发中,良好的模型能使工作事半功倍,良好的体系结构通过合理的层次划分,可以提高开发效率,并为程序的升级和移植提供便利。J2EE(Java 2 Platform Enterxprise Edition)为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制,然而J2EE技术与实际项目存在语义差异,采用UML统一建模语言建立的系统模型能很好地消除这种差异,本文探讨了二者在企业考勤管理系统开发中的应用。

二、UML及J2EE概述

1.UML概述

UML(Unified modeling Language)是一种定义良好、易于表达、通用的可视化建模语言,它能很好的将人们的思想活动转化成一种他们所熟悉的“书面性”的抽象形式,它支持面向对象的从系统需求分析开始的软件开发全过程。

UML主要以图的方式来描述系统模型,为了从不同角度描述系统,UML定义了5类共10种模型图:用例图、静态图(包括类图、对象图和包图)、行为图(包括状态图、活动图)、交互图(包括时序图、协作图)、实现图(包括组件图、配置图)。

2.J2EE概述

Sun Microsystems的Java 2平台有三个版本,微型版(J2ME)、标准版(J2SE)和企业版(J2EE)。 J2EE是由一套规范和建立在J2SE平台之上的应用编程接口(API)组成,除了现有J2SE的API,同时还提供了对EJB(Enterprise JavaBeans)、Java Servlet API、JSP(Java Server Pages),以及XML技术的全面支持。

为了缩减开发成本,快速跟踪企业应用的设计和开发,J2EE技术提供了基于组件的设计方法,开发、集成和部署应用程序。J2EE平台提供了多层分布式应用模式,使其具有重用的能力。

三、系统需求分析

需求是系统必须提供的具体功能,本项目采用的是用例驱动的方法来获取需求。用例是从用户(或外界系统)的角度,通过描述用户与系统的交互来理解系统的功能。要建立需求分析的用例模型,首先是获取业务角色(参与者),然后从参与者中找出用例,确定了系统参与者和用例之后,即可得到系统用例图。

考勤管理系统旨在对企业员工的出勤情况进行考察,之后将考勤与财务工资系统及相关的奖惩机制挂钩。整个系统由数据维护模块、统计报表模块、查询模块组成。

数据维护模块:包括员工基本信息维护、考勤信息维护、设置考勤类别。通过维护对这些原始数据进行修改或扩展。

统计报表模块:对数据库进行读写操作,通过前面采集的数据生成相关报表。查询模块:包括考勤信息查询,综合信息查询。

下面以数据维护模块为例,分析得到与其交互的角色如下:

1.打卡机

负责采集打卡员工的职工号、打卡时间及打卡机号码,显示打卡前后的提示信息。

2.系统管理员

主要负责在公司规定的时间段开/关系统,统计、查询员工打卡数据,对考勤类别进行详细设置。

3.员工

是系统的考察对象,参与的业务是提供打卡信息,以及查询本人当月考勤情况。用例分析如图1和图2所示:

四、系统设计

系统设计是构造系统的阶段,它是对分析结构的进一步精化,分析侧重于理解问题域,设计侧重于解决方案。设计的成果可以作为程序员编码的依据和指导。设计阶段的主要任务是: 系统体系结构设计、对象类设计、持久对象设计,模型图主要由顺序图、类图、协作图构成。

1.系统体系结构设计

J2EE使用多层分布式的应用模型,应用逻辑按功能划分为组件,各种不同的应用组件构成分布在不同的依赖于层的机器上的J2EE程序,这些组件分别是:运行在客户端机器上的客户层组件,运行在J2EE服务器上的Web层组件和业务逻辑层组件,运行在数据库服务器上的企业信息系统(Enterprise information system,简称EIS)层软件。考勤管理系统所采用的体系结构如图3所示。

客户层是系统的显示部分,将来自系统的信息显示给用户。Web层接收来自客户层的请求并将处理结果反馈给客户层。业务逻辑层负责实际工作的执行,处理与考勤系统相关的业务逻辑,并在需要时与数据库进行交互。EIS层提供主要的数据服务。J2EE提供的只是一个体系结构,在实际的项目开发中,需要进行具体的设计。

2.Web层的设计

Web层由Servlet、Java Bean和JSP组成,来自客户的请求由Servlet处理,然后重定向到JSP显示,这种显示与逻辑相分离的机制有利于系统的开发。JSP具有双重功能,一是向客户端提供Web显示页面,另外在服务器端执行某些逻辑操作。因此,可将JSP划分为两个不同的部分:《Client JSP》表示JSP在客户端的行为,《Server Page》表示JSP在服务器端的行为。当员工打卡时,数据传输至服务器端,并且打卡请求处理后生成的反馈页面传输给卡机显示终端。

3.业务逻辑层的设计

业务逻辑层上的EJB处理来自客户端的数据,该层的动态行为模型可以由UML的交互图及设计类的类图表达。这里使用的交互图是顺序图和协作图,类图体现了类之间的关系,是系统实现的基础。下面以员工打卡用例为例说明业务逻辑层的设计过程。

员工打卡用例的业务流程为:员工在打卡界面激活打卡命令,打卡信息提交给Servlet处理,并由EJB执行逻辑判断是否可以打卡,如果可以打卡,则返回提示信息至打卡界面,然后员工卡号及打卡时间通过网络传输保存至数据库服务器,打卡用例顺序图如图4所示。

顺序图有助于开发人员理解用例的实现过程,然而在具体的实现阶段需要的是具体的类,类包括边界类、控制类和实体类,识别出系统中主要用例的类是编写代码的基础。

员工打卡用例是由以下类来实现:员工类、打卡界面类、返回界面类、业务控制类、数据库实体类。员工类是指用户的实际操作,即员工通过打卡输入员工卡号及打卡时间。打卡界面类负责显示提示信息,返回界面类显示打卡后的反馈信息,业务控制类负责对业务的控制,数据库实体类负责员工打卡数据的读取。员工打卡用例的类图如图5所示,在识别类的基础上,能方便地画出用例的协作图,如图6所示。

4.EIS层的设计

EIS层保存了考勤管理系统的持久对象,持久对象数据库的创建采用SQL Server实现,采用JDBC驱动程序访问数据库,通过应用服务器(Weblogic)配置数据源,其配置步骤分两步:一是建立并配置连接池;二是配置数据源。

五、展望

基于UML和J2EE的系统设计,可以帮助用户和设计人员对问题的描述和理解达到一致,使用J2EE组件技术能开发出低价位的、高速的、占用少量资源的企业级应用程序,随着电子商务的发展,基于UML和J2EE的企业级应用将发挥越来越重要的作用。

参考文献:

[1]宁波:J2EE结合UML在企业级系统中的应用.计算机工程与科学[J],2004.3

[2]邵维忠梅宏:统一建模语言UML述评.计算机研究与发展[J],1999年第10期

[3][美] John Hunt,Chris Loftus[著],周立斌杨飞等[译].精通J2EE―Java企业级应用[M].清华大学出版社

[4]崔立元罗燕京李刚:基于企事业模型的软件需求工程方法.计算机工程与应用[J],2002,7

[5]谢卫宇王恒山:基于用例驱动分析的软件需求获取方法.计算机与现代化[J],2002年第6期

程序员工作展望范文第9篇

金秋9月,在新生开学报到的日子里,摩托罗拉员工们却迎来了伤感的“毕业季”。

据8月13日《纽约时报》印刷版报道:“摩托罗拉昨日宣布将在全球裁员4000人,约占其职员总数的20%,并关闭全球94个分支部门中的1/3。”据了解,中国是摩托罗拉此次裁员的“重灾区”,涉及北京、上海、南京、杭州和天津等多地员工。摩托罗拉北京总部裁员约700人,南京研发中心的500余人几乎全部被裁掉。另外,摩托罗拉香港分公司已决定将生产线搬走,转移到马来西亚首都吉隆坡及天津,香港厂房将裁减七八百人。

摩托罗拉、诺基亚、惠普……今年,受全球经济下行压力加大影响,IT、电器行业等领域的大型跨国公司出现大规模裁员,多家跨国公司在中国的机构也被列在裁员名单内,裁员数动辄以百人甚至千人计。

摩托罗拉员工把裁员称作“毕业季”,是因为他们中的许多人一毕业就进入了摩托罗拉,为它效力了5年、10年,甚至20年。成家立业,结婚生子,买车买房……他们把美好的青春年华献给了摩托罗拉。他们风雨同舟、情同手足,摩托罗拉是他们共同的家,他们深爱摩托罗拉。此次裁员,让他们重拾大学毕业般的离愁别绪。

9月1日,孙正(化名)在微博上了南京摩托罗拉(以下简称“南摩”)“毕业晚会”急需筹款的消息,引来了南摩“毕业生”的大量回复:

“这将是南摩绝唱,有爆料,有看点,有缅怀,有展望,有泪水,有欢笑。欢迎社会各界人士来函进行接洽。”

“孙正兄现场大解密这个节目一定要搞!”

孙正淡定地回复:“请联系我的经纪人……”

我不愿意离开摩托罗拉

孙正是一名在摩托罗拉工作了10年的软件工程师,参与研发的手机多达三四十款,Android平板手机的研发也有他的功劳。12年前,孙正大学毕业后在南京落户,在一家大型国企工作了2年。2003年,他抓住了进入摩托罗拉的机会,开始了在南摩“搞机”(业内行话,指研发手机、调试手机的意思)的时光。孙正记得,当时的面试有2轮,第1轮是技术和英语测试,第2轮是薪酬和问题解答。“摩托罗拉是当时最好的软件企业,摩托罗拉手机也是做得最好的,我就来参加面试了。那时候,本科毕业生比现在值钱,我面试完后就进入摩托罗拉啦。”

刚来摩托罗拉的时候,孙正并不适应,他非常怀念之前的那个企业。但是,很快孙正就喜欢上了这里。“摩托罗拉吸引我的不仅仅有技术,还有自由、平等的感觉和氛围。我们在工作过程中不太区分上下级,老板有不对的地方,我们在会议上可以提出来。我在摩托罗拉感觉受到了尊重,在这里工作,我感觉身心非常愉快,这是我10年来不愿意离开这里的主要原因。”

曾经有国内企业要挖走孙正,给出的薪水高出他在摩托罗拉薪水的30%,孙正没有走。他觉得,相比之下,摩托罗拉更规范,而且他对摩托罗拉有了深深的感情。

孙正留恋摩托罗拉的另一半原因是先进的技术。“现在手机已经进入3G(第三代移动通信技术)时代了,无论是3G还是2G(第二代手机通信技术规格),在摩托罗拉可以很直接、快速地接触到这些技术。摩托罗拉是欧美企业,技术、工作流程采用欧美生产经验,带给我眼界的开阔和技术方面的成长。这也是摩托罗拉为什么被中国通讯业称作‘黄埔军校’的原因之一。”

难忘的“搞机”时光

摩托罗拉公司成立于1928年,到今天,它已经是84岁高龄了。耄耋之年的摩托罗拉,经历过1998年“铱星计划”的辉煌,也经历过2011年移动部门被谷歌公司收购的低谷。无论飞扬与落寞,孙正和同事们都为自己是摩托罗拉人而感到骄傲和自豪。

摩托罗拉南京研发中心成立于1997年,至今已有15年的历史。“我有幸参与和陪伴了南摩2/3的时间。”孙正谦虚地说,“刚开始,我们做一些类似软件外包的工作,做软件的周边模块。随着人才的增加、经验的积累,我们开始做产品、软件类的东西。摩托罗拉明系列手机,是专为中国设计的透明翻盖手写智能手机,南摩参与了研发。之后,摩托罗拉的全球产品我们都有参与研发。2004年推出的V3薄款手机,南摩参与了很大一部分。和中国电信合作的XT800、ZAZR刀锋系列等,我们的参与程度更高。”

孙正觉得,假如南摩不关闭,南摩对摩托罗拉的贡献会更高。南摩的盈利业绩在摩托罗拉全球94个研发中心中排名第二,而成本花费排名倒数第二,作为独立的实体是一直盈利的。“所以我们会这么激动地去质疑公司,为什么要把我们一锅端。”

作为一名程序员,孙正平时的工作是比较平淡的,没有太多的波澜起伏,他们每天安安静静地对着电脑,没有热火朝天的场面。在摩托罗拉工作,有两点让孙正比较痛苦,一是时差问题,二是英语问题。

孙正经常要和美国、印度、韩国等地的工程师沟通交流技术上的问题,不然难以定位问题所在。美国工程师在当地时间下午一两点开会,正是北京时间凌晨一两点。在会议上,一个问题出来,美国工程师就会打来电话,孙正和同事们就要从睡梦中爬起来解决问题。有时美国总部开会开到下午三四点,孙正就要凌晨三四点起来工作。当天早上8点,大家还要照常上班。“时差问题大家都经历过,这个很痛苦,习惯了就好了。”孙正无奈地说。

“外国工程师打电话时用英语。英语毕竟不是我们的母语,我刚来摩托罗拉工作时,都听不懂,只好让他们发邮件给我。我们中国英语教育重视读、写,英文我能读懂。”孙正适应了大约一年的时间,才能用英语口语和外国工程师交流,那是一段痛苦的过程。

忆往昔峥嵘岁月

程序员工作展望范文第10篇

计算机软件项目的开发是一个应用广泛、风险大的复杂系统工程。加强软件工程项目的管理有利于计算机软件项目的开发及顺利实施。因此,本文总结了计算机软件工程项目管理方面存在的问题,并提出解决方案,为计算机软件工程项目开发顺利进行提供参考。

关键词

计算机;软件工程项目;管理

随着科技的进步,计算机软件工程的应用越来越广,规模不断扩大,复杂程度越来越高,对软件工程项目的质量要求也越来越高。企业想要做好计算机软件工程项目,就应该不断地改进计算机软件工程项目管理中存在的问题,提高软件工程项目管理质量及效率,才能提高工程企业的综合能力增加竞争优势。

1计算机软件工程项目的主要内容及管理特点

1.1计算机软件工程项目管理的主要内容

工程管理主要有项目承包管理和项目管理服务2种方式。软件工程管理的内容包括人员管理(工程开发者、组织部门、用户部门组、档案资料管理)软件的质量管理和软件的配置管理,软件工程风险管理和软件项目计划书编写。工程项目管理主要的职能包括立项决策、设计管理和前期准备,还有实际阶段管理、文档管理和后续评价。

1.2计算机软件工程项目的特点

计算机软件是指计算机系统中的程序和文档,包括系统软件和应用软件。软件的特点:1)不可见性;2)不确定性和多样性。计算机软件工程项目一般是一次性工作,其需求不确定,系统复杂多变。计算机软件经常用到国际先进的科学技术,如数据挖掘、聚类分析等;3)工作量大,风险高。

2计算机软件工程项目管理现状

2.1软件工程项目人员管理混乱

软件工程项目是一个复杂的庞大系统工程。需要各个方面的工作人员,如何管理及分配各个岗位人员是极其重要的。经过调研发现,许多公司的软件工程项目的人员结构混乱,各职工的工作内容不明确,阻碍了工程项目的进度及实施。项目工程开发需要各岗位人员交流和协调,而好多公司的员工都没有做到位,缺乏团队意识,浪费时间、精力和资源。

2.2开发软件工程项目前缺乏实际考察

软件工程项目开发不仅仅要求项目的创新,还应该考虑到它的实际应用价值。很多软件工程项目工程计划书中缺少实际考察资料。实际考察资料中应该含有项目需求的实体,及项目建设的数据。由于没有进行实际考察,开发出的完整地软件工程项目与实际要求不相符,若偏差较大,就造成了人力、物力及资源的浪费。

2.3缺乏风险管理意识

软件工程项目是非常复杂的,每个结构之间都是紧密影响的,因此只要有一个小小的错误,就可能导致整个项目的失败。这也是软件工程项目高风险的原因所在。正所谓差之毫厘失之千里。然而,软件项目管理者风险管理意识淡薄,没有充分的意识到它的重要性。且缺乏风险管理方面的知识,即使发生风险也不知道如何抵挡将损失降到最低。最终造成不可估计的损失。

3如何提高软件项目管理水平

如今,各种市场经济竞争都很激烈,计算机软件公司亦是。企业若想要能够增加竞争优势,就要提高管理水平管理好软件工程项目。笔者就企业中计算机软件项目管理中存在的问题,给出以下建议,希望工程公司中的计算机软件工程项目管理水平有所提升。

3.1明确各岗位人员工作内容,增加各岗位的沟通,提高团队合作意识

软件工程项目的工作会涉及到人员管理,如何分配工作任务使每个人的工作任务都很明确,这些都是软件工程项目顺利进行的基础工作。因此对于软件工程项目负责人而言,首先应该把精力放到项目人员的分配及优化上。人员的分配应该根据项目的大小,具体分配任务。有的人有时候可能要身兼数职,但是职责仍要明确区分,不要混淆。管理者要根据每个部门各岗位对人员的素质要求来选择合适的人任岗。如系统分析员就要任命那些分析能力强,社交活动能力广的人,程序员需要熟练编辑程序等。员工工作内容分配明确是软件工程项目开始的首要因素。如今,知识体系在不断地更新,当然软件工程方面的知识也不例外。因此,在工程项目结束后每个岗位的工作人员都应该写一份经验书,及可以提高效率的建议,为以后的项目顺利进行做准备。软件项目负责人应该不断地优化软件开发的人员结构,使自己拥有一个专业素质极高的软件项目专业队伍。首先,应该增加对员工软件项目方面的专业培训。其次,软件工程项目负责人应该不断的学习项目管理的新方法,并将其运用到自己的团队中,提升自己的而管理水平。最后,还应该建立以奖罚的制度,增加软件项目开发人员升职的方式或渠道,调动团队的工作积极性,提高工作效率及工作质量。工程项目的开发需要每个岗位的人员能够进行无障碍交流并且出现问题时能够及时的相互协调解决问题。企业可以采取多种有效地沟通方法,如提供专门的沟通环境,以提高沟通效率,或建立有效的沟通制度,促使各岗位顺利的进行沟通。若一个软件工程项目的开发,不同部门之间能够有效地沟通,就会加快软件项目工程的进度。沟通的目的是促进项目的顺利进行,解决问题。所以员工做事时应该是对事不对人,有较高的团队意识。可见,各部门之间的沟通,增强团队意识对软件工程项目是多么的重要。沟通可以促使员工具有团队意识。有了团队意识,大家就会向一个目标前进,促进项目的进度发展。所以,团队意识就是金钱,团队意识就是效率。正是如此,企业应该加强每一个员工的团队意识的培养,缩短软件项目开发的时间,提高效率。

3.2加强软件工程项目开发前的实际考察

软件工程项目中令人头疼的问题之一是软件工程的需求分析与实际的业务之间差距很大。这是因为很多软件工程项目进行开发前,并没有进行实际考察,导致设计好的与要求的相差甚远,最后导致软件工程项目重新设计或失败。因此,软件工程项目在开发之前应该对客户业务的要求进行实体考察,记录有关数据,并对这些资料进行整理、归档,有助于以后的查询。在实际考察中一定要持严肃、认真的态度,并将考察结果写到软件项目计划书中,让所有开发者都能够重视。

3.3增强风险管理意识

首先,软件工程项目负责人应该增强风险管理意识。然后建立有关风险管理规章制度,聘请项目风险评估负责人。风险评估人应该能够熟练的运用风险管理知识,对风险识别、量化、控制的方法熟练应用,能够在项目启动后快速、准确的识别存在的风险。其次,整个软件工程项目的过程中都可能存在风险,因此应该定期对项目进行风险评估,并提出预防方案,以维持软件工程项目的顺利进行。最后,项目负责人可以先将风险划分等级,等风险发生时,按照已规划好的风险等级采取相应的措施,将损失降到最低。

4结论

综上所述,计算机软件公司应该重视对软件工程项目的管理。正确地对员工进行岗位分配,严格的执行软件工程项目开发前的实际调研,建立合理的规章制度,加强风险管理,增强团队意识才能够保证软件工程项目按照客户的要求在规定的时间内,不超成本并且保证高质量的情况下顺利完成。

作者:李跃奎 单位:南京维数软件技术有限公司研发部

参考文献

[1]陈玉霞.计算机软件工程项目管理分析刍议[J].计算机光盘软件与应用,2013(20):129,131.

[2]卢亚松.基于计算机软件工程项目管理的探讨[J].软件(教育现代化):电子版,2015(11):168.

上一篇:青协工作展望范文 下一篇:未来工作展望范文