第一篇:软件工程复习总结
第1章
1什么是软件危机,产生软件危机的原因,消除软件危机的途径。
落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
软件维护费用的急剧上升,直接威胁计算机应用的扩大;软件生产技术进步缓慢,是加剧软件危机的重要原因。
既要有技术措施,又要有必要的组织管理措施。2什么是软件,软件的精确定义。
软件是程序以及开发、使用和维护程序所需的所有文档.。3软件工程的精确定义,软件工程的7个特征,7基本原理。
软件工程是指导计算机软件开发和维护的一门工程学科。1,软件工程关注于大型程序的构造; 2,软件工程的中心课题是控制复杂性; 3,软件经常化;
4,开发软件的效率非常重要; 5,和谐地合作是开发软件的关键; 6,软件必须有效地支持它的用户;
7,在软件工程领域中是由一种文化背景的人替具有另一种文化背景的人创造产品。基本原理:
1,用分阶段的生命周期计划严格管理; 2,坚持进行阶段评审; 3,实行严格的产品控制; 4,采用现代程序设计的技术; 5,结果应能清楚地审查;
6,开发小组的人员应该少而精;
7,承认不断改进软件工程实践的必要性。
4软件工程方法学的精确定义,它的三要素。二种方法学,面向结构,面向对象
3个要素:方法 工具和过程 两种方法学:1传统方法学2面向对象方法学 5什么是软件生命周期,它有哪几个阶段(8个阶段),各个阶段分别做什么,这些阶段的重要性。
一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。阶段:1问题定义2可行性研究3需求分析4总体设计5详细设计6编码和单元测试7综合测试8软件维护
6软件过程的精确定义,它与软件工程的关系,它的各种模型,各种模型的优缺点,适用范 围。
软件过程为一个为建造高质量软件所需完成的任务的框架,它规定了完成各项任务的工作步骤。瀑布模型 快速原型模型 增量模型 螺旋模型 喷泉模型 第2章
1什么是可行性研究,它的目的,它的任务,可行性研究是在项目建议书被批准后,对项目在技术上和经济上是否可行所进行的科学分析和论证。目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。任务:对以后的行动方针提出建议。
2从哪几个方面进行可行性研究,每个方面研究什么,它的目的,它的任务。
1技术可行性2经济可行性3操作可行性 3可行性研究的过程,8个阶段。
1.复查系统规模和目标2.研究目前正在使用的系统3.导出新系统的高层逻辑模型4.进一步定义模型5.导出和评价供选择的解法6.推荐行动方针7.草拟开发计划8.书写文档提交审查 4系统流程图,表达什么,它的符号,符号含义 概括地描绘物理系统的传统工具。
5数据流程图,描绘什么,它的符号,符号含义,画法,数据流程图的用途(重点)描绘信息流和数据从输入移动到输出的过程中所经受的变换。
6数据字典的精确定义,作用,内容(4类定义组成)定义数据的方法,用途,实现。
数据字典是关于数据的信息的集合。对数据流图中包含的所有元素的定义的集合。
内容1.数据流2数据流分量3数据存储4处理 7成本效益分析,使用的方法 第3章
1需求分析,它的任务,它的重要性,它的结果,要遵守的4条准则。
开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。
基本任务: ⑴问题识别:双方确定对问题的综合需求,这些需求包括功能需求,性能需求,环境需求,用户界面需求。
重要性:需求分析可以使得开发和测试更能够了解客户的需求,把一些技术难点和可能遇到的难点问题提出来,尽早解决,并且达到一致,便于以后的开发和测试
需求分析结果是产生:需求规格说明书
⑵分析与综合,导出软件的逻辑模型
⑶编写文档:包括编写“需求规格说明书”,“初步用户使用手册”,“确认测试计划”,“修改完善软件开发计划” 任务的7项要求,与用户沟通的方法
获取需求的方法,用到的图形工具:E_R图,图描述什么,使用符号 状态转换图,其他图形,IPO图等 验证需求,4个方面 第5章
1总体设计的目的,任务
总体设计的基本目的就是回答“概括地说,系统应该如何实现?”这个问题。任务是设计软件的结构,也就是明确系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。必要性:可以站在全局的高度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统。2设计过程,二个阶段9个步骤
两个阶段:1系统设计阶段,确定系统的具体实现方案2结构设计阶段,确定软件结构。设计过程的9个步骤:1设想供选择的方案2选取合理的方案3推荐最佳方案4功能分解5设计软件结构6设计数据库7制定测试计划8书写文档9审查和复审。3设计原理,模块化,与模块化有关的独立,度量标准:耦合,内驟
设计原理:1模块化2抽象3逐步求精。模块独立程度的两个定性标准度量:1内聚2耦合。
4启发式7条规则,启发规则:1改进软件结构提高模块独立性2模块规模应该适中3深度、宽度、扇出、扇入都应适中4模块的作用域应该在控制域之内5力争降低模块接口的复杂程度6设计单入口单出口的模块7模块功能应该可以预测。5各种图形工具,HIPO,结构图,数据流图
描绘软件结构的图形工具:1层次图2 HIPO图3结构图;面向数据流的设计方法把信息流映射程软件结构,信息流的类型决定了映射的方法信息流有下述两种类型:1变换流2事务流。第6章
1详细设计的目的,任务
详细设计的根本目标 :是确定应该怎样具体地实现所要求的系统,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言写的程序。
任务:是要设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码。必要性:衡量程序的质量不仅看它的逻辑是否正确,性能是否满足要求,更重要的是要看它能够简单易懂,详细设计的目的不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。
2结构化:定义,指导思想,哪几种结构,使用的工具,建立什么模型使用什么工具
结构化的定义:结构化程序设计是尽可能少用GOTO语句的程序设计方法,最好仅在检测出错误时才使用GOTO语句,而且应该总是使用前向goto语句。结构有三种:顺序,选择,和循环。
指导思想:采用自顶向下,逐步求精的程序设计方法,使用三种基本控制结构构造程序,任何程序都可由顺序,选择,重复三种基本控制结构构造。结构:顺序结构,选择结构,循环结构 工具:图形,表格,和语言
3人机界面设计,要解决的问题,设计过程,设计指南
人机界面设计是接口设计的一个重要组成部分,遇到的四个问题:系统响应时间,用户帮助设施,出错信息处理和命令交互。
设计过程,用户界面设计是一个迭代的过程,通常先创建设计模型,再用原型实现这个设计模型,并由用户试用和评价,然后根据用户意见进行修改。设计指南:一般交互指南,信息显示指南和数据输入指南
4过程设计的各种工具,程序流程图,盒图,PAD图,判定表,判定树,过程设计语言
过程设计的工具有三类:图形,表格,语言。具体有如下几种
程序流程图,盒图,pad图,判定表,判定树,过程设计语言(PDL)
5面向数据结构的设计方法,jackson方法,使用的图形工具
设计方法:根据数据结构设计程序处理过程的方法。
数据的3种使用方法:顺序,选择,重复。Jackson方法
Jackson结构程序设计方法基本上由下述5个步骤组成,(1)分析并确定输入数据和输出数据的逻辑结构,并用jackson图描述这些数据结构(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。
(3)用下述3条规则从描绘数据结构的jackson图导出描绘程序结构的jackson图。
1、为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框。
2根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。总之,描绘程序结构的jackson图应该综合输入数据结构和输出数据结构的层次关系而导出来。在导出程序结构图的过程中,由于改进的jackson图规定在构成顺序结构的元素中不能有重复出现或选择出现的元素,因此可能需要增加中间层次的处理框图。(4)、列出所有操作和条件,并且把它们分配到程序结构图的适当位置。(5)用伪码表示程序。使用的图形工具:jackson图
6复杂度的度量,McCabe方法,流图,(2014年重点)
复杂度度量:把程序的复杂程度乘以适当的常数即可估算出软件中的错误的数量以及软件开发需要的工作量
Mccabe方法:根据程序控制流的复杂程度定量度量程序的复杂程度 第7章
1实现的重点是测试
2软件测试的基础:目标,准则,方法,测试5步骤
软件测试的基础:在测试阶段测试的人员努力设计出一系列的方案,目的却是为了“破坏”已经建造好的软件系统—竭力证明程序中有错误,不能按照预定要求正确工作。发现问题是为了解决问题,测试阶段的根本目标是尽可能多地发现并排除软件中潜在的错误,最终把一个高质量的软件系统交给用户使用。软测的目标:①测试是为了发现程序中的错误而执行程序的过程。②好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。③成功的测试是发现至今为止尚未发现的错误的测试。
软测的准则:①所有的测试都应该能追溯到用户的需求。②应该远在测试开始之前就制定出测试计划。③把Pareto原理应用到软测中。④应该从“小规模”测试开始,并逐步进行“大规模”测试。⑤穷举测试是不可能的。⑥为了达到最佳的测试效果,应该由独立的第三方从事测试工作。
测试方法:白盒测试(结构测试)、黑盒测试(功能测试)。
测试步骤:①模块测试②子系统测试③系统测试④验收测试⑤平行测试。3单元测试,测试的重点,测试方案
单元测试:在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试;集中检测软件设计的最小单元---模块。
单元测试方法有:人工测试和计算机测试;单元测试主要使用白盒测试技术,而且对多个模块的测试可以并行的进行。
单元测试的重点:①模块接口②局部数据结构③重要的执行通路④出错处理通路⑤边界条件
4集成测试:集成的策略,自顶向下,自底向上
集成测试:测试和组装软件的系统化技术。
集成测试的策略:自顶向下和自底向上。
自顶向下集成方法是一个日益为人们广泛采用的测试和组成软件的途径。从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。自底向上集成:从“原子”模块开始组成和测试。
5确认测试,范围,Alpha测试Beta测试
确认测试:又称验收测试,它目标是验证软件的有效性。
Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试,其是在受控的环境中进行的。
Beta测试由软件的最终用户们在一个或多个客户场所进行。与Alpha测试不同,开发者通常不在Beta测试的现场,因此Beta测试是软件开发者不能控制的环境中的“真实”应用。6白盒测试,黑盒测试(重点)
白盒测试:通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行。黑盒测试:通过测试来检测每个功能是否都能正常使用。
7软件的可靠性,计算公式
软件的可靠性:程序在给定的时间间隔内,按照规格说明书的规定成功的运行的概率。设计白盒测试方案的技术主要有逻辑技术和控制结构测试;设计黑盒测试方案的技术主要有等价划分、分界值分析和错误推测。
第8章
1软件维护的定义,4项活动,4类维护
软件维护的定义:在软件已经交付使用后,为了改正错误或满足新的需要而修改软件的过程。
四项维护:第一项维护活动:在任何大型程序的使用期间,用户必然会发现程序错误,并且把他们遇到的问题报告给维护人员,让维护人员诊断和改正的过程。第二项维护活动:为了和变化了的环境适当地配合而进行的修改软件的活动,是既必要又经常的维护活动。第三项维护活动:在使用软件的过程中用户往往提出增加新功能或修改已有功能的建议,还可能提出一般性的改进意见。第四项维护活动:为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件。
四类维护:改正性维护、适应性维护、完善性维护、预防性维护 2软件维护的特点,问题,软件维护的特点:结构化维护与非结构化维护差别巨大、维护的代价高昂、维护的问题很多
软件维护的问题:
1)理解别人写的程序通常非常困难,而且困难程度随着软件配置成分的减少而迅速增加。2)需要维护的软件往往没有合格的文档,或者文档资料显著不足。
3)当要求对软件进行维护时,不能指望有开发人员给人们仔细说明软件。由于维护阶段持续的时间很长,因此,当需要解释软件时,往往原来写程序的人已经不在附近了。4)绝大多数软件在设计时没有考虑将来的修改。5)软件维护不是吸引人的工作。3软件维护的过程
软件维护的过程:维护组织、维护报告、维护的事件流、保存维护记录、评价维护活动 4软件的可维护性
软件可维护性定义:维护人员理解、改正、改动或改进这个软件的难易程度。决定软件可维护性的因素:可理解性、可测试性、可修改性、可移植性、可重用性 5预防性维护与软件再工程。
预防性维护由Miller提出来把今天的方法学应用到昨天的系统上以支持明天的明天的需求
6软件再工程
6类活动:1.库存目录分析2.文档重构3.逆向工程4.代码重构5.数据重构6.正向工程 第9章
1面向对象方法学的定义,要点,优点
定义:面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO(Object-Oriented)方法,是建立在“对象”概念基础上的方法学。
要点:1认为客观世界是由各种对象构成的,任何事物都是对象,复杂的对象可以由简单的对象以某种方式组合而成。2,把所有的对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。3,按照子类与父类的关系,把若干个对象组成一个层次结构的的系统。4,对象之间仅能通过传递消息互相联系。
优点:1.与人类习惯的思维方法一致2.稳定性好3.可重用性好4.较易开发大型软件产品5.可维护性好
2对象的定义,要点,优点
定义:1.对象是具有相同状态的一组操作的集合2.对象是对属性值和操作的封装。3.对象::=
3面向对象的概念,定义,特点
面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术[1]发展到一定阶段后的产物。
特点:1对象唯一性2分类性3继承性4多态性 优点:1易维护2质量高3效率高4易扩展 4类的定义,实例、消息、方法、属性,继承等概念
类的定义:类就是具有相同数据和相同操作的一组相似对象的定义。实例:实例就是由某个特定类所描述的一个具体的对象。
消息:小时就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。方法:方法就是对象所能执行的操作,也就是类中所定义的服务。
属性:属性就是类中所定义的数据,它是对客观世界实体说具有的性质的抽象。封装:在面向对象的程序中,把数据和实现操作的代码集中放在对象内部。
继承:在面向对象的软件技术中,继承是子类自动地共享基类中的数据和方法的机制。多态:多态性是指子类对象可以像父类对象那样使用,同样地消息既可以发给父类对象也可以发给子类对象。重载:函数重载是指在同一作用域类的若干个参数特征不同的函数可以使用相同的函数名字,运送符号重载是指同一个运算符可以施加在不同类型操作数上面。5面向对象建模,对象模型(重点),功能模型(重点)动态模型,模型怎么画,各种符号 6面向对象方法学使用的语言
面向对象语言是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。语言中提供了类、继承等成分。第10章
3个子模型和5个层次 怎样确定类与对象
类是对象的抽象,对象是类的具体实例。确定关联,各种关联怎样确定
建立动态模型,编写脚本,画事件跟踪图
第二篇:软件工程期末复习总结
软件工程期末复习总结
第一章 软件工程学概述
1.软件危机:是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。包括如何开发软件,如何维护数量不断膨胀的已有软件。
2.软件生命周期的定义及划分
3.软件从定义、开发、使用和维护,直到最终废弃的过程称为生命周期
4.按照软件生命周期全过程应完成的任务性质,在概念上可以把软件生命周期划分成问题定义、可行性研究、需求分析(定义时期)、总体设计、详细设计(系统设计)、编码和单元测试、综合测试以及运行维护(系统实现)共8个阶段
5.最基本的测试是集成测试和验收测试
6.软件配置主要包括:程序+数据+文档
7.软件工程的定义软件工程是把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;并研究其中提到的途径。
8.软件工程的基本原理
1.用分阶段的生命周期计划严格管理
2.坚持进行阶段评审
3.实行严格的产品控制
4.采用现代程序设计技术
5.结果应能清楚地审查
6.开发小组的人员应该小而精
7.承认不断改进软件工程实践的必要性
9.软件工程方法学包含3要素:方法、工具和过程。
分成传统方法学和面向对象方法学,其中传统方法学采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务。
10.软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定各项任务的工作步骤(who,when,what,how)
11.软件过程模型有瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型
12.瀑布模型优点
1.阶段间具有顺序性和依赖性
2.推迟实现的观点
3.质量保证的观点
13.软件工程由方法、(工具)和过程三部分组成,称软件工程的三要素。
14.从工程管理的角度软件设计可分为概要设计和(详细)设计两大步骤。
15.基于计算机系统的软件要素中的软件由程序、数据和(文档)组成。
16.软件设计也可看作将需求规格说明逐步转换为软件源代码的过程。()
17.软件生存周期(名词解释)软件从定义、开发、使用和维护,直到最终废弃的过程称为生命周期
18.软件危机(名词解释)是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题 原型法模型一般适应哪些场合?
它适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。
瀑布模型一般适应哪些场合?
瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。例如操作系统、编译系统、数据库管理系统等系统软件的开发。应用有一定的局限性。
第二章 可行性研究
1.可行性研究的目的,就是用最小的代价尽可能短的时间内确定问题是否能够解决
2.至少包含下述3个方面:
1.技术可行性
2.经济可行性
3.操作可行性
3.数据流图的用途
1.交流信息的工具
2.作为分析与设计的工具
4.数据字典的内容由4类元素组成1.数据流
2.数据流分量(即数据元素)
3.数据存储
4.处理
5..系统流程图是物理系统模型
数据流图和数据字典是系统逻辑模型
5.成本/效益分析的方法:1.货币的时间价值,2投资回收期3纯收入4投资回收率
6.数据字典:是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合.第三章 需求分析
1.需求分析是软件定义时期的最后一个阶段,它的基本任务是准备地回答“系统必须做什么”这个问题
2.需求分析的任务
1.确定对系统的综合要求
2.分析系统的数据要求
3.导出系统的逻辑模型
4.修正系统开发计划
3.需求分析的结果是软件需求规格说明书
4.需求分析的方法
1.访谈
2.面向数据流自顶向下求精
3.简易的应用规格说明技术
4.快速建立软件原型,5…实践表明,快速建立软件原型是最准确、最有效和最强大的需求分析技术
6需求分析建模的工具
1.E-R图
2.层次方框图,描绘数据的层次结构
3.Warnier图
4.IPO图
7.验证软件需求应该从下面4个方面验证
1.一致性
2.完整性
3.现实性
4.有效性
第五章 总体设计
1.总体设计的基本目的就是回答“概括地说,系统该如何实现?”
2.总体设计也称概要设计或初步设计
3.总体设计的重要任务
1.划分系统元素和边界
2.设计软件的结构,即系统的模块组成和模块间的关系。
4.总体设计通常由两个阶段组成:
系统设计阶段,确定系统的具体实现方案
结构设计阶段,确定软件结构
5.模块是构成程序的基本构件。
6.模块化就是把程序分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户需求
7.模块化的根据就是分解复杂的问题容易解决
8.软件设计原理
1.模块化
2.抽象
3.逐步求精
4.信息隐藏和局部化
5.模块独立
9.模块设计的原则是高内聚,低耦合耦合是衡量不同模块彼此间互相依赖的紧密程度
内聚是衡量一个模块内部各个元素彼此结合的紧密程度
10.耦合的类型及设计原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合内聚:使用功能内聚和顺序内聚
11.设计的启发式规则
1.提高独立性
2.模块适中
3.深度、宽度、扇入和扇出适当
4.模块作用域应该在控制域之内
5.降低模块接口的复杂度
6.设计单入口单出口的模块
7.模块功能可以预测
12.据流的设计方法的两种不同类型的设计:变换分析和事务分析
优化方法的格言:先使它能工作,然后再使它快起来
第六章 详细设计
设计阶段的根本目录是确定应该怎样具体地实质所要求的系统。
详细设计不是编码,而是设计出程序的“蓝图”
结构程序设计最早由Dijkstra提出
只要3种基本的控制结构就能实现任何单入口单出口的程序,这3种基本的控制结构是“顺序”、“选择”和“循环”
1.程序设计的经典定义:如果一个程序的代码块仅仅透过顺序、选择和循环这3中基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的结构程序设计是尽可能少用GOTO语句的程序设计方法,最好仅在检测出错误时才使用GOTO语句,而且应该总是使用前向GOTO语句
人机界面的设计质量,直接影响用户对软件产品的评价
设计人机界面总会遇到下述四个问题:
1.系统响应时间
2.用户帮助设备
3.出错信息处理
4.命令交互
人机界面设计指南:
1.置用户于控制之下
2.减少用户的记忆负担
3.保持界面一致
判定表可用作软件测试
Jackson图包含3类逻辑数据结构,顺序结构,选择结构,重复结构
第七章 实现
通常把编码和测试统称为实现
编码就是把软件设计结构翻译成某种程序设计语言书写的程序
测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误
软件测试的工作量往往占软件开发总工作量的40%以上
调试是测试阶段最困难的工作
G.Myers测试的目标或定义:
1.测试是为了发现程序中的错误而执行程序的过程
2.好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案
3.成功的测试是发现了至今为止尚未发现的错误的测试
软件测试准则
1.所有测试都应该能追溯到用户需求
2.应该远在测试开始之前就制定出测试计划
3.把Pareto原理应用到软件测试中
4.应该从“小规模”测试开始,并逐步进行“大规模”测试【(8020)测试发现的错误80%很可能是由程序中20%的模块造成的】
5.穷举测试是不可能的6.第三方测试(A编写,B测试)
V字型模型
测试分为白盒测试(结构测试)和黑盒测试(功能测试)
具体的测试方法{【(测试用例)()】【(覆盖条件)()】}
测试步骤:1.模块测试.2子系统测试 3.系统测试 4.验收测试 5.平行运行
软件可靠性:是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率
软件可用性:是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率
第八章 维护
软件工程的主要目的是提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本
所谓维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
四类维护
1.改正性维护纠正使用过程中暴露出来的错误
2.适应性维护适应外部环境变化
3.完善性维护改进原有软件
4.预防性维护改进将来的可维护性和可靠性
软件维护的特点
1.结构化维护与非结构化维护差别巨大
2.维护的代价高昂
3.维护的问题很多
决定软件可维护性的因素
1.可理解性
2.可测试性
3.可修改性
4.可移植性
5.可重用性
文档是影响软件可维护性的决定因素
软件系统的文档可以分为用户文档和系统文档两类
1.用户文档主要描述系统功能和使用方法
2.系统文档指从问题定义,需求说明验收测试计划这样一系列实现有关的文档
Miller:“把今天的方法学应用到昨天的系统上,以支持明天的需求。”
第三篇:软件工程复习总结
第一章 软件工程概述
1.软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.2.软件危机的典型表现:
①对软件开发成本和进度的估计常常很不准确.②用户对“已完成的”软件系统不满意的现象经常发生.③软件产品的质量往往靠不住.④软件常常是不可维护的.⑤软件通常没有适当的文档资料.⑥软件成本在计算机系统总成本中占得比例逐年上升.⑦软件开发生产率提高的速度远跟不上计算机应用迅速普及深入的趋势.3.产生软件危机的原因:
①与软件本身的特点有关,软件缺乏“可见性”.②与软件开发维护的方法不正确有关.4.消除软件危机的途径:
①首先应该对计算机软件有一个正确的认识.②必须充分认识到软件开发不是某种个体劳动的神秘技巧,而是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目.③应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法.④应该开发和使用更好的软件工具.5.软件工程的基本原理:
①用分阶段的生命周期计划严格管理.②坚持进行阶段评审.③实行严格的产品控制.④采用现代化程序设计技术.⑤结果应能清楚的审查.⑥开发小组的人员应该少而精.⑦承认不断改进软件工程实践的必要性.6.软件生命周期:
①问题定义 → ②可行性研究 → ③需求分析 → ④总体设计 → ⑤详细设计 → ⑥编码和单元测试 → ⑦综合测试 → ⑧软件维护
7.瀑布模型: ⑪特点:①阶段间具有顺序性和依赖性.②推迟实现的观点③质量保证的观点
⑫优点:可强迫开发人员采用规范的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证.⑬缺点:由文档驱动.产品交付给用户之前,用户只能通过文档来了解产品.8.快速原型模型: 是快速建立起来的可以在计算机上运行的程序,它能完成的功能往往是最终产品的一个子集.优点: 软件产品的开发基本上是线性顺序进行的.9.增量模型: 把软件产品作为一系列的增量构件来设计、编码、集成和测试.优点: 能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击.第二章 可行性研究
1.可行性研究的目的:用最小的代价在尽可能短的时间内确定问题是否能够解决.2.从以下几方面研究每种解法的可行性:
①技术可行性②经济可行性③操作可行性④社会可行性
3.可行性研究的过程:
①复查系统规模和目标.②研究目前正在使用的系统.③导出新系统的高层逻辑模型.④进一步定义问题.⑤导出和评价供选择的解法.⑥推荐行动方针.⑦草拟开发计划.⑧书写文档提交审查.4.系统流程图是概括地描绘物理系统的传统工具.数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换.5.数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义集合.数据字典的内容由4类元素的定义组成:数据流、数据元素、数据存储、处理.6.成本估计:
①代码行技术:每行代码平均成本×行数=软件的成本
②任务分解技术:把软件开发工程分解为若干个相对独立的任务,再分别估计每个任务的成本,最后累加起来.③自动估计成本技术:用自动估计成本的软件工具.7.系统的经济效益=因使用新系统而增加的收入+使用新系统可以节省的运行费用
系统是否值得投资赢考虑:①货币的时间价值 ②投资回收期 ③纯收入 ④投资回收率
第三章 需求分析
1.需求分析的任务:
⑪确定对系统的综合要求:①功能需求②性能需求③可靠性和可用性需求④出错处理需求⑤接口需求⑥约束⑦逆向需求⑧将来可能提出的要求
⑫分析系统的数据要求
⑬导出系统的逻辑模型
⑭修正系统开发计划
2.实体联系图(ER图)实体用方框□,关系用菱形◇,属性用椭圆○
状态转换图
层次方框图
Warnier图
IPO图(输入-处理-输出)
第五章 总体设计
1.总体设计过程:
①设想提供选择的方案②选取合理的方案③推荐最佳方案④功能分解⑤设计软件结构⑥设计数据库⑦制定测试计划⑧书写文档⑨审查和复审
2.模块独立: 重要性:①有效的模块化软件比较容易开发出来 ②便于测试和维护 模块的独立程度由两个标准度量: 内聚、耦合耦合:是对一个软件结构内不同模块之间互连程度的度量,耦合强弱取决于模块间接口的复杂程度.耦合度由低到高:数据耦合<控制耦合<特征耦合<公共环境耦合<内容耦合内聚:标志着一个模块内各个元素彼此结合的紧密程度.高内聚往往意味着低耦合.内聚度由低到高:偶然内聚<逻辑内聚<时间内聚<过程内聚<通信内聚<顺序内聚<功能内聚
3.启发式规则:
①改进软件结构提高模块独立性.②模块规模应该适中.③深度、宽度、扇出和扇入都应适当.④模块的作用域应该在控制域之内.⑤力争降低模块接口的复杂程度.⑥设计单入口单出口的模块.⑦模块功能应该可以预测.4.面向数据流的设计方法:变换分析,事务分析
第六章 详细设计
1.人机界面设计问题: 系统响应时间、用户帮助设施、出错信息处理、命令交互
2.人机界面设计指南:
⑪一般交互指南:
①保持一致性.②提供有意义的反馈.③在执行有较大破坏性的动作之前要求用户确认.④允许取消绝大多数操作.⑤减少在两次操作之间必须记忆的信息量.⑥提高对话、移动和思考的效率.⑦允许犯错误.⑧按功能对动作分类,并据此设计屏幕布局.⑨提供对用户工作内容敏感的帮助设施.⑩用简单动词或动词短语作为命令名.⑫信息显示指南:
①只显示与当前工作内容有关的信息.②不要用数据淹没用户,应该用便于用户迅速吸取信息的方式来表示数据.③使用一致的标记、标准的缩写和可预知的颜色.④允许用户保持可视化的语境.⑤产生有意义的出错信息.⑥使用大小写、缩进和文本分组以帮助理解.⑦使用窗口分隔不同类型的信息.⑧使用“模拟”显示方式表示信息,以使信息更容易被用户提取.⑨高效率的使用显示屏.⑬数据输入指南:
①尽量减少用户的输入动作.②保持信息显示和数据输入之间的一致性.③允许用户自定义输入.④交互应该是灵活的,并且可调整成用户最喜欢的输入方式.⑤使在当前动作语境中不适用的命令不起作用.⑥让用户控制交互流.⑦对所有输入动作都提供帮助.⑧消除输入的冗余.3.过程设计的工具: 即描述程序处理过程的工具.①程序流程图②盒图③PAD图(问题分析图)④判定表⑤判定树⑥过程设计语言(PDL,也称为伪码)
4.面向数据结构的设计方法:Jackson方法和Warnier方法
Jackson图:只有顺序结构,选择结构,重复结构这三种逻辑数据结构.优点: 便于表示层次结构;形象直观可读性好;既能表示数据结构也能表示程序结构缺点: 选择条件或循环结束条件不能上图;也不易把图翻译成程序;框间连线为斜线,不易打印.(改进的Jackson图框间连线为直线)
第七章 实现
1.通常把编码和测试统称为实现.2.编码:⑪选择程序语言的标准:①系统用户的要求②可以使用的编译程序③可以得到的软件工具④工程规模⑤程序员的知识⑥软件可移植性要求⑦软件的应用领域
⑫编码风格应遵循的规则:①程序内部的文档②数据说明③语句构造④输入输出⑤效率
3.测试:⑪目标:①发现程序中的错误②发现错误的测试方案③发现错误的测试 ⑫准则:①所以测试都应该能追溯到用户需求.②应该远在测试开始之前就制定出测试计划.③把Pareto原理应用到测试软件中.④应该从“小规模”测试开始,并逐步进行“大规模”测试.⑤穷举测试是不可能的.⑥应该由独立的第三方从事测试工作.⑬方法:白盒,黑盒
⑭步骤:①模块测试②子系统测试③系统测试④验收测试⑤平行运行
4.白盒测试技术:把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理方法.按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作.5.黑盒测试技术:把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程.在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的信息,能否保持外部信息完整性.等价划分是一种黑盒测试技术,这种技术把程序的输入域划分成若干个数据类,据此导出测试用例.6.调试途径:①蛮干法②回溯法③原因排除法
第八章 维护
1.维护的问题:
①理解别人写的程序通常非常困难,而且困难程度随着软件配置成分的减少而迅速增加.②需要维护的软件往往没有合格的文档,或文档资料不足.③当要求对软件进行维护时,不能指望由开发人员给人们仔细说明软件.④绝大多数软件在设计时没有考虑将来的修改.⑤软件维护不是一项吸引人的工作.2.软件维护过程: ①维护组织②维护报告③维护的事件流
④保存维护记录⑤评价维护活动
3.决定软件可维护性的因素: ①可理解性②可测试性③可修改性
④可移植性⑤可重用性
第十三章 软件项目管理
1.估算软件规模:代码行技术,功能点技术
2.Gantt图:是历史悠久、应用广泛的制定进度计划的工具.缺点:①不能显式地描绘各项作业彼此间的依赖关系.②进度计划的关键部分不明确,难于判定哪些部分应当是主攻和主控的对象.③计划中有潜力的部分及潜力的大小不明确,往往造成潜力的浪费.3.人员组织方式:①民主制程序员组 ②主程序员组 ③现代程序员组
4.软件质量保证措施:基于非执行的测试,基于执行的测试和程序正确性证明.5.软件配置:①软件配置项:计算机程序,描述计算机程序的文档,数据.②基线
6.软件配置管理过程:①标识软件配置中的对象 ②版本控制 ③变化控制
④配置审计 ⑤状态报告
7.能力成熟度的五个等级从低到高依次是:初始级<可重复级<已定义级<已管理级<优化级
第四篇:软件工程复习知识点总结
1.软件危机的概念,内容,原因及消除的途径; 2.软件工程的定义,基本原理;
3.软件工程方法学的基本概念、内容;
4.软件生命周期的具体内容,每一个阶段的任务是什么?结合具体的工程例子来理解做软件项目主要分那几个阶段。
5.理解几个典型软件过程的内容及其优点与缺点:瀑布模型、增量模型、快速原型模型、螺旋模型、喷泉模型等; 6.了解可行性研究中的任务和过程;
7.掌握系统流程图的概念和方法,会从具体的案例中抽象出系统流程图; 8.掌握数据流图的概念和方法,会从具体的案例中画出0层数据流图和功能级数据流图;
9.掌握数据字典的内容、方法、用户和实现; 10.了解成本/效益分析方法;
11.了解需求分析过程中任务是什么.12.理解面向数据流自顶向下逐步求精的方法和意义;
13.理解分析及建模的意义,需求分析中应该建立哪三种模型?有哪些工具来帮助建立这些模型?
14.掌握实体关系(E-R)图的概念,内容和实现方法,能结合具体实例建立实体关系图;
15.掌握状态图的概念,内容,实现方法和作用;
16.掌握层次方框图、warnier图、IPO图的概念,内容和作用; 17.有穷状态机的概念和内容;
18.总体设计是做什么?总体设计的过程是怎样的?总体结构设计的目的是什么?
19.掌握几个设计原理,理解他们的内容和意义;
20.掌握耦合和内聚的概念和内容,理解这些原理对设计有哪些指导意义; 21.耦合包含了哪些类型?每个类型的具体内容是什么?要求能通过程序代码识别出耦合类型。
22.启发性规则的内容及部分概念。23.层次图、HIPO图和结构图的内容;
24.掌握面向数据流的设计方法,了解其中涉及到的概念(变换流,事务流),结合例子理解变换分析的具体过程。25.详细设计是做什么? 26.什么是结构程序设计?
27.人机界面设计问题包含哪些?
28.掌握设计过程中用到的工具:程序流程图的概念,内容和方法;盒图的概念、内容和方法;会结合实例使用这些工具;掌握PAD 图的概念和内容;掌握判定表的概念和内容。要结合实例来掌握它们。
29.了解结合Jackson图来掌握面向数据结构的设计方法;会用Jackson程序设计方法对具体的实例进行设计。
30.掌握几种测试:单元测试、集成测试、确认测试、白盒测试技术和黑盒测试技术;掌握它们的概念,内容和方法;
31.对每一种测试方法,理解其具体细节:比如理解什么是渐增式测试和非渐增式测试,什么是Alpha测试和Beta测试.....; 32.结合G.J.Myers的观点理解软件测试的目的;(教材p150)33.掌握白盒测试的技术细节(比如:掌握逻辑覆盖中的8个覆盖点;掌握基本路径测试,会根据过程设计结果画出相应的流图;会计算流图的环形复杂度;会计算出线性独立路径的基本集合);掌握黑盒测试的技术细节; 34.理解软件维护的定义、特点和维护过程; 自测练习题:
一、选择题
1.瀑布模型的存在问题是()
A.用户容易参与开发
B.缺乏灵活性
C.用户与开发者易沟通
D.适用可变需求
2.可行性分析是在系统开发的早期所做的一项重要的论证工作,它是决定该系统是否开发的决策依据,因必须给出()的回答。
A.确定
B.行或不行
C.正确
D.无二义
3. 系统流程图是用来
()
A 描绘程序结构的 B 描绘系统的逻辑模型
C 表示信息层次结构的图形工具 D 描绘物理系统的 4.下列属于维护阶段的文档是()
A.软件规格说明
B.用户操作手册
C.软件问题报告
D.软件测试分析报告 5.软件按照设计的要求,在规定时间和条件下达到不出故障,持续运行的要求的质量特性称为()
A.可用性
B.可靠性
C.正确性
D.完整性
6、快速原型模型的主要特点之一是()A.开发完毕才见到产品
B.及早提供全部完整的软件产品 C.开发完毕后才见到工作软件 D.及早提供工作软件
7、软件需求分析的主要任务是准确地定义出要开发的软件系统是()A.如何做
B.怎么做 C.做什么
D.对谁做
8.若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。设计这组测试用例的方法是()
A.条件覆盖法
B.等价分类法
C.边界值分析法
D.错误推测法
9.研究开发所需要的成本和资源是属于可行性研究中的研究的一方面。()A.技术可行性
B.经济可行性 C.社会可行性
D.法律可行性 10.模块的内聚性最高的是()A.逻辑内聚
B.时间内聚 C.偶然内3 聚
D.功能内聚
12.()是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。A 多态性 B 继承 C 封装 D 消息
二、填空题
1.将数据流图映射为程序结构时, 所用映射方法涉及信息流的类型。其信息流分为 和 两种类型。
2.为了便于对照检查,测试用例应由输入数据和预期的_ _____两部分组成。3.软件由程序、、组成。
4.在学校中,一个学生可以选修多门课程,一门课程可以由多个学生选修,那么学生和课程之间是
关系。
5.软件工程釆用层次化的方法,每个层次都包括、方法、三要素。6.一个模块拥有的直属下级模块的个数称为,一个模块的直接上级模块的个数称为。
三、名词解释题 1.内聚性 2.软件危机 3.完善性维护 4.数据字典 5.程序流图 6.驱动程序 7.数据耦合 8.类图
9.Alpha测试与Beta测试 10.软件产品
四、简答题
1.黑盒测试旨在测试软件是否满足功能要求,它主要诊断哪几类错误? 2.瀑布模型、增量模型的优缺点
3.程序流程图或者盒图的5种基本结构的画法 4.简述过程设计语言(PDL)的特点。
5.根据特定的项目,你会考虑哪些因素来选择合适的程序设计语言。6.(教材P141)画出下列伪码程序的程序流程图和盒图 START IF p THEN WHILE q DO f END DO ELSE BLOCK 4 g n END BLOCK END IF STOP 7.(教材P141)研究下面的PDL语言(过程设计语言,也称伪码程序): LOOP: Set I to(START + FINISH)/2 If TABLE(I)=ITEM goto FOUND If TABLE(I)
五、综合题(三题分别5,7,8分,共20分)
1.某培训中心要研制一个计算机管理系统。它的业务是: 将学员发来的信件收集分类后,按几种不同的情况处理。
如果是报名的,则将报名数据送给负责报名事务的职员,他们将查阅课程文件,检查该课程是否额满,然后在学生文件、课程文件上登记,并开出报告单交财务部门,财务人员开出发票给学生。
如果是想注销原来已选修的课程,则由注销人员在课程文件、学生文件和帐目文件上做相应的修改,并给学生注销单。
3)如果是付款的,则由财务人员在帐目文件上登记,也给学生一张收费收据。要求:
(1).对以上问题画出功能级数据流程图。(2).画出该培训管理的软件结构图。
2.某旅馆的电话服务如下:
可以拨分机号和外线号码。分机号是从7201至7299。外线号码先拨9,然后是市话号码或长话号码。长话号码是以区号和市话号码组成。区号是从100到300中任意的数字串。市话号码是以局号和分局号组成。局号可以是455,466,888,552中任意一个号码。分局号是任意长度为4的数字串。
要求:写出在数据字典中,电话号码的数据条目的定义即组成。
3.软件测试的过程包括哪些?黑盒测试与白盒测试的具体内容是什么?它们分别针对哪几类错误?
一.集成测试中自顶向下集成和自底向上集成的优缺点?
1、自顶向下集成 优点:较早地验证了主要控制和判断点;按深度优先可以首先实现和验证一个完整的软件功能;功能较早证实,带来信心;只需一个驱动,减少驱动器开发的费用;支持故障隔离。
缺点:柱的开发量大;底层验证被推迟;底层组件测试不充分。适应于产品控制结构比较清晰和稳定;高层接口变化较小;底层接口未定义或经常可能被修改;产口控制组件具有较大的技术风险,需要尽早被验证;希望尽早能看到产品的系统功能行为。
2、自底向上集成
优点:对底层组件行为较早验证;工作最初可以并行集成,比自顶向下效率高;减少了桩的工作量;支持故障隔离。
缺点:驱动的开发工作量大;对高层的验证被推迟,设计上的错误不能被及时发现。
适应于底层接口比较稳定;高层接口变化比较频繁;底层组件较早被完成。
二.简述螺旋模型的基本开发过程。正确答案
(1)需求定义。利用需求分析技术理解应用领域,获取初步的用户需求,制定项目开发计划。
(2)风险分析。根据初始需求或改进意见评审可选用的方案,给出消除或减少风险的途径。
(3)工程实现。利用快速原型构造方法针对已知的用户需求生成快速原型。(4)评审。将原型提交用户使用并征询用户改进意见。
上述过程将不断迭代,直至给出用户满意的目标软件产品。
三.一般而言,衡量某种程序语言是否适合于特定的项目,应考虑哪些因素?(1)应用领域;(2)算法和计算复杂性;(3)软件运行环境;(4)用户需求中关于性能方面的需要;(5)数据结构的复杂性;(6)软件开发人员的知识水平;(7)可用的编译器与交叉编译器。
四.名词解释:
软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象
软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的和隐含特征相一致的程度。
恢复测试是指采取各种人工干预方式强制性地使软件出错,使其不能正常工作,6 进而检验系统的恢复能力。
类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等
数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递
第五篇:软件工程复习点总结
软件工程
第一章
1.软件过程模型有:线性顺序模型(瀑布模型),原型实现模型,螺旋模型,快速应用开发模型RAD,并发模型,基于构件的开发模型,形式化方法模型,第四代技术。2.软件危机变现:《1》软件代价高
《2》开发进度难以控制
《3》工作量估计困难 《4》质量差
《5》修改、维护困难
3.维护类型:改正性维护,适应性维护,完善性维护,预防性维护。
4.软件是计算机系统中与硬件相互依存的另一部分,它是包括程序在,数据及其相关文档的集合。
5.软件工程是一门旨在生产无故障的,及时交付的,在预算之内的和满足用户需求的软件学科。
6.软件生命周期包括了软件定义,软件开发和运行维护3个时期组成。
7.软件生命周期模型有问题定义,可行性研究,需求分析,总体详细设计,总体编码和单元测试,综合测试软件维护组。
8.CMM是用于评价一个组织软件过程成熟度和识别增加这些过程的成熟度所需要的关键实践的一个模型,是建立软件组织所使用的进程成熟度的模型以及定义和测量过程成熟度的有效方法,在实际中被软件开发组织用于软件过程改进和评估。9.软件过程开发模型: 1)线性模型(瀑布模型):特点:自上而下,相互衔接如同瀑布流水,逐级下落,体现不可逆转性。
优点:强调开发的阶段性、强调早期计划和需求调查以及强调产品测试。
(1)为项目提供了按阶段划分的检查点
(2)当前一阶段完成后,你自需要去关注后序阶段。(3)开在迭代模型中应用瀑布模型。
缺点:(1)在项目各阶段之间极少有反馈。
(2)只用在项目生命周期的后期才能看到结果。
(3)通过过多的强制完成时期和里程碑来跟踪各个阶段。
适用性:用户的需求非常清楚全面。2)快速原型模型:(1)可以得到比较良好的需求定义,容易适应需求的变化。
(2)有利于开发与培训的同步
(3)开发费用低,开发周期短且对用户更友好
缺点:(1)客户与开发者对原型模型理解不同
(2)准确的原型设计比较困难(3)不利于开发人员开发
3)增量型优点:(1)人员分配灵活
(2)如果核心产品很受欢迎,则可增加人力实现下一个增量(3)可先发布部分功能给客户,对客户起到镇静剂的作用
缺点:(1)并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构。
(2)容易退化为边做边改模型。从而使软件过程的控制失去整体性。
4)螺旋模型:(1)设计上的灵活性,可以在项目的各个阶段进行变更。
(2)以小的分段来构建大型系统,使成本计算变得简单容易。
(3)随着项目推进,客户始终掌握项目的最新消息,从而他或她能够和管理层有效交互。
缺点:(1)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。
(3)过多的迭代次数会增加开发成本,延迟提交时间。
10.可行性分析法包括:(1)经济可行性(2)技术可行性(3)运行可行性(4)法律可行性
(5)开发方案的选择 11.需求工程分为:
(1)系统可行性研究:它指的现有的软件、硬件技术能否实现用户对新系统的需求。,从业务角度来决定系统开发是否划算以及在预算范围内能否开发出来。
(2)需求导出和分析:这是一个通过对现有系统分析与潜在用户和购买者讨论。进行任务分析等导出系统需求的过程,也可能需要一个或多个不同的系统模型和原型
(3)需求描述。需求描述就是把分析活动中收集信息以文档的形式确定下来。(4)需求有效性验证。这个活动检查需求实现、一致和完备。
(5)需求管理。需求管理是一种系统化方法,可用于获取、组织和记录系统需求并使客户和项目团队在系统变更需求上达成并保持一致。12.软件需求5个方面:(1)问题识别(2)评估与综合(3)建模
(4)规约(5)评审 13.需求获取方法:(1)建立联合分析小组
(2)客户访谈(3)问题分析与确认(4)快速原型法
14.需求分析原则:(1)必须能够表达和理解问题的数据域和功能域
(2)按按自顶向下,逐层分解。
(3)要给出系统的逻辑视图和物理视图。15.软件设计分为总体设计和详细设计。16.总体设计任务:
(1)系统分析员审查软件计划、软件需求分析、提供的文档、提出最佳推荐方案,用系统流程图,组成物理元素清单,成本效益分析,系统的进度计划,供专家审定后进入设计。(2)去顶模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块之间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。(3)编写概要设计说明书,用户手册、测试计划、选用相关的软件工具来描述软件结构,结构图是经常使用的软件的软件描述工具。选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐藏原则等。
17.信息隐蔽是指每个模块内部信息对于其他不需要此信息的模块来说是不可访问的,即外部模块对模块内部的实现过程的不可见性。
18.模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能,以满足用户的需求。
19.模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块够着是否合理的标准。
20.衡量模块独立的两个标准是耦合性和内聚性。21.耦合性:也称块间联系,指软件系统结构中各模块间相互联系和紧密程度的一种度量。模块之间联系月紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性,调用的方式以及传递的信息。
22.内聚性:又称为块间联系。指模块的躬耕强度的度量即一个模块内部各个元素,彼此结合的紧密程度的度量。若一个模块内各个元素联系的越紧密,则它的内聚性越高。23.模块独立原则也称为模块设计的原则:高内聚、低耦合。
24.耦合性包括:非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合
25.内聚性包括:巧合内聚,逻辑内聚,时间性内聚,过程内聚,通信内聚,信息内聚,功能内聚。
26.数据流程图的定义和作用:数据流程图有两个特征:抽象性和概括性。抽象性指的是数据流程图把具体的组织机构、工作场所、物质流都去掉,只剩下信息和数据存储,流动,使用以及加工情况。
概括性则是指数据流图把系统对各种业务的处理过程联系起来考虑,形成一个总体。27.数据流程图的组成:外部实体、数据流、处理、数据存储。
28.面向对象的基本概念:对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。
29.对象:它是分装了数据结构及可以施加在这些数据结构上的操作的封装体。30.类:用于表示某些对象的共同特征(属性和操作),对象是类的实例。31.实例:就是由某个特定类所描述的一个具体对象。32.消息:消息传递时对象与外界相互关系的唯一途径。
33.方法:方法就是对象所能执行的操作,也就是类中所定义的服务。
34.属性:属性就是类中定义的数据,它是对客观世界实体所具有的性质的抽象。35.封装:封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节。36.继承:是现实世界中遗传关系的直接模拟。
37.多态性:指允许不同类的对象对同一信息做出响应
38.重载:函数重载是指在同一个作用域内的若干个参数特征不同的函数可以使用相同的函数名字
运算重载是指同一个运算符可以施加不同类型的操作数上面 39.UML是面向对象的方法
40.静态结构图包括类图和对象图 41.UML由九种图构成:
用例图
类图
对象图
活动图
状态图
序列图(顺序图)
协作图
构件图(组件图)
部署图(配置图)
42.UML视图大体分为三大类:
结构分类
动态行为
模型管理
43.类图有3种属性
“+”public(公共)
“#”protected(保护)
“-”private(私有)
操作一样
44.类之间的关系有用关联:泛化
聚合依赖
组合
45.用例图有3种关系:communicates(通信)
extends(延伸)
uses(使用)46.程序设计语言3种结构:顺序
判断
循环
47.良好的编码风格:
缩进良好,没有过多嵌套
变量名,空间名,类名都取直接有意义的字眼
有一些必要注释
符合思维习惯使用运算符
模块化 48.软件测试定义:为了发现程序中的错误而执行程序的过程 49.测试方法
黑盒测试(功能测试)
白盒测试(结构测试)
50.黑盒测试如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都正常使用 白盒测试:如果知道产品内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明的规定正常进行
51.软件测试:
单元测试
集成测试
确认测试
系统测试
52.单元测试也称为模块测试或结构测试,通常可放在编程序段,主要采用逻辑覆盖技术,目的是检查模块是否能实现了详细设计说明书种规定的功能和算法 53.单元测试主要发现编程和详细设计中产生的错误 54.测试一个模块是需要为该模块编写一个驱动模块和若干桩模块。顶层测试无需驱动模块,底层测试无需桩模块
55.集成测试也称为组装测试,在单元测试的基础上把所有模块组装成一个系统进行测试。主要测试设计阶段产生的错误
56.非渐增式集成测试(先测试后组装)和渐增式集成测试(测试一个组装一个)57.确认测试目标是检验软件的有效性,在需求分析阶段制定
58.白盒测试技术:语句覆盖
判定覆盖
条件覆盖
判定条件覆盖
条件组合覆盖
路径覆盖
59.黑盒测试技术:等价类划分,边值分析,错误推测和因果图等 60.按照测试过程是否在实际应用过程中来分,有静态分析与动态测试
测试方法有分析法(静态分析和白盒测试)与非分析法(黑盒法)
61.软件维护分为以下4类:改正性维护;适应性维护;完善性维护;预防性维护
62.决定软件可维护性的因素: 可理解性
可测试性
可修改性
可移植性
可重用性 63.基本路径测试:环路复杂性的3种计算方法: <1>将环路复杂度定义为流图种区域的数量
<2>设E为流图的边数,N为图中的节点数,则定义环路复杂度
V(G)=E-N+2 <3>设p为流图G中的制定节点数,则有V(G)=p+1 64.关键路径测试