版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章1.软件的特点是什么? 软件是逻辑实体;具有抽象性;软件的形态不可见 软件的生产过程和生产方式与硬件不同。 软件与硬件的维护方式不同。 软件是复杂的。 软件成本越来越高。2. 2006年发布的国家分类标准是什么?1)按功能:系统软件、支撑软件、应用软件2)按规模:微型软件、小型软件、大型软件、甚大型软件、极大型软件3)按工作方式:实时处理软件、分时软件、交互式软件、批处理软件4)按服务对象:项目软件、产品软件5)按使用频度:使用频度低、使用频度高6)按失效影响:不良影响、严重影响3.软件危机的表现有哪些? 进度难以预测 成本难以控制 功能难以满足用户 质量无法保证 产品难以维护 缺少适当
2、的文档4.产生软件危机的原因是什么? 用户需求不明确 缺乏正确的理论指导 软件开发规模越来越大 软件开发复杂度越来越高注:(1和2是主观:开发方法不正确;3和4客观:逻辑部件规模庞大)5.什么是软件工程三要素?方法、工具、过程6.软件工程的基本目标是什么? 付出较低的开发成本 达到要求的软件功能 取得较好的软件性能 开发的软件易于移植 需要较低的维护费用 能按时完成开发工作,及时交付使用7.软件工程的基本原则是什么? 抽象:采用分层次抽象,自顶向下、逐层细化的办法控制软件开发过程的复杂性。 信息隐蔽:将模块设计成“黑箱”,实现的细节隐藏在模块内部,不让模块的使用者直接访问。这就是信息封装,使用
3、与实现分离的原则。 模块化:如C语言程序中的函数过程,C+ 语言程序中的类。模块化有助于信息隐蔽和抽象,有助于表示复杂的系统。 局部化:要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块之间具有松散的耦合,模块内部具有较强的内聚。这有助于控制解的复杂性。 确定性:软件开发过程中所有概念的表达应是确定的、无歧义性的、规范的。 一致性:整个软件系统的各个模块应使用一致的概念、符号和术语。程序内部接口应保持一致。软件和硬件、操作系统的接口应保持一致。系统规格说明与系统行为应保持一致。用于形式化规格说明的公理系统应保持一致。 完备性:软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程
4、度。为了保证系统的完备性,在软件开发和运行过程中需要严格的技术评审。 可验证性:开发大型的软件系统需要对系统自顶向下、逐层分解。系统分解应遵循系统易于检查、测试、评审的原则,以确保系统的正确性。8.软件工程的基本原理是什么? 用分阶段的生命周期严格管理; 坚持进行阶段评审; 实行严格的产品控制; 采用现代程序设计技术; 结果应能清楚地审查; 开发小组人员应少而精; 承认不断改进软件工程实践的必要性。9.瀑布模型有什么特点?1)其核心思想是按工序将问题简单化2)采用结构化的分析与设计方法将逻辑实现以物理实现分开。3)瀑布型将软件生命周期划分为软件计划、需求分析和定义(前两者为定义阶段)、软件设计
5、、软件编码、软件测试(前面为开发阶段)、软件运行维护(最后一个为维护阶段)6个阶段。9.瀑布模型有什么特点?1) 最早出现的软件开发模型,它提供了软件开发的基本框架。2) 瀑布模型的本质是一次通过,即每个活动只执行一次,最后得到软件产品。3) 瀑布模型有利于大型软件开发过程中人员的组织及管理,有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率。4) 里程碑或基线驱动,或者说文档驱动;瀑布模型的缺陷: 由于开发模型呈线性,所以当开发成果尚未经过测试时,用户无法看到软件的效果。这样软件与用户见面的时间间隔较长,也增加了一定的风险。 在软件开发前期末发现的错误传到后面的开发
6、活动中时,可能会扩散,进而可能会造成整个软件项目开发失败。 在软件需求分析阶段,完全确定用户的所有需求是比较困难的,甚至可以说是不太可能的。 瀑布模型即生存周期模型,其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。瀑布模型将软件生命周期划分为软件计划、需求分析和定义、软件设计、软件编码、软件测试、软件运行维护6个阶段,规定了他们自上而下、相互衔接的固定次序,如同瀑布流水逐级下落。10.说明生命周期的划分?瀑布型将软件生命周期划分为软件计划、需求分析和定义(前两者为定义阶段)、软件设计、软件编码、软件测试(前面为开发阶段)
7、、软件运行维护(最后一个为维护阶段)6个阶段。10.说明生命周期的划分?一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程称为软件生存期或叫生命期。包括计划、需求分析、软件计划、程序编码、软件测试和运行维护6各阶段。11.列出软件生存期的几个主要模型?· 瀑布模型· 原型模型· 螺旋模型· 增量模型· 构件组装模型· 统一过程模型· 第四代技术12.瀑布模型软件开发方法的基本过程?定义阶段:计划、需求分析开发阶段:设计、编码、测试维护阶段:运行维护13.增量模型有什么特点?Ø 任务或功能模块驱动,可
8、以分阶段提交产品;Ø 有多个任务单,这些多个任务单的集合,构成项目的一个总任务书(总用户需求报告)。13.增量模型有什么特点?1) 融合了线性顺序模型的基本成份和原型实现模型的迭代特征。2) 增量模型采用随着日程时间的进展而交错的线性序列。每一个线性序列产生软件的一个可发布的“增量”。3) 增量模型强调每一个增量均发布一个可操作产品。早期的增量是最终产品的“可拆卸”版本,但他们确实提供了给用户服务的功能,并且提供了给用户评估的平台。将软件产品看作一组增量构件,每次设计、实现、集成、测试和交付一块构件,直到所有构件全部实现为止。特点:1) 任务或功能模块驱动,可以分阶段提交产品;2)
9、有多个任务单,这些多个任务单的集合,构成项目的一个总任务书(总用户需求报告)。14.几种主要的软件开发方法? 结构化开发方法 面向对象的方法15.软件工程中的“五个面向”?面向流程分析、面向数据设计、面向对象实现、面向功能测试、面向过程管理。第二章 1.可行性分析的目的?1)用最小的代价在尽可能短的时间内确定问题是否能够解决。2)确定问题是否能够解决和值得解决。3)分析可能的利弊关系。2.可行性分析最为敏感的方面是什么? 经济可行性:经济效益能否超过开发成本? 技术可行性:现有技术能否实现?技术风险的各种因素? 操作可行性:用户的接受程度如何? 法律可行性:是否合法,是否侵犯他人的利益。3.可
10、行性研究的步骤有哪些? 系统调研(复查系统规模和目标) 现行系统分析(研究目前正在使用的系统) 建议新系统(导出新系统的高层逻辑模型) 模型评审(重新定义问题) 导出和评价可供选择的解决方案 推荐一个方案并说明理由 推荐行动方针 书写文档提交审查(可行性分析报告)4.软件计划的步骤有哪些? 估计软件的规模及所需的资源; 制定时间表; 鉴别和评估风险; 约定与限制条件。5.软件计划书的内容有哪些? 软件范围 环境资源 进度安排 成本/效益分析 其它要考虑的因素6.甘特图有哪些优点和缺点?甘特图:是一种对各项活动进行计划调度与控制的图表。横向表示时间,纵向列出任务。优点:它具有简单、醒目和便于编制
11、等特点。能够动态反映软件项目开发进展的情况。缺点:难以反映多个任务之间存在的复杂的逻辑关系。7.什么是网络计划法的关键事件与关键路径?Ø 关键事件:最早完成时间与最迟完成时间相等的事件。Ø 关键路径:关键事件联结的各个活动所组成的路线。8.常用的成本估算方法有哪些?(1)基于代码行的成本估算方法(2)任务分解成本估算 (3)经验统计估算模型 参数方程 动态多变量参数模型 COCOMO模型(constructive Cost Model)自动估算工具 9.软件成本估算包括哪些内容?工作产品规模估计工作量及成本估计关键资源的量化估计10.项目活动和项目约定计划指的是什么?
12、16; 活动指开发活动和管理活动;Ø 约定指各种规范、标准、规则;Ø 规范:是对过程和行为的约束;Ø 标准:是对产品的约束;Ø 规则或规程:是对操作的约束。第三章1.为什么说需求获取难? 用户需求具有动态性(不稳定性)。 用户需求具有模糊性(不准确性)。 对需求达成一致的艰难性。 管理体制、机构设置处在变革中。 软件书籍没有将需求分析讲清楚。2.需求分析的重点是哪些? 业务模型、 功能模型、 性能模型、 接口模型。3.需求分析的9大任务是什么? 画出系统的组织结构图、列出各部门的岗位角色(机构模型)。 画出系统业务操作流程图。 画出系统的数据流图,掌握业
13、务规则,获得初步数据模型。 列出系统的功能点,即功能模型。 列出系统的性能点,即性能模型。 列出系统的接口,即接口模型。 确定系统的运行环境,即环境模型。 确定系统的界面约定,即界面模型。 对开发工期、费用、开发进度、系统风险等分析与评估。4.简述需求分析的过程?· 问题识别· 分析与综合· 编制需求分析阶段文档· 需求分析评审5.获取需求的常用方法有哪些? 访谈/个别访问:正式的和非正式的访谈 问卷调查/书面调查 :发电子邮件、问卷调查即把需要调查的内容制成表格交给用户填写。该方法对需要调查大量人员的意见时,十分有效。 情景分析/电话和电视会议:对目标
14、系统解决某个具体问题的方法和结果,给出可能的情景描述,以获知用户的具体需求。 实地考察/收集资料:开调查会参加业务实践 构造原型6.需求分析的原则是什么? 解决逻辑问题:需求分析是对问题的识别和说明,要回答“做什么”,而不是“怎么做”。 以运行环境为基础:需求分析工作应以具体的运行环境为基础,实事求是 。 用户参与的原则:需求分析工作是系统分析人员同用户不断交互的过程。 构造高质量的需求规格说明:需求规格说明是需求分析工作重要的完成标志。 7.需求分析的基本要求是什么? 理解问题的数据域和功能域 自顶向下、逐层分解 给出系统的逻辑视图和物理视图8.常见的需求分析方法有哪些?需求获取、分析建模、
15、文档编写、需求验证;8.常见的需求分析方法有哪些? 面向数据流的分析方法 面向功能的分析方法 面向数据的Jackson方法 面向对象的分析方法9.需求分析方法有哪些共性?1.支持数据域的分析机制2.功能表示方法3.接口的定义4.问题的分解及抽象化5.逻辑视图和物理视图6.系统抽象模型4.1思考题1.软件设计的具体任务包括哪些内容? (1) 制定规范(2) 结构设计(3) 处理方式设计(4) 数据结构及数据库设计(5) 可靠性设计(质量设计)(6) 编写软件设计文档(7) 设计审查和复审(8) 详细设计2.什么是数据的保护性设计?1)防卫性设计:在软件设计中就插入自动检错,报错和纠错的功能2)一
16、致性设计: 在并发处理过程中使用封锁和解除封锁机制保持数据不被破坏3)冗余性设计:3.软件设计的目标是什么?软件设计的最终目标:取得最佳方案 节省开发费用、 降低资源消耗、 缩短开发时间、 能够赢得较高的生产效率、 较高的可靠性、 可维护性的方案。4. 模块具有哪些基本属性?“模块”,又称“组件”。一般有四个基本属性Ø 功能:描述该模块做什么?Ø 逻辑:描述模块内部怎么做?Ø 状态:模块使用时的环境和条件。Ø 接口:指模块的输入与输出。5.什么是耦合?什么是内聚?如何增强模块的独立性?Ø 耦合:各模块之间的互相连接的紧密程度。模块之间的连接越紧
17、密,联系越多,耦合性就越高,而其独立性就越弱。Ø 内聚:模块内各功能元素彼此结合的紧密程度。一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高,相对地,它与其它模块之间的耦合性就会减低,而模块独立性就越强。Ø 增强模块独立性的方法是尽量做到高内聚、低耦合。6.模块化的特征有哪些?Ø 抽象:用层次的方式构造和分析复杂系统。Ø 逐步求精:帮助开发人员把精力集中在与当前开发阶段最相关的那些问题上。Ø 信息隐蔽:如果一个模块内包含的信息(过程和数据) 不允许外部的模块访问的话,其它模块不能对其访问。Ø 局部化:把一些关系密切的软件元素物
18、理地放得彼此靠近。7.影响耦合度的因素有哪些? 连接方式的类型。 接口的复杂性。 传送的信息流类型。 耦合的时间。8.降低耦合度的方法有哪些? 耦合度是评价程序质量的重要指标,耦合度越小,则每个模块越容易独立地被理解、编写和修改,同时每个模块的错误越不容易扩散蔓延到其他模块。 对需要了解的内容,隐含的改为明显的,便于理解; 连接的方式尽量标准化,避免直接引用; 减少公共区,将公共区划分为若干个逻辑子区; 输入输出应局限在少量模块,不要分散在全系统;9.软件结构设计优化的准则是什么?1) 划分模块时,尽量做到高内聚、低耦合,保持模块相对独立性。模块划分的准则:“将相关的各部分放在一起,无关的东西
19、不要放在一起。” 2) 模块的大小要适中。3) 模块的接口要简单、清晰、含义明确。便于理解,易于实现、易于测试和维护。4) 一个模块的作用范围应在其控制范围之内。且判定所在的模块,应与受其影响的模块在层次上尽量靠近。5) 软件结构的深度、宽度、扇入、扇出应适当。6) 力求设计单入口和单出口的模块。避免“病态连接”,以防止内容耦合。 7) 设计功能可预测模块的划分,应防止功能过分局限。 4.2思考题1.结构化设计的优点是什么? 减少设计复杂性。将大化小,使复杂问题简单化。 结构独立。将程序划分成多个相对独立的模块。 模块功能单一化,可使软件设计获得最大的益处。 便于软件的修改。 易于开发和维护。
20、 加强了代码的可重用性。3.正交软件体系结构的优点是什么? 层次结构清晰,便于理解。 可移植性强,重用粒度大。 易修改,可维护性强。 4.三层C/S结构的组成Ø 表示层:用户接口部分,担负着用户与应用间的对话功能。 Ø 功能层:相当于应用的本体,将具体的业务处理逻辑程序。 Ø 数据层:数据库管理系统,负责管理对数据库数据的读/写。 5.三层结构设计的优点是什么? 允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性。 允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升
21、级性和开放性 。 三层C/S结构中,应用的各层可以并行开发,各层也可以选择各自最适合的开发语言。 允许充分利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层 。6.B/S体系结构的不足之处? 缺乏对动态页面的支持能力,数据库处理能力差。 系统扩展能力差,安全性难以控制。 响应速度远低于C/S体系结构。 数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。7.C/S、B/S混合结构的特点是什么?Ø B/S与C/S混合结构是一种典型的异构系统。Ø C/S与B/S混合结构的优点:外部用户不直
22、接访问数据库服务器,能保证企业数据库的相对安全。企业内部用户的交互性较强,数据查询和修改的响应速度较快。 Ø C/S与B/S混合结构的缺点:企业外部用户修改和维护数据时,速度较慢,较烦琐,数据的动态交互性不强。8.列出几种主要的菜单类型? 固定菜单 活动菜单 “弹出式”菜单 “下拉式”菜单 9.活动菜单的优点是什么?Ø 不占用显示工作空间,Ø 可以根据用户当前所处的操作状态和要求动态出现。Ø 需要注意的是不能滥用弹出菜单。4.3思考题1. DBMS有哪些基本功能?1) 建立数据库的结构;2) 管理用户的数据库;3) 提供在数据库上的各种操作;4) 提供数
23、据库对外的各种接口;2.DB、DBMS有何不同?在人们的交流中,习惯上常常将数据库和DBMS混为一谈,不加区别。所以要根据不同场合、不同习惯、以及上下文来分析,所讲的“数据库”三个字,到底是指数据库,还是指DBMS。 2. DBMS提供的三种语言是什么? DDL(数据库定义语言): 如:CREATE,ALTER,DROP; DML(数据库操作语言): 如:SELECT,UPDATE,INSERT,DELETE; DCL(数据库控制语言): 如:LOCK、UNLOCK;3. 四个表指的是什么?分别是:基本表、代码表、中间表、临时表4. 基本表的性质有哪些?为什么?1) 原子性。基本表中的字段是不
24、可再分解的。2) 原始性。基本表中的记录是原始数据(基础数据)的记录。3) 演绎性。由基本表与代码表中的数据,可以派生出所有的输出数据。4) 稳定性。基本表的结构是相对稳定的,表中的记录是需要长期保存的。5. 怎样正确认识“数据冗余”?1) 主键与外键在多表中的重复出现, 不属于数据冗余,这个概念必须清楚,事实上有许多人还不清楚。2) 非键字段的重复出现, 才是数据冗余,而且是一种低级冗余,即重复性的冗余。3) 高级冗余不是字段的重复出现,而是字段的派生出现。 第五章1. 代码设计的主要原则是什么?1) 使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。2) 选用的控制结构只准许有
25、一个入口和一个出口。3) 程序语句组成容易识别的块,每块只有一个入口和一个出口。4)复杂结构应该用基本控制结构进行组合嵌套来实现。2. 编程规范包括哪些内容?3. 良好的代码设计风格包括哪些内容?1) 规范化的程序内部文档、2) 数据结构的详细说明、3) 清晰的语句结构、4)遵守某一编程规范,内容包括:命名规范、界面规范、提示及帮助信息规范、热键定义等。4. 代码语句设计应遵从哪些原则?1)在一行内只写一条语句:采取适当的移行格式,使程序的逻辑和功能变得更加明确。在一行内写多个语句会使程序可读性变差。2) 程序编写清晰性第一:不要刻意追求技巧性,使程序编写得过于紧凑。3) 程序要能直截了当地说
26、明程序员的用意:程序编写要简单,清楚,直截了当地说明程序员的用意。4) 清晰第一,效率第二:不要为了追求效率而丧失了清晰性。事实上,程序效率的提高主要应通过选择高效的算法来实现。5) 先保证程序正确, 再要求提高速度。6) 避免使用临时变量而使可读性下降。7) 让编译程序做简单的优化。8) 尽可能使用库函数和构件。9) 避免不必要的转移:尽量不用GO TO语句。10) 尽量采用三种基本的控制结构编写程序。11) 避免使用空的ELSE语句和IF THEN IF的语句。这种结构容易使读者产生误解。可能产生二义性问题。12) 避免采用过于复杂的条件测试。13) 尽量减少使用“否定”条件的条件语句。1
27、4)尽量用通俗易懂的伪码来描述程序的流程:然后再翻译成必须使用的语言。15)数据结构要有利于程序的简化。16)要模块化:使模块功能尽可能单一化,模块间的耦合能够清晰可见。17)利用信息隐蔽:确保每一个模块的独立性。18)从数据出发构造程序。19)修补不好的程序,要重新编写:也不要一味地追求代码的复用,要重新组织。20)大的程序要分块编写和测试:然后再集成。21)对递归定义的数据结构尽量使用递归过程。5. I/O代码设计的原则是什么?1) 输入数据要检验:识别错误的输入,以保证每个数据的有效性;2) 检查输入项的各种重要组合的合理性:必要时报告输入状态信息;3) 输入的步骤和操作尽可能简单:并保
28、持简单的输入格式;4) 应允许使用自由格式输入数据;5) 应允许缺省值;6)批数据输入时,使用输入结束标志:而不要由用户指定输入数据数目;7)交互式输入时,屏幕上使用提示符明确提示输入的请求:指明可使用选择项的种类和取值范围。同时,在数据输入的过程中和输入结束时,也要在屏幕上给出状态信息;8)程序设计语言对I/O格式有严格要求时,应保持输入格式与输入语句要求的一致性;9)输出加注解,并设计输出报表格式。10)软件效率应该以什么为准?6.软件效率应该以什么为准?6. 答:软件效率以需求为准7. 程序的效率与哪些因素有关?答:程序的效率与程序的简单性、可读性和正确性因素有关。7.程序的效率与哪些因
29、素有关?程序的效率是指程序的执行速度及程序所需占用的内存的存储空间。讨论程序效率的准则: 1) 效率性能要求,应在需求分析阶段给出。软件效率以需求为准,不应以人力所及为准。好的设计可以提高效率。2) 程序的效率与程序的简单性相关。3) 一般说来,任何对效率无重要改善,且对程序的简单性、可读性和正确性不利的程序设计方法都是不可取的。8. 详细设计向代码设计转换过程的指导原则是什么?1)尽可能简化有关的算术表达式和逻辑表达式;2)检查算法中的嵌套的循环,尽可能将某些语句或表达式移到循环外面;3)尽量避免使用多维数组;4)尽量避免使用指针和复杂的表;5)采用“快速”的算术运算;6)不要混淆数据类型,
30、避免在表达式中出现类型混杂;7)尽量采用整数算术表达式和布尔表达式;8)选用等效的高效率算法;9. 影响存储器效率的因素是什么?1)存储效率与OS的分页功能直接有关。2)采用结构化程序设计。3)提高存储器效率的关键是程序的简单性。10. 提高I/O设备效率的指导原则有哪些?1) I/O的请求应当最小化;2) 对于所有的I/O操作,安排适当的缓冲区,以减少频繁的信息交换。3) 对辅助存储(例如磁盘),选择尽可能简单的,可接受的存取方法;4) 对辅助存储的I/O,应当成块传送;5) 对终端或打印机的I/O,应考虑设备特性,尽可能改善I/O的质量和速度;6) 任何不易理解的,对改善输入/输出效果关系
31、不大的措施都是不可取的;7) 任何不易理解的所谓“超高效”的I/O毫无价值;11. 提示信息分哪几类?1)引导性提示信息:该类提示信息一般在需要用户干预时出现,要求用户决定下一步的操作。如在退出时提示“修改的数据尚未存盘,存盘否?”。使用MessageBox进行提示。2) 错误性提示信息:该类提示信息一般在软件运行出错时出现,告诉用户软件遇到了问题。如“系统运行出现故障,请与系统管理员联系!”。3) 状态性提示信息:该类提示信息一般在软件处于“忙”状态下提示,告诉用户软件正在进行什么操作,让用户耐心等待。如“正在进行数据传输,请稍待”。4) 位置性提示信息:该类提示信息一般根据鼠标的位置进行提
32、示,告诉用户鼠标正指向什么功能。如“报表打印”。12.软件实现过程由哪些文档的组成? 源程序清单 用户使用手册 用户安装手册 系统管理员手册13.软件实现过程包括哪些管理文档? 用户指南评审报告 模块源程序行统计表(行/模块名) 源程序工作量统计表(行/人天)思考题5.21.软件测试的原则? 软件测试应当尽早和不断地进行。 程序员应避免检查自己的程序。 设计测试即应包括合理的、还应包括不合理的输入条件。 经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。 妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。2.软件测试的最初定义?1) 软件测试是测试中的特例
33、,它的测试对象是人类的智力产品-软件 2) 最初定义:“软件测试是为了发现错误而执行程序的过程。 ”3.软件测试的经典定义? 1)测试是程序的执行过程,目的在于发现错误;2) 一个好的测试在于能发现至今未发现的错误;3) 一个成功的测试是发现了至今未发现的错误的测试。4.测试的目的?Ø 以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。Ø 能够证明软件的功能和性能与需求说明相符合。Ø 测试结果数据为可靠性分析提供了依据。Ø 测试不能表明软件中不存在错误,它只能说明软件中存在错误。5.黑盒测试的优点? 对于较大的代码单元来说,黑盒测试比白盒测试效率
34、要高; 测试人员不需要了解实现的细节,包括特定的编程语言; 从用户的角度进行测试,容易被理解和接受; 有助于暴露任何规格不一致或有歧义的问题;6.黑盒测试的缺点? 要测试每个可能的输入流几乎是不可能的; 会有很多程序路径没有被测试到; 不能直接针对特定程序段测试,因此可能隐藏更多的问题。7.白盒测试的优点? 迫使测试人员去仔细思考软件的实现; 可以检测代码中的每条分支和路径; 揭示隐藏在代码中的错误; 对代码的测试比较彻底。8.白盒测试的缺点? 成本昂贵; 忽略了从用户角度考虑的测试问题;9.测试报告包括哪些内容?Ø 测试任务描述Ø 测试环境说明Ø 功能测试描述&
35、#216; 性能测试描述Ø 确认性测试描述Ø 测试总结思考题5.31.软件维护分类有哪些?纠错性维护;适应性维护;完善性维护;预防性维护;2.影响软件维护的因素有哪些?软件配置是否完整是影响维护工作量的重要因素;修改别人的程序增加了维护的难度;文档不全的软件,增加了修改后测试的工作量;软件结构的不合理,增加了软件修改的困难;软件经过多个版本的演化,很难追踪修改的过程;软件维护经常受挫,降低了该项工作的吸引力。3.软件维护有哪些副作用?修改编码:使编码更加混乱,程序结构更不清晰,可读性更差,而且有连锁反应。修改数据结构:数据结构是系统的骨架,修改数据结构是对系统伤筋动骨的大手
36、术,在数据冗余与数据不一致方面,可能顾此失彼。修改用户数据:需要与用户协商,一旦有疏忽,可使系统发生意外。修改文档:对非结构化维护不适应,对结构化维护要严防程序与文档的不匹配。9.什么叫结构化维护和非结构化维护?答:结构化维护的前提是:软件产品或软件项目必须有完善的文档,并且文档与程序代码互相匹配。反之为非结构化维护。10.可维护性的软件应具备什么性质?答:可理解性、可测试性、可修改性、可靠性、可移植性、可使用性、效率11.两层结构和三层结构的软件维护方法有什么不同?12.怎么理解软件产品的版本号?13.怎么理解UML/CMMI对软件维护的影响?Ø 软件为什么需要维护?因为它程序上有
37、缺陷,所以有面向程序的缺陷维护;因为它设计上功能不齐全,所以有面向设计的功能维护。Ø 当软件组织达到CMM3以上时,由于软件过程的持续改善,对软件质量的评审和审计活动的加强,软件过程数据库作用的发挥,关于“程序上有缺陷”和“设计上功能不齐全”的情况,将会逐渐减少,所以软件的维护工作量也会逐渐减少。Ø 真正维护工作量大的单位,就是CMM1的软件组织,因为他们管理无序,文档不全,工作不规范,表现形式就是:人治加个人英雄主义。 第一章 软件工程概述 1软件的特点Ø 软件是逻辑实体;具有抽象性;软件的形态不可见; 必须通过观察、分析、思考、判断来了解其功能、性能和其它特性
38、。Ø 软件是人脑思维的产物,其生产过程与硬件不同。 开发过程的质量控制及软件产品保护问题。Ø 软件的开发和运行受计算机系统限制。 软件移植问题。Ø 软件的开发技术落后,手工开发方式仍占统治地位。 开发效率低。22006年发布的国家分类标准Ø 独立式Ø 组合式Ø 集成式Ø 嵌入式3软件危机的表现Ø 对开发成本和进度的估算偏差太大Ø 没有适当的文档Ø 软件成本比重上升Ø 质量很不可靠Ø 供不应求Ø 用户很不满意4产生软件危机的原因客观:软件本身特点n 逻辑部件n 规模庞
39、大主观:不正确的开发方法n 忽视需求分析n “软件开发=程序编写”的错误观念n 轻视软件维护5软件工程的三要素 方法:为软件开发提供了“如何做”的技术。 工具:为软件工程方法提供了支撑环境。 过程:定义了方法使用的顺序、要交付的文档资料、为保证质量和适应变化所需要的管理、 软件开发各个阶段完成的里程碑。6软件工程项目的基本目标Ø 付出较低的开发成本Ø 达到要求的软件功能Ø 取得较好的软件性能Ø 开发的软件易于移植Ø 需要较低的维护费用Ø 能按时完成开发工作,及时交付使用7软件工程基本原则抽象 信息隐蔽 模块化 局部化 确定性 一致性
40、完备性 可验证性8软件工程的基本原理 用分阶段的生命周期严格管理; 坚持进行阶段评审; 实行严格的产品控制; 采用现代程序设计技术; 结果应能清楚地审查; 开发小组人员应少而精; 承认不断改进软件工程实践的必要性。9瀑布模型的特点 里程碑或基线驱动,或者说文档驱动; 过程逆转性很差,或者说不可逆转。10软件生命周期一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程称为软件生存期或叫生命期。生命期的划分:制定计划 需求分析和定义 软件设计 程序编写 软件测试 运行/维护 定义阶段 开发阶段 维护阶段11软件生存期的主要模型瀑布模型 原型模型 螺旋模型 增量模型 构件组装模型 统一
41、过程模型 第四代技术12(好像考过,挺重要的)瀑布模型开发的基本过程(看书上的图)定义 计划阶段 需求分析 开发 设计阶段 编码 测试 维护 运行、维护阶段13增量模型的特点Ø 任务或功能模块驱动,可以分阶段提交产品;Ø 有多个任务单,这些多个任务单的集合,构成项目的一个总任务书(总用户需求报告)。14几种主要的软件开发方法 面向过程的方法 面向数据的方法 面向对象的方法15软件工程中的“五个面向”u 面向流程分析、u 面向数据设计、u 面向对象实现、u 面向功能测试、u 面向过程管理。 第二章 软件策划16可行性分析的目的Ø 用最小的代价在尽可能短的时间内确定问
42、题是否能够解决。Ø 确定问题是否能够解决和值得解决。Ø 分析可能的利弊关系17可行性分析最为敏感的方面 经济可行性:经济效益能否超过开发成本? 技术可行性:现有技术能否实现?技术风险的各种因素? 操作可行性:用户的接受程度如何? 法律可行性:是否合法,是否侵犯他人的利益。18可行性研究的步骤 复查系统规模和目标(系统调研) 研究目前正在使用的系统(系统分析) 导出新系统的高层逻辑模型(系统分析) 重新定义问题(模型评审) 导出和评价可供选择的解决方案 推荐一个方案并说明理由 推荐行动方针 书写文档提交审查19软件计划的步骤 估计软件的规模及所需的资源; 制定时间表; 鉴别和
43、评估风险; 约定与限制条件。20软件计划书的内容 软件范围 环境资源 进度安排 成本/效益分析 其它要考虑的因素21甘特图有哪些优点和缺点甘特图:是一种对各项活动进行计划调度与控制的图表。横向表示时间,纵向列出任务。优点:它具有简单、醒目和便于编制等特点。能够动态反映软件项目开发进展的情况。缺点:难以反映多个任务之间存在的复杂的逻辑关系。22什么是网络计划法的关键事件与关键路径Ø 关键事件:最早完成时间与最迟完成时间相等的事件。Ø 关键路径:关键事件联结的各个活动所组成的路线。23常用的成本估算方法(1)基于代码行的成本估算方法(2)任务分解成本估算 (3)经验统计估算模型
44、 参数方程 动态多变量参数模型 COCOMO模型(constructive Cost Model)自动估算工具 24软件成本估算包括哪些内容Ø 货币的时间价值Ø 投资回收期 Ø 纯收入Ø 投资回收率25项目活动和项目约定计划指的是什么Ø 活动指开发活动和管理活动;Ø 约定指各种规范、标准、规则 规范是对过程和行为的约束;标准是对产品的约束;规则或规程是对操作的约束。第三章 需求分析26需求获取为什么难? 用户需求具有动态性(不稳定性)。 用户需求具有模糊性(不准确性)。 对需求达成一致的艰难性。 管理体制、机构设置处在变革中。 软件书
45、籍没有将需求分析讲清楚。27需求分析的重点业务模型、功能模型、性能模型、接口模型。28需求分析的9项任务 画出目标系统的组织机构模型。 画出目标系统业务操作流程图。 画出目标系统的数据流图。 列出目标系统的功能点列表,即功能模型。 列出系统的性能点列表,即性能模型。 列出目标系统的接口列表,即接口模型。 确定目标系统的运行环境,即环境模型。 目标系统的界面约定,即界面模型。 分析与评估开发工期、费用、进度、风险等。 29需求分析的过程· 问题识别· 分析与综合· 编制需求分析阶段文档· 需求分析评审30获取需求的常用方法 访谈:正式的和非正式的访谈 问卷
46、调查:问卷调查即把需要调查的内容制成表格交给用户填写。该方法对需要调查大量人员的意见时,十分有效。 情景分析:情景分析就是对目标系统解决某个具体问题的方法和结果,给出可能的情景描述,以获知用户的具体需求。 实地考察 构造原型31需求分析的原则 解决逻辑问题:需求分析是对问题的识别和说明,要回答“做什么”,而不是“怎么做”。 以运行环境为基础:需求分析工作应以具体的运行环境为基础,实事求是 。 用户参与的原则:需求分析工作是系统分析人员同用户不断交互的过程。 构造高质量的需求规格说明:需求规格说明是需求分析工作重要的完成标志。 32需求分析的基本要求理解问题的数据域和功能域自顶向下、逐层分解 给
47、出系统的逻辑视图和物理视图33需求分析方法 面向数据流的分析方法 面向功能的分析方法 面向数据的Jackson方法 面向对象的分析方法第四章 软件设计34软件设计的具体任务(1) 制定规范(2) 结构设计(3) 处理方式结构设计(4) 数据结构及数据库设计(5) 可靠性设计(质量设计)(6) 编写软件设计文档(7) 设计审查和复审(8) 详细设计35数据的保护性设计防卫性设计:在软件设计中就插入自动检错,报错和纠错的功能一致性设计: 在并发处理过程中使用封锁和解除封锁机制保持数据不被破坏冗余性设计:36软件设计的目标软件设计的最终目标是要取得最佳方案。即:节省开发费用、降低资源消耗、缩短开发时
48、间、能够赢得较高的生产效率、较高的可靠性和可维护性的方案。 并且使开发软件满足以下特点:Ø 功能、性能都符合指定的要求;Ø 软件是可维护的,可方便地进行修改 ;Ø 除了代码,还有一套配置齐全的文档。 37模块的基本属性 “模块”,又称“组件”。一般有四个基本属性Ø 功能:描述该模块做什么?Ø 逻辑:描述模块内部怎么做?Ø 状态:模块使用时的环境和条件。Ø 接口:指模块的输入与输出。38什么是耦合?什么是内聚?如何增强模块的独立性?Ø 耦合:各模块之间的互相连接的紧密程度。模块之间的连接越紧密,联系越多,耦合性就越高
49、,而其独立性就越弱。Ø 内聚:模块内各功能元素彼此结合的紧密程度。一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高,相对地,它与其它模块之间的耦合性就会减低,而模块独立性就越强。Ø 增强模块独立性的方法是:高内聚、低耦合39模块化的特征Ø 抽象:用层次的方式构造和分析复杂系统。Ø 逐步求精:帮助开发人员把精力集中在与当前开发阶段最相关的那些问题上。Ø 信息隐蔽:如果一个模块内包含的信息(过程和数据) 不允许外部的模块访问的话,其它模块不能对其访问。Ø 局部化:把一些关系密切的软件元素物理地放得彼此靠近。40影响耦合度的因素 连
50、接方式的类型。 接口的复杂性。 传送的信息流的类型。 耦合的时间。41降低耦合度的方法: 对于需要了解的内容,若是隐含的,应改为明显的,以便更容易理解; 连接的方式尽量标准化,不要直接引用; 减少公共区,将公共区划分为若干个逻辑子区; 输入输出应局限在少量模块,不要分散在全系统; 延迟耦合时间。42软件结构设计优化的准则1. 划分模块时,尽量做到高内聚、低耦合,保持模块相对独立性。模块划分的准则:“将相关的各部分放在一起,无关的东西不要放在一起。” 2. 模块的大小要适中。3. 模块的接口要简单、清晰、含义明确,便于理解,易于实现、易于测试和维护。4. 一个模块的作用范围应在其控制范围之内,且
51、判定所在的模块,应与受其影响的模块在层次上尽量靠近。5. 软件结构的深度、宽度、扇入、扇出应适当。6. 力求设计单入口和单出口的模块,避免“病态连接”,以防止内容耦合。 7. 设计功能可预测模块的划分,应防止功能过分局限。 43结构化设计的优点 减少设计复杂性。将大化小,使复杂问题简单化。 结构独立。将程序划分成多个相对独立的模块。 模块功能单一化,可使软件设计获得最大的益处。 易于进行软件修改。 易于开发和维护。 加强了代码的可重用性。44Jackson图的优点 便于表示层次结构,是对结构进行自顶向下分解的有力工具; 形象直观,可读性好; Jackson图不仅能表示数据结构,也能表示程序结构
52、。45正交软件体系结构的优点 层次结构清晰,便于理解。 可移植性强,重用粒度大。 易修改,可维护性强。 46三层C/S结构的组成Ø 表示层:用户接口部分,它担负着用户与应用间的对话功能。 Ø 功能层:相当于应用的本体,它是将具体的业务处理逻辑编入程序中。 Ø 数据层:数据库管理系统,负责管理对数据库数据的读写。 47三层C/S结构的优点 允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性。 允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性 。 三层C/
53、S结构中,应用的各层可以并行开发,各层也可以选择各自最适合的开发语言。 允许充分利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层 。48B/S体系结构的不足之处 缺乏对动态页面的支持能力,数据库处理功能差。 系统扩展能力差,安全性难以控制。 响应速度远低于C/S体系结构。 数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。49C/S、B/S混合结构的特点Ø B/S与C/S混合结构是一种典型的异构系统。Ø C/S与B/S混合结构的优点:是外部用户不直接访问数据库服务器,能保证企业数据
54、库的相对安全。企业内部用户的交互性较强,数据查询和修改的响应速度较快。 Ø C/S与B/S混合结构的缺点:是企业外部用户修改和维护数据时,速度较慢,较烦琐,数据的动态交互性不强。50主要的菜单类型 固定菜单 活动菜单 “弹出式”菜单 “下拉式”菜单51活动菜单的优点Ø 不占用显示工作空间;Ø 可以根据用户当前所处的操作状态和要求动态出现。Ø 需要注意:不能滥用弹出菜单。52DBMS的基本功能: Ø 管理用户的数据库;Ø 提供在数据库上的各种操作;Ø 提供数据库对外的各种接口;53数据库(DB)与DBMS的不同在人们的交流中,习惯上常常将数据库和DBMS混为一谈,不加区别。所以要根据不同场合、不同习惯、以及上下文来分析,所讲的“数据库”三个字,到底是指数据库,还是指DBMS。 54DBMS提供的三种语言 DBMS自带许多语句(命令),可分为三大类: 数据定义语言DDL: 如:CREATE,ALTER,DROP; 数据操作语言DML: 如:SELECT,UPDATE,INSERT,DELETE; 数据控制语言DCL: 如:分支语句、循环语句。55数据库的组成(四个表指的是什么)Ø 基本表:存放原始数据的表。Ø 代码表:存放信息代码数据的表。Ø 中间表:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《领导行为艺术》课件
- 2024年秋八年级历史上册 第23课 内战爆发说课稿 新人教版
- 二零二四年度电子产品生产委托合同3篇
- 2024年度特许经营合同:知名品牌与加盟商之间的特许经营权授予协议2篇
- 2024年度加工承揽合同的完成标准及质量要求3篇
- 2024年度高速公路绿化带升级合同2篇
- 2022年上海市黄浦区高考地理二模试卷
- 2023年陕西省部分名校高考地理模拟试卷
- 2024年度个人购买其他资产贷款合同3篇
- 2024年度物业服务合同:管理与服务质量标准3篇
- 汽车底盘差速器课件
- 危重症患者护理
- 虚拟现实直播兼职主播协议
- 2025届浙江省嘉兴市重点名校高三物理第一学期期中复习检测模拟试题含解析
- 预案演练知识培训
- 第三单元 勇担社会责任(复习课件)-八年级道德与法治上册同步备课系列(统编版)
- 适用于2024年《语言学概论》课程的教案创新策略
- 中小学学校国家智慧教育云平台应用项目实施方案
- 2024-2030年中国干细胞医疗行业趋势分析及投资战略研究报告
- 湖北省武汉市六校联考2024-2025学年高二上学期11月期中英语试题(含答案含听力原文无音频)
- 2024版2024年【教案+】初中美术《铅笔淡彩》
评论
0/150
提交评论