软件工程小抄.ppt_第1页
软件工程小抄.ppt_第2页
软件工程小抄.ppt_第3页
软件工程小抄.ppt_第4页
软件工程小抄.ppt_第5页
已阅读5页,还剩9页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1软件的定义软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合2软件的特点 1软件是一种逻辑实体,而非具体的物理实体 2在研制、开发活动中被创造出来,但不能按传统的生产含义加以理解3在软件的运行和使用期间,没有磨损、老化问题3软件分类功能:系统支撑应用;规模:微小中大甚极;工作方式:实时处理、分时 、交互式、批处理;服务对象:项目产品4软件危机*软件需求增长得不到满足 *软件生产成本高,价格昂贵*软件生产进度无法控制*软件需求定义不准确,易偏离用户需求*软件质量不易保证*软件可维护性差等等5软件工程包括三个要素:方法、工具和过程。 1) 软件工程方法为软件开发

2、提供了“如何做”的技术。 2) 软件工具为软件工程方法提供自动的或半自动的软件支撑环境。 3) 软件工程过程指将软件工程的方法和工具综合起来,以达到合理、及时地进行计算机软件开发的目的。6瀑布模型:优点: 1)提供了软件开发的基本框架,优于“手工作坊”式的开发方法 2)有利于大型软件开发过程中人员的组织、管理 3)有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率 缺点: 1)在软件开发的初始阶段指明软件系统的全部需求是困难的,有时甚至是不现实的 2)需求确定后,用户和软件项目负责人要等相当长的时间(经过设计、编码、测试、运行)才能得到一份软件的最初版本。如果用户对这

3、个软件提出比较大的修改意见,那么整个软件项目将会蒙受巨大的人力、财力、时间方面的损失。,可行性研究目的就是要用最小的代价在尽可能短的时间内确定问题是否能够解决。 具体任务: 1、进一步分析和澄清问题定义2导出系统的高层逻辑模型。从系统逻辑模型出发,探索若干种可供选择的主要解法(即系统实现方案)。对每种解法都应该至少从下述几方面研究其可行性:经济技术法律操作3、对以后的行动方针提出建议。需求分析具体任务: 1确定对系统的综合要求 1) 系统功能要求 2) 系统性能要求 3)运行要求 4)将来可能提出的要求 2、 分析系统的数据要求(需求分析的本质就是对数据和加工进行分析) 3 导出系统的逻辑模型

4、 4修正系统开发计划 5开发原型系统(可选) 结构化分析方法(SA方法)就是面向数据流自顶向下逐步求精进行需求分析的方法。 分析的过程:面向数据流,采用自顶向下、分支分层、逐步分解、逐步细化、逐步求精,最后落实到具体加工、基本加工、简单加工。用逐步求解的方法控制系统的复杂度,使得复杂系统简单化、抽象系统具体化。 自顶向下逐层画DFD的步骤如下: 1)把基本系统模型加上源点和终点作为顶层DFD。 2)画出各层DFD,逐层画DFD的过程也就是逐层分解的过程。 为便于管理,要对分层DFD和图中的加工进行编号。A、 子图的图号就是分解的父图中相应加工的编号。B、 子图中的加工编号是由子图号、小数点、局

5、部顺序号组成。 3)画出总的DFD。(可选),软件设计分类一旦软件需求确认之后,就进入开发阶段。开发阶段由3个互相关联的步骤组成,即设计、实现(编码)和测试。 A从工程管理的角度看,软件设计可分为概要设计/总体设计和详细设计两大步骤。 B从技术角度来看,软件设计可分为数据设计、系统结构设计和过程设计。现在越来越多的人把界面设计也单独取出作为一个方面。采用模块化原理的优点: 1)可以使软件结构清晰,容易设计、容易阅读和理解、容易测试和调试。 2)提高软件的可靠性。 3)易于软件开发工程的组织管理。 模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简

6、单的。耦合非直接耦合、数据耦合、特征耦合/标记耦合、控制耦合、外部耦合、公共耦合、内容耦合 内聚偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚 概要设计 基本目的是用比较抽象概括的方式确定系统如何完成预定的任务,即确定软件系统的总体结构,给出系统中各个组成模块的功能和模块间的接口。软件概要设计的目标是力求增加模块的内聚,尽量减少模块间的耦合。但增加内聚比减少耦合更重要,应当把更多的注意力集中到提高模块的内聚程度上来。 在进行软件结构设计时应该遵循的最重要的原理是模块独立原理。 系统结构设计的七条启发式原则1) 改进软件结构提高模块独立性 2) 模块规模应该适中 3) 深度

7、、宽度、扇出和扇入都应适当 4) 模块的作用范围应在控制范围之内 5) 力争降低模块接口的复杂程度 6) 设计单入口单出口的模块 7) 模块功能应该可以预测,概要设计常用图形工具有:层次图、HIPO图、结构图。 软件概要设计方法1) 以数据流图为基础构造模块结构的结构化设计方法(SD,Structured Design) 2) 以数据结构为基础构造模块结构的Jackson方法和LCP(Logical Construction of Programs)(Wanier)逻辑构造方法 3) 以对象、类、继承和通信为基础的面向对象的设计方法(OOD)此外,以信息隐蔽为原则的Parnas方法虽然没有给出

8、系统化的设计方法,但提出了一组原则。 概要设计的步骤: 1、分析/重画DFD 2、确定DFD的特点及边界 3、映射为软件结构 4、细化后,得到初始结构图 5、获得最终的软件结构图 概要设计说明书 1. 引言。编写目的,项目背景等 2. 任务概述。目标,运行环境,需求概述,条件与限制等 3. 总体设计。处理流程,系统总体结构等 4. 接口设计。外部接口,内部接口等 5. 数据结构设计 6. 运行设计 7. 出错处理设计 8. 其它问题 详细设计 就是要在总体设计阶段成果的基础上,考虑如何实现定义的软件系统,直到对系统中的每个模块给出足够详细的过程描述。 结构化程序设计技术是进行详细设计的逻辑基础

9、。它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。 结构化程序设计的三种基本控制结构是顺序、选择、循环。 详细设计的工具有程序流程图、盒图、PAD图、判定表、判定树和PDL语言等。,编码就是把软件设计的结果翻译成计算机可以“理解”的形式用某种程序设计语言书写的程序。 按照软件工程的方法论,程序的质量基本上由设计的质量决定。但是,编码使用的语言,特别是写程序的风格和途径也对程序质量有相当大的影响。 程序设计风格包括四个方面: 源程序文档化、数据说明、语句结构和输入/输出方法 程序设计风格指导原则嵌套的重数应加以限制 不滥用语言特色 使用有意义的变量名 把常见的局部优化工作留给编译程序去

10、做 程序的格式应有助于读者理解程序 模块化程序设计的叙述便于由多个人分工编制大型程序 软件的功能便于扩充 程序易于理解,也便于排错 只要模块之间的接口关系不变,各模块内部实现细节的修改将不会影响别的模块 模块间的单向调用关系叫做模块的层次结构 软件测试的目的就是软件投入生产性运行之前,尽可能多地发现软件中的错误。目前软件测试仍然是保证软件质量的关键步骤。 软件测试的原则1) 应当尽早地不断地进行软件测试 2) 测试用例应由测试输入数据和与之相对应的预期输出结果这两部分组成 3) 程序员应避免检查自己的程序 4) 在设计测试用例时,应当包括合理的输入条件和不合理的输入条件 5) 充分注意测试中的

11、群集现象 6) 严格执行测试计划,排除测试的随意性 7) 应当对每个测试结果做全面检查 8) 妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便,测试常分单元测试/模块测试,集成测试,确认测试和系统测试。关系重大的还可做平行运行。 设计测试方案是测试阶段的关键技术问题,基本目标是选用最少量的高效测试数据,做到尽可能完善的测试,从而尽可能多地发现软件中的问题。 动态测试两个基本方法 A黑盒测试/功能测试 1等价类划分 2边界值分析 3错误推测法 4因果图法 B白盒测试/结构测试 1语句覆盖:使得每一可执行语句至少执行一次 2判定覆盖:使得程序中每个判断的取真分支和取假分支至少执行

12、一次 3条件覆盖:使得程序中每个判断的每个条件的可能取值至少执行一次 4判定-条件覆盖:使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行一次 5条件组合覆盖:使得每个判断的所有可能的条件取值组合至少执行一次 6路径覆盖:覆盖程序中所有可能的路径 设计测试方案的实用策略是,用黑盒法设计基本的测试方案,再用白盒法补充一些必要的测试方案。,调试 软件调试是在进行了成功的测试之后才开始的工作。 调试活动包括: 1) 确定程序中可疑错误的确切性质和位置 2) 对程序(设计、编码)进行修改,排除这个错误 调试方法: 1强行排错 2回溯法排错 3归纳法排错 4演绎法排错

13、测试和调试是软件测试阶段的两个关系极端密切的过程,它们通常交替进行。 维护 所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。 软件工程学的主要目的就是提高软件的可维护性,降低维护的代价。 软件可维护性,是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度。 决定软件可维护性的基本因素:软件的可理解性、可测试性和可修改性 软件维护通常包括四类活动: 1) 为了纠正使用过程中暴露出来的错误而进行的改正性维护; 2) 为了适应外部环境的变化而进行的适应性维护; 3) 为了改进原有的软件而进行的完善性维护; 4) 为了改进将来的可维护性

14、和可靠性而进行的预防性维护。 软件工程管理的具体内容包括对开发人员、组织机构、用户、文档资料等方面的管理。 软件开发成本估算的方法主要 (1)自顶向下估算方法 (2)自底向上估算方法 (3)差别估算方法 以及专家估算法、类推估算法、算式估算法等几类方法。,进度安排A甘特图 Gantt图能很形象地描绘任务分解情况,以及每个子任务(作业)的开始时间和结束时间,因此是进度计划和进度管理的有力工具,它具有直观简明和容易掌握、容易绘制的优点, 但是Gantt图也有三个主要缺点: 1. 不能显式地描绘各项作业彼此间的依赖关系; 2. 进度计划的关键部分不明确,难于判定哪些部分应当是主攻和主控的对象; 3.

15、 计划中有潜力的部分及潜力的大小不明确,往往造成潜力的浪费 B网络图 人员-时间折衷定律:在时间允许的情况下,适当减少人员会提高工作效率,降低软件开发成本。即软件开发宁可时间长一点,人员少一点。这样可以大大减少人员之间的通信开销,工作效率会更高。 配置管理协调软件开发使得混乱减到最小的技术叫做配置管理。配置管理是一种标识、组织和控制修改的技术,目的是使错误达到最小并最有效地提高生产率 软件配置管理应用于整个软件生存期。因为变更在任何时刻都可能发生,因此,软件配置管理活动的目标就是为了标识变更、控制变更、确保变更更正确地实现,并向其他相关的人报告变更。 基线基线是软件生存期中各开发阶段末尾的特定

16、点,又称里程碑。由正式的技术评审而得到的软件配置协议和软件配置的正式文本组成基线。它的作用是把各阶段工作的划分更加明确化,使连续的工作在这些点上断开,以便检验和肯定阶段成果。,软件机构能力成熟度模型 五个级别:初始级、可重复级、已定义级、已管理级、已优化级 软件复用对建立软件目标系统而言,所谓复用(reuse),就是利用某些已开发的、对建立新软件系统有用的软件元素来生成新系统 面向对象=对象+类+继承+通信 对象为系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和一组对属性进行操作的服务组成。 对象的主要特点:自治性、封装性、通信性。 属性一般只能通过执行对象的操作来改

17、变。 操作又称为方法或服务,它描述了对象执行的功能,若通过消息传递,还可以为其他对象使用。 消息是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明。 类把具有相同特征和行为的对象归结在一起就形成了类。类是某些对象的模板,抽象地描述了属于该类的全部对象的属性和操作。 实例属于某个类的对象叫做该类的实例。 继承如果某几个类之间具有共性的部分(信息结构和行为),将其抽取出来放在一个一般类中,而将各个类的特有的部分放在特殊类中分别描述,则可建立起特殊类对一般类的继承。 继承是软件开发中重用概念的核心,另外便于模块修改,同时继承可使模块简化,导致模块比较小容易理解。,OOA

18、 1)形式地说明所面对的应用问题,最终成为软件系统基本构成的对象,还有系统所必须遵从的,由应用环境所决定的规则和约束。 2)明确地规定构成系统的对象如何协同合作,完成指定的功能。 OOA要建立分析模型,有五个层次:类和对象层、属性层、服务层、结构层、主题层。允许两种结构:整体-部分,通用-特殊。 OOD还是采用这样五个层次,但分别用在建立系统的四个组成成分上:问题论域、人机交互、数据管理、任务管理 OMT(Object Modeling Technique对象建模技术)以面向对象思想为基础,通过构造一组相关模型(对象模型、动态模型和功能模型)来获得关于问题的全面认识(即问题的领域模型)。对象模

19、型(object model)代表了系统的静态的、结构方面的特性。动态模型(dynamic model)代表了系统对象之间的时间的、行为的、控制方面的特性。功能模型(functional model)主要描述值与值之间的函数关系。 对象模型是3个模型中最关键的模型,它的作用是描述系统的静态结构,包括构成系统的类和对象,它们的属性和操作,以及它们之间的关系。在OMT中,类与类之间的关系叫做关联。 动态模型着重于系统的控制逻辑。它包括两个图,一是状态图,一是事件追踪图。 ,状态图叙述一个对象的个体行为,而事件追踪图则给出多个对象所表现出来的集体行为。,OMT三功能模型的不同:功能模型着重于系统内部

20、数据的传送和处理。功能模型定义“做什么”,动态模型定义“何时做”,对象模型定义“对谁做”。 对象模型指出事件要发生在什么方面,动态模型指出什么时候发生,功能模型则指出要发生什么。 Booch方法用到六种图形:类图、对象图、模块图、进程图、交互作用图、状态迁移图。 模块图和进程图,针对着软件系统的结构。类和对象被分配给具体的程序构件,模块图就是用来描绘这些程序构件的。由于许多面向对象系统包括可能在一组分布式处理器上执行的多个程序,进程图就使得设计者能在一个大系统中描绘过程如何被分配给特定的处理器。 状态迁移图和交互作用图,这两个文件主要用于动态地模拟事件的发生和它对系统状态的作用。状态迁移图用来

21、说明每一类的状态空间,触发状态迁移的事件(从一个对象到另一个对象的单个消息叫作一个事件),以及在状态迁移时所执行的操作。交互作用图用于追踪系统执行过程中的一个可能的场景,也就是几个对象在共同完成某一系统功能中所表现出来的交互关系。 Booch强调在OO设计中反复的处理和开发人员的创造性是最重要的。Booch认为软件开发是一个螺旋上升的过程。在这个螺旋上升的每个周期中,有以下几个步骤:发现类和对象;确定它们的含义;找出它们之间的相互关系;说明每一个界面及其实现类与对象。,Web设计 Web设计主要可分为 1体系结构设计2导航设计 3界面设计 一个良好的Web设计需要满足以下要求1设计要尽可能的简

22、单 2布局要尽可能的美观 3整体的一致性,1.应用Coad和Yourdon方法构造和评审OOA概念模型时,应按如下的五个层次进行: 第一个层次是识别(A)。它们是对应用中的概念的抽象,可以从用户要求书或其它规格说明中找到。 第二个层次是识别(B)。它们是(A)所保存的信息,同时要给出各个(A)之间的实例连接。这些实例连接包括有1对1、1对多、多对多、多对1等联系。 第三个层次是识别(C)。它们是(A)可提供的操作,同时要根据需要的功能给出各个操作之间的消息连接。 第四个层次是建立(D)。有两种(D):整体与部分;泛化与特化。前者表明一种聚合关系,后者表明一种继承关系。 第五个层次是识别(E)。

23、它相当于高层的模块或子系统。 供选答案: A:实体 规格说明 类与对象 过程抽象 功能抽象 B:属性 数据项 服务 操作 事务 C:属性 数据项 服务 数据抽象 实体联系 D:框架 属性 结构 通信 连接 E:层次 事件 状态 继承 主题 答案:A. B. C. D. E.,在面向对象软件开发过程中特别重视复用。软件构件应独立于当初开发它们的应用而存在。在以后的应用开发中,可以调整这些独立构件以适应新问题的需要。因此,应使得类成为一个(A)的单元。这样就有一个(B)生存期问题。(B)生存期有自己的步骤,与任何特定应用的开发(C)。按照这些步骤,可以完整地描述一个基本(D),而不仅仅考虑当前正在

24、开发的系统。系统开发的各个阶段都可能会标识新的类。随着各个新类的标识,(B)生存期引导开发工作逐个阶段循序渐进。 在设计与实现类时,应尽可能利用既存类提供为当前应用所需要的功能,利用既存类的3个可能途径是:(E)复用既存类,对既存类进行(F)以得到满足要求的类,重新开始进行开发。 供选择的答案: A:可复用 可测试 可适用 可靠 B:应用 寿命 类 软件 C:相关 密切相关 负相关 无关 D:概念 实体 事件 事情 E、F:修改 更新 照原样 演化 答案:A. B. C. D. E. F. 类常常被看作是一个抽象数据类型的实现,更合适的是把类看作是某种(A)的一个模型。事实上,类是单个的(B)

25、单元。类的用户能够操纵的操作叫做类的(C)。类定义的其余部分给出数据定义和辅助功能定义,包括类的实现。 类的实现常常包括了其它类的实例,这些实例(D)被其它对象存取,包括同一个类的其它实例。类的实现可能还包括某些私有方法,实现它们的类可以使用,而其它任何对象都不能使用。 类,就它是一个数据值的聚合的意义来看,与Pascal中的记录或C中的结构类似,但又有差别。类扩展了通常的记录语义,可提供各种级别的(E)。类不同于记录,因为它们包括了操作的定义,这些操作与类中声明的数据值有相同的地位。 供选择的答案: A. 功能 概念 结构 数据 B. 语法 词法 语义 上下文环境 C. 界面 操作 行为 活

26、动 D. 可自由地 可有控制地 可通过继承 应受保护不 E. 可移植性 可重复性 可访问性 继承性 答案:A. B. C. D. E.,29 以前的题型: 判断题,正确打,错误打并改正。 1、 UML 是一种建模语言,是一种标准的表示,是一种方法。( ) 2、 类图用来表示系统中类和类与类之间的关系,它是对系统动态结构的描述。( ) 3、 项目应用领域是选择语言的关键因素之一。() 4、 划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好。 () 5、 用面向对象方法开发的软件系统,可维护性好。() 6、 若有一个计算类型的程序,它的输入量只有一个X,其范围是-1.0,1.0,现

27、从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。设计这组测试用例的方法是.错误推测法 () 7、 软件工程管理是对软件项目的开发管理,是对整个软件生存期的所有活动进行管理。() 8、 结构化程序设计方法是一种面向数据和过程的设计方法,数据和过程封装为相互独立的两个部分。() 9、 CMM 是指导软件开发的一种面向对象的新技术。() 10、 序列图描述对象是如何交互的并且将重点放在消息序列上。( ),1.需求规格说明书的作用不应该包括( D)。 A、软件设计的依据 B、用户与开发人员对软件要做什么的共同理解 C、软件验收的依据 D、软件可行性研究的依据 2、 软件需求分

28、析的任务不包括( C )。 A 、问题分析 B、信息域分析 C、结构化设计 C、确定逻辑结构 3、 进行需求分析有的多种描述工具,但不包括( C )。 A、数据流图 B、判定表 C、PAD 图 D、数据词典 4、 在需求分析过程中,分析员要从用户那里解决的最重要的问题是( A )。 A、要求软件做什么 B、要给软件提供哪些信息 C、要求软件工作效率如何 D、要求软件具有什么样的结构 5、 软件测试的目的是( B ) A评价软件的质量 B发现软件的错误 C、找出软件中的所有错误 D、证明软件是正确的 6、 以下软件成本估算模型中,是动态多变量的模型有( C D )。 A、Halstead 理论模型 B、Deiphi 专家估算模型 C、Putnam 估算模型 D、COCOMO 模型 7、 面向对象的开发方法的工作模型是( B )。 A、瀑布模型 B、喷泉模型 C、智能模型 D、循环模型 8、白盒法又称为逻辑覆盖法,主要用于( )。 A、功能测试 B、系统测试 C、测试 D、单元测试 9 .JSP方法是一种面向( )的设计方法。 A、对象 B、数据流 C、控制结构 D、数据结构 10.程序设计语言的技术特性不应包括( )。 A、数据结构的描述性 B、抽象类型的描述性 C、数据库的易操作性 D、软件的可移植性 11.软件测试中,白盒法是通过分析程序的( )来设计测试用例的。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论