软件危机 软件 软件生产周期 软件过程 黑盒法 实体——练习图(ER图) 编程风格 数据字典 内聚 耦合 内聚 结构化程序设计 继承 继承 类 继承 信息隐藏 α测试 软件可维护性 白盒法 软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件能完:成预定功能和性能,并对相应数据进行加工的程序和描述程序及其操作的文档。 软件过程:软件开发人员为开发和维护软件及相关产品所实施的一系列任务步骤,涉及到方法、工具及人的组织和行为。
软件生存周期:一个软件从定义、开发、使用和维护直到被废弃,要经历的漫长时期被称为软件生存周期。
数据字典:数据字典由数据条目组成,数据字典描述、组织和管理数据流图的数据流、加工、数据源及外部实体。
ER图:描述系统所有数据对象的组成和属性,描述数据对象之间关系的图形语言。 信息隐藏:信息隐藏指的是在设计中确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其它模块来说,是不能访问的。
耦合:指软件系统结构中各模块间相互联系紧密程度的一种度量,耦合的强弱取决于接口的复杂程度。
内聚:是一个模块内部各个元素彼此结合的紧密程度的度量。
结构化程序设计:如果一个程序的代码块仅仅通过顺序,选择和循环这三种基本控制结构进行连接。并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的程序设计
编码风格:是指在不影响程序正确性和效率的前提下,有效编排和合理组织程序的基本原则。 白盒法:白盒测试又称结构测试、逻辑驱动测试或基于程序的测试,把程序看做装在一个透
明的盒子里,测试者完全知道程序结构及处理算法。它依赖于对程序内部细节的严密检验,针对特定条件设计测试用例,对软件的逻辑路径进行测试。检测主要执行通路是否按预定要求工作。
黑盒测试:黑盒测试又称功能测试、数据驱动测试或基于规格说明的测试。它是一种从用户观点出发的测试。用这种方法进行测试时,把被测程序当作一个黑盒,不考虑程序内部结构和特性,测试者只考虑程序输入输出和程序功能,根据需求规格说明书来设计测试用例,推断测试结果的正确性。
α测试 :软件开发公司组织内部人员模拟各类用户行为对即将面试的软件产品进行测试,试图发现错误并修正。
软件可维护性:是指维护人员理解、改正、改动或改进这个软件的难以程度。
类:是指一组具有相同属性和运算的对象的抽象,即一组具有相同数据结构和相同操作的对象的集合。
继承:指的是能够直接获得父类已有的性质和特征而不必重复定义。
简答题
1.简述软件生命周期中总体设计过程应该遵循的基本原理。
答:模块化:模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完
成整个系统所要求的功能。
抽象与逐步求精:抽象是认识复杂现象过程中使用的思维工具,也就是抽出事物本质的共同特性而暂不考虑它的细节,不考虑其他因素。
软件工程实施中的每一步都可以看作是对软件抽象层次的一次细化。
由抽象到具体地分析和构造出软件的层次结构,可以有效地提高软件的可理解性。 逐步求精是为了能集中精力解决主要问题而尽量推迟考虑问题的细节。
信息隐蔽是指在设计中确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其它模块来说,是不能访问的。
信息隐蔽为软件系统的修改、测试及以后的维护都带来好处。如采用局部数据结构,使得大多数过程(即实现细节)和数据对软件的其它部分是隐藏的。 信息隐蔽和局部化可以有效地防止错误的扩大与传播。
模块独立性:模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。
2.简述过程设计语言(PDL)的特点。
① 关键字:采用固定语法,并支持结构化构建数据说明机制和模块化 ② 处理部分采用自然语言描述 ③ 允许说明简单和复杂的数据结构
④ 子程序的定义和调用规则不受具体的接口方式的影响 3.简述软件工程的基本原理。 1.用分阶段的生命周期计划严格管理 2.坚持进行阶段评审,因为错误有放大效应 3.实行严格的产品控制 4.采用现代程序设计技术 5.结果应能清楚地审查 6.开发小组的人员应当少而精
7.承认不断改进软件工程实践的必要性
1.简述软件工程中的瀑布模型及其特点。
第一,各阶段之间有依赖性和严格的顺序性。 第二,推迟实现 第三,严格的阶段质保。 第四,文档驱动
总之1.导致了“阻塞”严重2.实际项目很少严格遵守瀑布模型的顺序3.用户在开始阶段往往不能准确描述自己的需求4.产品出现晚并且在接近尾声时发生重大缺陷 2.需求分析中对系统的综合要求包括哪些方面?
(1)功能性需求 开发软件应该做什么? (2)非功能需求 a.可用性 b.可靠性 c.性能 d.可支持性 e.外部接口需求 f.约束信息(3)出错信息需求 出错时,系统对环境错逆向需求(系统不应该做什么)(4)将来可能提出的需求
3.已知某学校教务管理系统中规定:每个教师(教工号,姓名,性别,职称,职务)可以教多门不同的课程(课程号,课名,学时,学分),每门课程只能由一个老师来教,每个学生(学号,姓名,性别,系,年级)可以学习多门课程并取得成绩,每门课程可以有多个学生学习。
测试 编码 分析 设计 维护 试根据已知条件,画出对应的实体—联系图(E-R图)。
1.什么是模块化?模块化的根据是什么?采用模块化原理的优点是什么?
模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。
开发一个大而复杂的软件系统,应该将它进行适当的分解。这样不但可降低其复杂性,还可减少开发工作量,从而降低开发成本,提高软件生产率,这就是模块的依据。
采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。模块化也有助于提高软件的可靠性。因为程序的错误一般容易出现在相关的模块以及它们之间的接口中,所以模块化使软件容易调试和测试。
2.研究软件工程项目的可行性应从哪几个方面分析? 1.技术可行性
技术可行性研究的内容是对于要开发项目的功能、性能和限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目能否实现 2.经济可行性
经济可行性研究的内容是进行开发成本的估算以及进行效益的评估确定要开发的项目是否值得投资开发。 3.操作可行性
在这个应用范围内,系统的操作方式是否行得通。 4.社会可行性
社会可行性主要研究开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质和操作方式是否可行,这些即是社会可行性研究的内容。