答案:
(1)用户对“已完成的”软件系统不满意的现象经常发生。
(2)软件规模的增长,带来了它的复杂度的增加,软件故障难以检测。
(3)对于软件开发的成本和进度估计很不准确,大型软件开发费用经常超支,完成时间也经常超期
(4)随着软件规模的增长,软件的可靠性在下降,质量保证也越来越困难
(5)软件的可维护性差
(6)软件通常没有适当的文档
(7)软件开发的生产率提高的速度,远远跟不上计算机应用普及深入的趋势。
(8)软件生产的技术进步缓慢
(9)软件供不应求
2.软件开发的方法有哪些?
传统的软件工程和面向对象的软件工程
3.消除软件危机的途径
要有软件开发的方法和工具,又要有必要的组织管理。软件工程正是从管理和技术两方面研究如何列好地开发和维护软件的一门学科。
4.产生软件危机的原因
1对成本或进度估计不足
2需求分析不够
3质量不过关(通信技术不行)
4不可维护
5没有文档
6开发速度慢
7计算机系统总成本中的比例上升
5.软件工程基本原理
(1)用软件生命周期计划严格管理
(2)坚持进行阶段评审
(3)实行严格的产品控制
(4)采用现代程序设计技术
(5)结果应能清楚地审查
(6)开发小组的人员应该少而精
(7)承认不断改进软件工程实践的必要性
6.软件工程方法学包括哪三个要素
方法、工具和过程。
方法:是完成软件开发的各项任务的技术方法,回答“如何做”的问题;
工具:是为方法的运用提供自动的或半自动的软件支撑环境;
过程:是为了获得高质量的软件所需要完成的一系列任务的框架,它规定
7.为什么传统方法不能彻底消除软件危机
1正确数据调用错误过程(模块、功能)
2错误数据调用正确过程
3设计修改,没有和合作者沟通
4企业(服务、对象)发展
(数据与功能分开存放)
8.为什么面向对象方法能彻底消除软件危机:
以人的思维方式为中心。
9.何为推迟实现的观点?
编码开始的越早,完成所需要的时间反而越长
10.软件工程生命周期模型有哪些:
①传统方法:瀑布模式,快速原型,增量模型,螺旋模型
②面向对象方法:喷泉模型
11.瀑布模型的特点有哪些?
1)阶段间的顺序性和依赖性
2)推迟实现的观点
3)质量保证的观点
12.阶段间的顺序性与依赖性的含义
顺序性有两重含义:第一,只有等前一阶段的工作完成以后,后一阶段的工作才能开始;第二,前一阶段的输出文档,就是后一阶段的输入文档。
依赖性表明:想在后一阶段获得正确的结果,必须在前阶段有正确的输出。
13.与用户通信的技术
(1)访谈
(2)简易的应用规格说明书
(3)软件原型
14.访谈的技术
正式访谈:系统分析员将提出一些事先准备好的具体问题
在非正式访谈:将提出一些可以自由回答的开放性问题,以鼓励被访问的人员表达自己的想法,
15.简易的应用规格说明书基本准则
· 在中立地点举行由开发者和用户双方出席的会议。
· 制定准备会议和参加会议的规则。
· 提出一个议事日程,这个日程应该足够正式以便能够涵盖所有要点,同时这个日程又应该足够非正式,以便鼓励自由思维。
· 由一个“协调人”来主持会议,他既可以是用户也可以是开发者还可以是从外面请来的人。
· 使用一种“定义机制”例如,工作表、图表等)。
· 目标是标识问题、提出解决方案要素、商讨不同的方法以及在有利于实现目标的氛围中指定初步的需求。
16.构建原型的要点是
它应该实现用户看得见的功能(例如屏幕显示或打印报表),省略目标系统的“隐含”功能(例如修改文件)。
17.构建原型的特性
快速,容易修改
18.数据模型包含三种相互关联的信息
数据对象、描述数据对象的属性及数据对象彼此间相互连接的关系。
19.画数据流图的正确做法
·从问题描述中提取数据流图的四种成分。
· 接下来考虑处理
· 最后,考虑数据流和数据存储
20.数据流图有四种成分
源点或终点、处理、数据存储和数据流
21.可行性研究的8个步骤
(1)澄清系统规模和目标
(2)研究现有系统并描绘现有系统的处理过程
(3)导出高层逻辑模型
(4)进一步确定系统规模和目标
(5)导出供选择的解法
(6)推荐最佳方案
(7)草拟开发计划
(8)写出文档提交审查
22.需求分析的任务?
1)通过问题及其环境的理解、分析和综合,建立分析模型
2)在完全弄清用户对软件系统的确切要求的基础上,编写需求规格说明书
23.需求分析的步骤?
1)需求获取
2)需求提炼,分析建模
3)需求描述,编写SRS
4)需求验证
24.加工说明的工具
结构化语言、判定表、判定树和IPO
25.结构化分析的基本步骤是?
由顶向下对系统进行功能分解,画出分层DFD图;由后向前定义系统的数据和加工,编制DD和PSPEC;最终写出SRS。
26.画分层数据流图时应该注意哪几个问题?
1 父图和子图的平衡
2 区分局部文件和局部外部项
3 分解的速度不宜太快
4 遵守加工编号的规则
27.评价一种设计方法的五条标准是什么?
(1) 模块可分解性
(2) 模块可组装性
(3) 模块可理解性
(4) 模块连续性
(5) 模块保护性
28.什么是软件过程?它与软件工程方法学有何关系?
答:软件过程定义了运用技术方法的顺序、应该交付的文档资料、为保证软件质量和协调软件变化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。
软件过程是软件工程方法学的3个重要组成部分之一。
29.什么是里程碑?它应该有哪些特征?
答:里程碑是用来说明项目进展情况的事件。通常把一个开发活动的结束或一个项目开发任务的完成定义为一个里程碑。
里程碑必须与软件开发工作的进展情况密切相关,而且里程碑的完成必须非常明显(也就是说,里程碑应该有很高的可见性)
30.衡量模块性的两个准则是什么?
内聚与耦合
31.内聚按弱到强的排列顺序是
偶然性内聚
逻辑内聚
时间内聚
过程内聚
通信内聚
顺序内聚
功能内聚
32.耦合从弱到强的排列顺序是
非直接耦合
数据耦合
特征耦合
控制耦合
外部耦合
公共耦合
内容耦合
33.模块优化的准则(启发规则)
(1)改进软件结构提高模块的性
(2)模块规模应该适中
(3)深度、宽度、扇出和扇入都应适当
(4)模块的作用域应该在控制域之内
(5)力争降低模块接口的复杂程度
(6)设计单入口单出口的模块
(7)模块功能应该可以预测
34.SD方法的基本步骤是什么?
答:
(1)复审DFD图,必要时可再次进行行修改和细化;
(2)鉴别DFD图所表示的软件系统的结构特征,确定它所代表的软件结构是属于变换型还是事务型;
(3)按照SD方法的规定的一组规则,把DFD图转换为初始的SC图;
(4)按照优化设计的指导原则改进初始的SC图,获得最终的SC图。
35.变换型的一组规则是什么?
答:
(1)化分DFD的边界;
(2)建立初始SC图的框架;
(3)分解SC图的各个分支。
36.事务型的一组规则是什么?
答:
(1)在DFD图上确定事务中心、接受部分和发送部分;
(2)画出SC图框架,把DFD图的3个部分分别映射为事务控制模块、接受模块和动作模块。
(3)分解和细化接受分支和发送分支,完成初始的SC图。
37.保持高扇入/低扇出的原则的含义是?
答:
1)作用域不要超出控制域的范围
2)软件系统的判定,其位置离受它控制的模块越近越好
38.详细设计的目的
答:
答案:是为软件结构图(SC图或HC图)中的每一个模块确定采用的算法和块内的数据结构,用某种选定的表达工具给出清晰的描述。
39.详细设计阶段的主要任务是
答:
(1)为每个模块确定采用的算法。
(2)确定每一模块使用的数据结构
(3)确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及关于模块输入数据、输出数据及局部数据的全部细节。
(4)为每一模块设计出一组测试用例。
40.结构化程序的详细设计方法有哪些?
答案:
1)流程图
2)N-S图
3)判定表
4)判定树
5)PAD图
41.给出测试的分类图
答:
42.对编码风格的要求?
答:
1使用标准的控制结构
2有地使用GOTO语句
3实现源程序的文档化
4满足运行工程学的输入输出风格
43.编码的指导原则?
答:正确可靠,简明清晰,而且具有较高的效率
44.编码的目的?
答:是使用选定的程序设计语言,把模块的过程性描述翻译为用该语言书写的源程序
5为每一模块设计出一组测试用例
45.什么是软件生存周期?它有哪些主要模型?
软件生存周期是描述软件开发过程中各种活动如何执行的过程。
主要的软件生存周期模型有瀑布模型、快速原型、增量模型、螺旋模型、变换模型和净室模型和构件集成模型
工作量相当大的变化。
46.面向对象分析方法中,要建立哪些模型?
类图,用例图,序列图和状态转换图
47.请说明用例图、序列图的关系。类图与状态转换图之间的关系。
用例图中的每个用例,对应一个序列图。有多少个用例就有多少个序列图
每一类图对应一个状态转换图,有多少个类就有多少个状态转换图。
48.面向对象的分析过程中的三个子模型与五个层次是什么?
三个子模型是:对象模型,动态模型和功能模型
五个层次是:主题层,类与对象层,结构层,属性层和服务层
49.面向对象建模技术中所建立的对象模型、动态模型和功能模型,分别从三个不同的测面描述了所要开发的系统,简要回答这三种模型各自的作用是什么?
答:功能模型指明了系统应该“做什么”;动态模型明确规定了什么时候(即在何种状态下接受了什么事件的触发)做;对象模型则定义了做事情的实体。
50.如何从一张事件跟踪图出发画出状态转换图
在事件跟踪图中指向某条竖线的那些箭头线。把这些作为状态图中的有向边(即箭头线),边上标以事件名,两个事件之间的间隔就是一个状态。从事件跟踪图中当前考虑的竖线射出去的箭头线,是这条竖线代表的对象达到某个状态时所做的行为。
51.在概念上面向对象分析大体上按照什么顺序进行:
寻找类—&—对象,识别结构,识别主题,定义属性,建立动态模型,建立功能模型,定义服务。
52.给出从需求陈述中确定类与对象,确定属性与服务的简单分析方法
这种分析方法以用自然语言书写的需求陈述为依据,把陈述中的名词作为类与对象的候选者,用形容词作为确定属性的线索,把动词作为服务(操作)的候选者。
53.筛选类与对象时主要依据哪些标准来删除不正确或不必要的类与对象
(1) 冗余(2) 无关(3) 笼统(4) 属性(5) 操作(6) 实现
54.螺旋模型的特点?
1)瀑布模型+快速原型+风险分析
2)每迭代一次,螺旋线就前进一周