软件工程考试

时间:2019-05-15 12:50:32下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《软件工程考试》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《软件工程考试》。

第一篇:软件工程考试

第一章 软件工程学概述

1.软件的概念,软件的分类

答:软件=程序+数据+文档;

按规模分类:微型、小型、中型、大型、甚大形、极大型(6)

按性质分类:系统软件、支撑软件、应用软件(3)

按工作方式分类:实时、分时、交互式、批处理(4)

按服务对象分类:项目软件、产品软件(2)

2.软件危机产生的原因(2点),缓解软件危机的途径

答:和软件本身的特点有关,和开发软件的方法不正确有关;

软件工程;

3.软件生命周期包含的活动

答:问题定义、可行性研究、需求分析、总体设计、详细设计、编码、测试(8)

4.问题定义阶段的任务

答:确定软件规模、性质、目标

5.常见的软件开发模型

瀑布模型:适用范围是需求确定的软件开发,是描述结构化的软件开发模型;

快速原型模型:适用范围是需求不确定的软件开发;

喷泉模型:是描述面向对象的软件开发模型;

第二章 可行性研究

1.可行性研究从哪些方面进行

答:经济,技术,法律,操作(4)

2.系统流图SFD的作用

答:描述系统的工作过程,建立系统的业务模型

3.数据流图DFD的作用,符号,画法

答:描述系统的功能,建立系统的功能模型

符号:外部实体(正方形),处理(圆形),存储(双实线),数据流(单箭头线)画法:分离成分,分层画DFD(顶层,0层,1层)

第三章 需求分析

1.结构化的需求分析方法SA的原理

答:用DFD、DD进行功能分析,建立系统的功能模型,用E-R进行数据分析,建立系统的数据模型

第五章 总体设计

1.总体设计的原理

答:模块化、抽象、逐步求精、信息隐藏和局部化、模块独立(5)

2.衡量模块独立的指标

答:耦合,内聚 3.总体设计的启发规则(7点)

答:改进软件结构提高模块独立性

模块规模应该适中

深度、宽度、扇出和扇入都应适当

模块的作用域应该在控制域之内

力争降低模块接口的复杂程度

设计单入口单出口的模块

模块功能应该可以预测

4.结构化的设计方法SD的原理

答:将DFD映射成软件结构图

第六章 详细设计

1.用结构化方法进行开发在详细设计阶段的任务

答:对模块进行设计,主要是设计模块的界面和算法 2.结构化程序设计SP的原则(7点)

答:采用自顶向下、逐步求精的设计方法

程序中用顺序、选择、多分支、while型循环、until型循环表示程序逻辑

每种控制结构单入口、单出口

程序语句组成模块,每个模块单入口单出口

复杂的结构用5种基本控制结构组合嵌套实现

严格控制goto语句的使用,在下列情况可用:

在非结构化的语言中,用goto语句实现结构化的构造

在某种可以改善而不是损害可读性的情况下

不仅要注意程序的结构化,还要注意数据结构的合理化

3.判断算法是否为结构化的依据(3点)

答:由5种基本控制结构组成;

每种控制结构单入口单出口;

模块单入口单出口

4.描述算法的工具

答:图形工具:N-S图,PAD图,活动图

语言工具:PDL语言

表格工具:判定表、判定树

5.算法环形复杂度的度量(流程图-流图-区域数)

答:流程图-流图转换方法:

一个判断框缩成一个点;

一个处理框缩成一个点;

一个顺序处理序列缩成一个点;

判定框和与之相连的处理框缩成一个点;

真假分支的汇聚点增加一个点

第七章 实现

1.编码的风格(判断题)

答:程序内部的文档:恰当的标识符(含义鲜明、缩写(必须保留第一个字母、辅音字母由于元音字母、字首优于字尾)+注解)、适当的注解(序言性注解、功能性注解)、程序的视觉组织(布局、空行、缩进)

2.测试的概念、原则、方法,步骤

答:概念:用最少的时间和人力,找到软件中尽可能多的错误和缺陷

原则:

尽早的和不断的测试;

事先要制定测试计划,严格执行学生计划,排除测试的随意性;

测试从小规模测试开始,逐步进行大规模测试;

充分注意测试中的“群集”现象;

“穷举”测试不可能,应该精心设计测试方案,使测试方案充分的覆盖程序逻辑,以尽可能多的发现程序中的错误;

测试方案应该包含合理的输入条件和不合理的输入条件;

测试应由独立的第三方从事;

方法有黑盒测试和白盒测试

步骤是单元测试、集成测试、系统测试、确认测试

3.白盒测试法有哪些,黑盒测试法有哪些

答:白盒测试法有:逻辑覆盖法、基本路径法覆盖法、循环覆盖法

黑盒测试法有:等价划分法,分界值分析法,错误推算法

4.用逻辑覆盖法设计测试方案

5.黑盒测试技术的原理

答:在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部 特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。

6.可靠性的概念

答:软件可靠性是程序在给定的事件间隔内,按照规格说明书的规定成功的运行的概率;可靠性是衡量软件质量的指标

7.可靠性的计算

第八章 维护

1.维护的概念、分类

答:在软件已经交付使用后,为了改正错误或满足新的需要而修改软件的过程; 改正型维护,完善型维护,适应型维护,预防型维护;

第九章 实战

1.软件有哪些开发方法

答:结构化的开发方法、面向对象的开发方法、传统的开发方法与面向对象的开发方法相结合的实用开发方法

2.传统的软件开发方法的开发步骤

答:问题定义,可行性研究,需求分析

业务分析(业务描述,建立业务模型)

功能分析(功能描述,功能模型)

数据分析

总体设计

建立软件结构

设计数据库的表结构

详细设计

模块设计

建立数据库,录入数据

实现

编码,测试

3.面向对象的开发方法的开发步骤

答:问题定义,可行性研究

面向对象的分析

业务分析

功能分析,建立系统的功能模型(参与者,需求结构,功能模型)对象分析,建立系统初步的对象模型

用例分析,建立用例分析模型(顺序图,活动图)

扩充和完善,建立系统完整的对象模型

面向对象的总体设计

扩充和完善功能模型

软件运行环境

软件架构模型(软件架构模式,软件分层架构,软件逻辑结构)

扩充和完善对象模型,建立平台相关对象模型

用例设计模型(顺序图,活动图)

数据库设计模型(数据库的表结构,数据库的逻辑结构)

界面设计模型(界面结构模型,屏幕界面模型)

组件图

部署模型

面向对象的详细设计

确定每个用例的实现算法

建立数据库,录入数据

面向对象实现

编码,测试

4.BCE、MVC是什么

答:BCE是用例分析模式、MVC是程序设计思想

5.传统的开发方法与面向对象的开发方法相结合的实用开发方法的开发步骤 答:问题定义,可行性研究

需求分析

业务分析

功能分析

数据分析

动态分析

总体设计

软件运行环境

软件架构模式(C/S B/S)

建立软件结构图

设计数据库的表结构

详细设计

模块设计

建立数据库,录入数据

实现

编码,测试

第二篇:软件工程考试

软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术和管理方法 软件工程三要素:方法、工具和过程

软件工程的内容:软件开发技术和软件开发管理两个方面

可行性研究方面:技术可行性经济可行性操作可行性法律可行性

IT项目可行性研究审计的概念:事前对IT项目从技术和经济两个方而进行的详细论证,涉及

数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合.包括(1)数据流(2)数据元素(3)数据存储(4)处理 验证软件需求的正确性:(1)一致性:所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。(2)完整性: 需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能(3)现实性:指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。对硬件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性。(4)有效性: 必须证明需求是正确有效的,确实能解决用户面对的问题。

软件设计过程有:1数据设计:将实体 – 关系图中描述的对象和关系,以及数据词典中描述的详细数据内容转化为数据结构的定义。2总体结构(系统结构)设计: 定义软件系统各主要成份之间的关系。3过程设计: 把结构成份转换成软件的过程性描述。4接口设计:定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间的交互机制。软件设计方法:结构化设计方法(SD)面向数据结构的设计方法(JSD方法)面向对象的设计方法(OOD)

软件设计分两个阶段完成:结构设计:结构设计是总体设计阶段的任务。结构设计确定程序由哪些模块组成,以及这些模块之间的关系。过程设计:确定每个模块的处理过程

结构程序设计:一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构

软件测试:是根据软件开发各阶段的文档资料和程序的内部结构,精心设计一组“高产”的测试用例,利用这些实例执行程序,找出软件中潜在的各种错误和缺陷的过程 黑盒法(黑盒技术是把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求 白盒法(白盒技术):是把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检查内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。驱动模块:驱动模块是用来模拟被测模块的上级调用模块的模块,功能要比真正的上级模块简单得多,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被测模块,接收被测模块的测试结果并输出。

桩模块:桩模块用来代替被测试模块所调用的模块。它的作用是返回被测模块所需的信息。单元测试::单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。

集成测试:是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试,故也称组装测试或联合测试。

确认测试:又称有效性测试。是为了检查软件的功能与性能是否与需求规格说明书中确定的指标相符合所进行的测试

单元测试内容①模块接口②局部数据结构③重要的执行路径④错误处理⑤边界条件。调试的目的确定错误的原因和位置,并改正错误,因此调试也称为纠错(Debug)调试的技术手段有简单的调试方法、归纳法、演绎法和回溯法等 软件可维护性:软件能够被理解、校正、适应及增强功能的容易程度

为了保证软件的可维护性,需要做哪些质量保证检查?(1)在检查点进行检查。检查点是指软件开发的每一个阶段的终点。(2)验收检查。验收检查是一个特殊的检查点的检查,它是把软件从开发转移到维护的最后一次检查。(3)周期性的维护检查(4)对软件包的检查。好的文档有以下几方面的作用:(1)好的文档能提高程序的可阅读性,但坏的文档比没有文档更坏;(2)好的文档意味着简明性,风格的一致性,容易修改;(3)程序编码中应该有必要的注释以提高程序的可理解性;(4)程序越长、越复杂,则它对文档的需求也越迫切 软件维护的流程:定维护申请报告。审查申请报告并批准。进行维护并做详细记录。复审 面向对象方法学的出发点和基本原则:是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程.描述问题的问题域与实现解法的求解域在结构上尽可能一致。

对象是用面向对象方法学开发软件时对客观世界实体的抽象,它是由描述实体属性的数据及可以对这些数据施加的所有操作封装在一起构成的统一体。传统的数据是用传统方法学开发软件时对客观世界实体的抽象,但是,种抽象是不全面的:数据只能描述实体的静态属性,不能描述实体的动态行为。必须从外界对数据施加操作,才能改变数据实现实体应有的行为。对象与传统数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体。必须发消息请求对象主动地执行它的某些操作,处理它的私有数据,而不能直接从外界对它的私有数据进行操作。

对象模型的五个层次:主题层(也称为范畴层),类—&—对象层,结构层,属性层,服务层

面向对象实现主要包括两项工作:把面向对象设计结果,翻译成用某种程序语言书写的面向对象程序;测试并调试面向对象的程序

面向对象软件的测试分四个层次进行:算法层、类层、主题层、系统层

项目管理者的目标: 定义全部项目任务,识别出关键任务,跟踪关键任务的进展状况,以保证能及时发现拖延进度的情况

软件配置管理主要有5项任务: 标识 版本控制 变化控制 配置审计 报告 软件工程实施项目管理的目的 : 在于它能够帮助我们进行系统性思考,并切实可行地进行全局性安排,同时也可以为项目开发的人力资源需求提供依据。

项目管理者的任务:确保信息系统项目符合预算和进度要求,并确保交付的系统能够达到预定的目标

软件的质量保证活动: 是确保软件产品从诞生到消亡为止的所有阶段的质量的活动。即为了确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动 对编制高质量文档的要求:(1)针对性(2)精确性(3)清晰性(4)完整性(5)灵活性

第三篇:软件工程考试总结

2.说明结构化程序设计的主要思想是什么? 答:(1)自顶向下、逐步求精的程序设计方法(2分)(2)使用3种基本控制结构、单入口、单出口来构造程序。结构化程序设计是实现该目标的关键技术之一,它指导人们用良好的思想方法开发易于理解、易于验证的程序。结构化程序设计方法的基本要点是: 1)采用自顶向下、逐步求精的程序设计方法2)使用三种基本控制结构构造程序 3)主程序员组的组织形式。

3.软件测试包括哪些步骤?说明这些步骤的测试对象是什么?答:(1)单元测试,测试对象单元模块(2)集成测试,测试对象为组装后的程序模块(3)确认测试,测试对象为可运行的目标软件系统

4.需求分析与软件设计二个阶段任务的主要区别是什么? 答:需求分析定义软件的用户需求,即定义待开发软件能做什么软件设计定义软件的实现细节以满足用户需求,即研究如何实现软件 5.说明软件测试和调试的目的有何区别?

答:测试的目的是判断和发现软件是否有错误 调试的目的是定位软件错误并纠正错误。

7、白盒法:该方法把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检查内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。白盒法也不可能进行穷举测试。

8、黑盒法:该方法把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依照需求规格说明书,检查程序是否满足功能要求。因此,黑盒测试又称为功能测试或数据驱动测试

9、面向对象设计:是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。或者说,面向对象设计就是用面向对象观点建立求解域模型的过程。

10、结构化设计:面向数据流的设计是以需求分析阶段产生的数据流图为基础,按一定的步骤映射成软件结构,因此又称结构化设计(SD)。

11、结构化分析:是根据分解与抽象的原则,按照系统中数据处理的流程,用数据图来建立系统的功能模型,从而完成需求分析工作

结构化方法是一种传统的软件开发方法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。它的基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。

结构化分析方法(Structured Method,结构化方法)是强调开发方法的结构合理性以及所开发软件的结构合理性的软件开发方法。结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化开发方法提出了一组提高软件结构合理性的准则,如分解与抽象、模块独立性、信息隐蔽等。针对软件生存周期各个不同的阶段,它有结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)等方法。

结构化分析方法是面向____数据流___进行需求分析的方法。结构化分析方法使用____数据字典______与____加工说明___来描述。

13、系统流程图:是描述物理系统的传统工具,它用图形符号来表示系统中的各个元素,例如人工处理、数据处理、数据库、文件、设备等。它表达了系统中各个元素之间的信息流动的情况。4.软件生存周期

软件生存周期是指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退役为止的整个过程,一般包括计划、分析、设计、实现、测试、集成、交付、维护等阶段。

2、采用黑盒技术设计测试用例有哪几种方法?这些方法各有什么特点? ㈠等价类划分。等价类划分是将输入数据域按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试每个等价类的代表值就等于对该类其它值的测试。㈡边界值分析。该方法是将测试边界情况作为重点目标,选取正好等于,刚刚大于或刚刚小于边界值的情况,根据这些情况选择测试用例。㈢错误推测。错误推测法没有确定的步骤,凭检验进行。它的基本思想是列出程序中可能发生错误的情况,根据这些情况选择测试用例

3,Gantt图是历史悠久,应用广泛的制定进度的计划的工具。形象的描绘任务分解情况,以及每个子任务的开始时间和结束时间,具有直观简明,容易掌握,容易绘制的优点。缺点1不能显式描绘各项作业依赖关系2进度的关键部分不明确,难于确定哪些是主攻和主控3有潜力的部分不明确,造成浪费。工程网络 0分软件危机定义和产生的因有哪些?

当软件开发技术的进步不能跟上硬件技术的进步,未能满足发展的要求,致软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。

1)软件日益复杂和庞大(2)软件开发管理困难和复杂(3)软件开发技术落后(4)生产方式落后(5)开发工具落后(6)软件开发费用不断增加

1、可行性研究的任务是什么? 首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。然后,分析员进行简要的需求分析,抽象出该项目的逻辑结构,建立逻辑模型。从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的主要解决方法,对每种解决方法都要研究它的可行性,可从以下三个方面分析研究每种解决方法的可行性。㈠技术可行性:对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。㈡经济可行性:进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。㈢社会可行性:要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。

2、需求分析的任务是什么?

需求分析的任务是确定待开发的软件系统“做什么”。具体任务包括确定软件系统的功能需求、性能需求和运行环境约束,编制软件需求规格说明书、软件系统的验收测试准则和初步的用户手册。

需求分析是指,开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。

3、概要设计的定义和基本任务是什么?

进入了设计阶段,要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求,并将设计的结果反应在“设计规格说明书”文档中,所以软件设计是一个把软件需求转换为软件表示的过程,最初这种表示只是描述了软件的总的体系结构,称为软件的概要设计或结构设计。①采用某种设计方法,将一个复杂的系统按功能划分成模块。②确定每个模块的功能。③确定模块之间的调用关系。④确定模块之间的接口,即模块之间传递的信息。⑤评价模块结构的质量。⑵数据结构及数据库设计,汉数据结构的设计及数据库的设计。⑶编写概要设计文档。主要有:概要设计说明书;数据库设计说明书;用户手册;修订测试计划。⑷评审

4、详细设计的基本任务是什么?有哪几种描述方法? 详细设计是软件设计的第二阶段,其基本任务有:为每个模块进行详细的算法设计;为模块内的数据结构进行设计;对数据库进行物理设计,即确定数据库的物理结构;其它设计,根据软件系统类型,还可能要进行代码设计、输入/输出格式设计、人机对话设计;编写详细设计说明书;评审。详细描述处理过程常用三种工具:图形、表格和语言。如结构化程序流程图、盒图和问题分析图。IPO图也是详细设计的主要工具之一。表格工具如判定表可作为详细设计中描述逻辑条件复杂的算法。过程设计语言(PDL)是一种用于描述模块算法设计和处理细节的语言工具。

能力成熟度模型(CMM)用于评价软件机构的软件过程能力成熟度德模型 文档:程序开发使用和维护所常用的图文资料

2衡量模块独立性的两个定性的标准是内聚和耦合。耦合是指对一个软件结构内不同模块彼此之间互相依赖的紧密程度。内聚标志一个模块内各元素彼此的紧密1简述两种不同集成测试的比较:自顶向下测试法主要,优点是不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能在早期发现上层模块的接口的错误,自顶向下的缺点是需要存根程序,可能遇到与此相联系的测试困难,底层关键模块中的错误发现的较晚,而且用这种方法不能展开人力。自底向下正好相反。

影响维护的因素:可理解性,可测试性,可修改性,可移植性,重用性

总体设计的九个阶段:1设想供选择的方案,2选择合适的方案,3推荐最佳方案,4功能分解,5设计软件结构 6设计数据库,7制定测试计划,8书写文档,9审查和复查

软件工程:是指导计算机软件开发和维护的工程学科,采用工程概念,原理,技术和方法来开发和维护软件,吧经过实践考验而证明的管理技术和当前能够得到的最好的技术方法结合起来。要素是方法,工具,过程 系统流程图是描绘物理系统的传统工具,他的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件。表达的是数据在系统各部件的流动情况,而不是对数据进行加工处理的控制过程。

3个子模型和5个层次:静态结构(对象模型)交互次序(动态模型)数据变换(功能模型)主题层,类和对象层,结构层,属性层,服务层

结构化方法有结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。

结构化设计对数据流有两种分析方法,他们是变换分析设计和事务分析设计。质量保证是有计划的和系统性的活动,它对部件或产品满足确定的技术需求提供足够的信心。

软件质量保证措施(SQA)基于非执行的测试(复审和评审)基于执行的测试(软件测试)和程序正确性证明

数据字典的内容:数据流,数据流分量,数据存储,数据处理

数据流图的内容:数据流,数据存储,数据处理,数据的原点和终点。

数据流图(DFD)是一种图形化技术,他描绘信息流和数据从输入移动到输出的过程中经受的变换。

可行性研究中,数据流图,系统流程图,数据字典

需求分析:访谈,实体联系图,状态转换图,层次方框图,Warnier图,IPO图 总体设计:层次图和HIPO图,结构图

详细设计:过程设计中有程序流程图,盒图,PAD图,判定表,判定树,过程设计语言。面向数据结构的设计方法:Jackson图程序复杂度的定量MaCabe方法和Halstead方法

设计人机界面的过程中4个问题,系统响应时间,用户帮助设施,出错信息处理和命令交互

耦合:尽量使用数据耦合少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合

内聚:偶然内聚,逻辑内聚时间内聚,中内聚有过程内聚通信内聚,高内聚,功能内聚,顺序内聚

模块化就是把程序划分为独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集起来构成一个整体,可以完成指定的功能满足用户的需求 状态转换图通过描绘系统状态及引起系统状态转换的事件,来表示系统的行为

5.软件配置管理,简称SCM,它用于整个软件工程过程。其主要目标是:标识变更;控制变更;确保变更正确地实现;报告有关变更。SCM是一组管理整个软件生存期各阶段中变更的活动。

Jackson的画法:

1定输入和输出数据结构

2分析确定在输入和输出数据结构中有对应关系的数据单元,最高层输入和输出相对应等有其他。

3从数据结构图导出程序结构图

4列出所有的操作和条件,并把它们分配到程序结构图的适当位置。5最后用伪码表示程序处理过程 盒图的特点:

1功能域明确,可以从盒图上一眼看出来 2不可能任意转移控制

3很容易确定局部和全程数据的作用域

4很容易表现嵌套关系,也可以表示模块的层次结构。PAD图:

1使用表示结构化控制结构的PAD符号结构所设计出来的程序必然是结构化程序。

2PAD图所描绘的程序结构非常清晰

3PAD图表现程序逻辑,易读,易懂,易记 4,容易将PAD图转换成高级语言源程序

5即可用于表示程序逻辑,也可用于描绘数据结构 6PAD的符号支持自顶向下,逐步求精方法

第四篇:软件工程考试总结范文

第一章 软件工程学概述

1.软件:是程序、数据及相关文档的完整集合。

2.软件危机:是指在计算机软件开发和维护过程中所遇到的一系列严重问题。

3.产生软件危机的原因

A.与软件本身的特点有关。管理和控制软件开发过程相当困难,软件较难维护,它规模庞大,程序复杂性将随着

程序规模的增加而呈指数上升。

B.和软件开发与维护的方法不正确有关。

4.消除软件危机的途径:

A.应该对计算机软件有一个正确认识。

B.认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同

发完成的工程项目。

C.充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法。

D.开发和使用更好的软件工具。

5.软件工程:是指导计算机软件开发和维护的一门工程学科。

6.软件工程的特征:

A.软件工程关注于大型程序的构造。

B.软件工程的中心课题是控制复杂性。

C.软件经常变化。

D.开发软件的效率非常重要。

E.和谐的合作是开发软件的关键。

F.软件必须有效地支持它的用户。

G.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。

7.软件工程学的方法学3要素:方法、工具、过程。

方法学:传统方法学、面向对象方法学。

8.软件生命周期:

软件定义、软件开发、运行维护三个过程。

软件定义包括问题定义、可行性研究、需求分析3个阶段。

软件开发包括总体设计、详细设计、编码和单元测试、综合测试4个阶段。

9.软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

10.过程模型:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。

瀑布模型:优点:1.可强迫开发员采用规范的方法2.严格地规定了每个阶段必须提交的文件3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。缺点:传统的瀑布模型过于理想化,是由文档驱动的。

快速原型模型:通过快速构建起一个可在计算机上运行的原型系统,让用户试用原型并收集用户反馈意见的方法,获取用户真正的需要。

增量模型:优点:能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能可以使用户有较充实的时

间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。

螺旋模型:优点:对可选方案和约束条件的强调有利于已有软件的重用;减少了过多测试;维护只是螺旋模型中另

一个周期。

第二章 可行性研究(确定问题是否能解决)

1.可行性研究的三个方面:技术可行性:使用现有的技术能否实现该系统。

经济可行性:该系统的经济效应能否超过它的开发成本。

操作可行性:系统的操作方式在这个组织内是否行得通。

2.系统流程图:概括的描绘物理系统的传统工具。表达的是数据在系统各部件之间流动的情况。

基本符号:处理、输入输出、连接、换页连接、数据流。

3.数据流图DFD:一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。描绘逻辑过程。

基本符号:数据的源点/终点、变换数据的处理、数据存储、数据流。

数据流图的命名:先为数据流命名,再为处理命名。

数据字典:是关于数据信息的集合,也就是对数据流图中包含的所有元素的定义的集合。

数据字典的内容:数据流、数据流分量(数据元素)、数据存储、处理。

定义数据的方法:顺序、选择、重复。

符号:=等价于、+和、[ ]或、{ }重复、()可选

4.成本估计技术:代码行技术、任务分解技术、自动估计成本技术。

第三章 需求分析(系统必须做什么)

1.需求分析的任务:

A.确定对系统的综合要求。

B.分析系统的数据要求。

C.导出系统的逻辑模型。

D.修正系统开发计划。

2.与用户沟通获取需求的方法:

A.访谈。

B.面向数据流自顶向下求精。(结构化分析方法)

C.简易的应用规格说明技术。

D.快速建立软件原型。

3.实体—联系图(E-R图)包含的3种信息:数据对象(矩形)、属性(圆角矩形)、联系(菱形)。

4.状态转换图:通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。

状态:是任何可被观察到的系统行为模式,有初态、中间状态、终态。一张状态图中只能有一个初态,0到多个终态。

事件:引起系统做动作或(和)转换状态的控制信息。

符号:初态(实心圆)、终态(一对同心圆,内圆为实心圆)、状态转换(箭头)。

5.该阶段可用到的其他图形:层次方框图、Warnier图、IPO图、注:E—R图建立数据模型,数据流图建立功能模型,状态图建立行为模型。

第五章 总体设计(概括的说系统应该如何实现)将软件需求转化为数据结构和软件的系统结构。

1.基本任务:A.划分出组成系统的物理元素:程序、文件、数据库、人工过程和文档等。

B.设计软件的结构。也就是要确定系统中每个程序由哪些模块组成,以及这些模块相互间的关系。

2.阶段:系统设计阶段,确定系统的具体实现方案。

结构设计阶段:确定软件结构。

典型的总体设计过程包括9个步骤:

设想供选择的方案,选取合理的方案,推荐最佳方案,功能分解,设计软件结构,设计数据库,制定

测试计划,书写文档,审查和复审。

3.设计原理:模块化、抽象、逐步求精、信息隐藏和局部化、模块独立。

模块:由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代替它。

模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户需求。

抽象:就是抽出事物的本质特征而暂时不考虑它们的细节。

逐步求精:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。可看作是一项把一个时期内必须解决的种种问题按优先级排序的技术。

信息隐藏:设计和确定的模块,使得一个模块内包含的信息对于不需要这些信息的模块来说,是不能访问的。局部化:把一些关系密切的软件元素物理地放得彼此靠近。

模块的独立程度的定性标准度量:内聚、耦合。

耦合:是对一个软件结构内不同模块之间互连程度的度量。耦合由低程度到高程度分为:数据耦合、控制耦合、特征耦合、公共环境耦合、内容耦合。

内聚:标志着一个模块内各个元素彼此结合的紧密程度。底内聚有偶然内聚、逻辑内聚、时间内聚。中内聚包括

过程内聚和通信内聚。高内聚包括顺序内聚和功能内聚。

注:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。

4.启发规则:

改进软件结构提高模块独立性。模块规模应该适中。深度、宽度、扇出和扇入都应适当。模块的作用域应该在控制域之内。力争降低模块接口的复杂程度。设计单入口单出口的模块。模块功能应该可以预测。

深度:表示软件结构中控制的层数。

宽度:软件结构内同一个层次上模块总数的最大值。

扇出:一个模块直接控制的模块数。

扇入:表示一个模块有多少个上级模块直接调用它。

注:设计的很好的软件结构,通常顶层扇出比较高,中层扇出较少,底层扇入到公共的使用模块中去。(底层模块有高扇入)

5.面向数据流的设计方法:

目标:给出设计软件结构的一个系统化的途径。

概念:把信息流映射策划那个软件结构,信息流的类型决定了映射的方。

信息流的类型:变换流和事务流。

变换流的特点:信息以“外部世界”的形式进入软件系统,经处理以后再以“外部世界”的形式离开系统。事务流的特点:数据沿输入通路到达一个处理,该处理根据输入数据的类型在若干个动作序列中选出一个来执行。

6.变换分析:把具有变换流特点的数据流图按预先确定的模式映射成软件结构。

第一步:复查基本系统模型。

第二步:复查并精化数据流图。

第三步:确定数据流图是变换特性还是事务特性。

第四步:确定输入流和输出流的边界,从而孤立出变化中心。

第五步:完成第一级分解。

第六步:完成第二次分解。

第七步:使用设计度量和启发规则对第一次分割得到的软件结构进一步精化。

第六章 详细设计(怎样具体地实现所要求的系统)即过程设计。通过对结构表示进行细化,得到软

件详细的数据结构和算法。

1.详细设计的内容:

用图表列出系统的每个程序,包括每个模块和子程序名称、标识符、层出结构关系。对程序的功能、性能、输入、输出、算法、流程、接口等进行描述

内容包括:程序描述:程序简要描述,意义和特点

功能:程序应具备的功能

性能:精度、灵活性和时间特性等

输入项

输出项

2.人机界面设计指南:

一般交互指南:涉及信息显示、数据输入和系统整体控制。

保持一致性,提供有意义的反馈,在执行有破坏性的动作之前要求用户确认,允许取消绝大多数

操作,减少在两次操作之间必须记忆的信息量,提高对话、移动和思考的效率,允许犯错误,按

功能对动作分类,并据此设计屏幕布局,提供对用户工作内容敏感的帮助设施,用简单动词或动

词短语作为命令名。

信息显示指南:只显示与当前工作内容有关的信息,不要用数据淹没用户,使用一致标记、标准的缩写和可预知的颜色,允许用户保持可视化的语境,产生有意义的出错信息,使用大小写、缩进和文本分组以帮

助理解,使用窗口分隔不同类型的信息,使用“模拟”显示表示信息,以使信息更容易被用户提取,高效率地使用显示屏。

数据输入指南:尽量减少用户的输入动作,保持信息显示和数据输入之间的一致性,允许用户自定义输入,交互

应该是灵活的,并且可调整成用户最喜欢的输入方式,交互应该是灵活的,并且可调整成用户最喜

欢的输入方式,让用户控制交互流,对所有输入动作都提供帮助,消除冗余的输入。

3.过程设计工具:分为图形、表格、语言。有程序流程图、盒图(N—S图)、PAD图(问题分析图)、判定表、判

定树、过程设计语言(PDL或伪码)。

4.程序复杂程度的定量度量:

McCabe方法:根据程序控制流的复杂程度度量度量程序的复杂度,结果称为环形复杂度。

流图:实质上是“退化了的”程序流程图。有结点(圆)、边(箭头)。

区域:边和结点围成的面积。

5.计算环形复杂度的方法:

A.区域数=环形复杂度。

B.流图G的环形复杂度V(G)=E—N+2,E为边数,N为结点数。

C.V(G)=P+1,P为判定结点的数目。

第七章 实现(编码和测试)

1.软件测试:就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键

步骤。

2.测试的目的:在软件投入生产性运行之前,尽可能多现的发软件在运行中的错误。

3.测试方法:黑盒测试、白盒测试。

黑盒测试:已经知道产品应有的功能,检验每个功能是否都能正常使用。也叫功能测试。

白盒测试:已经知道产品的内部工作过程,检验这些过程是否按照规格说明书的规定正常进行。也叫

结构测试。

以黑盒测试为主,白盒测试为辅。

4.测试步骤:模块测试、子系统测试、系统测试、验收测试,平行测试。

5.白盒测试技术:

逻辑覆盖:是对一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试。

种类:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖。

基本路径测试:

一、根据过程设计结果画出相应流图。

二、计算流图的环境复杂度。

三、确定线路独立路径的基本组合。独立路径是指至少引入程序的一个新处理语句集合或一

个新条件路径,就是至少包含一条在定义该路径之前不曾用过的边。

独立路径数=环形复杂度

四、设计可强制执行基本集合中每条路径的测试用例。

6.调试:在测试发现错误之后排除错误的过程。

7.软件维护:在软件已交付使用之后,为了改正错误或者满足新的需要而修改软件的过程。分为改进性维护、适应性

维护、完善性维护、预防性维护。

决定软件可维护性的因素:可理解性、可测试性、可修改性、可移植性、可重用性。

8.软件项目管理:通过计划、组织和控制等一系列活动,合理的配置和使用各种资源,以达到既定目标的过程。管理内容:估算软件规模,工作量估算、进度计划、人员组织、质量保证、软件配置管理、能力成熟度模型。

第五篇:软件工程

2.2软件开发的基本策略

人们都有自己的世界观和方法论,能自然而然地运用于生活和工作中。同样,程序员脑子里的软件工程观念会无形地支配其怎么去做事情。软件工程三十年的发展,已经积累了相当多的方法,但这些方法不是严密的理论。实践人员不应该教条地套用方法,更重要的是学会“选择合适的方法”和“产生新方法”。有谋略才会有好的战术。几千年前,我们的祖先就在打闹之际写下了很多心得体会,被现代人很好地运用于工业和商业。本节讲述软件开发中的三种基本策略:“复用”、“分而治之”、“优化——折衷”。

2.2.1复用

复用就是指“利用现成的东西”,文人称之为“拿来主义”。被复用的对象可以是有形的物体,也可以是无形的成果。复用不是人类懒惰的表现而是智慧的表现。因为人类总是在继承了前人的成果,不断加以利用、改进或创新后才会进步。所以当我们欢度国庆时,要搞清楚祖国远不止50岁,我们今天享用到的财富还有上下五千年人民的贡献。进步只是应该的,不进步则就可耻了。

复用的内涵包括了提高质量与生产率两者。由经验可知,在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。一般地可以相信成熟的东西总是比较可靠的(即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产率)。勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中,这样才能把工作做得又快又好。

把复用的思想用于软件开发,称为软件复用。据统计,世上已有1000亿多行程序,无数功能被重写了成千上万次,真是浪费哪。面向对象(Object Oriented)学者的口头禅就是“请不要再发明相同的车轮子了”。

将具有一定集成度并可以重复使用的软件组成单元称为软构件(Software Component)。软件复用可以表述为:构造新的软件系统可以不必每次从零做起,直接使用已有的软构件,即可组装(或加以合理修改)成新的系统。复用方法合理化并简化了软件开发过程,减少了总的开发工作量与维护代价,既降低了软件的成本又提高了生产率。另一方面,由于软构件是经过反复使用验证的,自身具有较高的质量。因此由软构件组成的新系统也具有较高的质量。利用软构件生产应用软件的过程如图1.5所示。

软件复用不仅要使自己拿来方便,还要让别人拿去方便,是“拿来拿去主义”。面向对象方法,Microsoft公司的COM规范 [Rogerson 1999],都能很好地用于实现大规模的软件复用。

2.2.2分而治之

分而治之是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。这种朴素的思想来源于人们生活与工作的经验,完全适合于技术领域。软件人员在执行分而治之的时候,应该着重考虑:复杂问题分解后,每个问题能否用程序实现?所有程序最终能否集成为一个软件系统并有效解决原始的复杂问题?

图1.6表示了软件领域的分而治之策略。诸如软件的体系结构设计、模块化设计都是分而治之的具体表现。软件的分而治之不可以“硬分硬治”。不像为了吃一个西瓜或是一只鸡,挥刀斩成n块,再把每块塞进嘴里粉碎搅拌,然后交由胃肠来消化吸收,象征复杂问题的西瓜或是鸡也就此消失了。

2.2.3优化——折衷

软件的优化是指优化软件的各个质量因素,如提高运行速度,提高对内存资源的利用率,使用户界面更加友好,使三维图形的真实感更强等等。想做好优化工作,首先要让开发人员都有正确的认识:优化工作不是可有可无的事情,而是必须要做的事情。当优化工作成为一种责任时,程序员才会不断改进软件中的算法,数据结构和程序组织,从而提高软件质量。

著名的3D游戏软件Quake,能够在PC机上实时地绘制高度真实感的复杂场景。Quake的开发者能把很多成熟的图形技术发挥到极致,例如把Bresenham画线、多边形裁剪、树遍历等算法的速度提高近一个数量级。我第一次看到Quake时不仅感到震动,而且深受打击。这个PC游戏软件的技术水平已经远胜于我所见识到的国内领先的图形学相关科研成果。这对我们日益盛行的点到完止的研发工作真是莫大的讽刺。所以当我们开发的软件表现出很多不可救药的病症时,不要怨机器差。真的是我们自己没有把工作做好,写不好字却嫌笔钝。

就假设我们经过思想教育后,精神抖擞,随时准备为优化工作干上六天七夜。但愿意做并不意味着就能把事情做好。优化工作的复杂之处是很多目标存在千丝万缕的关系,可谓数不清理还乱。当不能够使所有的目标都得到优化时,就需要“折衷”策略。

软件中的折衷策略是指通过协调各个质量因素,实现整体质量的最优。就象党支部副书记扮演和事佬的角色:“…为了使整个组织具有最好的战斗力,我们要重用几个人,照顾一些人,在万不得已的情况下委屈一批人”。

软件折衷的重要原则是不能使某一方损失关键的职能,更不可以象“舍鱼而取熊掌”那样抛弃一方。例如3D动画软件的瓶颈通常是速度,但如果为了提高速度而在程序中取消光照明计算,那么场景就会丧失真实感,3D动画也就不再有意义了(如果人类全是色盲,计算机图形学将变得异常简单)。

人都有惰性,如果允许滥用折衷的话,那么一当碰到困难,人们就会用拆东墙补西墙的方式去折衷,不再下苦功去做有意义的优化。所以我们有必要为折衷制定严正的立场:在保证其它因素不差的前提下,使某些因素变得更好。

下面让我们用“优化——折衷”的策略解决“鱼和熊掌不可得兼”的难题。

问题提出:假设鱼每千克10元,熊掌每千克一万元。有个倔脾气的人只有20元钱,非得要吃上一公斤美妙的“熊掌烧鱼”,怎么办?

解决方案:化9元9角9分钱买999克鱼肉,化10元钱买1克熊掌肉,可做一道“熊掌戏鱼”菜。剩下的那一分钱还可建立奖励基金。

2.3一些不正确的观念

本节例举并分析一些不正确的软件工程观念,可帮助初学者少犯相似的错误。

观念之一:我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们解决软件开发中遇到的任何问题。

客观情况:好的参考书无疑能指导我们的工作。充分利用书籍中的方法、技术和技巧,可以有效地解决软件开发中大量常见的问题。但实践者并不能因此依赖于书籍,这是因为:(1)现实的工作中,由于条件千差万别,即使是相当成熟的软件工程规范,常常也无法套用。(2)软件技术日新月异,没有哪一种软件标准能长盛不衰。祖传秘方在某些领域很吃香,而在软件领域则意味着落后。

观念之二:我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。

客观情况:良好的开发环境只是产出成果的必要条件,而不是充分条件。如果拥有好环境的是一群庸人,难保他们不干出南辕北辙的事情。

观念之三:如果我们落后于计划,可以增加更多的程序员来解决。

客观情况:软件开发不同于传统的农业生产,人多不见得力量大。如果给落后于计划的项目增添新手,可能会更加延误项目。因为:(1)新手会产生很多新的错误,使项目混乱。(2)老手向新手解释工作以及交流思想都要花费时间,使实际开发时间更少。所以科学的项目计划很重要,不在乎计划能提前多少,重在恰如其分。如果用“大跃进”的方式奔向共产主义,只会产生倒退的后果。

观念之四:既然需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的,随时可以修改。

客观情况:对需求把握得越准确,软件的修修补补就越少。有些需求在一开始时很难确定,在开发过程中要不断地加以改正。软件修改越早代价越少,修改越晚代价越大,就跟治病一样道理。

2.4一些有争议的观念

本节探讨一些有争议的观念,目的不在于得出“正确”或“错误”的评断,而在于争议会激发更多理性的思考。

争议之一:如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法?

作者观点:如果开发软件的目的是为了学习或是研究,那么应该设计一种更快的算法。如果该软件已经用于商业,则需谨慎考虑:若换一台更快的计算机能解决问题,则是最快的解决方案。改进算法虽然可以从根本上提高软件的运行速度,但可能引入错误以及延误进程。技术狂毫无疑问会选择后者,因为他们觉得放弃任何可以优化的机会就等于犯罪。

类似的争议还有:是买现成的程序,还是彻底自己开发?技术人员和商业人士常常会有不同的选择。

争议之二:有最好的软件工程方法,最好的编程语言吗?

作者观点:在软件领域永远没有最好的,只有更好的。能解决问题的都是好方法或是好语言。程序员在最初学习Basic、Fortran、Pascal、C、C++等语言时会感觉一个比一个好,不免有喜新厌旧之举。而如今 的Visual Basic、Delphi、Visual C++、Java等语言各有所长,真的难分优劣。开发人员应该根据客观条件,选择自己熟悉的方法和语言,才能保证合格的质量与生产率。

程序设计是自由与快乐的事情,不要发誓忠于某某主义而自寻烦恼。

争议之三:编程时是否应该多使用技巧?

作者观点:就软件开发而言,技巧的优点在于能另辟蹊径地解决一些问题,缺点是技巧并不为人熟知。若在程序中用太多的技巧,可能会留下隐患,别人也难以理解程序。鉴于一个局部的优点对整个系统而言是微不足道的,而一个错误则可能是致命的。作者建议用自然的方式编程,少用技巧。

《狼三则》的故事告诉我们“失败的技巧通常是技俩”。当我们在编程时无法判断是用了技巧还是用了技俩,那就少用。《卖油翁》的故事又告诉我们“熟能生巧”,表明技巧是自然而然产生的,而不是卖弄出来的。卖油翁的绝技是可到中央电视台表演的,而他老人家却谦虚地说:“没啥没啥,用熟了而已”。

争议之四:软件中的错误是否可按严重程度分等级?

作者观点:在定量分析时,可以将错误分等级,以便于管理。微软的一些开发小组将错误分成四个等级 [Cusumano 1996],如表1.1所示。

一级严重:错误导致软件崩溃。

二级严重:错误导致一个特性不能运行并且没有替代方案。

三级严重:错误导致一个特性不能运行但有替代方案。

四级严重:错误是表面化的或是微小的。

表1.1 错误的四个等级

上述分类是非常技术性的,并不是普适的。假设某个财务软件有两个错误:错误A使该软件死掉,错误B导致工资计算错误。按表1.1分类,错误A属一级严重,错误B属二级严重。但事实上B要比A严重。工资算多了或者算少了,将会使老板或员工遭受经济损失。而错误A只使操作员感到厌烦,并没有造成经济损失。另一个示例是操作手册写错,按表1.1分类则属四级严重,但这种错误可能导致机毁人亡。

开发人员应该意识到:所有的错误都是严重的,不存在微不足道的错误。这样才能少犯错误。

2.5小 结

软件工程学科发展到今天,已经有了很多方法和规范,学之不尽。本章只在宏观上讨论了软件工程的一些

思想,更具体的内容将在后面的章节论述。无论是什么好方法,贵在理解与灵活运用,而不可当成灵丹妙药,不象“吃了脑黄金或脑白金,就能使一亿人先聪明起来”。

3程序员与程序经理

工作在第一线的软件开发人员是程序员和程序经理,他们决定着软件的命运。良好的程序员队伍和出色的管理是软件项目成功的必要条件。管理不是管制,不是去卡住人家的脖子,因为程序员不是一群野鸭子。管理的目的是让大家一起把工作做好,并且让各人获得各自的快乐和满足。当一个组织被出色地领导时,雇员甚至不知道他们已被领导。在项目完成时,他们会自豪地说:“看看我们通过努力取得的成绩吧”。所以管理者不能老惦记着自己是一个官,而应时刻意识到自己是责任的主要承担者。

我们经常会听到有经理头衔的人在高谈阔论:“编程我不会,做个项目还不easy?派个人去搞系统分析,回头再叫几个程序员把需求译成程序,不就OK了吗?”

不懂英语的人准以为easy和OK是贬义词。要让软件项目失败很容易,只要符合下列条件之一即可:

(1)项目经理对软件一无所知;

(2)技术负责人对编程不感兴趣;

(3)真真编写代码的程序员是临时雇用的。

如果上述三个条件同时具备,就请放心失败好了。

让我们少幻想自己是比尔·盖茨,先当好程序员和程序经理再说。

3.1了解程序员

早期的程序员干活能从软件直通硬件,个个生猛无比。又因他们的作息时间、言行举止与常人不太一样,久而久之就给人们留下了“神秘”、“孤僻”的印象。如今软件行业被炒得热火朝天,有能耐的程序员即便躲在大山岙的军工厂里也能被挖出来。而更多原本不是程序员的人操起几本“速成”、“二十一天通”等书籍也加入了这个行业。现在国内号称有上百万程序员,这支大军鱼龙混杂,已搞不清那些是正规军,那些是民兵游击队了。

下载软件工程考试word格式文档
下载软件工程考试.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    《软件工程》

    《软件工程》课程分析 本课程是软件技术专业学生必修的一门专业必修课。根据培养软件开发人员的需要,本课程的任务是使学生通过本课程的学习,了解软件项目开发和维护的一般过......

    软件工程

    1. 软件工程:是指导计算机软件开发和维护的工程学科 2. 软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题 3. 软件过程:是为了开发出高质量的软件产品所需......

    软件工程

    填好发给我!!!!一、填空题: 1.面向对象分析的目的是对客观世界的系统进行 __________________,对象就是客观世界的; 2.软件工程方法学包括:工程环境建立、方法、工具和过程; 3.思想概括......

    软件工程

    软件工程—心得体会 摘要 本文结合基层实践教学的实际情况和现实需要,系统地总结了《软件工程》实践教学的特征,详细分析了实践教学过程存在的问题,并提出了该课程实践教学改革......

    软件工程

    软件工程 1. 谈谈你对软件工具的理解,你用过什么软件工具 软件工具是指为支持计算机软件的开发、维护、模拟、移植或管理而研制的程序系统。它是为专门目的而开发的,在软件工......

    软件工程

    一、名词解释 软件: 指计算机系统中的程序及其文档。 支持软件:支持软件的开发和维护的软件。 系统软件:属于计算机系统中最靠近硬件的一层,其它软件一般都通过系统软件发挥作......

    软件工程

    1.软件危机的概念 系统的数据要求,功能需求,性能需求,显示出程序的轮廓。 软件危机是指在计算机软件开发、使用与可靠性需求,可用性需求,出错处理需求,混合方式 维护过程中遇到的......

    高级软件工程考试题目(5篇模版)

    第一章概述 1. 你如何理解时下热门的各种“软件定义”? 答:①从软件开发者角度定义,软件=程序+文档,而程序又是由算法和数据组成,算法提供了解决问题的方法。软件开发文档是软件......