第一章
1.软件的定义
①运行时,能提供所要求功能和性能的指令(Instruction) 或计算机程序(Program)集合。
②程序能满意地处理信息的数据逻辑(data structure)。
③程序能满意地按照预定的商业逻辑进行处理。
④描述程序功能需求以及程序如何操作和使用所要求的文档(Documents).
2.软件危机定义及产生原因
定义:在计算机软件开发和维护过程中所遇到的一系列严重问题。概括地讲:
①怎样满足对软件日益增长的需求(即如何开发软件)
②如何维护数量不断膨胀的已有软件
产生原因:一方面与软件本身的特点有关。一方面与软件开发与维护的方法不正确有关。
①忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护等。事实上,对用户要求没有完整准确的认识,匆忙着手编写程序是许多软件开发工程失败的主要原因。
②忽视软件文档的重要性,认为文档可有可无,到后期更新及修改无法有效地进行,重复大量人力物力。
3.软件生命周期(软件开发过程分为哪几个阶段以及每个阶段完成的工作)
(1)问题定义
“要解决的问题什麽?”在问题定义阶段应提出:
①问题性质报告②工程目标和规模报告③对系统的实际用户和使用部门进行访问调查,澄清含糊不清的地方后得到双方满意的文档。
(2)可行性研究
该阶段关键问题“对于上一个阶段所确定的问题有行得通的解决办法”
可行性研究阶段应该导出系统的高层逻辑模型(通常用数据流程图)并且在此基础上更准确、更具体的确定工程规模和目标,然后分析员更准确的估计系统成本和效益,对建议的系统进行仔细的成本/效益分析。
该阶段实际上是一个工程的核心阶段,对双方都是讨价还价的心理战,直接关系到整个系统研发的成本与利益。
(3)需求分析
解决的问题“为解决问题,目标系统必须做什麽?”
系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。通常用数据流程图,数据字典和简要的算法表示系统的逻辑模型。
需求分析阶段必须交出完整准确的系统逻辑模型经用户确认后,再进入下一个阶段,应防止和克服急于着手进行具体设计。
(4)总体设计
“应该如何解决这个问题?”,应考虑几种可能的解决方案:
①低成本的解决方案
系统只能完成最少必要的工作,不做额外工作。
②中等成本的解决方案
除很好地完成预定的任务,使用方便,而且还有附加的额外功能。
③高成本的“十全十美”的系统
该系统具有用户可能希望有的所有功能和特点。
(5)详细设计
总体设计以比较抽象概括的方式提出了解决问题的办法,详细设计的任务是把解法具体化。具体的任务是设计出程序的详细规格说明,通常用HIPO图(层次图加输入/处理/输出图)或PDL语言(过程设计语言)描述详细设计结果。
(6)编码和单元测试
程序员根据系统要求,选定开发平台把详细设计的结果翻译成选定的语言书写程序,并仔细测试编写的每个模块。
(7)综合测试
通过各种类型的测试使软件达到预定的要求。
(8)软件维护
①改正性维护②适应性维护③完善性维护④预防性维护
4.生存周期模型有几种
①软件生存期的瀑布模型②快速原型模型③螺旋模型
5.软件项目工程包含的工作(软件开发、软件管理)
第二章
1.可行性研究的任务与分类
可行性研究的目的就是用最小代价在尽可能短的时间内确定问题是否能够解决。
分类:①技术可行性②经济可行性③操作可行性
2.数据流图的概念和表示符号的含义,会分析数据流图
概念: 数据流图描绘系统的逻辑模型,图中没有物理元素,只是描绘信息在系统中流动和处理情况。该图只需考虑系统必须完成的基本逻辑功能,不需要考虑如何具体实现。
符号的含义:(*)号表示数据流之间是“与”的关系。(+)号表示数据流之间是“或”的关系。(⊕)号表示只能从中选一个(互斥)的关系。
3.数据字典的定义和任务
定义:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。任务:对于数据流图中出现的所有命名元素,包括数据流,加工,数据文件,以及数据的源,终点等,在数据字典中作为一个词条加以定义,假设的每一个图形元素的名字都有一个确切的解释。
第三章
1.需求分析的任务
①确定对系统的综合要求②分析系统的数据要求③导出系统的逻辑模型④修改系统的开发计划
2.结构化分析方法的工具(需求分析的工具)有哪些
①一般工具:DFD、数据字典、结构化英语、判定表、判定树等。②功能分析工具:DFD、DD、结构化英语、判定表和判定树。③行为分析工具:状态迁移图、Petri网等。④数据分析工具:ER图或者EER(扩展ER)图。
3.软件需求规格说明应包含哪些内容
4.项目管理的定义
定义:在一个确定的时间范围内,为了完成一个既定的目标,并通过特殊形式的临时性组织运行机制,通过有效的计划、组织、领导与控制,充分利用既定有限资源的一种系统管理方法。
第四章
1.形式化技术的分类
(1)根据说明目标软件系统的方式,形式化方法可以分为两类:
①面向模型的形式化方法②面向属性的形式化方法
(2)根据表达能力,形式化方法可以分为五类:
①基于模型的方法②基于逻辑的方法③代数方法④过程代数方法⑤基于网络的方法
2.了解有穷状态机、Petri网、Z语言进行格式化描述
第五章
1.总体设计的任务(概要设计)
2.总体设计过程及使用的工具
首先寻找实现目标系统的各种不同的方案,需求分析阶段得到的数据流图是设想各种可能方案的基础。总体设计又称为概要设计或初步设计,通过这个阶段的工作将划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等。
3.内聚、耦合的定义及其与模块独立性的关系
耦合:它是衡量不同模块彼此间互相依赖的紧密程度。
内聚:它是衡量一个模块内部各个元素彼此结合的紧密程度。
4.数据流图到程序结构图的转换
5.从工程管理的角度来看,软件设计分为哪两步完成
①概要设计,将软件需求转化为数据结构和软件的系统结构。
②详细设计,即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。
6.深度、宽度、扇入和扇出的概念
深度:软件结构中的控制层数。
宽度:同一层上模块总数的最大值。
扇出:一个模块直接控制(调用)的模块数目。
扇入:一个模块有多少个上级模块调用它。
第六章
1.结构程序设计定义、基本结构(程序的三种基本结构)
定义:结构程序设计是一种设计程序的技术,它采用自上向下逐步求精的设计方法和单入口单出口的控制结构。
结构:顺序、分支、循环
2.根据程序流程图画出盒图、PAD图
3.程序环形复杂度的计算
4.软件详细设计过程使用的工具
第七章
1.程序注释分类
2.软件测试概念和目的
3.软件测试的白盒测试的概念及其覆盖技术分类
4.软件测试的等价划分
5.设计测试用例的步骤
6.根据流程图给出各种覆盖测试用例和覆盖路径
7.软件测试原则
8.编码的效率原则
第八章
1.维护的分类、定义以及提高可维护性的方法有哪些
2.维护的副作用、出现的阶段
3.度量软件可维护性的方法
4.软件文档的作用和分类
5.软件开发项目生存期各阶段所包含的文档
第九章
1.理解类、对象的概念
2.面向对象方法的优点
3.类之间的几种关系,会用UML画类图和类关系图
4.面向对象建模技术所建立的三种模型,每种模型描述工具
5.面向对象的主要特征(多态、继承、封装)
6.UML中建立的模型有哪些(写出名称)
补充内容
软件测试的等价划分(教材第七章)
什么是软件配置项
软件生存周期各阶段活动的产物经审批之后称为软件配置项,包括:
①与合同、过程、计划和产品有关的文档和材料
②源代码、目标代码和可执行代码
③相关产品,包括软件工具、库内的可重用软件、外购软件及顾客提供的软件等
什么是软件配置管理
在软件的整个生命周期内管理变化的活动,这组活动用来:
①标识变化②控制变化③保证变化被适当的发现④向可能有兴趣的人员报告变化
|