1.什么是软件?软件按功能划分可划分哪几类?
答:软件是计算机系统中和硬件相互依存的另一部分,包括程序数据和文档的完整集合。
软件可以分为系统软件、支撑软件、应用软件、可复用软件
2.什么是软件危机?软件危机的表现是什么?其产生原因是什么?
答:软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
软件危机的表现主要包括:
-
项目超时或超预算
-
质量低下,无法满足需求
-
可维护性差,维护成本高
-
软件缺陷频繁出现
-
安全漏洞存在
软件危机的产生原因主要包括:
-
软件复杂度的不断提高
-
软件开发需求变化频繁
-
工程化的软件开发方法不够成熟
-
缺乏良好的软件工程规范和流程
-
技术人员的专业素质参差不齐
-
缺乏有效的沟通和协作机制
3.什么是软件生存周期?把软件生存周期划分为阶段的目的是什么?
一个软件从开始计划起到废弃不用止称为软件的生存周期
把整个生命周期划分为多个阶段,给每个阶段赋予确定而有限的任务能够简化每一步的工作内容
使用因为软件规模增长而大大增加了的软件复杂性变得较易控制和管理
4.软件生命周期一般划分为几个阶段?
一般可分为可行性分析阶段、需求分析阶段、软件设计阶段、软件编码阶段、软件测试阶段、软件维护阶段
5.软件过程模型有哪些?它们的特点是什么?
一、瀑布模型 特点:简单、分阶段、阶段间存在因果关系,各阶段完成后都有评审,允许反馈 ,不支持用户参与要求预先确定需求。
二、快速原型模型 特点:不要求需求预先完备定义,支持用户参与,支持需求的渐进式完善和确认,能够适应用户需求的变化。
三、增量模型 特点:软件产品是被增量式的一块块开发的,允许开发活动并行和重叠。
四、迭代模型 特点:不要求一次性的开发出完整的软件系统,将软件开发是为一个逐步获取用户需求 完善软件产品的过程
五、螺旋模型 特点:结合瀑布模型、快速原型模型、增量模型和迭代模型的思想,【应引进了风险分析活动】
六、统一过程模型 特点:可以改造拓展和裁减,可以对它进行设计开发维护和发布 强调迭代开发
6.可行性研究的目的是什么?可以从哪些方面来考虑软件开发的可行性?
可行性研究的目的就是用最小的代价在尽可能短的时间内确定为题是否能够解决。
可以从四个方面考虑:经济可行性、技术可行性、社会(法律)可行性、操作可行性
7.简述需求分析工作可以分成哪四个方面?软件需求分析的基本原则有哪些?
软件需求分析阶段的工作分为以下四个方面:
问题识别、分析与建模、需求描述和规格说明、需求确认和评审
原则:1.能够表达和理解问题的信息域。2.建立描述系统信息功能和行为的模型
3.能够对所建模型按一定形式进行分解 4.分清系统的逻辑视图和物理视图
8.设计用户调查问卷的基本原则有哪些?(至少说出四条)
1.调查问卷不是考试,不适合安排问答题
2.无论网上还是线下,作答时间不要超过十分钟
3.开篇一般放一些简单的不需要思考的问题
4.需要思考的较为敏感的问题一般放中间
5.有关被访者的信息一般放在最后
6.尽可能的覆盖目标群体中的各种类型用户且比例合适
9.为什么要设计高内聚 低耦合的模块?
高内聚低耦合的系统具有更好的重用性、维护性、拓展性
可以更高效的完成系统的维护开发 持续的支持业务的发展,而不会成为业务发展的障碍
10.人机交互设计的基本原则有哪些?
1.一致性:含有一致的术语、一致的步骤、一致的活动
2.操作步骤尽量少
3.给用户操作足够的提示
4.提供恢复和撤销操作的功能
5.减少用户的记忆负担
6.减少用户学习使用系统的成本
11.面向对象方法学的有点有哪些?
1.与人类习惯的思维方法一致
2.具有较高的稳定性
3.可重用性好
4.适合开发大型软件
5.易拓展 可维护性好
12.简述面向对象程序设计的原则有哪些?(至少说出四条)
1.单一职责原则
2.开闭原则
3.里氏替换原则
4.接口合理原则
5.依赖倒置原则
6.迪米特原则
13.UML图中的活动图、状态基图、顺序图的各自特点是什么?
顺序图特点:1.强调角色之间的交互,信息传递很明确
2.强调按时间先后顺序发生了什么事情
3.不太适合表达复杂的流程
活动图特点:1.强调每个角色做了什么事以及事情的先后关系
2.适合表达各种特殊流程如分支循环
状态图特点:侧重于表述对象的状态 常用于状态较多的业务对象
14.软件测试的基本任务是什么?
软件测试的基本任务:1.制定编写软件测试方案与计划
2.编写测试文档,测试报告,提交测试结果
3.测试环境的设计,设置。完善测试规范流程 ,创建和维护测试用例
4.改进软件测试流程工具和质量
15.说明软件测试和调试有何区别?
1.性质不同:软件测试是用来促进、鉴定软件的正确性、完整性、安全性和质量的过程
软件调试泛指重现软件故障,定位故障根源并最终解决软件问题的过程
2.目的不同:测试人员是发现程序中的缺陷,调试的任务是定位并解决程序中的问题
3.参与者不同:测试主要是由测试人员和开发人员来执行
黑盒测试主要四测试人员完成 单元/集成测试主要是由开发人员执行
调试是由开发人员完成
4.执行阶段不同:测试贯穿整个软件开发的生命周期
测试一般在开发阶段
16.软件测试包括哪些步骤?说明这些步骤的测试对象是什么?
1.单元测试:测试对象为单元模块
2.集成测试:测试对象为组装后的程序模块
3.确认测试:测试对象为可运行的目标软件系统
4.系统测试:测试对象为计算机系统的各组成部分
17.什么是白盒测试?什么是黑盒测试?
白盒测试又叫结构测试主要用于单元测试阶段
它的前提是可以把程序看成装在一个透明的白箱子里
测试者完全知道程序的结构和处理算法
这种方法按照程序内部逻辑设计测试用例 检测程序的主要执行通路是否能够按预定要求正常工作
黑盒测试又叫功能测试,主要用于集成测试和确认测试阶段
它把软件看作一个不透明的黑箱子,完全不考虑或不了解软件内部结构和处理算法
它只检查软件功能是否能按照软件需说明书的要求正常使用
软件是能够适当的接收输入数据,并产生正确的输出信息
软件运行过程中,能否保证外部信息(如文章和数据库的完整性)
18.哪些测试用例设计方法属于白盒测试?
常用的技术是逻辑覆盖,即考察用测试数据运行被测程序时,对程序的逻辑覆盖程度
主要的覆盖标准有【】:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、组合条件覆盖、路径覆盖
19.哪些测试用例设计方法属于黑盒测试?
等价类划分‘边界值分析、错误推测和因果图
20.什么是软件维护?软件维护可以分为哪几类?
软件维护是之软件发布后在其生命周期内对软件进行修改、优化、拓展等工作的过程
软件维护通常包括四个方面:
1.纠正性维护2.适应性维护3.完善性维护4.预防性维护
21.使用NS图描述排序算法
22.使用PAD图描述排序算法
23.简述为什么要使用版本管理工具对源代码进行版本管理?常用的源代码版本管理工具有哪些?
使用版本管理工具有诸多好处:1.可以作为数据备份2.可以避免代码版本管理混乱
3.可以提高代码质量4.可以提高团队协同开发时的效率5.可以明确团队分工职责
6.可以追溯项目中所有内容的变化
常用的源代码管理工具有:git、svv、gitte、github
24.简述软件定义、软件开发和运行维护每个阶段里程碑的提交物是什么?
可行性研究阶段 提交物:可行性分析报告
需求分析阶段 提交物:需求规格说明书
系统设计阶段 提交物:软件概要设计和详细设计说明书
软件编码阶段 提交物:软件项目技术文档(源代码清单)
测试阶段 提交物:测试报告
软件维护阶段 提交物:软件维护说明书
25.简述文档在软件工程中的作用
1.提高软件开发过程的能见度
2.实现对软件开发的工程管理
3.提高开发效率
4.作为开发人员,在一定阶段的工作成果和结束标志
5.提供软件运行、维护和培训有关资料
6.记录开发过程中有关信息,便于协调以后的软件开发的使用和维护
7.便于用户了解软件功能性能
26.作为软件人,你该如何为中华民族伟大复兴做出贡献
1.热爱祖国、热爱人民、拥护中国共产党的领导,积极相应党的号召
2.兢兢业业,做好本职工作
3.弘扬艰苦奋斗精神和民族精神
4.现代国与国的比拼是科学技术的比拼,作为软件人要勇于创新解决外国对我国信息技术卡脖子问题
5.遵纪守法,不做危害国家安全,违反公序良俗
27.在软件编码过程中,如何提高代码的可阅读性
1.做好注释和文档
2.保持缩进风格一致
3.保持命名规则一致
4.避免嵌套层数过深
5.控制每行的长度
6.使用模块化开发合理的封装代码模块
28.根据E-R图,设计数据库表
29.git命令:把代码提交本地仓储、把代码提交到远程仓储、把代码从远程仓储上拉取下来
1.把代码提交本地仓储
git commit --all -m
2.把代码提交到远程仓储
git push origin master
3.把代码从远程仓储上拉取下来
git pull origin master
30.为什么使用边界值测试
答案: 经过长期的测试工作经验表明,在输入域边界或边界附近常常会发现大量缺陷。