1、题型1、 名词解释2、 问答题3、 应用题(看图题,分析题,计算题)知识点:1、 什么是软件及软件特点,软件的分类软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合软件的特点(1)软件是一种逻辑实体。(2)软件的开发,是人的智力的高度发挥,而不是传统意义上的硬件制造。(3)软件维护与硬件的维修有着本质的差别。(4)软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。(5)软件的开发至今尚未完全摆脱手工艺的开发方式,使软件的开发效率受到很大限制。(6)软件的开发是一个复杂的过程。(7)软件的成本非常高昂软件的分类 1.基于软件功能的划分
2、系统软应用软件 支撑软件 2.基于软件工作方式的划分 实时处理软件 分时软件 交互式软件 批处理软件 2、 什么是软件危机,起因一方面软件十分复杂,价格昂贵,供需差日益增大,另一方面软件开发时又常常受挫,质量差,指定的进度表和完成日期很少能按时实现,研制过程很难管理,即软件的研制往往失去控制。我们称软件开发和维护过程中所中遇到的这一系列严重问题为软件危机。软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。3、 什么是软件工程,它的基本目标,要素,原则(1)软件工程是指研究软件生产的一门学科,也就是将完善的工程原理应用于经济地生产既可靠又能在
3、实际机器上有效运行的软件。(2)软件工程学研究的基本目标是:定义良好的方法学,面向计划,开发维护整个软件生存周期的方法学;确定的软件成分,记录软件生存周期每一步的软件文件资料,按步显示轨迹;可预测的结果,在生存周期中,每隔一定时间可以进行复审(3)软件工程的原则:分解;抽象和信息隐蔽;一致性;确定性4、 什么是软件生命周期,每个阶段的意义理解如同任何其他事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程,一般称之为计算机软件的生命周期。1软件定义时期 (1)问题定义:这是软件生存期的第一个阶段,主要任务是弄清用户要计算机解决的问题是什么。(2)可行性研究:任务是为前一阶段提出的问题寻
4、求一种至数种在技术上可行、且在经济上有较高效益的解决方案。2软件开发时期 (1)需求分析:弄清用户对软件系统的全部需求,主要是确定目标系统必须具备哪些功能。(2)总体设计:设计软件的结构,即确定程序由哪些模块组成以及模块间的关系。(3)详细设计:针对单个模块的设计。(4)编码:按照选定的语言,把模块的过程性描述翻译为源程序。(5)测试:通过各种类型的测试(及相应的调试)使软件达到预定的要求。3软件运行时期 是软件生存周期的最后一个时期。软件人员在这一时期的工作,主要是做好软件维护。维护的目的,是使软件在整个生存周期内保证满足用户的需求和延长软件的使用寿命。5、 瀑布开发模型和原型法的理解瀑布模
5、型:将软件生存周期的各项活动规定为依照固定顺序连接的若干阶段工作,形如瀑布流水,最终得到软件产品。原型模型:从需求分析开始,软件开发者和用户在一起定义软件的总目标,说明需求,并规划出定义的区域。然后快速设计软件中对用户可见部分的表示,快速设计导致了原型的建设,原型由用户评估,并进一步求精待开发软件的需求。逐步调整原型使之满足用户的需求,这是一个迭代的过程。原型模型的优点l 原型法在得到良好的需求定义上比传统生存周期法好得多,不仅可以处理模糊需求,而且开发者和用户可充分通信l 原型法可作为培训环境,有利于用户培训和开发同步,开发过程也是学习过程l 用户有机会更改原先设想的,不合理的系统 l 可以
6、低l 使总的开发费用降低,时间缩短风险开发柔性较大的计算机系统l 开发的系统更易维护,对用户更友好6、 可行性研究的任务,它的研究内容,它的实施步骤可行性研究的任务是用最小的代价、在尽可能短的时间内确定问题是否能够解决。在澄清了问题定义之后,分析员首先应该导出系统的逻辑模型,然后从系统逻辑模型出发,探索出若干种可供选择的主要解法(即系统实现方案)。最后仔细研究每种解法的可行性。一般说来,研究可行性应该从下述几方面进行:(1)技术可行性:指使用现有的技术能否完成这个项目。a. 风险分析:在给定范围内,能否设计出系统,实现必要的功能和性能b. 资源分析:开发人员是否能胜任,硬件软件资源是否具备c.
7、 技术分析 :相关技术的发展是否支持这个系统(2)经济可行性:指通过对软件开发项目进行成本/效益估计,以确定软件系统可能带来的经济效益能否超过研制和维护此系统所需的费用。(3)法律可行性:研究系统开发过程中可能涉及的各种合同、侵权、责任及各种与法律相抵触的问题(4)运行可行性:新系统规定的运行方式是否可行可行性研究的步骤(1)复查系统规模和目标(2)研究目前正在使用的系统(3)导出新系统的高层逻辑模型(4)重新定义问题(5)导出和评价供选择的方案(6)推荐方案和行动方针(7)草拟开发计划(8)书写文档、提交审查7、 理解系统流程图中的图案,理解系统的工作过程表2.1 系统流程图的基本符号符号名
8、称说明处理能改变数据值或数据位置的加工或部件输入/输出表示输入或输出(或既输入又输出),是一个广义的不指明具体设备的符号连接指出转到图的另一部分或从图的另一部分转来,通常在同一页上换页连接指出转到另一页图上或由另一页图转来人工操作由人工完成处理数据流用来连接其他符号,指明数据流动方向8、 成本/效益分析的目的,成本估计的三个方法的原理和特点成本/效益分析的目的,是从经济角度评价开发一个新项目是否可行、是否划算,从而帮助使用部门的负责人正确地作出是否投资于这项开发的决定。 成本估计 1)自顶向下成本估计: 该方法着眼于软件整体,根据项目的整体特征,依靠以前的经验,将项目与以往的软件“类比”,估计
9、新的开发所需的工作量和成本 缺点:某些局部问题和特殊困难容易低估,甚至没有考虑到。如果开发的项目没有借鉴的经验,容易造成较大的误差2). 自底向上成本估计该方法是从各个任务单元开始估计成本,汇合成项目的总成本。由于任务单元的成本交给任务的开发人员估计,所以比较实际,但往往只注意到自己的范围内的工作,对综合测试和质量管理的费用估计不足,甚至完全忽视3). 算法模型估计9、 货币的时间价值,投资回收期和纯收入货币的时间价值货币的时间价值通常用利率的形式表示。假设年利率为i,如果现在存入P元,则n年后可以得到的钱数为: FP(1十i)n这也就是P元钱在n年后的价值。反之,如果n年后能收入F元钱,那么
10、这些钱的现在的价值是: PF (1十i)n投资回收期所谓投资回收期就是使累计的经济效益等于最初投资所需要的时间。显然,投资回收期越短就能越快获得利润,这项工程也就越值得投资。纯收入纯收入就是在整个生命周期之内系统累计经济效益(折合成现在值)与投资之差。这相当于比较投资开发一个软件系统和把钱存在银行中(或贷给其他企业)这两种方案的优劣。10、 需求分析阶段的任务和重要性需求分析的任务就是准确地回答“系统必须做什么?”这个问题,是通过系统分析员与用户一起商定,清晰、准确、具体地描述软件产品必须具有的功能、性能、运行规格等要求。软件需求分析阶段的目的是澄清用户的要求,并把双方共同的理解明确地表达成一
11、份书面文档软件需求规格说明书。重要性:软件开发的基础和前提最终目标软件系统验收的标准避免或者尽早剔除早期的错误11、 深入的调查研究的方法:观察,收集现有资料,访谈和调查问卷的比较分析访谈o 优点1. 可获得最直接的资料来源2. 可直接向用户确认需求3. 可增进对用户的了解o 缺点1. 费时且成本又高2. 影响受访者工作的进行3. 不适用于大量人员的信息搜索12、 什么是数据流程图,根据系统的要求,规范的制作数据流程图数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。数据流图的基本图形元素(1)数据流:是一组数据。在数据流图中数据流用带箭头的线表示,在其线旁标注
12、数据流名。(2)加工:是对数据流执行的某种操作或变换。在数据流图中加工用圆圈表示,在圆圈内写上加工名。(3)文件:是按照某种规则组织起来的、长度不限的数据。在数据流图中文件用一直线表示,在线段旁注上文件名。(4)数据流的源点和终点:在数据流图中用方框表示,在框内写上相应的名称。由外向里画数据流图的步骤(1)确定系统的输入输出:由于系统究竟包括哪些功能可能一时难于弄清楚,可使范围尽量大一些,把可能有的内容全部都包括进去。此时,应该向用户了解“系统从外界接受什么数据”、“系统向外界送出什么数据”等信息,然后,根据用户的答复画出数据流图的外围(2)由外向里画系统的顶层数据流图首先,将系统的输人数据和
13、输出数据用一连串的加工连接起来。在数据流的值发生变化的地方就是一个加工。接着,给各个加工命名。然后,给加工之间的数据命名。最后,给文件命名。(3)自顶向下逐层分解,绘出分层数据流图对于大型的系统,为了控制复杂性,便于理解,需要采用自顶向下逐层分解的方法进行,即用分层的方法将一个数据流图分解成几个数据流图来分别表示。13、 什么是数据字典,它的优点,掌握如何制作一个符合格式要求的数据字典数据字典的任务就是对于数据流图中所出现的所有被命名的图形元素在数据字典中作为一个词条加以定义,使得每一个图形元素的名字都有一个确切的解释。数据字典的内容包括:图形元素的名字、别名或编号、分类、描述、定义、位置等。
14、数据字典中所有的定义都应是严密的、精确的,不可有半点含混,不可有二义性。Xab X是由a和b构成Xa,bX是由a或b构成Xa|bX是由a或b构成X(a)a可在X中出现,也可能不出现XaX由零次或多次重复的a构成XmanX由m至n个a组成,即至少有m个a,至多有n 个aXa .bX可取a至b的任一值X= “a”X为取值a的基本数据元素,即a无需进一步定义14、 什么是决策树和决策表,掌握绘制树表能力在某些数据处理中,某数据流图的加工需要依赖于多个逻辑条件的取值,就是说完成这一加工的一组动作是由于某一组条件取值的组合而引发的。这时使用判定表来描述比较合适。一张判定表通常由四部分组成,左上部列出的是
15、所有的条件,左下部为所有可能的操作,右上部分表示各种条件组合的一个矩阵,右下部分是对应于每种条件组合应有的操作。1234条件发货单金额$500$500$500$500赊欠情况60天60天60天60天操作不发出批准书发出批准书发出发货单发出赊欠报告判定树是判定表的变种,它也能清晰地表达复杂的条件组合与所对应的操作之间的关系。判定树的优点在于它无须任何说明,一眼就能看出其含义,易于理解和使用。 欠款60天 不发出批准书 金额$500 欠款60天 发出批准书、发货单检 查发货单 欠款60天 发出批准书、发货单及赊欠报告 金额$500 欠款60天 发出批准书、发货单15、 概要设计的任务和步骤,什么是
16、模块化,抽象,信息隐藏,模块独立性概要设计,将软件需求转化为数据结构和软件的系统结构。总体设计又称为概要设计或初步设计,它的基本目的就是回答“概括地说,系统应该如何实现?”这个问题。在总体设计阶段,应划分出组成系统的物理元素程序、文件、数据库、人工过程和文档等,并确定系统中每个程序由哪些模块组成以及这些模块相互间的关系。步骤:1设想供选择的方案 2选取合理的方案 3推荐最佳方案 4功能分解 5设计软件结构 6数据库设计 7制定测试计划 8书写文档 9审查和复审 模块化抽象: 忽略细节,分层理解问题,自顶向下层层加细信息隐蔽:模块内部的数据与过程,应该对不需要了解这些数据与过程的模块隐藏起来。只
17、有那些为了完成软件的总体功能而必需在模块间交换的信息,才允许在模块间进行传递。模块独立性:概括了把软件划分为模块时要遵守的准则,也是判断模块构造是否合理的标准。一般地,坚持模块的独立性是获得良好设计的关键。16、 什么是耦合和内聚及其类型耦合是对一个软件结构内不同模块之间互联程度的度量。耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。 内聚标志着一个模块内部各个元素间彼此结合的紧密程度。简单地说,理想内聚的模块只做一件事情。设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多。但是,坚决不要使用低内聚。偶然内聚逻辑内聚时间内聚过程内
18、聚通讯内聚顺序内聚功能内聚 低 内聚 高17、 如何将数据流程图转换成系统结构图转换步骤(1)找出变换中心,逻辑输入,逻辑输出,物理输入,物理输出。(2)根据变换中心、逻辑输入、逻辑输入设计出系统顶层和第一层的模块。(3)根据输入模块、输出模块设计中下层模块。18、 数据设计的任务,如何将er图转换成规范关系模型 数据设计的任务: 把分析阶段创建的信息域模型转变成实现软件所需要的数据结构。包括抽象数据结构的设计和数据库的设计。任务:将E-RD中的实体、实体的属性和实体间的联系(包括联系的属性)转换成关系模型。转换的原则:(1)实体A和实体B是1:1的联系:生成两张表TA和TB,同时即可以将TA
19、的主键加到TB中,或者也可以将TB的主键添加到TA中。(2)实体A和实体B是1:n的联系:生成两张表TA和TB。同时必须将TA的主键添加到TB中作为外键。(3)实体A和实体B是m:n的联系:生成3张表,TA,TB和一张关系表TAB,TAB的列=TA的主键+TB的主键+关系自己的属性。19、 程序流程图的绘制,它的优缺点程序流程图也称为程序框图,程序流程图使用五种基本控制结构是:程序流程图的标准符号任何复杂的程序流程图都应由以上五种基本结构组合而成。优点:容易掌握,且历史“悠久”,使用广泛。缺点:本质上不具备逐步求精的特点,对于提高;大型系统的可理解性作用甚微; 不易表示数据结构; 转移控制太方
20、便。趋势:停止使用20、 理解N-s图、PAD图,及其特点1)N-S图也叫做盒图(Box Diagram) 。五种基本控制结构由五种图形构件表示。特点: 没有箭头,不允许随意转移控制; 每个矩形框(Case中条件取值例外)都是一个功能域(即一个特定结构的作用域),结构表示明确; 局部及全程数据的作用域易见; 易表现嵌套关系(embedded structure)以及模块的层次结构。2)PAD是问题分析图(Problem Analysis Diagram)的英文缩写,自1973年由日本日立公司发明以来,已经得到一定程度的推广。它用二维数形结构的图表示程序的控制流,将这种图转换为程序代码比较容易。
21、特点: 结构清晰,层次分明,易读; 支持逐步求精的设计思想; 容易将PAD自动转换为高级语言源程序。21、 计算机语言的分类,如何选择一个合适的计算机语言1机器语言2汇编语言3高级语言4第四代语言程序设计语言的选择常从以下几个方面考虑:(1)项目的应用领域(2)算法与计算的复杂性(3)数据结构的复杂性(4)效率(5)可移植性(6)程序设计人员的水平(7)构造系统的模式22、 为什么强调编码风格,从几个方面考虑?编码风格实际上是一种编码原则。从20世纪70年代以来,编码的目标从强调效率转变到强调清晰。与此相应,编码风格也从追求“聪明”和“技巧”,变为提倡“简明”和“直接”。人们逐渐认识到,良好的
22、编码风格能在一定程度上弥补程序设计语言存在的缺点。反之,如果不注意编码风格,即使使用了结构化的现代语言,也很难写出高质量的程序。一、代码文档化:指编码时适当选择标识符的名字、适当安排注释和注重程序的整个组织形式。二、数据说明:程序或模块在其可执行部分的前面都集中了一些说明语句 ,出于阅读理解和维护的要求,最好使其规范化,使说明的先后次序固定 。三、语句构造 :每条语句都应当简单而直接,同时也不应为了追求运行效率而使代码复杂化,这样会减低程序的可读性。 四、输入/输出:源程序的输入输出风格必须满足运行工程学的需要。23、 如何提高程序效率(1)效率是一种性能需求,目标值应当在需求分析阶段给出。软
23、件效率应以需求为准,不应以人力所及为准。(2)好的设计可以提高效率。(3)代码效率与代码的简单性相关。24、 什么是软件测试,白盒测试,黑盒测试定义:测试是为了发现程序中的错误而执行程序的过程。注意: 只能尽可能查错,不能证明程序中 没有错; 测试员与程序员不应是同一个人。黑盒测试(black-box , or closed-box testing): 不考虑程序内部的结构,只观察程序的入口和出口,是否能完成规格要求的输入输出. 功能测试白盒测试(white-box , or open-box, clear-box testing): 程序的结构和处理过程象白盒子一样透明. 结构测试25、 软
24、件测试的步骤,每个测试环节的特点(重点是模块测试,集成测试)(1) 单元测试 程序设计 & 编码 bugs(2) 集成测试 模块之间的连接(3) 系统测试 需求 & 系统设计(4) 验收测试 用户参与(5) 平行测试 新老系统进行比较.26、 调试的步骤及调试的技术第1步:确定错误的位置(95%工作量); 第2步:改正错误。调试技术 输出存储器内容: 以八进制或十六进制的形式印出存储器的内容。缺点: 输出信息量极大不易解读且大多无用; 输出的是程序在某一时刻的静态情况,且往往不是出错时的状态。 插入“watch points”(或称“spy points”) 人工插入打印 缺点: 改动源代码,
25、增加了出错机会; 打印信息可能太多。 自动调试工具 无须打印额外信息,且不改动源代码27、 维护的类型,可维护性的要素,维护的副作用维护的种类 1、纠错性维护 2、适应性维护 3、完善性维护 4、预防性维护 决定可维护性的因素1、可理解性2、可测试性 3、可修改性 维护的副作用 1、修改代码的副作用 2、修改数据的副作用 3、修改文档资料的副作用 28、 软件管理的特点及职能软件项目的特点(1)智力密集,可见性差(2)单件生产 (3)劳动密集、自动化程度低(4)使用方法繁琐,维护困难(5)软件工作渗透了人的因素软件管理的职能(1)制定计划:规定待完成的任务、要求、资源、人力和进度等。(2)建立
26、项目组织:为实施计划,保证任务的完成,需要建立分工明确的责任机构。(3)配备人员:任用各种层次的技术人员和管理人员。(4)指导:鼓励和动员软件人员完成所分配的任务。(5)检验:对照计划或标准监督检查实施的情况。29、 软件项目组织原则是什么在建立组织时应注意到以下的原则:(1)尽早落实责任:要尽早指定专人负责软件开发,使他有权进行管理,并对任务的完成负责。(2)减少接口:开发过程中,人员之间的联系是必不可少的,但应注意,组织的工作效率是和完成任务中存在的人际联系数目成反比的。(3)责权均衡:软件经理人员所负的责任不应比委任给他的权力还大。30、 配备项目人员的原则是什么(1)重质量:软件项目开
27、发是技术性很强的工作,任用少量有实践经验、有开发能力的人员去完成关键性任务,常常要比使用较多的经验不足的人员更有效。 (2)重培训:花力气培养所需的技术人员和管理人员,是有效地解决人员问题的好办法。 (3)双阶梯提升:人员的提升应分别按技术职务和管理职务进行,不能混在一起。31、 对项目经理人员的要求是什么(1)能把用户提出的非技术性要求加以整理提炼,以技术说明书的形式转告给分析员和测试员。 (2)能说服用户放弃一些不切实际的要求,以便保证合理的要求得以满足。 (3)能够把表面上似乎无关的要求集中在一起,归结为“需要什么”、“要解决什么问题”,这是一种综合问题的能力。(4)要懂得心理学,能说服上级领导和用户,既要让他们理解什么是不切实际的要求,又要让他们毫不勉强、乐于接受。32、 评价软件开发人员的要求是什么(1)牢固掌握计算机软件的基本知识和技能。(2)善于分析、综合问题,具有严密的逻辑思维能力。(3)工作踏实、细致,遵循标准和规范,具有严格的科学作风。(4) 工作中表现出耐心、毅力和责任心。(5)善于听取别人意见,善于与周围人员团结协作,建立良好的人际关系。(6)具有良好的书面和口头表达能力。33、 界面设计的一般性问题有哪些a) 响应时间b) 帮助机制: (1)集成式; (2) 叠加式c) 错误信息处理d) 命令方式: (1) 键盘; (2) 菜单; (3) 按钮