一套软件开发技术考试题
软件开发人员招聘笔试试题

软件开发人员招聘笔试试题应聘者资料:姓名性别出生日期出生地地址邮政编码电话Email毕业院校毕业时间专业学历学位英语水平(资格)计算机水平(资格)要求职位和希望担任的角色待遇要求简历(如已提供可不填)其他特长(如已提供可不填)评估意见(由招聘小组填写)试题一:基础知识1、从供选择的答案中,选出应填入下面叙述中_?_内的最确切的解答,把相应编号写在答卷的对应栏内。
假设某计算机具有1M 字节的内存(目前使用的计算机往往具有64M字节以上的内存),并按字节编址,为了能存取该内存各地址的内容,其地址寄存器至少需要二进制_A_位。
为使4字节组成的字能从存储器中一次读出,要求存放在存储器中的字边界对齐,一个字的地址码应_B_。
若存储周期为200NS,且每个周期可访问4个字节,则该存储器带宽为_C_BIT/S。
假如程序员可用的存储空间为4M字节,则程序员所用的地址为_D_,而真正访问内存的地址称为_E_。
供选择的答案:A:①10 ②16 ③20 ④32B:①最低两位为00 ②最低两位为10 ③最高两位为00 ④最高两位为10 C:①20M ②40M ③80M ④160MD:①有效地址②程序地址③逻辑地址④物理地址E:①指令②物理地址③内存地址④数据地址2、从供选择的答案中。
选出应填入下面叙述中_?_内的最确切的解答,把相应编号写在答卷的对应栏内。
给定结点的关键字序列(F、B、J、G、E、A、I、D、C、H),对它按字母的字典顺序进行排列,采用不同方法,其最终结果相同。
但中间结果是不同的。
Shell排序的第一趟扫描(步长为5)结果应为_A_。
冒泡排序(大数下沉)的第一趟起泡的效果是_B_3.快速排序的第一趟结果是_C_。
二路归并排序的第一趟结局是_D_。
供选择的答案A:①(B、F、G、J、A、D、I、E、H、C)②(B、F、G、J、A、E、D、I、C、H)③(A、B、D、C、E、F、I、J、G、H)④(C、B、D、A、E、F、I、G、J、H)B:①(A、B、D、C、F、E、I、J、H、G)②(A、B、D、C、E、F、I、H、G、J)③(B、F、G、E、A、I、D、C、H、J)④(B、F、G、J、A、E、D、I、C、H)C:①(C、B、D、A、F、E、I、J、G、H)②(C、B、D、A、E、F、I、G、J、H)③(B、A、D、E、F、G、I、J、H、C)④(B、C、D、A、E、F、I、J、G、H)D:①(B、F、G、J、A、E、D、I、G、H)②(B、A、D、E、F、G、I、J、H、C)③(A、B、D、C、E、F、I、J、G、H)④(A、B、D、C、F、E、J、I、H、C)3、从供选择的答案中,选出应填入下面叙述中_?_内的最确切的解答.把相应编号写在答卷的对应栏内。
软件开发技术考试复习题及参考答案

软件开发技术考试复习题及参考答案软件开发技术一、填空题1、软件工程学的内容可包括()、结构、()、()、环境、管理、规范等。
2、软件生存周期一般可分为问题定义、()、()、设计、()、测试、运行与维护阶段。
3、系统流程图是()的传统工具。
4、结构化语言是介于自然语言和()之间的一种半形式语言。
5、数据字典的内容包括六项:()、()、()、数据存储、处理逻辑、外部实体。
6、UML的定义包括()和()两个部分。
7、按数据流的类型,结构化设计方法有两种设计策略,它们是变换分析设计和()。
8、瀑布模型是以文档为驱动、适合于()的软件项目的模型。
9、对象具有标识唯一性、分类性、多态性、()和()等基本特性。
10、消息关联指的是对象()的一种依赖关系。
11、对象的规格说明包括对对象()的说明及对对象()的说明。
12、在需求分析阶段常用的图形工具有()、()、()。
13、模块独立的概念是()、()、()和局部化概念的直接结果。
14、基于计算机体系的体系元素包括:软件、硬件、人、()、()和过程等几个部分。
15、软件可维护性度量的七个质量特性是可理解性、可测试性、可修改性、可靠性、()、可使用性和效率。
16、为了便于对照检查,测试用例应由输入数据和预期的()两部分组成。
17、在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、()。
18、需求分析的基本任务是正确的回答()。
19、常用的系统分析方法有四类,包括:()、数据流方法、信息造型方法以及()。
20、面向对象设计中,主要存在两种耦合,交互耦合和()。
21、UML是一种尺度的图形化(便可视化)建模语言,它由()和()组成。
其中,前者是UML的透露表现法(语法),而后者给出前者的含义,是UML的语义。
二、选择题1、下列关于瀑布模子的描述正确的是()。
A.瀑布模型的核心是按照软件开发的时间顺序将问题简化。
B.瀑布模型具有良好的灵活性。
C.瀑布模子接纳结构化的分析与设计方法,将逻辑实现与物理实现分开。
软件开发考试题目及答案

软件开发考试题目及答案一、选择题(每题2分,共20分)1. 在软件开发过程中,需求分析阶段的主要任务是什么?A. 确定软件的最终用户界面B. 确定软件的功能需求和性能需求C. 编写软件的详细设计文档D. 开始编写代码答案:B2. 面向对象编程中的“封装”指的是什么?A. 将数据和操作数据的方法组合在一起B. 将不同的数据类型组合在一起C. 将数据和控制数据的方法组合在一起D. 将不同的方法组合在一起答案:A3. 在敏捷软件开发中,以下哪个不是敏捷宣言的四个价值观之一?A. 个体和交互B. 可工作的软件C. 详尽的文档D. 响应变化答案:C4. 在软件测试中,黑盒测试和白盒测试的区别是什么?A. 黑盒测试关注软件的内部结构,白盒测试关注软件的功能B. 黑盒测试关注软件的功能,白盒测试关注软件的内部结构C. 两者都关注软件的功能D. 两者都关注软件的内部结构答案:B5. 软件项目管理的主要目标是什么?A. 确保软件按时发布B. 确保软件在预算内完成C. 确保软件满足所有需求D. 所有以上选项答案:D二、简答题(每题10分,共30分)1. 请简述软件开发生命周期(SDLC)的主要阶段。
答案:软件开发生命周期(SDLC)的主要阶段包括:需求收集、需求分析、系统设计、编码、测试、部署、维护和退役。
2. 解释什么是软件重构,并给出一个重构的例子。
答案:软件重构是指在不改变软件外部行为的前提下,对软件的内部结构进行调整以提高其可读性、可维护性和性能。
一个常见的重构例子是将一个过长的函数拆分成几个更小的、功能单一的函数。
3. 描述单元测试和集成测试的区别。
答案:单元测试是针对软件中的最小可测试部分(通常是单个函数或模块)进行的测试,以确保它们按预期工作。
集成测试则是在多个模块或组件已经单独测试后,将它们组合在一起进行测试,以确保它们能够协同工作。
三、应用题(每题25分,共50分)1. 假设你是一个软件开发团队的负责人,你的团队正在开发一个电子商务平台。
软件开发技术 练习题及参考答案(一)

软件开发技术练习题一、填空题1. 一个是一个特殊的方法,用于初始化一个类的对象。
2. 如果一个类包含一个或多个的abstract方法,它就是一个类。
3. 一个数组的各元素具有相同的和。
4. Integer.parseInt()用于将字符串转换成。
5. 实参变量对形参变量的数据传递是。
6. 一个子类一般比其超类封装的功能性要。
7. 接口中定义的数据成员是。
9. 用户要进行有关程序的编写,就需要JBuilder中的。
10. 要将当前工程中所有文件进行编译和链接,需使用菜单项的功能。
11. 在内容窗口显示的内容为,其上方就会出现“控件栏”。
13. Swing控件扩展了控件,所有控件都可以在Swing 控件中找到功能一样的控件。
14. JSP技术提供了一种混合编程的环境。
15. Servlet是标准的 Java应用程序。
参考答案1. 构造方法2. 抽象3. 数据类型数组名4. 整数5. 值传递6. 多7. 常量数据成员 9. 程序编辑器10. Make Project 11. 用户界面设计器 13. AWT AWT 14. HTML和Java Servlet 15. 服务器端二、简答题1.简述Java Applet的生命周期。
答:下载Java Applet,产生实例并初始化,开始运行;用户离开Java Applet所在页面时,这个Java Applet将停止运行;当用户又回到其所在页面时,将又一次启动运行;用户退出浏览器时,Java Applet停止执行,进行善后处理。
2. 简述JavaBean在JSP中的应用答:JavaBean组件是用Java语言编写的、与平台无关的、可重用的软件组件,JavaBean 组件继承了在Java程序中可以看到的平台无关性,开发人员可以编写出可重用的组件,然后在各个平台上运行;在JSP页面中使用JavaBean组件可以将代码与显示分离;在JSP页面中有负责存取内容和显示的标记,业务逻辑被包含在可重用的JavaBean组件中。
软件开发(考试题模拟题答案)

软件开发考试试卷(机密)考试声明本人已经认真阅读考试注意事项,承诺遵守考试纪律,自己不作弊、不协助他人作弊;考试后不向其他人泄漏考题内容,维护考试的机密性。
特此声明。
考生签名:年月日答题纸三、改错题1.2.3.4.5.四.编程题注:选择题请将答案填写在答题纸上,填写在其它位置无效。
软件开发考核试卷考试说明:1、本次考试类型为笔试,请考生用蓝色圆珠笔或钢笔答题,不得用铅笔,用铅笔者本试卷作废;2、本次考试时间为60分钟,共计100分;3、试卷表面必须保持清洁,不得在试卷上作记号,一经发现取消该考生卷面成绩;4、请将答案写在答题纸上,填写在其他位置无效。
一.单项选择题(每题2分,共计60分)1.软件工程研究的内容包括:()技术和软件工程管理: DA.软件测试B.数据分析C.动态测试D.软件开发2.在C语言中(以 16 位PC机为例),一个float型数据在内存中所占的字节数为 4;一个double型数据在内存中所占的字节数为:CA.32B.6C.8D.163.下列描述正确的是:AA. C 语言程序中各函数之间既允许直接递归调用也允许间接递归调用B. C 语言程序中不允许直接递归调用也不允许间接递归调用C. C 语言程序中允许直接递归调用不允许间接递归调用D. C 语言程序中不允许直接递归调用允许间接递归调用4.下面关于完全二叉树的叙述中,错误的是:BA.除了最后一层外,每一层上的结点数均达到最大值B.可能缺少若干个左右叶子结点C.完全二叉树一般不是满二叉树D.具有结点的完全二叉树的深度为[log2n]+15.在软件生命周期中,能准确完成程序的编码的阶段是:CA.概要设计B.详细设计C.软件实现D.需求分析6.下面程序的输出结果是:B#include <stdio.h>sub(x,y,z)int x,y,*z;{ *z=y–x;}main( ){int a,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%d,%d,%d\n",a,b,c);}A.5,2,3B.–5, –12, –7C.–5, –12, –17D.5, –2, –77.程序流程图(PFD)中的箭头代表的是:BA.数据流B.控制流C.调用关系D.组成关系8.下面程序的输出是:Cmain ( ){ enum em { em1=3,em2=1,em3};char * aa[ ]={"AA","BB","CC","DD"};printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);}A.DCBBCDB.BBDDCCC.DDBBCCD.DBDBCC9.符合 C 语言语法的赋值语句的是:DA.a=7+b+c=a+7B.a=a+7C.a=7+b,b++,a+7;D.a=7+b,c=a+7;10.若运行时给变量x输入 12,则以下程序的运行结果是:B main( ){int x,y;scanf(“%d”,&x);y=x>12?x+10:x–12;printf(“%d\n”,y);}A.2B.0C.8D.1011.在 C 语言中,要求运算数必须是整型的运算符是:AA.%B./C.<D.!12.以下程序语句中y=–1;if (x!=0)if(x>0) y=1; else y=0;所表示的数学函数关系是:C–1 (x<0) 1 (x<0)A. y= 0 (x=0)B. y= –1 (x=0)1 (x>0) 0 (x>0)0 (x<0) –1 (x<0)C. y= –1 (x=0)D. y= 1 (x=0)1 (x>0) 0 (x>0)13.若有以下函数定义:Cmyfun(double a, int n){…… }则myfun函数值的类型是A. voidB. doubleC. intD. char14.软件需求分析应确定用户对软件的:DA.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求15.C语言中main函数参数的非法表示形式是:DA.main(char *argv[],int argc)B.main(int a,char**b)C.main(int y,char *x[])D.main(int argv,char *argc[])16.以下的for循环:Cfor(x=0,y=0;(y!=123)&&(x<4);x++)A.是无限循环B.循环次数不定C.执行4次D.执行3次17.C语言规定,函数返回值的类型由:AA.在定义时所指定的函数类型所决定B.调用该函数时的主调函数类型所决定C.return语句中的表达式类型所决定D.调用该函数时系统临时决定18.下面描述中,不符合结构化程序设计风格的是:CA.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B.自顶向下C.注重提高程序的执行效率D.限制使用 goto 语句19.以下程序中main( ){ int x=3,y=0,z=0;if(x=y+z)printf("* * * *");else printf("####");}DA.有语法错误不能通过编译B.输出* * * *C.可以通过编译, 但是不能通过连接, 因而不能运行D.输出####20.执行下面程序片段的结果是:Bint x=123;do{ printf("=\n",x--);}while(!x);A.打印出321B.打印出123C.不打印任何内容D.陷入死循环21.下述对C语言字符数组的描述中错误的是:CA.字符数组可以存放字符串B.字符数组中的字符串可以整体输入、输出C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值D.不可以用关系运算符对字符数组中的字符串进行比较22.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是:DA.acbedB.decabC.deabcD.cedba23.C 语言提供的合法的数据类型关键字是:BA.DoubleB.floatC.integerD.Char24.以下程序的输出结果正确的是:B#include <stdio.h>sub(int *s,int y){ static int t=3;y=s[t];t––;}main( ){ int a[ ]={1,2,3,4},i, x=0;for(i=0;i<4;i++) {sub(a,x);printf("%d",x); }printf("\n");}A.1234B.0000C.4321D.444425. C程序中的语句:char *func(int x,int y); 它是:CA. 对函数func的定义B. 对函数func的调用C.对函数func的原型说明D. 不合法的26. 下列程序的运行结果是:Amain( ){ union EXAMPLE{ struct{ int x; int y; } in;int a;int b;}e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf("%d,%d\n",e.in.x,e.in.y);}A.4,8B.2,6C.8,16D.12,1627.下列选项中可用于C语言用户标识符的是:BA.voiddefinewordB.a3_b3_123CarC.For-abcIFCaseD.2aDOsizeof28.对下述程序,描述正确的是:Amain (){ int a, b;scanf("%d,%d",&a,&b);if(a>b)a=b;b=a;else a++;b++;printf("%d,%d",a,b);}A.有语法错误不能通过编译B.若输入4,5则输出5,6C.若输入5,4则输出4,5D.若输入5,4则输出5,529.下面程序的输出是:Bmain( ){int arr[10],i,k=0;for(i=0;i<10;i++)arr[i]=i;for(i=1;i<4;i++)k+=arr[i]+i;printf("%d\n",k);}A.8B. 6C. 4D.1230.若有以下定义,则不移动指针p,且通过指针p引用值为 98 的数组元素的表达式是:BDint w[10] = {23,54,10,33,47,98,72,80,61},*p = w;A.(p+5)*B.*(p+5)C. p%[5]D.p[5%]二.多项选择题 (每题2分,共计20分)1.下列有关函数的说法中正确的是:ABCA. C语言中的函数只具有static和extern两种类型B. C语言中允许函数的递归调用C. 调用函数时,C语言要求实参与形参的个数,类型完全一致D. C语言函数的缺省数据类型是空类型(void型)2.下面的变量说明中()是错误的:ABDA.char:a, b, c;B.char a; b; c;C.char a, b, c;D.char a, b, c3.假如有以下调用语句,则正确的fun函数的首部是:ABC main(){ …int a[50],n;…fun(n, &a[9]);…}A.void fun(int m, int x[])B.void fun(int s, int h[41])C.void fun(int p, int *s)D.void fun(int n, int a)4.下列常量中哪些是合法的:BCDA.2e32.6B. 0.2e-5C. “basic”D. 0x4b005.关于if后一对圆括号中的表达式,以下叙述中错误的是:ABCA.只能用逻辑表达式B.只能用关系表达式C.既可用逻辑表达式也可用关系表达式D.可用任意表达式6. 下列叙述中错误的是:BCDA.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构7.若有以下程序#includevoid f(int n);main(){ void f(int n);f(5);}void f(int n){ printf("%d\n",n); }则以下叙述中正确的是:ABDA.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数fC.对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明D.函数f无返回值,所以可用void将其类型定义为无返回值型8.根据C语言的语法规则,下列()是合法标识符:BCDA.doB. NameC. R5D. _exam9. 下列关于复合语句和空语句的说法正确的是:ABDA.复合语句是由“{”开头,由“}”结尾的B.复合语句在语法上视为一条语句C.复合语句内,可以有执行语句,不可以有定义语句部分D.C程序中的所有语句都必须由一个分号作为结束10. 下列说法中错误的是:ACDA.全局变量的作用域一定比局部变量的作用域大B.静态(static)类型变量的生存期贯穿于整个程序的运行期间C.函数的形参都属于全局变量D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值三.改错题 (每题2分,共计10分)将下列程序中不正确的语句改正。
软件开发试题及答案

软件开发试题及答案一、选择题(每题2分,共10分)1. 下列关于软件开发生命周期的描述中,错误的是:A. 需求分析阶段是软件开发的第一步B. 设计阶段需要确定软件的内部结构C. 编码阶段是将设计转换为代码D. 测试阶段是软件开发的最后阶段答案:D2. 在软件开发过程中,需求分析阶段的主要任务是什么?A. 编写代码B. 确定软件的功能和性能C. 进行软件测试D. 部署软件答案:B3. 敏捷开发方法的核心理念是:A. 过程和工具B. 文档和规范C. 个人和交互D. 客户合作答案:C4. 在面向对象编程中,封装的目的是:A. 提高代码的可读性B. 隐藏对象的实现细节C. 提高代码的执行效率D. 增加代码的复杂性答案:B5. 下列关于软件测试的描述中,正确的是:A. 测试是为了证明软件无错误B. 测试是为了发现软件的错误C. 测试可以提高软件的性能D. 测试是软件开发的可选步骤答案:B二、填空题(每题2分,共10分)1. 在软件开发过程中,需求分析阶段的主要任务是确定软件的________和________。
答案:功能;性能2. 敏捷开发方法强调的是________和________。
答案:迭代;增量3. 在面向对象编程中,继承的目的是________。
答案:代码重用4. 软件测试的主要目的是________。
答案:发现错误5. 在软件开发中,维护阶段包括________和________。
答案:纠错;改进三、简答题(每题5分,共20分)1. 请简述软件开发生命周期的主要阶段。
答案:需求分析、系统设计、实现、测试、部署、维护。
2. 敏捷开发方法与传统开发方法相比有哪些优势?答案:敏捷开发方法具有更高的灵活性和适应性,能够更快地响应变化,强调团队合作和客户参与,以及持续交付价值。
3. 面向对象编程的三大特性是什么?答案:封装、继承、多态。
4. 软件测试的目的是什么?答案:软件测试的目的是确保软件的质量,通过发现和修复错误来提高软件的可靠性和性能。
软件开发人员招聘笔试试题

试题一:综合(基本知识引导,思考,)1.面向对象语言的特征中字符流和字节流的区别?2.和的区别的生命周期? 的生命周期?3.协议是长连接还是短连接?4.的基本数据类型有那些? 是不是基本类型?5.的概念和在项目中的应用?6.如何避免多个的读写阻塞1.4新增了那些方法解决这个问题?7.如果一个变量的值为,观察以下程序:8.变量分支1;分支2;程序最终执行那一个分支?9.中有那些重定向方法,它们的区别的优势和特点和的区别?10.在数据库中,一个表被删除后,还能否将空间分配给其它表哪?11.在数据库中,一个表有两千万条数据,怎样最有效的将其删除?12.在数据库中,如果处理表中的每一条数据,用那种方法?13.发送一条邮件的几个步骤在中如何初始化上下文14.常用的组件技术?会话的属性?实体的属性?15.与的区别?16.编程具体步骤?事务模式?17.容器管理事务的事务属性为的意义18.事务失败时的会话的重新初始化方法19.中开发应用通常遵循的步骤试题二:分类试题(分类必作题)基础1.作用域,以与不写时的区别?2.和的区别, 和的区别3.型变量中能不能存贮一个中文汉字?为什么?4.多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?5.继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?6.内部类的实现方式?父类:;{(){(" ");}}子类:;;{(){(" ");}([] ){= ();= ();}}输出结果:7. 3. ?( .){d1 = 1.0;}3.( .)A. { .静态内部类可以有静态成员,而非静态内部类则不能有静态成员 () { d1;}}B. { .静态内部类可以有静态成员,而非静态内部类则不能有静态成员() { d1;}}C. {() { d1;}}D. {() { d1;} 静态内部类的非静态成员不可访问外部类的非静态变量}E. {();}8.垃圾回收机制,如何优化程序?9.型 3.4是否正确?10.介绍中的 (包括如何写自己的数据结构)?11.中异常处理机制,事件机制?12.中的多形与继承?13.抽象类与接口?14.的通信编程,用编程,读服务器几个字符,再写入本地显示?15.用实现一种排序,类实现序列化的方法(二种)?如在框架中,实现比较要实现什么样的接口?16.编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
计算机软件开发考试试题

计算机软件开发考试试题一、选择题1. 下列哪种编程语言属于面向对象编程语言?A. CB. PythonC. AssemblyD. Fortran2. 在Java中,以下哪个关键字用于定义类的继承关系?A. classB. interfaceC. extendsD. implements3. 在数据库中,以下哪种语言用于对数据库进行查询操作?A. JavaB. SQLC. PythonD. C++4. 在HTML中,以下哪个标签用于定义一个段落?A. <p>B. <h1>C. <div>D. <span>5. 在软件开发中,以下哪个模型最适合用于快速开发原型?A. 瀑布模型B. 增量模型C. 原型模型D. 螺旋模型二、填空题6. C#中用于输出内容到控制台的关键字是__。
7. 在Python中,用于创建循环结构的关键字是__。
8. 在数据库中,用于查询所有数据的关键字是__。
9. HTML中的超链接标签是__。
10. 软件开发中用于管理代码版本的工具是__。
三、简答题11. 请简要解释什么是面向对象编程?列举面向对象编程的优点。
12. 请简要介绍一下SQL语言,列举SQL语言中常用的操作。
13. 请解释什么是响应式网页设计并说明其重要性。
14. 请简要介绍软件开发中常用的敏捷开发方法并列举其优势。
四、编程题15. 请写一个Java程序,实现以下功能:从1累加到100并输出结果。
以上为计算机软件开发考试试题,希望能够准确回答每道题目。
祝考试顺利!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件开发技术考试题一、名词解释1、软件质量保证(SQA)答:软件质量保证(SQA)是一种应用于整个软件过程的保护性活动,它包括:一种质量管理方法,有效的软件工程技术(方法和工具),在整个软件过程中采用的正式技术复审,一种多层次的测试策略,对软件文档及其修改的控制,保证遵从软件开发标准的规程,度量和报告机制。
2、CMMI与过程优化答:CMMI:是一种集成的优化的CMM标准,通过提供统一的过程改进框架,消除了不同模型之间的不一致和重复性,可望成为今后软件过程改进领域比较稳定的一个实用模型。
软件过程优化:软件机构为了突出关键过程以改善软件的质量形成一套完整而成熟的软件过程,它需要一个从无序到有序,从特殊到一般,从定性到定量,最后再从静态到动态的历程,或者说软件机构在形成成熟的软件过程之前必须经历一系列的成熟阶段。
因此有必要建立一个软件过程成熟度模型来对过程作出一个客观、公正的评价,以促进软件开发组织改进软件过程。
这个软件过程的改进即为软件过程优化。
3、软件配置管理(SCM)答:软件生存期各阶段的交付项管理问题,主要用于标记变化、控制变化、保证变化被适当地实现、向其他可能有兴趣的人员报告变化等活动。
4、黑盒测试与白盒测试答:白盒测试: 分析程序的内部逻辑结构,注意选择适当的覆盖标准,设计测试用例,对主要路径进行尽可能多的测试。
黑盒测试: 不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性设计测试用例。
5、RUP与XP过程模型答:Rational 统一过程是由Rational 软件公司开发和营销的一种软件工程过程,是开发组织用以分配与管理任务和职责的一种规范化方法。
这个过程的目的是在预定的进度和预算范围内,开发出满足最终用户需要的高质量软件。
XP(Extreme Programming),是由Kent Beck大师提出的一种优秀的软件开发方法,提出了改进软件开发方法的四个要素:沟通(communication)、简单化(simplicity)、反馈(feedback)、勇气(courage),这形成了XP的核心价值观。
6、UML统一建模答:UML是UML是一个通用的可视化建模语言,是一种可以详细描述的语言,UML是用于构造系统或理解系统的语言,UML是文档化语言,对软件进行描述、可视化处理,构造和建立软件系统制品的文档。
它支持大部分现存的面向对象开发过程,给出系统模型,表达不同层次的细节,适用于软件生命周期的各个阶段,还能给出系统的多视角的构造模型图如:USE CASE视图、逻辑视图、进程视图、实现视图、部署视图等。
二、简答题1、优秀的需求的特征,如何获取有效的软件需求。
答:软件需求分析是软件生存期的一个重要阶段,是软件开发项目得以成功的基础,其最根本的任务是确定为了满足用户需求的软件系统必须做什么。
软件需求分析是一个不断发现和决定的过程,在此过程中,软件开发者和软件申请者(用户)同样起着重要作用。
若要获取有效的软件需求,应给出软件系统的数据流程图与数据结构,构造一个完全的系统逻辑模型,同时,还应提出详细的功能说明确定设计限定条件、规定性要求;再者,还应密切与用户联系,使用户确定自己的任务,以便实现上述两项目标。
为了实现上述目标,可用结构化分析方法SA、软件原型化方法、面向数据结构的JACKSON 方法(JSD)、面向数据结构化数据系统开发方法(DSSD)、面向对象的分析方法(OOA)等来保护获取有效的软件需求。
2、软件模块化特点与模块独立性分析。
答:软件模块化是指:软件被划分成独立命名和可独立访问的被称作模块的构件,每个模块完成一个子功能,它们集成到一起满足问题需求。
模块独立是指开发具有独立功能而且和其它模块之间没有过多的相互作用的模块。
模块独立的意义:功能分割,简化接口,易于多人合作开发同一软件;独立的模块易于测试和维护。
模块独立性, 是指软件系统中每个模块只涉及软件要求的具体的子功能, 而和软件系统中其它的模块的接口是简单的。
一般采用两个准则度量模块独立性,即模块间耦合和模块内聚。
耦合性是指对一个软件结构内不同模块间互连程度的度量;内聚性是指标志一个模块内各个处理元素彼此结合的紧密程度,理想的内聚模块只做一件事情。
软件模块化的设计原则一般为:A、力争尽可能弱的耦合性。
尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合;B、力争尽可能高的内聚性。
力争尽可能高的内聚性,并能识别出低内聚性。
3、说明软件建模语言UML进行软件系统分析设计过程。
答:UML是一种建模语言而不是方法,这是因为UML中没有过程的概念,而过程正是方法的一个重要组成部分。
UML本身独立于过程,这意味着用户在使用UML进行建模时,可以选用任何适合的过程。
一般采用的建模过程有:瀑布开发模型、迭代递增开发模型。
基于UML的系统开发采取增量迭代开发模型,步骤如下:A、需求:最初需求规格说明应当由代表系统最终用户的人员提供,内容包括系统基本功能需求和对计算机系统的要求。
B、分析:分析的任务是找出系统的所有需求并加以描述,同时建立模型,以定义系统中的关键领域类,应由系统用户和开发人员合作完成。
分析的第一步是定义用例,以描述所开发系统的外部功能需求。
用例分析包括阅读和分析需求说明,此时需要与系统的潜在用户进行讨论。
C、设计:设计阶段的任务是通过综合考虑所有的技术限制,以扩展和细化分析阶段的模型。
设计阶段可以分为两个部分:结构设计是高层设计,其任务是定义包(子系统),包括包间的依赖性和主要通信机制。
我们希望得到尽可能简单和清晰的结构,各部分之间的依赖尽可能的少,并尽可能的减少双向的依赖关系。
第二部分是详细设计,细化包的内容,使编程人员得到所有类的一个足够清晰的描述。
D、实现:构造或实现阶段是对类进行编程的过程。
可以选择某种面向对象的编程语言作为实现系统的软件环境。
在实现阶段中,可以选取各种图的说明来辅助编程,比如:类图,状态图等。
E、测试和配置:完成系统编码后,需要对系统进行测试,它通常包括:单元测试、集成测试、系统测试和验收测试。
在单元测试中使用类图和类的规格说明,对单独的类或一组类进行测试;在集成测试中,使用组件图和合作图,对各组件的合作情况进行测试;在系统测试中,使用用例图,以检验所开发的系统是否满足例图所描述的需求。
4、软件测试策略与用例设计方法。
答:软件测试测试策略开始是单元测试:集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。
然后是组装测试:把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。
第三是确认测试:要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。
最后是系统测试:把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。
测试用例设计策略一般先用黑盒法设计基本的测试数据,再用白盒法补充一些必要的测试数据。
在任何情况下都应该使用边界值分析方法。
通常情况下测试过程均按这4个步骤进行,即单元测试、组装测试、确认测试和系统测试。
5、SOA体系架构特点与作用?答:SOA(service-oriented architecture)是面向服务的体系结构,是一类分布式系统的体系结构,是构件如何组成一个系统的模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和规范按松耦合方式整合在一起,即将多个现有的应用软件通过网络将其整合成一个新系统。
接口应该是独立于实现服务的硬件平台、操作系统和编程语言。
这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。
SOA的作用是A、利用现有的资产。
方法是将这些现有的资产包装成提供企业功能的服务。
组织可以继续从现有的资源中获取价值,而不必重新从头开始构建。
B、更易于集成和管理复杂性。
将基础设施和实现发生的改变所带来的影响降到最低限度。
因为复杂性是隔离的。
当更多的企业一起协作提供价值链时,这会变得更加重要。
C、更快地整合和现实。
通过利用现有的组件和服务,可以减少完成软件开发生命周期所需的时间。
这使得可以快速地开发新的业务服务,并允许组织迅速地对改变做出响应和缩短开发时间。
D、减少成本和增加重用。
通过以松散耦合的方式公开业务服务,企业可以根据业务要求更轻松地使用和组合服务。
E、SOA 业务流程是由一系列业务服务组成的,可以更轻松地创建、修改和管理它来满足不同时期的需要。
6、RUP对软件开发管理的商业实践的价值与意义。
答:软件过程(Software Process)是人们建立、维护和进化软件产品整个过程中所有技术活动和管理活动的集合。
Rational统一过程( RUP),是一个指导软件开发的方法。
RUP可以增强团队的开发效率,它使团队中每个开发人员的见解和思想得到统一,使开发小组成员的沟通更为容易,而这正是任何项目要取得成功的关键因素;它可以增强开发人员对软件的预见性,最终的好处就是提高了软件质量,并有效缩短了软件从开发到投放市场的时间。
基于RUP的软件过程,被分解为四个顺序的阶段,分别是初始阶段(Inception)、细化阶段(Elaboration)、构建阶段( Construction)和交付阶段(Transition)。
RUP的软件过程是一个迭代过程。
RUP核心思想:(1)用例驱动(2)以架构为中心(3)RUP是迭代和增量性的以网上支付结算平台系统为例,这是一个服务于金融行业的大型电子商务软件平台,提供企业或个人客户随时可以通过具有安全保密的网络付款机制。
整个平台由生产系统、测试兼备援系统、数据库系统、系统管理员操作系统和分行柜员操作系统组成。
整个开发过程按照RUP过程模式开发。
在项目的初始阶段,主要建立项目的软件规模和边界条件,明确子系统的接口规范。
通过与用户的交流,明确用户的需求,形成了Use Case文档、同时,估计了整个项目的总体成本和进度,评估了潜在的风险。
在项目的细化阶段,根据初步的系统需求,开发了完整的网页形式的系统原型,并形成需求规格说明书,作为验收标准。
形成系统分析书和系统架构文档,构筑了三层结构的体系结构,完成了系统数据库的设计,形成了数据库规格说明书。
并在此基础上,为构建阶段制订了详细的迭代计划。
在项目的构建阶段,经过从需求、分析设计到编码的工作流迭代。
对系统的需求、架构进行了修改和完善,形成了系统功能不断聚集在系统体系框架下的有利局面,用户不断提出的需求变更得到了很好的满足,系统功能不断完善。
在项目的交付阶段,把经过集成测试的软件制作安装盘,安装在银行的服务器上,接受实际环境的测试。
编写了详细的用户手册,然后对有关用户和维护人员进行培训和指导。
在以上各阶段结束时,都要进行了严格的阶段技术评审。