1、软件危机:在计算机软件的开发和维护的过成功所遇到的一系列验证问题。
2、软件工程:软件工程师指导计算机软件开发和维护的一门工程学科。采用工程概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效的维护它,这就是软件工程。
3、简答题----软件工程具有的本质特性: 1软件工程关注于大型的程序的制造 2软件工程的中心课题是控制复杂性 3软件经常变化
4开发软件的效率非常低
5和谐地合作是开发软件的关键 6软件必须有效的支持它的用户
7在软件工程领域中通常由一种文化背景的人替具有另一种文化背景的人创造产品 4、简答题-----软件工程的基本原理: 1用分几段的生命周期计划严格管理 2坚持进行阶段审核 3实行严格的产品控制 4采用现代化程序设计技术 5结构应能清楚的审查
6开发小组的人员应尽量少而精 7承认不该进软件工程实践的必要性
5、填空----软件工程方法学:传统方法学和面向对象方法学------(三要素:方法、工具、过程)
6、软件工程生命周期:由软件定义、软件开发和运行维护3时期组成,每一个时期又进一步划分为若干个阶段。
定义时期(问题定义、可行性研究、需求分析)
开发时期(总体设计、详细设计、编码和单元测试、综合测试) 软件维护
7、软件过程:为了获得高质量软件所需要完成的一些列任务的框架,它规定了完成各项任务的工作步骤
8、从哪几个方面研究目标系统的可行性:技术可行性、经济可行性、操作可行性、法律、社会效益等
9、可行性研究的过程: 1复查系统规模的目标 2研究目前正在使用的系统 3导出新系统的搞层次逻辑模型 4进一步定义问题
5导出和评价供选择的解法 6推荐行动方针 7草拟开发计划 8书写文档提交审查
10、概念-----数据流图:DFD---是一种图形化技术,它描绘信息流和数据流从输入移动到书城的过程中所经受的变换
11、定义----数据字典:数据流;数据流分量(即数据元素);数据存储;处理
12、定义数据符号的方法:
标示符=字母字符+字母数字串 字母数字串=0{字母或数字}7
字母或数字=[字母字符|数字字符]
13、经济效益通常表现为减少运行费用或(和)增加收入 14、投资回收期(P52)
15、需求分析方法应该遵循的准则:
1必须理解并描述问题的信息域,根据这条准则应该建立数据模型(实体——联系图) 2必须定义软件应完成的功能,这条准则要求建立功能模型(DFD)
3必须描述作为外部事件结构的软件行为,这条准则要求建立行为模型(状态转换图) 4必须对描述信息,功能和行为的模型进行分析,用层次的方法展示细节 16需求分析的任务: 1确定对系统综合要求 2分析系统的数据要求 3导出系统的逻辑模型 4修正系统开发计划
16、确定对系统的综合要求: 1功能需求 2性能需求
3可靠性和可用性需求 4出错处理需求 5接口需求 6约束 7逆向需求
8将来可能提出的要求
17、状态转换图(简称状态图):是一种图形化技术,通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。——还要会画 18、从哪些方面来验证软件需求的正确性:
1一致性 所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾
2完整性 需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能 3现实性 指定的需求应该是用现实的硬件技术和软件技术基本上可以实现的,对硬件的技术进步可以做哪些预测,对软件技术进步则很难做出预测,只能从现有的技术水平出发判断需求的现实性
4有效性 必须证明需求是正确有效的,却是能结局用户面对的问题
19、多数人习惯使用实体—联系图建立数据模型,使用数据流图建立功能模型,使用状态图建立行为模型
20、典型的总体设计的过程:
1设想供选择的方案 2选取合理的方案 3推荐最佳的方案 4功能分解 5设计软件结构 6设计数据库 7制定测试计划
8书写文档 9审查和复查
21、模块化的概念:就是程序划分成独立命名且可以独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求 22、耦合:衡量不同模块彼此之间互相依赖的紧密程度
内聚:衡量一个模块内部各个元素彼此结合的紧密度 模块独立程度可以由两个定性标准衡量:内聚和耦合 23、模块的作用域(定义):受该模块内一个判定影响的所有模块的集合,
模块的控制域:这个模块本身以及所有直接或间接从属于它的模块的集合 24、变换分析(概念):一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流图按预先确定的模式映射成软件结构 25、设计的步骤
第一步:复查基本系统模型 第二步:复查并精化数据流图
第三步:确定数据流图具有变换特性还是事务特性
第四步:确定输入流和输出流的边界,从而孤立出变换中心 第五步:完成“第一级分解” 第六步:完成“第二级分解”
第七步:使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化
26、设计人机界面遇到的问题:系统响应时间、用户帮助设施、出错信息处理和命令交互 27、通常把编码和测试统称为实现 28、测试的目标或定义:
1测试时为了发现程序中的错误而执行程序的过程
2好的测试方案是极可能发现迄今为止尚未发现错误的测试方案 3成功的测试时发现了至今为止尚未发现的错误的测试 29、软件测试的规则:
1所以测试都应该追溯到用户的需求
2应该远在测试开始之前就制定出测试计划 3把Pareto原理应用到软件测试中
4应该从“小规模”测试开始,并逐步进行“大规模”测试 5穷举测试时不可能的
6为了达到测试的效果,应该由独立的第三方从事测试工作 30、测试的步骤:
1模块测试 2子系统测试
3系统测试 4验收测试 5平行运行 31、单元测试主要使用白盒测试技术 32、不同集成测试策略的比较:
自顶向下测试方法主要优点是不需要测试驱动程序,能够在测试阶段的早起实现并验证系统的主要功能,而且能在早期发现上层模块的接口错误。自顶向下测试方法的主要缺点就是需要存根程序,可能遇到与此相联系的测试困难,底层关键模块中的错误发现较晚,而且用这种方法在早期不能充分展开人力。可以看出,自底向上测试方法的优缺点跟自顶向下测试方法优缺点正好相反。
33、Alpha测试:由用户在开发者的场所进行,并且在开发者对用户的“指导”下测试。开
发者负责记录发现的错误和使用中遇到的问题
Beta测试:由软件的最终用户们在一个或多个客户场所进行。用户定期把这些问题报告给开发者看。
34、等价划分:是一种黑盒测试技术,这种技术把程序的输入域划分为若干个数据类,据此导出测试用例
35、软件的可靠性:程序在给定时间间隔内,按照规格说明书的规定成功地运行的概率
软件的可用性:程序在给定的时间点,按照规格说明书的规定,成功的运行的概率 36、软件维护的4个活动:改正性维护、适应性维护、完善性维护、预防性维护 37、决定软件可维护性的因素:
1可理解性 2可测试性 3可修改性 4可移植性 5可重用性
38、软件再造工程的过程: 1存库目录分析 2文档重构 3逆向工程 4代码重构 5数据重构 6正向工程
39、面向对象方法学的优点:
1与人类习惯的思维方法一致 2稳定性好 3可重用性
4较易开发大型软件产品 5可维护性好 40、对象的特点:
1以数据位中心 2对象是主动的 3实现了数据封装
4本质上具有并发性 5模块独立性好 41、3个子模型与5个层次:
对象模型、功能模型、动态模型
主题层、类与对象层、结构层、属性层、服务层 几乎解决任何一个问题,都需要从客观世界实体及实体间的相互关系抽象出有价值的对象模型;当问题设计交互作用和时序时,动态模型也是非常重要的;解决运算量很到的问题,则设涉及重要的功能模型。
42、脚本:指系统在某一执行期间内出现的一系列事件。脚本描述用户与目标系统之间的一个或多个典型的交互过程,以便对目标系统的行为有更具体的认识。编写脚本的目的是保证不遗漏重要的交互步骤,它有助于确保整个交互过程的正确性和清晰性。 43、面向对象的尊则:
1模块化 2抽象
3信息隐藏 4弱耦合 5强内聚 6可重用性
44、类结构的重用方式:
实例重用:由于类的封装性,使用者无须了解实现细节就可以使用适当的构造函数,安装需要创建的实。然后向所创建的实例发送适当的消息,启动相应的服务,完成需要完成的工作。这是最基本的重用方式。此外,还可以用几个简单的对象作为类的成员创建出一个更复杂的类,这是类实例重用的另一种形式。
继承重用:面向对象方法特有的继承性提供了一种对已有的类构件进行裁剪的机制。当已有的类构件不能通过实例重用完全满足的当前系统需求时,继承重用提供了一种安全地修改已有构件,以便在当前系统中重用的手段。
为了提高继承重用的效果,关键是设计一个合理的,具有一定深度的类构件继承层次结构。
多态重用:
利用多态性不仅可以使对象的对外接口更加一般化,从而降低了消息连接的复杂程度,而且还提供了一种简便可靠的软构件组合机制。系统运行时,根据接收消息的对象类型,由多态性机制启动正确的方法,去响应一般化的消息,从而简化了消息界面和软件连接过程 45、委托:把一类对象作为林一类对象的属性,从而在两类对象间建立组合关系 46、面向对象语言的技术特点: 1支持类与对象概念的机制
2实现——整体部分(即聚集)结构的机制 3实现一般化——特殊(即泛华)结构的机制 4实现属性和服务的机制 5类型检查 6类库 7类率
8持久保存对象
9参数化类 10 开发环境 47、面向对象的测试策略: 基于线程的测试,这种策略把响应系统的一个输入或一个事件所需要的那些类集成起来。分别集成并测试没个线程,同时应用回归测试以保证没有产生副作用。
基于使用的测试:这种方法首先测试几乎不使用服务器类的那些类(称为独立类),把独立类都测试完之后,在测试使用独立类的下一个层次的类(依赖类)。对依赖类的测试一个层次一个层次地持续下去,直至把整个软件系统构造完为止
48、软件质量:软件与明确地和隐含地定义的需求相一致的程度。更具体的说,软件质量是软件与明确地叙述的功能和性能需求,文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度
北京某高校可用的电话号码由以下几类:校内电话号码由4位数 组成,第一位数字不是零;校外电话又分为本市电话和外地电话两类,拨校外电话先拨0,若是本地电话再接着拨8位数字(固定第一位不是0)或11位数字(移动电话第一位1)。若是外地电话,则3位区码再拨8位电话号码(固定第一位不是0),
软件工程导论



