软件工程小题总结

时间:2024.2.8

1、软件危机:在计算机软件开发和维护过程中所遇到的问题。 2、产生软件危机的原因:(1)与软件本身有关(2)和软件开发和维护的方法不正确有关。 3、软件危机的解决办法:(1)彻底清除“软件就是程序”的错误观念(2)先进的技术措施(方法和工具)和科学的组织管理措施两方面。 4、软件工程:(1)把系统化的、规范化的、可度量的途径应用与软件开发、运行和维护的过程,也就是把工程化应用于软件中(2)研究(1)中提到的途径。 5、软件工程的基本原理:(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性。 6、生命周期经典模型:瀑布模型(各个阶段都需要相对应的说明书,例如:编译系统、DBMS、OS)、快速原型模型(最终要抛弃原型)、增量模型(第1个增量往往是核心的产品)、螺旋模型、喷泉模型(该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性,适应于面向对象的软件开发过程)。

7、Rational统一过程:RUP是一个面向对象且基于网络的程序开发方法论,是软件工程的过程,主要分五个阶段:起始阶段,细化阶段,构建阶段,转化阶段,生产阶段。(4阶段:先启阶段、精化阶段、构建阶段、移交阶段)

8、能力成熟度模型(CMM)不是软件生命周期模型,而是改变软件过程的一种策略,它与实际使用的过程模型无关。

9、获取需求的方法:访谈、简易的应用规格说明书、软件原型。

10、可行性研究:经济可行性、技术可行性、操作可行性、社会可行性(法律可行性)。

11、需求分析建模的方法:结构化分析、面向对象分析、Jackson分析

12、结构化分析:数据建模、功能建模、行为建模

13、结构化分析实施步骤:1、确定系统边界,画出系统环境图。2、自顶向下,画出各层数据流图。3、定义数据字典。

14、结构化设计:数据设计(E-R图、DD、数据对象描述)、体系结构设计(DFD)、接口设计(DFD)、过程设计(STD、控制规格说明、处理规格说明)

15、软件设计的模块化:就是把程序划分为课独立命名且独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。 16、5个标准来评价模块系统的能力:模块可分解性、模块可组装型、模块可理解性、模块连续性、模块保护性。

17、耦合:模块之间的依赖程度。内聚:模块内部各成分之间的关联程度。

21、几条常用的启发规则:改进软件结构提高模块独立性;模块规模应该适中(高扇入、低扇出);深度、宽度、扇出和扇入都应适当;模块的作用域应该在控制域之内;力争降低模块接口的复杂程序;设计单入口单出口的模块;模块功能应该可以预测;

22、结构化设计属于面向数据流的设计方法。

23、面向数据流的设计方法:变化流分析(线型)、事务流分析(扇型,找出物理输入、逻辑输入、事务中心、逻辑输出、物理输出)。

24、软件 = 程序 + 数据 + 文档

25、程序中适当的注释 (占到1/3到1/2之间)

26、非渐增式策略:自顶向下集成、自底向上集成、混合增殖式测试

27、面向对象方法开发过程中通常建立的三种模型:对象模型、动态模型、功能模型。 28、对象是组成面向对象程序的基本模块。 29、传统的程序设计方法实质上是在用计算机的观点进行程序设计。 面向对象的软件技术以对象为核心,用这种技术开发出的软件系统由对象组成。

30、面向对象=对象+类+继承+通信 31、有两种方法可以重复使用一个对象类:一种方法是创建该类的实例,从而直接使用它;另一种方法是从它派生出一个满足当前需要的新类。继承性机制使得子类不仅可以重用其父类的数据结构和程序代码,而且可以在父类代码的基础上方便地修改和扩充,这种修改并不影响对原有类的使用。(重用性) 32、对象模型为建立动态模型和功能模型,提供了实质性的框架。

33、面向对象的分析过程: 问题域分析 ; 发现和定义对象与类; 识别对象的外部联系(一般与特殊、整体与部分、实例连接、消息连接); 建立系统的静态结构模型(类图、对象图、系统与子系统结构图等); 建立系统的动态结构模型(用例图、交互图、活动图、状态图等)

34、用例模型的基本组成部件是用例、角色和系统。是进行系统需求分析时使用的。 35、用例图中包含三种模型元素:用例、角色和关系。

5.过程设计的三种控制结构:(1)顺序结构(2)IF-THEN-ELSE型选择(分支)结构(3)WHILE型循环结构 10.单元测试的步骤:(1)代码审查,(2)测试软件。集成测试的步骤:(1)自顶向下集成,(2)自底向上集成、(3)回归测试,(4)不同集成测试策略的比较。确认测试的步骤:(1)确认测试的范围,(2)软件配置复查,(3)Alpha测试和Beta测试。

12)单元测试的内容:(1)模块接口测试(2)局部数据结构测试(3)路径测试(4)错误处理测试(5)边界测试

13)单元测试的主要手段:代码审查、制作测试软件

14)模块组装成为系统的方式有两种:一次性组装方式(非渐增式组装方式),增殖式组装方式(渐增式组装)

15. 需求获取的常用方法:客户访谈;简易的应用规格说明技术;软件原型

16. 部署图与构件图的关系:部署图表现构件实例;构件图表现构件类型的定义 17. uml图有九种图:用例图,类图,对象图(静态建模机制),顺序图,协作图,状态图,活动图(动态建模机制),构件图,部署图(物理架构机制) 1.什么是软件工程?

软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念,原理,技术和方法来开发与维护软件把经过时间考验而正确的管理技术和当前能够得到的最好的技术方法结合起来,经济地开发出高质量的软件并有效地维护它,这就是软件工程。

2.软件生命周期及其具体定义?

软件的生命周期由软件定义、软件开发和软件维护三个时期组成,每个时期又可进一步分成若干个阶段。软件定义时期的任务是确定软件开发工程必须完成的总目标,软件定义可划分为:问题定义、可行性研究、需求分析;软件开发时期的任务是具体设计和实现在前一个时期定义的软件;软件开发可划分为:概要设计、详细设计、编码和单元测试、综合测试。(综合测试中最基本的测试是验收测试和集成测试。集成测试:根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试。验收测试:按照规格说明书的规定,有用户对目标系统进行验收)运行维护时期的主要任务是使软件持久的满足用户的需要。软件维护4类维护:改正性维护、适应性维护、完善性维护、预防性维护。

注意:软件生命周期8个阶段:可行性研究与计划、需求分析、概要设计、详细设计、实现、组装测试、确认测试、使用和维护。

3.模块、模块化的概念和模块化的启发规则?

模块是有边界元素限定的相邻的程序元素(如数据说明,可执行的语句)的序列,而且有一个总体标识符来代表它。模块是构成程序的基本构件。 模块化是把程序划分成可独立命名且独立访问的模块,每个模块完成一个子功能。 启发规则:①改进软件结构提高模块独立性②模块规模应适中③深度,宽度,扇入和扇出都应适当(避免高扇出争取高扇出。方法:增加中间层)④模块的作用域应在控制域之内⑤力争降低模块接口的复杂程度⑥设计单入口单出口模块⑦模块功能应该可以预测

4.4种耦合和7种内聚?

耦合是对一个软件结构内不同模块之间互连程度的度量。

四种耦合:数据耦合、控制耦合、公共环境耦合、内容耦合。

内聚标志一个模块内各个元素彼此结合的紧密程度,是信息隐藏和局部化概念的自然扩展。 7种内聚:功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚【高内聚低耦合】

两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,这种耦合称为数据耦合;如果传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现),这种耦合称为控制耦合;当两个或多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为公共环境耦合;出现下列情况称为内容耦合:(1)一个模块访问另一个模块的内部数据(2)一个模块不通过正常入口而转到另一个模块的内部(3)两个模块有一部分程序代码重叠(只可能出现在汇编程序中)(4)一个模块有多个入口(意味着一个模块有几种功能)。 6.白黑盒测试概念?有哪些阶段和方法? 黑盒测试:已经知道了产品应该具有的功能,通过测试来检验是否每个功能都正常运行。黑盒测试又称为功能测试。黑盒测试的方法:穷举输入测试、等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法。黑盒测试(功能测试)的内容:Alpha/Beta测试、菜单/帮助测试、发行测试、回归测试。

白盒测试:知道产品内部工作过程,通过测试来检验产品内部动作是否按照规格说明书的规定正常执行。白盒测试又称为结构测试。白盒测试的方法:代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法(动态,逻辑覆盖法5个覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖)、基本路径测试法。 基本路径测试法的步骤:(1) 根据过程设计结果画出程序流图。(2) 计算流图的环形复杂度。(3) 确定线性独立路径的基本集合。(4) 设计可强制执行基本集合中每条路径的测试用例 确立测试用例原则:(1)为每一个等价类规定一个唯一的编号。(2)设计一个新的测试用例,使其尽可能地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。(3)设计一个新的测试用例,使其仅覆盖尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。(4)之所以这样做,是因为某些程序中对某一输入错误的检查往往会屏蔽对其他输入错误的检查。因此必须针对每一个无效等价类,分别设计测试用例。

7.面向对象方法学的要点:(1)认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。(2)把所有对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。(3)按照子类与父类的关系,把若干个对象类组成一个层次结构的系统(4)对象彼此之间仅能通过传递消息互相通信。

8.面向对象方法学的优点:与人类习惯的思维方法一致;稳定性好;可重用性好;较易开发大型软件产品;可维护性好。(原因)面向对象的软件稳定性比较好、面向对象的软件比较容易修改、面向对象的软件比较容易理解、面向对象的软件易于测试和调试。

11. 软件危机的主要表现:对软件开发成本和进度的估计不准确;用户对“已完成”的产品不满意;软件产品的质量难以保证;软件通常没有适合的文档资料;维护困难;

软件成本在计算机系统总成本中所占比例

逐年上升;软件生产率提高的速度慢。 产生软件危机的原因:与软件本身的特点有关;与软件开发与维护的方法不正确有关。

消除软件危机的方法:首先应该对计算机有一个正确的认识。其次要有必要的技术措施;还要有必要的组织管理措施

12.(1)变换流:信息沿输入通道进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通道变换成外部形式离开软件系统。当数据流图具有这些特征时,这种信息流就叫做变化流(2)事务流:数据沿输入通道到达一个处理,这个处理根据输入数据的类型在若干个动作序列中选择出一个来执行,这类数据流称为事务流。 18.各种图的概念(1)用例图: 用例图是被称为参与者的外部用户所能观察到的系统功能的模型图;用例图是从用户角度描述系统功能, 是用户所能观察到的系统功能的模型图,用例是系统中的一个功能单元 ;用例图多用于静态建模阶段(主要是业务建模和需求建模

(2)类图:类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法;类图描述系统中类的静态结构。

(3)对象图:对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类

(4)顺序图:顺序图用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的事件; 顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;顺序图属于动态建模。

(5)协作图:协作图是一种交互图,强调的是发送和接收消息的对象之间的组织结构,使用协作图来说明系统的动态情况。 协作图主要描述协作对象间的交互和链接,显示对象、对象间的链接以及对象间如何发送消息。协作图可以表示类操作的实现。

(6)状态图: 说明对象在它的生命期中响应事件所经历的状态序列,以及它们对那些事件

的响应;状态图是一个类对象所可能经历的所有历程的模型图。状态图由对象的各个状态和连接这些状态的转换组成

(7)活动图:活动图是状态图的一个变体,用来描述执行算法的工作流程中涉及的活动;活动图描述了一组顺序的或并发的活动 ;描述系统的动态行为。

(8)构件图:构件图用于静态建模,是表示构件类型的组织以及各种构件之间依赖关系的图。构件图通过对构件间依赖关系的描述来估计对系统构件的修改给系统可能带来的影响。

(9)部署图: 部署图用于静态建模,是表示运行时过程节点结构、构件实例及其对象结构的图。如果含有依赖关系的构件实例放置在不同节点上,部署视图可以展示出执行过程中的瓶颈。部署图的两种表现形式:实例层部署图和描述层部署图。


第二篇:软件工程总结


软件工程过程:是为获得软件产品,在软件工具的支持下由软件工程师完成的一系列软件工程活动。针对不同类型的软件产品,同一软件开发机构也可能采用多个不同的软件工程过程。是把输入转化为输出的一组彼此相关的资源和活动。从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)。功能模块的集合,每个功能又可以分解为若干子功能,子功能还可继续分解,分解的结果已经是系统的雏形。 结构化分析方法 ,是一种以数据、数据的封闭性为基础,从问题空间到某种表示的映射方法,由数据流图(DFD图)表示。信息建模法,是从数据的角度对现实世界建立模型的,基本工具是ER图。面向对象的分析方法(OOA)的关键是识别问题域内的对象,分析它们之间的关系,并建立起三类模型。

将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。

软件工程过程定义: 方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的里程碑。

软件工程过程的四种基本过程活动:plan 软件规格说明,规定软件的功能及其运行的限制;do软件开发,产生满足规格说明的软件;check软件确认,确认软件能够完成客户提出的要求;action软件演进,为满足客户的变更要求,软件必须在使用的过程中改进。

软件工程过程的特性:⑴ 易理解性⑵ 可见性⑶ 可支持性⑷ 可接受性⑸ 可靠性⑹ 健壮性⑺ 可维护性⑻ 速度。 软件工程包括三要素:方法、工具和过程。

软件生存周期:是软件产品的一系列相关活动的整个生命周期,即从形成概念开始经过开发,交付使用,在使用中不断修改和演进,直到最终被废弃,让位于新的软件产品为止的整个时期。

软件生存周期包含三个阶段:软件定义、软件开发及软件运行维护。

软件生存周期模型:是软件工程思想的具体化,是跨越软件生存周期的系统开发、运行、维护所实施的全部活动和任务的过程框架。有瀑布模型,演化模型,螺旋模型,增量模型,喷泉模型,快速应用开发( RAD )模型。

得到软件生存周期的六个步骤:制定计划 ,需求分析,软件设计,程序编写,软件测试 ,运行/维护。

划分软件生存周期的目的和实质:⑴ 便于控制开发工作的复杂性。⑵ 通过有限的步骤,把用户的需求从抽象的逻辑概念逐步转化为具体的物理实现。

瀑布模型:各项活动按自上而下,相互衔接的固定次序,如同瀑布逐级下落,每项活动均处于一个质量环(输入-处理-输出-评审)中。阶段间具有顺序性和依赖性。推迟实现的观点。每个阶段必须完成规定的文档;每个阶段结束前完成文档审查。

瀑布模型优点:⑴ 消除非结构化软件⑵ 降低软件的复杂度⑶ 促进软件开发工程化。

需求分析方法:不同的开发方法,需求分析的方法也有所不同,常见的分析方法有:功能分析方法 :将系统看作若干

需求分析的任务:⑴ 正确地确定对系统综合要求,充分理解和表达用户的需求。也就是详细定义开发软件的功能、性能、外部接口、设计限制、数据库需求、确定硬件和软件支持环境、辅助软件以及将来可能提出的要求。⑵ 通过结构分析的方法对系统进行分解,以确定软件系统的主要成分或软件系统的构成。⑶ 是对以上已进行的两项工作进行描述,以形成需求文档,也就是编制“需求规格说明书”。 ⑷ 编写用户手册概要,迫使分析员从用户的角度看待软件,及早考虑用户界面工作,此时编写的重点在系统输入和输出。⑸ 编写验收计划,作为今后验收测试的依据。⑹ 修正可行性研究阶

段所制订的软件项目开发计划。

需求分析的目标之一就是把数据流和数据存储定义到元素级。

结构化方法:是一种传统的软件开发方法,它由结构化分析SA,结构化设计SD和结构化程序设计三部分有机组合而成的。它的基本思想是:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。基本要点是:自顶向下,逐步求精,模块化设计,结构编码。原则为:(1)抽象与自顶向下,逐层细化,用分层抽象方法,有效控制软件开发的复杂性。(2)模块化(3)信息隐蔽和封装化(4)局部化(5)一致性(6)完备性(7)可验证性。 结构化分析实质上是一种创建模型的活动,建立3种模型:(1)数据模型 ,用实体-联系图(ER图)(2)功能模型,用数据流图描绘(3)行为模型, 状态转换图(简称为状态图)。 数据字典:是结构化分析方法的核心,与各模型的图形表示配合,能清楚地表达数据处理的要求。对在数据流图中每一个命名的图形元素均给予定义,其内容有图形元素的名字、别名或编号、分类、描述、定义、位置等。⑴ 数据流词条描述⑵ 数据元素词条描述⑶ 数据文件词条描述⑷ 加工逻辑词条描述。

黑盒测试:等价类划分,边界值分析,错误推测法,因果图,功能图,接口测试

*这种方法是把测试对象看做一个黑盒,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求和功

能规格说明,检查程序的功能是否符合它的功能说明。 *黑盒测试叫做功能测试或数据驱动测试。

*一种特殊的黑盒测试叫做接口测试,它不管程序的需求和实现细节,仅依据程序与其外部环境的接口来选择测试数据。

*黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误:

(1)是否有不正确或遗漏了的功能?

(2)在接口上,输入能否正确地接受? 能否输出正确的结果?

(3)是否有数据结构错误或外部信息(例如数据文件)访问错误?

(4)性能上是否能够满足要求? (5)是否有初始化或终止性错误?

白盒测试:逻辑覆盖,判定结构分析,循环结构分析,基本路径覆盖

*此方法把测试对象看做一个玻璃盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。

*通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。

*软件人员使用白盒测试方法,主要想对程序模块进行如下的检查:

(1)对程序模块的所有独立的执行路径至少测试一次 — 路径覆盖测试;

(2)对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次 — 逻辑覆盖测试;

(3)在循环的边界和运行界限内执行循环体— 控制流测试;

(4)测试内部数据结构的有效性 — 数据流测试、领域测试等。

编码是软件开发的最终目标,它作为软件工程过程的一个阶段,是设计工作的继续。它是将“设计”变换成用程序设计语言编写的源程序,使软件的需求真正付诸实现。

*编码是在详细设计的基础上进行的,其主要任务是将软件的详细设计转换成用程序设计语言实现的程序代码,也就是根据详细设计阶段给出的程序逻辑结构的描述,选择某种计算机能够接受的诸如汇编、FORTRAN、C之类的程序语言,按照编程规范,编写出高质量的、具有一致性、可移植性、可维护性和高效率的程序代码。

因此,程序设计语言的性能和设计风格对于程序设计的效能和质量有着直接的关系。

*编码的目的就是使用选定的程序设计语言把模块的过程性描述翻译成用程序设计语言书写的源程序。

*设计是编码的先导,程序的质量就首先取决于设计的质量。

程序设计风格所谓程序设计风格是指书写源程序的习惯、程序代码的逻辑结构与习惯的编程技术。从软件工程要求出发,程序设计风格应包括以下要素: (1)源程序文档化:① 符号名的命名,② 程序的注释③ 视觉组织

(2)数据说明 (3)语句结构

(4)输入/输出方法

概要设计将软件需求转化为软件体系结构, 确定系统级接口,全局数据结构或数据库模式。

概要设计的基本任务就是将需求转换为数据结构和软件的体系结构。

其具体的工作有以下几个方面:

⑴ 制定规范

⑵ 软件系统结构的总体设计这个阶段主要完成四个任务,这就是: ① 采用某种设计方法,将一个复杂的软件系统按功能划分成模块的层次结构;② 决定每个模块的功能,建立与已确定软件需求的对应关系;③ 决定每个模块的调用关系;④ 决定模块间的接口,即模块之间的传递信息,设计接口的信息结构。⑤ 评估模块划分的质量及寻出模块结构的规则。

⑶ 处理方式设计

① 确定为实现软件系统的功能需求所必需的算法的性能;② 确定为满足软件条件的性能需求所必需的算法和模块之间的控制方式,性能主要指标;

ⅰ 周转时间;ⅱ 响应时间;ⅲ 吞吐量;ⅳ 精度: ③取得外部信号的接收发送形式。 ⑷ 数据结构设计

确定软件涉及的文件的结构及数据库的模式,子模式进行数据完整性和安全性的设计。① 确定输入:输出文件的详细的数据结构;② 组合算法设计:确定算法所必须的逻辑结构及 操作;③ 确定对逻辑数据结构所必须的那些操作的程序模 块(软件包),限制和确定各个数据设计决策等影响范围;④ 若需要与操作系统或调度程序接口所必须的控制表等数据时,确定其详细的数据结构和使用规则。 ⑤ 数据保护性设计:ⅰ 防卫性设计; ⅱ 一致性;ⅲ 冗余设计。⑸ 可靠性设计⑹ 编写概要设计文档 ⑺ 概要设计评审

详细设计确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节 详细设计要完成的工作有:

⑴ 确定软件各个组成部分内的算法及各部分的内部数据组织。

⑵ 选定某种过程的表达形式来描述各种算法。 ⑶ 进行详细设计评审。

通常采用两个标准来度量模块的独立性:模块的耦合和模块的内聚。

内聚是指模块内部各个成分之间的关系,又称为块内联系,是模块功能相对强度的度量。是指一个模块内部的各成分之间(如语句之间或语句段之间)的联系。内聚性越高,模块的性能越好。

内聚分为:低内聚包括:偶然内聚、逻辑内聚、时间内聚; 中等程度内聚包括:过程内聚、通讯内聚; 高内聚包括:顺序内聚、功能内聚。

耦合是指一个模块与其它模块之间的联系,又称为块间联系,是模块之间相对独立性的度量。是对模块间相互关联程度的一种度量。它表现了模块的外部特征。模块间的耦合越低,模块的独立性越好。 模块的耦合有以下几种:

低耦合:包括非直接耦合、数据耦合、标记耦合。 中耦合:包括控制耦合、外部耦合。 高耦合:包括公共耦合、内容耦合。

模块内聚性越强,功能独立性越好,对于形成的模块结构有比较好的作用。

要求模块结构达到高内聚,低耦合。

程序流程图:程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。在流程图中只能使用下述的五种基本控制结构。①顺序型;②选择型;③ while型循环;④ until型循环;⑤ 多情况型选择。

详细设计的任务:详细设计就是要在概要设计的结果

的基础上,考虑“怎样实现”这个软件系统,直到对系统中的每个模块给出足够详细的过程性描述。主要任务如下:①为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;②确定每一模块使用的数据结构;③确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。④要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)分析、设计及维护提供了有关元素的一致的定义和详细的描述。

内聚性是模块独立性的衡量标准之一,它是指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量

软件生命周期:软件生命周期是指软件产品从考虑其概念开始到该软件产品不再能使用为止的整个时期 软件生命周期可分为六个阶段:制定计划,需求分析、进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。

详细设计的方法:程序流程图、N-S图、PAD图、HIPO图

编程风格:编码风格又称程序设计风格或编程风格,

实际上指编程的原则。表现为四个方面:源程序文档化,数据说明的方法,语句结构和输入/输出方法。

3.1 为什么结构化分析要叫“结构化”?有其他可替代的术语吗?

“结构化”一词应来源于“结构化程序设计”,先有“结构化程序设计”的思想,后有结构化设计及结构化分析。有时称传统的分析方法,指的就是结构化分析方法。

结构化分析方法传统的分析建模方法称为结构化分析(SA)方法。它是一种建模技术,在模型的核心是数据字典,它描述了所有的在目标系统中使用的和生成的数据对象。围绕这个核心有3种图:数据流图(DFD),实体-关系图(ER图)和状态-迁移图(STD)。

CMM是能力成熟度模型(Capability Maturity Model)。划分为5个等级:1级被认为是成熟度最低,5级则是成熟度最高。

CMM给出了从混乱的个别过程达到成熟的规范化过程的一个框架。

软件生存周期:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件生存周期一般可分为以下阶段:

·问题定义

·需求分析与可行性研究 ·设计 ·编码 ·测试 ·运行与维护

软件生存期也可以分为三个大的阶段:计划阶段。开发阶段和维护阶段。

数据字典以词条方式定义在数据模型、功能模型和行为模型中出现的数据对象和控制信息的特征,给出它们的准确定义,包括数据流、加工、数据文件、数据元素,以及数据点、数据汇点等。

数据字典是用来定义数据流图中的各个成分的具体含义的。它以一种准确的、无二义性的说明方式为系统的

软件设计、程序编写、软件测试、运行与维护等六个部分

划分软件生命周期的目的和实质 ⑴ 便于控制开发工作的复杂性。

⑵ 通过有限的步骤,把用户的需求从抽象的逻辑概念逐步转化为具体的物理实现

软件维护包括:改正性维护,适应性维护,完善性维护和预防性维护

瀑布模型

瀑布模型的特点

⑴ 从上一项开发活动接受该项活动的工作对象,作为输入。 ⑵ 利用这一输入,实施该项活动应完成的工作内容。 ⑶ 给出该项活动的工作成果,作为输出传给下一项活动。 ⑷ 对该项目活动实施的工作成果进行评审。若工作得到确认,则继续进行下一次开发活动,否则返回前一项,甚至更前项的活动。 瀑布模型的优点 ⑴ 消除非结构化软件。 ⑵ 降低软件的复杂度。 ⑶ 促进软件开发工程化 瀑布模型存在的问题

⑴ 阶段与阶段划分完全固定,阶段间产生的大量文档,极大地增加了工作量。

⑵ 由于开发模型呈线性,所以当开发成果尚未经过测试时,用户无法看到软件的效果。这样,软件与用户见面的时间较长,也增加了一定的风险。

⑶ 前面未发现的错误传到后面的开发活动中,可能会扩散,进而可能会造成更不理想的效果。

可行性研究的目的就是用最小的代价在尽可能短的时间内

确定问题是否能够解决。

可行性研究主要集中在以下四个方面:系统可行性,经济可行性,法律可行性,用户操作可行性

可行性研究最根本的任务是对以后的行动方针提出建议。 可行性研究报告的内容:1. 项目背景2管理概要与劝告 3.候选方案4.系统描述5技术可行性6经济可行性7法律可行性8用户操作可行性9其他与项目有关的问题10结论意见 需求分析的任务:需求获取 需求建模 需求规格说明 需求评审

需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统 “做什么” 的问题。⑴ 正确地确定对系统综合要求,充分理解和表达用户的需求。⑵

通过结构分析的方法对系统进行分解,以确定软件系统的主要成分或软件系统的构成。(3)编制“需求规格说明书” 需求分析常用的方法:SA, JSD,DSSD,OOA

概要设计的基本任务就是将需求转换为数据结构和软件的体系结构。方法:⑴ 制定规范

⑵ 软件系统结构的总体设计 ⑶ 处理方式设计 ⑷ 数据结构设计 ⑸ 可靠性设计

⑹ 编写概要设计文档 ⑺ 概要设计评审

数据流图的性质:① 数据流图中的箭头仅能表示在系统中流动的数据;② 与程序流程图不同,DFD不能表示程序的控制结构;③ DFD表现的范围具有很大的灵活性。 画数据流图的基本目的是利用它作为交流信息的工具 目前实现数据字典有三种常见的途径:全人工过程,全自动化过程和混合过程

数据字典的特点:⑴ 通过名字能方便地查阅数据的定义; ⑵ 没有冗余;

⑶ 尽量不重复在规格说明的其他组成部分中已经出现的信息;

⑷ 容易更新和修改;

⑸ 能单独处理描述每个数据元索的信息; ⑹ 定义的书写方法简单方便而且严格。

l

结构化分析方法:结构化分析方法是利用抽象模型的概念,按照软件内部数据传递,变换的关系,自顶向下,逐步分解,直到找到满足功能要求的所有可实现的软件为止。 l 程序设计风格包括4个方面: 源程序文档化,数据说明,语句结构,输入输出方法 l 程序复杂性主要指模块内程序的复杂性

l 程序复杂性度量(1) 代码行度量法(2) McCabe度量法(3) Halstead的软件科学

l 程序复杂性度量的参数主要有:规模,难度 ,结构,智能度

l 测试方法:黑盒测试,白盒测试

l 黑盒测试叫做功能测试或数据驱动测试。 l 白盒测试又称为结构测试或逻辑驱动测试。 l

白盒测试方法:路径覆盖测试,逻辑覆盖测试,控制流测试,数据流测试,逻辑测试

更多相关推荐:
软件工程总结

1.软件危机的定义:计算机软件的开发和维护过程中所遇到的一系列严重问题。出现的问题:a.如何开发软件,已满足对软件日益增长的需求b.如何维护数量不断膨胀的已有软件特征:软件具有长期性和症状不明显2.软件工程:指…

软件工程总结

1何谓科学,何谓工程?(第一章)科学是反映自然、社会、思维的发展与变化规律的知识体系。科学(研究)是以发现为核心的人类活动,探索事物的本质和运动规律,追求真理,认识世界,回答“为什么”,体现非物质形态财富。工程…

软件工程总结

一个软件从开始计划起,到废弃不用止,称为软件生命周期。一般来说,软年生命周期包括计划、开发、运行三个时期,每一个时期又可分为若干个更小的阶段:1.可行性研究。这个阶段主要是确定软件的开发目标及其可行性,给出其在…

软件工程总结1

Personally,Ithinkthesoftwaredevelopmentprocesstoachievespecifictoeachstepoftheworktocompletewhatisveryfle…

软件工程总结

软件工程软件:计算机程序,方法,规则和相关文档资料及在计算机上运行所需的必要的数据。软件=程序+数据+文档资料软件的特点:1软件是一种逻辑产品2软件没有明显的制造过程3软件对硬件和环境的依耐性4软件不存在机械的…

软件工程总结

软件工程总结第一章:1.软件的定义:(1)在运行中提供所希望的功能和性能的指令集(即程序)(2)使程序能够正确运行的数据结构(3)描述程序研制过程和方法所使用的文档2.软件的特点:(1)软件是一种逻辑实体,而不…

软件工程总结

《软件工程》的感悟时间过得真快,默默地对于《软件工程》的学习已经进入尾声。在整个学期的学习中,我对于《软件工程》这门必修课好事很有感悟的。在以前,我一直对软件开发方面的必修课怀有一种先入为主的想法,认为软件开发…

软件工程总结

软件工程总结软件工程是一门关于计算机软件的开发过程、方法和工具的学科。通过对软件的概述学习,对软件生命周期的了解,我把软件分为定义、开发、设计、运行以及维护四个阶段,一下就是我对各阶段进行的逐一的阐述。第一阶段…

软件工程总结

1.软件定义:程序、数据、文档。特性:逻辑产品,无老化,客户定制。2.软件工程:将系统化的、规范地、可度量的方法应用于软件开发、运行、维护的过程,即将工程化应用与软件中,以及对所述方法的研究。3.软件过程是指按…

软件工程重点总结

1、什么是软件危机?软件危机泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。2、软件危机的主要表现(1)对软件开发成本和进度的估计常常很不准确(2)用户对“已完成的”软件系统不满意现象经常发生(3)软…

软件工程心得体会

软件工程心得体会未接触软件工程之前一直都很想学这门课程,因为觉得这门课很牛,是那些有工程师称号的高手才摆弄的东西。学了一个学期的软件工程课,终于知道了个软件工程的大概。学的时候总觉得很抽象,理解起来好像不难,但…

软件工程期末复习总结

软件工程期末复习总结第一章软件工程学概述1.软件危机:是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。包括如何开发软件,如何维护数量不断膨胀的已有软件。2.软件生命周期的定义及划分3.软件从定…

软件工程总结(52篇)