软件与软件工程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章软件与软件工程
1、软件及软件工程定义
2、软件危机的原因
3、简述瀑布模型及其特点
4、简述一下螺旋模型及其特点
5、简述一下原型模型及其特点
第2章软件项目管理
1、自底向上的成本估算法的特点。
2、某项目总的功能点(FP)估算值是310,基于过去项目的人均月生产率是5.5FP,该项目总成本的估算值为560,000元,试估算月均人力成本。
3、CMM
4、下面是某个程序的流程图,画出程序图并计算它的McCabe复杂性度量。
第3章需求分析基础
1、请解释自顶向下,逐步求精。
2、某银行的计算机储蓄系统功能是:将储户填写的存款单或取款单输入系统,如果是存款,系统记录存款人姓名﹑住址﹑存款类型﹑存款日期﹑利率等信息,并打印出存款单给储户;如果是取款,系统计算清单给储户。请用DFD描绘该功能的需求,并建立相应的数据字典。
3、(15分)某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:
1. 每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。课程结束后进行期末考试,其成绩作为这门课程的考试成绩。
2. 学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。
3. 在记录学生成绩之前,系统需要验证这些成绩是否有效。首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。
4. 对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。在教务处没有给出具体处理意见之前,系统不会处理这些成绩。
5. 若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。
6. 在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。主讲教师须将核对之后的成绩报告返还系统。
7. 根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。考试委员会在审查之后,上交一份成绩审查结果给系统。对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。
请采用结构化方法对这个系统进行分析与设计,试画出顶层数据流图和分层数据流图,并给出说明。
第4章软件设计基础
1、什么是软件体系结构?你能说出几种典型的软件体系结构?
2、简述“高内聚低耦合”的含义,并举例说明在软件设计中如何实现“高内聚低耦合”。
3、下面给出一个求实函数方程F(x)在自变量区间[a, b] 中的全部实根的算法。首先阅读此程序,然后(1) 画出消去全部goto语句的结构化程序流程图。
(2) 将它改成N_S图和和PAD图。
(3) 计算该程序的McCabe复杂性度量。
在算法中,a与b是区间[a, b]的两端点值;eps1与eps2是用户要求的求解精度。如果区间中点的函数值的绝对值小于eps1或新的小区间的长度小于eps2,就认为这个中点为根。
float BinRoot ( float a,float b, float eps1, float eps2 ) {
float low= a, high = b,mid,fmid;
float flow = Func(low), fhigh := Func(high);
label L1, L2, L3;//标号说明,给定某些程序地址
if ( flow * fhigh > 0.0 ) {BinRoot = 0;goto L3; }//无实根
L1:mid = (low + high) / 2;fmid = Func(mid);
if ( abs ( fmid ) <= eps1 ) {
L2: BinRoot = mid; goto L3;
}
else if ( high - mid <= eps2 ) goto L2;
else if (flow * fmid > 0.0 ) { low = mid;flow = fmid; goto L1; }
else { high = mid; goto L1 };
L3:
}
4、下面是某个程序的流程图,试分别用N-S图和PAD表示之,并计算McCabe 复杂度。
5. (10分)画出求2010-2510年间闰年程序的N-S图表示PAD图,并计算程序的McCabe复杂度。
6、(10分)有一个短信系统:收发人员负责发送短信给用户和从用户接收短信。短信系统提供的功能需求为:
1)短信发送:填写发送内容,选择发送用户,并指明是否要回执,然后通过(无线终端或短信网关)发送短信。
2)短信接收:从无线终端或短信网关读取短信内容,并显示查看。
请用DFD(数据流图)描绘该短信系统的功能需求,并将DFD转换为软件结构图。
第5章程序设计语言和编码
1、选择程序设计语言的一般准则
2、结构化程序设计特点
3、影响程序效率的因素
第6章软件测试
1、黑盒测试
2、下面是选择排序的程序,其中datalist是数据表,它有两个数据成员:一是元素类型为Element的数组V,另一个是数组大小n。算法中用到两个操作,一是取某数组元素V[i]的关键码操作getKey ( ),一是交换两数组元素内容的操作Swap( )::
void SelectSort ( datalist & list ) {
//对表list.V[0]到list.V[n-1]进行排序, n是表当前长度。
for ( int i = 0; i < list.n-1; i++ ) {
int k = i; //在list.V[i].key到list.V[n-1].key中找具有最小关键码的对象
for ( int j = i+1; j < list.n; j++)
if ( list.V[j].getKey ( ) < list.V[k].getKey ( ) ) k = j; //当前具最小关键码的对象
if ( k != i ) Swap ( list.V[i], list.V[k] ); //交换
}
}
(1) 试画出此程序段的流程图和程序图;
(2) 给出判定覆盖的测试路径;
(3) 设计判定覆盖的测试用例。
3、试分别设计如图所示的程序的语句覆盖、判定覆盖、条件覆盖测试用例。