软件工程基础知识1

软件工程基础知识1
软件工程基础知识1

软件工程基础知识

一.什么是软件?

1.满足功能要求和性能的指令或计算机程序集合;

2.处理信息的数据结构;

3.描述程序功能以及程序如何操作和使用所要求的文档;

二.软件危机以及产生软件危机的原因?

1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势。软件产品“供不应求”。

2.软件成本在计算机系统总成本中所占的比例逐年上升。

3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生。

4.软件产品的质量不容易保证。

5.软件产品常常是不可维护的。

6.软件产品的重用性差,同样的软件多次重复开

发。

7.软件通常没有适当的文档资料。

产生软件危机的原因可归结为两个重要的方面:

软件生产本身存在的复杂性;

软件开发所使用的方法和技术。

三.有哪些软件工程方法学及其要素?

1.使用最广泛的软件工程方法学是结构化方法学和面向对象的方法学。

2.要素:方法、工具和过程。

四.什么是软件生存周期?有哪些活动?

4.1软件生存周期

一个软件从提出开发要求开始到软件废弃不用的整个过程。

4.2 开发活动

可行性分析和项目开发计划、需求分析和定义、软件设计(先后细分为:概要设计和详细设计)、编码、测试和运行维护

4.3 各活动阶段主要文档

4.3.1可行行分析和项目开发计划

可性行研究报告

项目开发计划

4.3.2需求分析中的文档

需求规格说明书

初步用户使用手册

确认测试计划

修改完善的软件开发计划

4.3.3 概要设计阶段文档

概要设计说明书

数据库说明书

修订的测试计划(测试的策略、方法、步骤)

4.4.4 详细设计阶段

详细设计说明书

4.4.5 系统测试阶段

系统测试计划文档

五.有哪些主要生存期模型?

瀑布模型、原型开发模型(快速原型模型、演化模型、增量模型)、螺旋模型、喷泉模型、

5.1 瀑布模型

瀑布模型(传统的软件周期模型)严格遵循软件生命周期各阶段的固定顺序:计划、分析、设计、编程、测试和维护,上一阶段完成后才能进入到下一阶段,整个模型就像一个飞流直下的瀑布。

优点:可强迫开发人员采用规范的方法,严格规定了各阶段必须提交的文档;要求每一阶段结束后,都要进行严格的评审。及它最相适应的开发方法是结构化方法。

缺点:不适应用户需求的改动。

5.2 原型模型

5.2.1 快速原型模型

快速原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。主要用于需求分析阶段。

不追求也不可能要求对需求的严格定义,而是采用了动态定义需求的方法,所以不能定义完善的文档。

特征:简化项目管理、尽快建立初步需求、加强用户参及和决策。

具有广泛技能水平的原型化人员是原型实施的重要保证。原型化人员应该是具有经验及才干、训练有素的专业人员。衡量原型化人员能力的重要标准是他是否能够从用户的模糊描述中快速获取需求。

5.2.2 演化模型

在快速原型模型中,原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。而演化模型应用于整个软件开发过程,是从初始模型逐步演化为最终软件产品的渐进过程。也就是说,快速原型模型是一种“抛弃式”的原型化方法,而演化模型则是一种“渐进式”的原型化方法。

5.2.3增量模型

增量模型主要用于设计阶段,把软件产品划分为一系列的增量构件,分别进行设计、编程、集成和测试。新的增量构件不得破坏已经开发出来的产品。

5.2.4 原型模型小结

从下面的有关原型化方法的叙述中,选择出正确的叙述:

(1)快速原型方法是一种企图克服传统软件周期模型缺点的开发方法。

(2)在用户的数据资源没有得到很好地组织和管理的时候,应该使用原型化方法。

(3)在用户没有明确地肯定其需求的时候,应该使用原型化方法。

(4)在用户不希望把自己的时间花在软件开发过程中的时候,应该使用原型化方法。

(5)使用原型化方法时应该使用第三代编程语言。

(6)原型化加强了开发过程中用户的参及和决策。

(7)原型化方法大致可分为三类:抛弃式、演化式和递增式。

(8)原型化方法大致可分为演化式和递增式。

(9)采用原型化方法时,软件的开发成本较高。

(10)采用原型化方法时,关键的因素是建立原形的速度,而不是原形运行的效率。

5.3 螺旋模型

螺旋模型综合了瀑布模型和原型模型中的演化模型的优点,还增加了风险分析。螺旋线第一圈的开始点可能是一个概念项目。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直转到软件生命

5.4 喷泉模型

喷泉模型主要用于描述面向对象的开发过程。喷泉一词体现了面向对象开发过程的迭代和无间隙特征。

六.软件过程基础知识

6.1 软件过程

软件过程是指人们用于开发和维护软件及相关产品的一系列活动,包括软件工程过程和软件管理过程。

6.2 评估工具

软件过程的评估,通常采用软件能力成熟度

模型(Capability Maturity Model,CMM)。

CMM1.1的5个等级(由低级到高级):

初始级

软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力,管理是反应式(消防式)的。

可重复级

建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功。

已定义级

已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准化软件过程。所有项目均使用经标准、裁减的标准软件过程来开发和维护软件。

已管理级

收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解及控制。

优化级

加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能持续不断地改进。

七.软件工程项目管理基本知识

软件项目管理开始于任何技术活动之前,并且贯穿于整个的软件生命周期。

软件工程项目管理一般分为时间管理、成本管理、人力资源管理、风险管理。

7.1时间管理

7.1.1 Gantt图

是一种简单的水平条形图,它以水平线段表示子任务的工作阶段,线段的起点和终点分别对应着子任务的起始时间,线段长度指示完成该任务所需要的时间。

甘特图的优点:直观简明、易学易绘、可从图上清楚地标出子任务间的时间对比,但它也有

缺点:

(a)不能显示地描绘各项彼此间的依赖关系;

(b)进度计划的关键部分不明显,难以判断哪些部分应当是主攻和主控的对象;

(c)计划中有潜力的部分以及潜力的大小不明确,往往造成潜力的浪费。

7.1.2 PERT网图及关键路径

PERT网图是一个由箭头(标识任务)和结点(标识事件)组成的有向图。将网络方法用于工作计划安排的评审和检查。

PERT图不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的依赖关系,即哪些任务完成后才能开始另一些任务,以及如期完成整个工程的“关键路径”。

关键路径(Critical Path)是由一连串的任务所组成的链,距离最大的一条路径。

软件项目的管理人员应该密切注视关键任务的进展情况。如果希望缩短工期,只有往关键任务中增加资源才会有效果。

八.模块化基本知识

模块是指执行某一特定任务的数据和可执行语句程序元素的集合,通常是指可通过名字来访问的过程、函数、子程序或宏调用等。

模块化就是将一个待开发的软件划分成若干个可完成某一子功能的模块,每个模块可独立地开发、测试,最后组装成完整的程序。

8.1模块特性

8.1.1 可分解性

如果一种设计方法提供了将问题分解成子问题的系统化机制,它就能降低整个系统的复杂性,从而实现一种有效的模块化解决方案。

8.1.2 可组装性

如果一种设计方法使现存的(可复用的)设计构件能被组装成新系统,它就能提供一种不需要一切从头开始的模块化解决方案。

8.1.3 可理解性

如果一个模块可以作为一个独立的单位(不用参考其他模块)被理解,那么它就易于构造和修改。

8.1.4 连续性

如果对系统需求的微小修改只导致对单个模块,而不是整个系统的修改,则修改引起副作用就会被最小化。

8.1.5 保护性

如果模块内部出现异常情况,并且它的影响限制在模块内部,不会影响其他模块,则错误引起的副作用就会被最小化。

8.2 模块及模块的耦合性

耦合是对一个软件结构内不同模块之间互连程序的度量。

耦合可以分成下列几种,它们之间的耦合度由高到低排列。

8.2.1 内容耦合

直接操作或修改另一模块的数据,或不通过正常入口转入另一个模块。

软件设计时应坚决禁止内容耦合,应设计成单入口、单出口的模块,避免病态连接。

8.2.2 公共耦合

多个模块引用同一全局数据区。

8.2.3 外部耦合

模块及软件以外的环境有关联。例如,输入输出把一个模块及特定的设备、格式、通信协议耦合在一起。

8.2.4 控制耦合

一模块明显把开关量、名字等信息送入另一模块,控制另一模块的功能。

8.2.5 标记耦合

两个模块之间通过传递公共指针或地址相互作用的耦合。

8.2.6 数据耦合

模块间通过传递数据交换信息。

8.2.7 非直接耦合(无耦合)

模块间无任何关系,独立工作

原则上讲,模块化设计总是希望模块之间的耦合表现为非直接耦合方式。

在以上耦合中,耦合度从高到低,内容耦合度最高,非直接耦合度最低。

8.3 模块的内聚性

内聚是指一个模块内各个元素彼此结合的紧密程序,它是信息隐蔽和局部的概念的自然扩展。设计时应该力求高内聚,理想内聚的模块应当恰好做一件事情。

1).偶然内聚:一个模块的各成分之间毫无关系。比如:一组语句在程序的多处出现,为了节省内存空间,这些语句放在一个模块中,该模块的内聚是偶然内聚的。

2)逻辑内聚:把几种逻辑上相关的功能组放在同一模块中。

3)瞬时内聚(时间内聚):一个模块所包含的任务必须在同一时间间隔内执行,例如初始化模块。

4)过程内聚:一个模块的处理元素是相关的,而且必须按特定的次序执行。

5)通信内聚:一个模块的所有成分都结合再同一个数据结构上。

6)顺序内聚:模块的成分同一个功能密切相关,且输出,作为另外一个成分的输入。

7)功能内聚:模块内的所有成分属于一个整体,完成单一的功能。

在以上的内聚中,内聚度从低到高,偶然内聚度最低,功能内聚度最高。

模块的高内聚、低耦合的原则称为模块独立原则,也称为模块设计的原则。

8.4 模块的深度、宽度、扇出及扇入

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

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

一个模块的扇入是指直接调用该模块的上级模块的个数。

一个模块的扇出是指该模块直接调用的下级模块的个数。

设计原则:低扇出、高扇入。

8.5 模块作用域和控制域

软件设计时,模块的作用域应在控制域之内。

8.6 模块化基础知识小结

通过模块的合并和分解,降低模块的耦合度。

模块的扇入应尽量大,扇出应尽量小。一个模块的扇入是指直接调用该模块的上级模块的个数。一个模块的扇出是指该模块直接调用的下级模块的个数。扇入大表示模块的重用性高,利用率高。扇出大表示模块的复杂度高。所以要高扇入,低扇出。

要将模块的作用范围限制在模块的控制范围之内。

降低模块之间的复杂性,避免“病态连接”。

九.什么是软件开发方法?有哪些主要方法?

软件开发方法:使用已定义好的技术集及符号表示习惯组织软件生产的过程。

结构化方法、面向对象方法、JACKSON方法。

9.1 结构化方法学

结构化方法学也称为生命周期方法学(瀑布模型方法),是一种面向数据流的需求分析方法。它的基本思想是自顶向下逐层分解。

为了在需求改变时对软件的影响较小,结构化分析时应该使程序结构及问题结构相对应。

常用工具:

数据流图(DFD)、数据字典(DD)、实例—关系图(E—R图)及描述加工处理的结构化语言、判定表、判定树。9.1.1数据流图(DFD图)

DFD的基本成分

数据流图主要由4种成分组成:

数据流(data flow):由一组固定成分的数据组成,表示数据的流向。它可以从源、文件流向加工,也可以从加工流向文件和宿,还可以从一个加工流向另一个加工。通常每个数据流必须有一个合适的名字,一方面是为了区别,另一方面也给人一个直观的印象,使人容易理解这个数据流的含义。但流向文件或从文件流出的数据流不必命名,因为这种数据流的组成部分就是相应文件的组成部分。

加工(process):描述了输入数据流到输出数据流之间的变换,也就是输入数据流做了什么处理后变成了输出数据流。每个加工有一个名字和一个编号。编号反映了该加工位于分层DFD的哪个层次和哪张图中以及它是哪个加工分解出来的子加工。

文件(file):可以表示数据文件,也可以表示一个数据记录。流向文件的数据流表示写文件,流出文件的数据流表示读文件,双向箭头表示对文件既读又写。每个文件都有一个文件名。

源/宿(source/sink):源是指系统所需数据的发源地,宿(也称数据池)是指系统所产生的数据的归宿地。无论源或宿,均对应于外部实体,在框内应加注实体的名字,在一个软件各级软件系统中,有些源和宿可以是一个外部实体,外部实体是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地和系统所产生数据的归宿地。

分层数据流图

一套分层的的数据流图由顶层、底层、和中间层组成。

画分层数据流图基本原则及注意事项

a.自外向内,自顶向下,逐层细化,完善求精。

b.保持父图及子图的平衡。也就是说,父图中某加工的输入数据流中的数据必须及它的子图的输入数据流在数量和名字上相同。

c.保持数据守恒。也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。

d.加工细节隐藏。根据抽象原则,在画父图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节。

e.简化加工间关系。在数据流图中,加工

间的数据流越少,各加工就越相对独立,所以应尽量减少加工间输入输出数据流的数目。

f.均匀分解。应该使一个数据流中的各个加工分解层次大致相同。

g.适当地为数据流、加工、文件、源/宿命名,名字应反映该成分的实际意义,避免空洞的名字。

h.忽略枝节。应集中精力于主要的数据流,

而暂不考虑一些例外情况、出错处理等枝节性问题。

i.表现的是数据流而不是控制流。

j.每个加工必须既有输入数据流,又有输

出数据流.在整套数据流图中,每个文件必须既有读文件的数据流又有写文件的数据流,但在某一张子图中可能只有读没有写或者只有写没有读。

小结:一个软件系统,其数据流图往往有多层。如果父图有N个加工(Process),则父图允许有0~N张子图,但是每张子图只能对应一张父图。在一张DFD图中,任意两个加工之间可以有0条或多条名字互不相同的数据流;在画数据流图时,应该注意父图和子图的平衡,即父图中某加工的输入输出数据流必须及其输入输出流在数量和名字上相同。DFD 信息流大致可分为两类:交换流和事务流。

9.1.2 数据字典

数据字典是关于数据的信息的集合也就是对

数据流图中包含的所有元素的定义的集合。

组成部分:

a.数据项条目

b.数据流条目

c.文件条目

d.加工条目

加工条目是对数据流图中每一个不能再分

解的基本加工的精确说明。

对于加工的描述是数据字典的组成内容之一,常用的加工描述方法有结构化语言、判定树和判定表。

9.1.3 结构化语言

结构化语言实际上是一种半形式化语言,

它的结构通常可分为内外两层。外层接近于形式化语言,而内层近似于自然语言的描述。

9.1.4 实体——关系图(E—R图)

实体——关系图(Entity-Relabionship

Diagram),简称E-R图,包含实体、关系和属性等3种基本成分。通常用矩形框代表实体,并用直线把实体(或关系)及其属性连接起来。

E-R图通常用于数据库应用系统。

9.2 结构化设计

结构化设计通常可分为概要设计和详细设计,但是主要用于概要设计阶段。概要设计的任务是确定软件系统的结构,进行模块划分,确定每个模块的功能、接口以及模块间的调用关系。详细设计的任务是为每个模块设计实现的细节。

9.2.1 概要设计

经过需求分析阶段的工作,系统必须“做什么”已经清楚了,概要设计的基本目的就是回答“概括地说,系统应该如实现?”这个问题。

概要设计的重要任务:

将一个复杂的系统按功能化分为模块、确定每个模块的功能、确定模块之间的调用关系、确定模块之间的接口(模块之间传递的信息)、评价模块的结构质量。

1.软件结构图形工具

结构化设计方法(SD)方法采用结构图(Structure Chart)、层次图和HIPO图描述软件结构。

结构图的主要成分有模块、调用和数据,结构图中的模块用矩形表示,在矩形框内可标上模块的名字。模块间如有箭头或直线相连,表明它们之间有调用关系。

层次图用来描绘软件的层次结构.层次图中一个矩形框代表一个模块,方框间的连线表示模块间的调用关系.

HIPO图实际上就是层次图加输入/处理/输出图. HIPO图是美国IBM公司发明的“层次图加输入/处理/输出图”,是在层次图里出了最顶层的方框之外,每个方框都加了编号。编号规则和数据流图的编号规则一样。

9.2.2 详细设计

概要设计已经确定了每个模块的功能和接口,详细设计的任务就是为每个模块设计其实现的细节。

详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,得出对目标系统的精确描述。

1.详细设计阶段的内容

为每个模块进行详细的算法设计。

为模块内部的数据结构进行设计。

对数据库进行物理设计。

软考数据库系统工程师试题及答案

软考数据库系统工程师 试题及答案 TYYGROUP system office room 【TYYUA16H-TYY-TYYYUA8Q8-

2012年软考数据库系统工程师试题及答案 1.单个用户使用的数据视图的描述称为( ) A.外模式 B.概念模式 C.内模式 D.存储模式 2.子模式ddl 用来描述( ) A.数据库的总体逻辑结构 B.数据库的局部逻辑结构 C.数据库的物理存储结构 D.数据库的概念结构 3.在dbs中,dbms和os之间的关系是( ) A.相互调用 调用os 调用dbms D.并发运行 4.数据库物理存储方式的描述称为( ) A.外模式 B.内模式 C.概念模式 D.逻辑模式 5.在下面给出的内容中,不属于dba职责的是( ) A.定义概念模式 B.修改模式结构

C.编写应用程序 D.编写完整性规则 6.在数据库三级模式间引入二级映象的主要作用是( ) A.提高数据与程序的独立性 B.提高数据与程序的安全性 C.保持数据与程序的一致性 D.提高数据与程序的可移植性 、dbms 和dbs 三者之间的关系是( ) 包括dbms和dbs 包括db和dbms 包括db和dbs D.不能相互包括 中“第三级存储器”是指( ) A.磁盘和磁带 B.磁带和光盘 C.光盘和磁盘 D.快闪存和磁盘 9.位于用户和操作系统之间的一层数据管理软件是( ) 10.数据库系统中的数据模型通常由( )三部分组成 A.数据结构、数据操作和完整性约束 B.数据定义、数据操作和安全性约束

C.数据结构、数据管理和数据保护 D.数据定义、数据管理和运行控制 组织提出的dbtg 报告中的数据模型是( )的主要代表 A.层次模型 B.网状模型 C.关系模型 D.实体联系模型 12.数据库技术的三级模式中,数据的全局逻辑结构用( )来描述 A.子模式 B.用户模式 C.模式 D.存储模式 13.用户涉及的逻辑结构用( )描述 A.模式 B.存储模式 C.概念模式 D.子模式 14.数据库的开发控制,完整性检查,安全性检查等是对数据库的( ) A.设计 B.保护 C.操纵 D.维护 15.( )是控制数据整体结构的人,负责三级结构定义和修改 A .专业用户 B .应用程序员

重庆邮电大学-软件技术基础--实验报告(耿道渠)

《软件技术基础》实验报告 实验名称:顺序表的操作 班级学号姓名 第9 周星期 2 、5,6 节成绩 一、实验目的: 1、掌握顺序表结构的实现方式; 2、掌握顺序表常用算法的实现; 3、熟悉利用顺序表解决问题的一般思路; 4、参照给定的顺序表的程序样例,验证给出的顺序表的常见算法,领会顺序表结构的优点和不足。 二、实验内容: 1、设计一个静态数组存储结构的顺序表,要求编程实现如下任务:(1)建立一个顺序表,首先依次输人整数数据元素(个数根据需要键盘给定)。 (2)删除指定位置的数据元素(指定元素位置通过键盘输入),再依次显示删除后的顺序表中的数据元素。 (3)查找指定数据的数据元素(指定数据由键盘输入),若找到则显示位置,若没有找到则显示0。 2、使用顺序表实现一个电话本的管理程序,电话本中的每条记录包括学号、姓名、手机号码和固定电话四项。要求实现菜单、初始化、添加、删除和显示等功能。 三、实验结果:

四、实验中遇到的问题及解决方法: 第一次编写C++,感觉力不从心,回去多看看PPT。

五、实验心得体会: 对顺序表的一些常用语句不熟悉,对顺序表的整体思路理解不深刻以后要加强练习 附:源程序(自行编写或修改的程序。若为修改程序请注明修改部分的功能,若为书上实例则可不附。) #include #include #include #include #define MAXSIZE 20 using namespace std; int num; typedef struct { string student_number; string name; string tel; string home_phone; int id; } TEL; void shuaxin(TEL *); void delet(TEL *);

软件工程基础知识点总结

软件工程基础部分知识点总结 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素 3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。 1)研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等)。 2)软件工程的三个要素:方法、工具和过程。 ①方法:完成软件工程项目的技术手段;

软件工程师考试大纲

一、考试说明 1.考试要求: (1) 掌握数据表示、算术和逻辑运算; (2) 掌握相关的应用数学、离散数学的基础知识; (3) 掌握计算机体系结构以及各主要部件的性能和基本工作原理; (4) 掌握操作系统、程序设计语言的基础知识,了解编译程序的基本知识; (5) 熟练掌握常用数据结构和常用算法; (6) 熟悉数据库、网络和多媒体的基础知识; (7) 掌握C程序设计语言,以及C++、Java、Visual、Basic、Visual C++中的一种程序设计语言; (8) 熟悉软件工程、软件过程改进和软件开发项目管理的基础知识; (9) 熟悉掌握软件设计的方法和技术; (10) 掌握常用信息技术标准、安全性,以及有关法律、法规的基本知识; (11) 了解信息化、计算机应用的基础知识; (12) 正确阅读和理解计算机领域的英文资料。 2.通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程的实际工作能力和业务水平。 3.本考试设置的科目包括: (1) 计算机与软件工程知识,考试时间为150分钟,笔试; (2) 软件设计,考试时间为150分钟,笔试。

二、考试范围 考试科目 1.计算机科学基础 1.1 数制及其转换 二进制、十进制和十六进制等常用制数制及其相互转换 1.2 数据的表示 数的表示(原码、反码、补码、移码表示,整数和实数的机内表示,精度和溢出)非数值表示(字符和汉字表示、声音表示、图像表示) 校验方法和校验码(奇偶校验码、海明校验码、循环冗余校验码) 1.3 算术运算和逻辑运算 计算机中的二进制数运算方法 逻辑代数的基本运算和逻辑表达式的化简 1.4 数学基础知识 命题逻辑、谓词逻辑、形式逻辑的基础知识 常用数值计算(误差、矩阵和行列式、近似求解方程、插值、数值积分) 排列组合、概率论应用、应用统计(数据的统计分析) 运算基本方法(预测与决策、线性规划、网络图、模拟) 1.5 常用数据结构 数组(静态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树、平衡树、线索树、线索树、堆)、图等的定义、存储和操作 Hash(存储地址计算,冲突处理)

计算机考试软件工程师试题

考号:006姓名:006剩余时间:01:29:40IP:192.168.0.26网络连接:● 2010年(下)全国信息技术水平考试计算机程序设计技术水平证书(JAVA语言) 考试试卷 第一大题:单选题(30 分) 1. (1分) 下列叙述中正确的是( D ) (A) Java程序经编译后会产生machine code (B) Java程序经编译后会产生byte code (C) Java程序经编译后会产生 DLL (D) 以上都不正确 2. (1分) 下列说法中正确的是( C ) (A) 类中的构造方法声明不可省 略 (B) 构造方法必须与类同名,构造方法返回值为 void (C) 构造方法在一个对象被new时执行 (D) 一个类只能定义一个构造方法 3 . (1分) JDBC常用的类和接口都包含在( A )包中。 (A) java.sql (B) java.awt (C) https://www.360docs.net/doc/a316551519.html,ng (D) java.swing 4. (1分) 执行下列程序后,C的值是( C ) public class Test{ public static void main(String arg[]){ int a=0,c=0; do{ --c; a=a-1; }while(a>0); } } (A) 0 (B) 1 (C) -1 (D) 死循环 5. (1 若有int型public成员变量MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是( A )

分) (A) public int MAX_LENGTH=100 (B) final int MAX_LENGTH=100 (C) public const int MAX_LENGTH=100 (D) public final int MAX_LENGTH=100 6. (1分) 在程序中import,package,class出现的正确顺序是( ) (A) import package class (B) package import class (C) package class import (D) import class package 7. (1分) 下列方法中可以用来创建一个新线程的是( ) (A) 实现https://www.360docs.net/doc/a316551519.html,ng.Runnable接口并重写start()方法 (B) 实现https://www.360docs.net/doc/a316551519.html,ng.Runnable接口并重写run()方法 (C) 实现https://www.360docs.net/doc/a316551519.html,ng.Thread类并重写sleep()方法 (D) 实现https://www.360docs.net/doc/a316551519.html,ng.Thread类并重写start()方法 8. (1分) 下列程序的输出结果是( ) public class Test{ public static void main(String[] args){ String a=new String("A"); String b=new String("B"); oper(a,b); System.out.println(a+","+b); } static void oper(String c,String d){ c.concat("B"); d=c; } } (A) A,A (B) 编译正确,运行时将产生错

软件开发工程师面试题(基础知识)

.NET开发人员试题(综合) 1、用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的 关系以及为什么要这样分层? 2、软件开发过程一般有几个阶段?每个阶段的作用? 3、您对编程的兴趣如何?工作中遇到不懂的问题是怎样去解决的?您一 般怎样去提高自己的编程水平? .NET开发人员试题(基础) 1、请你说说.NET中类和结构的区别? 答:结构是值类型,在堆栈上分配地址,所有的基类型都是结构类型,如 System.int或System.string,不能被继承 类是引用类型(new),可以被继承,在堆上分配地址,堆栈的执行效率要比堆的执行效率高,但堆栈的资源有限, 2、死锁的必要条件?怎么克服? 答:系统资源不足,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源阻塞,且对已获得的资源不放 3、接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以 继承实 体类? 答:接口是可以继承接口;抽象类是可以实现接口;抽象类可以继承实体类,只要实体类有明确的构造函数. 4、构造器 Constructor是否可以被继承?是否可以被Override? 答: Constructor不可以被继承,因此不能被重写(Override),但可以被重载(Overloading) 5、当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的 方法?

答:不可以,一个对象的方法只能由一个线程访问 6、C#是否可以对内存直接进行操作? 答:可以,因为可以使用指针 7、数组有没有Length()这个方法?string有没有这个方法?8、谈谈final,finally,finallize的区别? 答:final用来申明属性、方法、类,表示属性不可变,方法不可以被覆盖,类不可以被继承 Finally是异常处理语句结构,总是执行 Finallize是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法 9、C#中委托是什么?事件是不是一种委托? 答:委托是一种安全的类似于函数指针,但比指针安全,它可以把方法作为一个参数传递给另一个方法,可理解为指向函数的引用,事件是一种消息机制,是一种委托,委托不带方法体。 10、Override, Overload,的区别? 11、概述反射、序列化和反序列化?12、UDP和TCP连接有和异 同?13、进程和线程分别该怎么理解? 14、ASP。NET页面之间传递值的几种方式? 15、a=10,b=15在不使用第三方变量的前提下,把a,b的值互换。 答:a=b+(b=a)*0; 16、请简述面向对象的多态的特性及意义? 17、Session喜欢丢值且占内存,Cookies不安全,请问用什么办法替代这两种方法? 18、try{}里有一个return语句,那紧跟在这个后边有个finally{}里的代码会不会被执行,什么时候执行? 20、求当前日期所在的周的起止日期。 答:select sysdate-to_char(sysdate, 'D ')+1 as起始日 期,sysdate+7-to_char(sysdate, 'D ') as 中止日期 from dual 21、c#中的&符号与&&符号有什么区别?22、函数和存储过程的区别?

软件工程知识点总结

软件工程知识点总结 软件工程专业是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。接下来是为大家收集的软件工程知识点总结,以供大家学习! 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素

3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件) 1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。

2017年数据库系统工程师试题下午及答案

2017年上半年数据库系统工程师考试下午真题 (参考答案) ●阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。 【说明】 某医疗器械公司作为复杂医疗产品的集成商,必须保持高质量部件的及时供应。为了实现这一目标,该公司欲开发一采购系统。系统的主要功能如下: 1.检查库存水平。采购部门每天检查部件库存量,当特定部件的库存量降至其订货店时,返回低存量部件及库存量。 2.下达采购订单。采购部门针对低存量部件及库存量提交采购请求,向其供应商(通过供应商文件访问供应商数据)下达采购订单,并存储于采购订单文件中。 3.交运部件。当供应商提交提单并交运部件时,运输和接收(S/R)部门通过执行以下三步过程接收货物: (1)验证装运部件。通过访问采购订单并将其与提单进行比较来验证装运的部件,并将提单信息发给S/R职员。如果收货部件项目出现在采购订单和提单上,则己验证的提单和收货部件项目将被送去检验。否则S/R职员提交的装运错误信息生成装运错误通知发送给供应商。(2)检验部件质量。通过访问质量标准来检查装运部件的质量,并将己验证的提单发给检验员。如果部件满足所有质量标准,则将其添加到接受的部件列表用于更新部件库存。如果部件未通过检查,则将检验员创建的缺陷装运信息生成缺陷装运通知发送给供应商。 (3)更新部件库存。库管员根据收到的接受的部件列表添加本次采购数量,与原有库存量累加来更新库存部件中的库存量。标记订单采购完成。 现采用结构化方法对该采购系统进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图。

米圣经答案:E1:供应商E2:采购部E3:检验员E4:库管员E5:S/R 职员

软件技术基础教学大纲资料

软件技术基础》教学大纲 课程编号: 23000840 适用专业:电子信息类(非计算机专业) 学时数: 40学分数: 2.5 开课学期:第4 学期 先修课程: 《C 语言》 考核方式:笔试(闭卷) 执笔者:沈晓峰编写日期:2015 年3月审核人(教学副院长): 一、课程性质和目标授课对象:电子信息工程专业大学二年级本科生课程类别:学科拓展课程教学目标: 本课程是针对工科电子信息类本科生开设的一门学科拓展课程。着重培养学生在软件设计领域的基本素质,基本方法和设计理念。授课对象为大学二年级学生,课程任务是通过本课程的学习和相关实验的练习,使学生掌握数据结构、操作系统等软件技术的基本理论知识,具有一定的软件开发能力。 二、教学内容和要求 1、课堂理论教学要求和学时安排(32 学时) 1) C 程序设计(4 学时) (1)C 语言回顾,指针的基本概念、运算方法和使用( 2 学时)。 (2)结构体的基本概念和使用方法(2 学时)。 2)数据结构(20 学时) (1)数据结构的基本概念(2 学时):理解数据结构的基本概念;理解线性和非线性结构的概念。 (2)线性数据结构(9 学时):理解表、栈、队列等线性数据结构的概念,存储方式及基于不同存储方式的相关操作的实现方法。 a. 理解表的概念及顺序表的存储特点,掌握其创建、插入、删除等实现方法(2 学时); b. 掌握单链表、双链表、循环链表的创建、插入、删除方法( 2 学时); c. 理解栈的概念及结构特点,掌握顺序栈及链栈的出栈、入栈操作的实现方法 (2 学时); d. 理解队列的概念及特点,掌握顺序、循环队列的创建、出队、入队、判空、判满等操作。掌握链 队列的创建及出队、入队(2 学时); e. 理解数组的概念及二维数组的存放方式,掌握对称矩阵及稀疏矩阵的压缩存储方法 (1 学时)。

高级软件工程师月考试试题A卷带答案

高级软件工程师考试试题(A卷)1、下哪种命名空间中的类型用于创建Windows GUI应用程序。(选择1项) D、 2、判断这PL/SQL 代码块:(选择1项) BEGIN FOR i IN 1..6 LOOP IF i = 2 OR i = 3 THEN null; ELSE INSERT INTO example(one) VALUES (i); END IF; ROLLBACK; END LOOP; COMMIT; END; 有多少行被插入到表 EXAMPLE ? A、0 B、1 C、2 D、3 3、链表具有的特点是:(选择3项) A、不必事先估计存储空间 B、可随机访问任一元素 C、插入删除不需要移动元素 D、所需空间与线性表长度成正比 4、序列图描述对象是如何交互的并且将重点放在消息序列上。(选择1项) A、正确 B、不正确

5、一个XML必须有DTD或Schemas。(选择1项) A、正确 B、不正确 6、动态网站需要的技术为。(选择3项) A、CGI B、HTTP C、ASP D、PHP 7、Linux 文件名的长度不得超过( )个字符?(选择1项)。 A、64 B、128 C、256 D、512 8、在Struts中实现页面跳转主要通过什么方法来实现?(选择1项) A、 B、 C、 D、 9、EJB的优点有哪些?(选择2项) A、技术领先 B、价格低廉 C、性能优越 D、强大的容器支持 10、在使用匿名登录ftp时,用户名为( )? (选择1项) A、login users B、anonymous C、root D、guest 11、你判断下面语句,有什么作用?(选择1项)

计算机软件技术基础实验报告Word版

计算机软件基础实验报告 姓名学号实验目的 1. 掌握C语言程序设计方法,并学会上机调试。 2. 熟悉Huffman编码源程序,并构造Huffman树。 实验内容 1.试设计一算法,从包括n个元素的数组中,求最大和最小元素,并使得当n 个元素为有序排列时,元素之间的比较次数仅为n-1次。 2.在给出的Huffman编码源程序基础上,要求画出Huffman树,求出与等长编 码相比时的压缩比。 实验要求 1.根据实验内容编写算法,并用 C 语言进行程序设计。 2. 将所编程序在计算机上调试通过,并全面测试。 实验结果 1.以一个含有8个元素的一维数组{1,2,3,5,7,8,9,12}为例,设计程序如下: #include int maxArray(int x ,int y); int minArray(int x ,int y); int main(void) { int i = 0 ; int array[8]={ 1,2,3,5,7,8,9,12} ; printf; do { scanf("%d",&array[i]); i++; } while(i < 8); int maxTemp = array[0]; int minTemp = array[0]; int maxIndex = 0; int minIndex = 0; for(i=1;i<8;i++)

maxTemp = maxArray(array[i] , maxTemp); minTemp = minArray(array[i] , minTemp); } for(i=0;i<8;i++) { if (maxTemp == array[i]) { maxIndex = i; } if (minTemp == array[i]) { minIndex = i; } } printf; return 0; } 运行结果如下: 2.Huffman编码源程序 #include #include #include #include #include typedef struct {unsigned int weight; //结点权值 unsigned int parent,lchild,rchild; //结点的父指针,左右孩子指针 }HTNode,*HuffmanTree; //动态分配数组存储哈夫曼树 typedef char **HuffmanCode; //动态分配数组存储哈夫曼编码表 void CreateHuffmanTree(HuffmanTree &,unsigned int*,int ); //生成哈夫曼树 void HuffmanCoding(HuffmanTree,HuffmanCode &,int ); //对哈夫曼树

软件工程基础知识题库1-0-8

软件工程基础知识题 库1-0-8

问题: [单选]程序员需要用文档来表述自己的思想。文档设计的要点不包括()。 A.文档制作应先做规划,列出纲目,内容的逻辑性要强,并不断改进 B.选择最适合表达某种算法的形式(文本、表格、图) C.尽量保持文档与程序的一致性,文档上下文的4致性 D.采用文档模板以减少以后随软件版本的升级而更新文档的工作量 文档编制要求具有针对性、精确性、清晰性、完整性、灵活性、可追溯性。

问题: [单选]以下关于子类和父类的叙述中,正确的是()。 A.代码中使用父类对象的地方,都可以使用子类对象替换 B.代码中使用子类对象的地方,都可以使用父类对象替换 C.父类定义的对象与子类定义的对象在属性和方法上一定相同 D.父类定义的对象与子类定义的对象在属性和方法上一定不同 一个子类可以继承其父类(或祖先类)中的属性和操作,这些属性和操作在子类中不必定义,子类中还可以定义自己的属性和操作。

问题: [单选]以下关于类和对象的叙述中,正确的是()。 A.由类生成的对象数目可以是0,1,2,… B.由类生成的对象数目一定是1 C.由类生成的对象数目一定不少于1 D.由类生成的对象数目一定不少于2 静态类可以不生成对象,而直接使用属性方法,但是一般的类要创建对象才可以调用属性和方法。出处:飞禽走兽老虎机 https://https://www.360docs.net/doc/a316551519.html,/;

问题: [单选]以下关于面向对象分析与设计叙述中,正确的是()。 A.面向对象分析的结果适合采用C++语言表达 B.面向对象分析的结果适合采用汇编语言表达 C.面向对象设计的结果适合采用UML(UnifiedModelingLanguagE.表达 D.面向对象设计的结果适合采用DFD(DataFlowDiagram)表达 20世纪80年代以后相继出现了多种面向对象分析和设计的方法,较为流行的有Booch方法、Coad和Yourdon方法、Jocobson方法。20世纪90年代出现了统一建模语言(UnifiedModelingLanguage,UML),以其简单、统一,又能够表达软件设计中的动态和静态信息,成为可视化建模语言事实上的工业标准。

软件开发工程师招聘试题

专业技术资料 附录一 附录一【软件开发工程师招聘试题一】 考试时间:60分钟姓名:______成绩:______ 一、单选题(共9题,每题2分) 1.对象b 最早在以下哪个选项前被垃圾回收?() public class Test5 { static String f(){ String a="hello"; String b="bye"; String c=b+"!"; //lineA String d=b; b=a; //lineB d=a; //lineC return c; //lineD } public static void main(String[] args) { String msg=f(); System.out.println(msg); } } A.lineA B.lineB C.lineC D.lineD 2.2.运行下列代码,结果如何?() class Example { int milesPerGallon; int index; Example(){} Example(int mpg){ milesPerGallon=mpg;

index=0; } public static void main(String[] args) { int index; Example e = new Example(25); if(args.length>0){ if(args[index].equals("Hiway")){ https://www.360docs.net/doc/a316551519.html,esPerGallon=2; } System.out.println("mpg:"+https://www.360docs.net/doc/a316551519.html,esPerGallon); } } } 这段代码通过编译,并且如果命令行输入”Hiway”则显示”mpg:50” ,如果输入不是”Hiway”则显示”mpg:25”; 这段代码通过编译,并且如果命令行输入”Hiway”则显示”mpg:50” ,如果输入不是”Hiway”则抛出ArrayIndexOutputBoundsException异常。 这段代码不能通过编译,因为自动变量index没有被初始化。 这段代码不能通过编译,因为milesPerGallon没有被初始化。 见例子Example.java 3.3.当编译如下代码时,会显示什么?() int i=1; switch(i){ case 0: System.out.println("zero"); case 1: System.out.println("one"); case 2: System.out.println("two"); default: System.out.println("default"); } One B. one,default C. one,two,default D.default 见例子:Test3.java 4.4.当编译运行如下代码时会发生什么现象?() public class MyClass { public static void main(String arguments[] ) { amethod(arguments); } public void amethod(String []arguments){

软件技术基础实验报告

《计算机软件技术基础》实验报告 专业_____________ 年级_____________ 学号_____________ 学生姓名_____________ 指导老师_____________ 南华大学计算机学院编

【实验报告】

I 实验要求 1.每次实验中有若干习题,每个学生至少应该完成其中的两道习题。 2.上机之前应作好充分的准备工作,预先编好程序,经过人工检查无误后,才能上机,以提高上机效率。 3.独立上机输入和调试自己所编的程序,切忌抄袭、拷贝他人程序。 4.上机结束后,应整理出实验报告。书写实验报告时,重点放在调试过程和小节部分,总结出本次实验中的得与失,以达到巩固课堂学习、提高动手能力的目的。 实验一线性表 【实验目的】 1.熟悉VC环境,学习如何使用C语言实现线性表的两种存储结构。 2.通过编程、上机调试,进一步理解线性表的基本概念,熟练运用C语言实现线性表基本操作。 3.熟练掌握线性表的综合应用问题。 【实验内容】 必做: 1.一个线性表有n个元素(n

软件工程基础知识测试

1. 选择连续的对象,单击第一个对象后,可按住( )键,并单击( ),则所有连续对象全部选中( )。 A.shift,第一个对象 B.shift,最后一个对象 C.shift,随便一个对象 D.alt,最后一个对象 2.要在Excel单元格中输入数字字符,例如学号“09140202”,下列输入正确的是() A.“09140202” B. =09140202 C. 09140202 D. ’09140202 3. WWW浏览器使用的应用协议是( )。 A.HTTP B.TCP/IP C.FTP D.Telnet 4. 以下程序运行时输出结果是 ( ) 。 #include #define M 3 #defme N M+1 #define NN N*N/2 main() . {printf("%d\n",NN);} A.8 B.7 C.6 D.5 5.从第一代计算机到第四代计算机的体系结构都是相同的,都是由运算器、控制器、存储器以及输入输出设备组成的。这种体系结构称为( )体系结构。 A.艾伦.图灵 B. 罗伯特.诺依斯 C. 比尔.盖茨 D. 冯.诺依曼 6.以下程序运行时输出结果是( ) 。 #include void f(int a[],int n,int x,int *c); int main() { int a[10]={1,3,5,2,3,5,3,7,4,1},t=0; f(a,10,5,&t); printf("%d",t); return 0; } void f(int a[],int n,int x,int *c) { if(n==0) return; if(a[0]>=x) (*c)++; f(a+1,n-1,x,c);}

软件工程师笔试试题(Java)库及答案

软件工程师笔试试题(JAVA) 一、填空题 (10分) 1.执行下列代码后的结果是什么? int x,a=2,b=3,c=4; x=++a+b+++c++; 2.包包含了Collection的接口和类的API 3.main方法的声明格式包括 4.下列程序中构造了一个SET并且调用其方法add(),输出结果是 public class A{ public int hashCode(){return 1;} public Boolean equals(Object b){return true} public static void main(String args[]){ Set set=new HashSet(); set.add(new A()); set.add(new A()); set.add(new A()); System.out.println(set.size()); } } 5.下列程序的运行结果是 class A{ class Dog{

private String name; private int age; public int step; Dog(String s,int a) { name=s; age=a; step=0; } public void run(Dog fast) { fast.step++; } } public static void main (String args[]){ A a=new A(); Dog d=a.new Dog("Tom",3); d.step=25; d.run(d); System.out.println(d.step); } } 二、选择题 (20分)

百度文库-文稿-33-软件开发工程师必备基础知识

软件开发工程师必备基础知识 软件开发是这几年计算机发展过程中的传奇,在众多开发者心目中就像是一把“利器”,同时它也是目前IT界流行的面向对象的编程语言。软件开发入门简单, 职业发展潜力大, 随着开发经验的积累, 薪资上升幅度显著,平均薪资10000+。因此成为毕业生和职业转行的首选职业。 那么软件开发工程师主要需要做什么,掌握哪些知识技能呢? 基础知识 学软件开发往往要与数学和英文打交道,所以要有一定的数学、英语基础,有一定的基础在学习软件开发上可以说是事半功倍了。如果英语、数学不错的,可以跳过这一步。 基础编程语言知识 北大青鸟旗舰总校的资深软件开发老师指出,实现软件运行都由某种程序语言来实现,所以学好程序语言是做好软件开发工作的必修课。因此想要学习软件开发,要做的第二步就是选择一门编程语言进行学习,并且专心学好一门语言,因此初学者最好根据自身喜好以及对自身将来的职业定位来选择要学习的语言。对于软件开发,确定一个感兴趣的或者擅长的方向很重要。 一般来说想做好软件开发,学习的编程语言不得少于一门,目前主流的编程语言有Java、PHP、C#语言等,软件开发形式多种,先学好这些基础语言,之后字慢慢扩展。 数据库(SQL Server)知识 除了学习基础语言,还要学习数据库的知识,数据的存储、调用在软件开发中是必不可少的。 web相关知识 HTML、CSS、JavaScript。经过这四个学习阶段,基本已经掌握了一个完整的开发基础了,之后就是深入的学习各种框架(比如spring、structs2、hibernate等)之类的了。软件开发要学多久?对于有意向学习软件开发的人

软件工程考试试题(含答案)

一、填空题(每空1分,共25分) 1.软件生存周期一般可以划分为,问题定义、____________、____________、设计、 编码、测试和____________。 2.基于软件的功能划分,软件可以划分成__________、__________、__________三种。 3.可行性研究,应从、技术可行性、运行可行性、和开 放方案可行性等方面研究。 4.系统流程图是描绘的传统工具。它的基本思想是用图形符号以 描绘系统里面的每个部件。 5.数据流图的基本四种成分:数据输入的源点和数据输出汇点、、 和。 6.结构化分析方法是面向________________进行需求分析的方法。结构化分析方法使 用________________与________________来描述。 7.是自动地共享类、子类和对象中的方法和数据的机制。 8.软件详细设计工具可分为3类,即________________、________________和 ________________。 9.为了在软件开发过程中保证软件的质量,主要采取下述措施:________________、 复查和管理复审、________________。 10.大型软件测试包括、、确认测试和 四个步骤。 1、可行性研究需求分析运行与维护 2、系统软件支撑软件应用软件 3、经济可行性法律可行性 4、物理系统黑盒子形式 5、加工数据流数据存储文件 6、数据流数据流图DFD 数据字典DD 7、继承性 8、图示工具、设计语言表格工具 9、审查测试 10、单元测试集成测试系统测试 二、单项选择题(每小题2分,共20分) 1 2 3 4 5 C C C A C 6 7 8 9 10 D D A C B 1.软件设计中划分模块的一个准则是()。 A、低内聚低耦合 B、低内聚高耦合 C、高内聚低耦合 D、高内聚高耦合 2.Jackson设计方法是由英国的M. Jackson提出的,它是一种面向()的软件 设计方法。

软件技术基础实验一

软件技术基础实验一单链表的各种基本运算的实现

单链表的各种基本运算的实现 一. 实验目的: 1. 熟悉c语言上机环境; 2. 实现单链表的创建; 3. 掌握单链表的基本操作:插入、删除、输出等运算; 二. 实验内容: 编写一个程序,实现单链表的各种基本操作,并在此基础上设计一个主程序完成如下功能: 1.初始化单链表: 2 .依次采用头插法插入从文件中读取的多个元素; 3. 输出单链表; 4. 在第四个元素位置上插入从文件中读取的单个元素; 5. 删除该单链表的从文件中指定序数的元素; 三. 完整的源程序 #include #include #include #include #define max 10 #define num 6 int a[20]; int i; typedef struct link { int data; struct link *next; }link;

/*初始化单链表*/ initlink(link *L) ( L= NULL; L= ( link *)malloc(sizeof(link)); /* 建立表头结点*/ L->next = NULL; L->data = 0; } void hcreat(link *L) /*头插法插入从文件中读取的多个元素*/ ( link *s; L->next=NULL; s=(struct link*)malloc(sizeof(struct link)); int i=0; FILE *fp; if((fp=fopen("h:\\a.txt”,"r"))==NULL) printf("error!\n"); printf("文件中的数为:\n"); while(!feof(fp)&& idata=a[i]; s->next=L->next; L->next=s; i++; } fclose(fp); } void print(link *L) /* 输出单链表*/ ( link *p=L->next; while(p!=NULL) ( printf ("%d ",p->data); p=p->next; } printf("\n"); int insert(link *L, int i) ( int j,m;

相关文档
最新文档