范文一:软件工程概念
第一章
软件的特点:1、抽象性 2、软件生产无明显的制造过程 3、无磨损性 4、对计算机系统的依赖性 5、软件的收工开发方式 6、软件本身复杂性 7、软件的高成本
软件危机的主要表现:1、软件开发周期大大超过规定日期 2、软件开发成本严重超标 3、软件质量难以保证
软件工程的定义:软件工程是应用计算机科学,数学,管理科学等原理的开发软件的工程。
软件工程化:软件工程化就是把软件工程理论应用到软件开发组织中,以改进软件产品开发的时间、质量、成本和服务。
软件工程的三要素:方法、工具和过程。
三要素与软件质量的关系:1、质量是根本出发点 2、过程是基础,是各种方法和工具的粘合剂 3、方法包括管理方法和技术方法,是如何完成过程和活动的指南和准则 4、工具使得过程利于方法自动化或半自动化,从而提高工作效率
7条软件工程的基本原理:1、按软件生存期分阶段制定计划并认真实施 2、坚持进行阶段评审 3、坚持严格的产品控制 4、使用现代程序设计技术 5、明确责任,使得工作结果能够得到清楚的审查 6、人员应少而精 7、不断改进开发过程
软件生存周期:指软件的孕育、诞生、成长、成熟、衰败的生存过程。 软件生存周期分为三个时期:定义(123)、开发(45)、维护(6)。
阶段:1、可行性研究与计划 2、需求分析 3、软件设计 4、编码 5、测试 6、维护 常用的软件工程方法:生命周期法(结构化方法)、面向对象方法、原型法。 软件开发模型:瀑布模型、快速原型模型、演化模型、面向对象模型、形式化方法模型 软件工具:软件工具是用来辅助软件开发、运行、维护、管理和支持等过程中活动的软件。
计算机辅助软件工程:将各种软件工具、开发机器和一个存放开发过程信息的工程数据库组合起来形成一个软件工程环境。
软件工程标准:为了能协调好软件开发的各个阶段和各个部分之间的联系和衔接问题,需要一系列的统一的约束和规定。
标准的层次:国际标准(ISO)、国家标准(GB)、行业标准、企业规范、项目规范 文档的分类:开发文档、管理文档、用户文档。
文档的质量要求:1、针对性 2、精确性 3、清晰性 4、完整性 5、灵活性
软件质量的六大特性:1、功能性 2、可靠性 3、易使用性 4、效率 5、可维护性 6、可移植性。
软件质量保证的概念:软件质量保证是为确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。
软件过程成熟度等级:1、初始级 2、可重复级 3、可定义级 4、可管理级 5、可开发级。
软件工程过程化指导思想:1、必须有短期效益这种动力来驱动,而且从整个产业的战略发展的需要来考虑,国家或者行业相关部门可以以适当的标准来强行推动 2、分步实施,重点突破的策略可组织能够集中有限的资源逐步的扎实的推进工程化,使得组织获得经验,锻炼队伍,同时也保证在开发项目的成功 3、要求组织最高领导者在认识到改革过程中的
风险、投入和付出的同时,又要认识到软件工程化的作用和效益。
项目:项目是指在一定的资源约束下完成既定目标的一次性任务。
项目管理:项目管理是指通过项目经理和项目开发组织机构运用系统理论和方法对项目及其资源进行计划、组织、协调、控制。旨在实现项目的特定目标的管理方法体系。
项目管理的三要素:目标、成本、进度。
项目进度甘特图:P38
可行性研究:可行性研究主要从经济、技术、法律和操作等方面分析所给出的解决方案是否可行,即能否在规定的资源和时间的约束下完成。
步骤:1、识别用户需求 2、设计并推荐系统实现方案 3、评价系统的可行性 4、建立成本和进度限制 5、编写文档并提交审查
四个方面:1、技术可行性 2、经济可行性 3、法律可行性 4、用户操作可行性。 P62 公式及其含义。
P63 第六章。P63--P86
人机界面设计的四个问题:1、系统响应时间 2、用户帮助设施 3、出错信息处理 4、交互方式。
人机界面设计三大黄金原则:1、置于用户控制之下 2、减少用户记忆负担 3、保持界面一致。
P94 图形表示法
面向对象方法概述:
四要素:对象、类、继承、消息通信。
三模型:动态模型、功能模型、对象模型。
面向对象设计的准则:模块化、抽象、信息隐蔽、低耦合、高内聚和可重用。 五个层次:类及对象层、属性层、服务层、结构层、主题层。
软件测试四步骤:1、单元测试 2、集成测试 3、确认测试 4、系统测试。
P166 黑盒法 P169 白盒法 P176 公式及含义
第十章、再工程的含义。184
范文二:软件工程概念
1。软件的定义:软件是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档。
软件=程序+数据+文档 软件≠程序
2.软件工程的定义:
.软件工程是①将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件开发和管理之中,②对①中所选方法的研究。
软件生命周期
2.软件生命周期的定义
:软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存期。
三个阶段:定义、开发、维护
八个步骤:问题定义、可行性研究、需求分析;总体设计、详细设计、编码与单元测试、综合测试;运行维护。
3.软件过程模型的定义::
软件生命周期的每一阶段都有明确的任务,各个阶段的活动如何衔接,开发过程中采用什么样的策略,应遵守什么样的规定和制约,将这些活动框架用一种模型表示出来,称为软件过程模型.
4.包括:瀑布模型,快速原型化模型,增量模型,螺旋模型,增量模型,RUP模型
5.软件工程方法学三要素:过程,方法,工具 软件生命周期全过程中使用的一整套技术方法的集合称为方法学,其三要素:
1).过程:获取高质量软件所需要的一系列任务框架(活动)、任务完成顺序、以及质量保证点和项目管理------做什么;
2).方法:过程中规定各项任务中采取的技术方法------如何做;
3).工具:为方法应用提供自动或半自动支持环境
6.什么是用例图:
用户模型视图也称为用例图,它从用户的角度来描述系统功能,并指出各功能的操作者。用例图是捕获用户需求的强有力工具,它描述了系统应该实现什么样的功能
用例图是外部参与者所能观察到的系统功能的模型图,它将系统、子系统和类的行为可视化 用例图是获取需求的直接方法
用例图还是软件测试人员进行测试的指导
7.用力图四种基本关系:
关联 包含 扩展 泛化
8.什么是图:
.类图是描述类、协作(类或对象间的协作)、接口及其关系的图。
类图是逻辑视图的重要组成部分,用于对系统的静态结构建模,涉及到具体的实现细节
9.什么是顺序图:
.顺序图也称为时序图,它描述了系统中,对象间通过消息进行的交互,它强调了消息在时间轴上的先后顺序。
10.顺序图的作用
:顺序图常用来描述用例的实现,它表明了由哪些对象,通过消息相互协作来实现用例的功能,在顺序图中,标识了消息发生交互的先后顺序
11..消息的分类: 1)调用(call):这是最常用的一种消息,它表示调用某个对象的一个操作(通常格式为“对象名.成员方法”)。可以是对象之间的调用,也可以是对象本身的调用(局部调用)。
2)返回(return):返回表示被调用的对象向调用者返回一个值。在UML的交互图中,将采用如虚线箭头线来表示,在箭头线上应标明返回值。
3)发送(Send):发送是指向对象发送一个信号。信号和调用不同,它是一种事件,用来表示各对象间进行通信的异步激发机制。
4)创建(Create)和销毁(Destroy):也就是创建和销毁一个对象。创建对象通常是利用构造方法来实现的,对象一创建,生命线就开始;生命终止符号用一个较大的叉形符号表示。
12.活动图的概念:
活动图是描述系统或业务的一序列活动构成的控制流,它描述了系统从一种活动转换到另一种活动的整个过程。
13.活动图的作用: 活动图常用来描述业务或软件系统的活动轨迹,描述了系统的活动控制流程。
用活动图可以对业务过程、工作流和用例实现进行建模。
14. 活动图与交互图的区别:1)系统动态建模的两种主要形式;2)交互图强调对象与对象之间的交互信息;3)活动图强调从活动到活动的控制流程。
15活动图与流程图的区别:
流程图没有并发,活动图有泳道,.流程图只有用例实现
16.
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码
简单的情况:候选码只包含一个属性 全码
最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码 主码
若一个关系有多个候选码,则选定其中一个为主码(Primary key)
16.什么是面向对象?
“面向对象”是专指在程序设计中采用封装、继承、多态等设计方法.
首先根据客户需求抽象出业务对象;然后对需求进行合理分层,构建相对独立的业务模块;之后设计业务逻辑,利用多态、继承、封装、抽象的编程思想,实现业务需求;最后通过整合各模块,达到高内聚、低耦合的效果,从而满足客户要求。
(2)何为对象?
对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
(3)什么是简单工程模拟?
工厂模式定义:提供创建对象的接口.
为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑实用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。
(4)业务逻辑与界面逻辑的分离
进行业务的封装, 一般来说,要对类进行设计,使得每个类“只作一件事”。当牵涉到有关用户界面的代码时,这一点尤其重要,因为“正在做的”和“怎样显示”很容易混在一起。这种耦合阻碍了代码的重用。应该把“业务逻辑”从GUI代码中分离出来。这样,不仅能更容易地重用业务逻辑代码,而且重用GUI代码也变得更加轻松。
范文三:软件工程概念
概念:
第一章:
1.生命周期:软件经历的从定义、开发、使用和维护,直到最终被废弃这个漫长的时期称为生命周期。
※ 2.问题定义:确定计划开发的系统要求解决的问题是什么。
※ 3. 可行性研究:决定该问题是否存在一个可行的解决办法。
4.需求分析:深入具体地了解用户的要求,在所要开发的系统必须做什么和用户取得完全一致的看法。
5.软件:是程序、数据及相关文档的完整集合。
IEEE: 计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序
时所必需的数据。
6. 软件工程:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运
行的软件,而建立和使用完善的工程原理。
IEEE定义:①把系统的、规范的、可度量的途径应用于软件开发、运行和
维护过程,也就是把工程应用于软件; ②研究①中提到的途径。
7. 管理:通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,
以达到既定目标的过程。
8. 方法学:把在软件生命周期全过程中使用的一整套技术方法的集合称为方法
学(methodology),也称为范型(paradigm)。
9.软件工程方法学三要素:方法、工具和过程。其中,方法是完成软件开发的
各项任务的技术方法,回答“怎样做”的问题;工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
10. 传统方法学:传统方法学也称为生命周期方法学或结构化范型。它采用结构
化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。
※ 11.面向对象方法学特点:
(1) 把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。用
对象分解取代了传统方法的功能分解。
(2) 把所有对象都划分成类(class)。每个类都定义了一组数据和一组操作,类是
对具有相同数据和相同操作的一组相似对象的定义。数据用于表示对象的静态属性,是对象的状态信息,而施加于数据之上的操作用于实现对象的动态行为。
(3) 按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成
一个层次结构的系统(也称为类等级)。在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,这种现象称为继承。
(4) 对象彼此间仅能通过发送消息互相联系。对象与传统数据有本质区别,它不
是被动地等待外界对它施加操作,相反,它是数据处理的主体,必须向它发消息请求它执行它的某个操作以处理它的数据,而不能从外界直接对它的数据进行处理。对象的所有私有信息都被封装在该对象内,不能从外界直接访问,这就是通常所说的封装性。
12.软件工程的7条基本原理:①用分阶段的生命周期计划严格管理,②坚持
进行阶段评审,③实行严格的产品控制,④采用现代程序设计技术,⑤结果应能清楚地审查,⑥开发小组的人员应该少而精,⑦承认不断改进软件工程实践的必要性。
13.软件工程传统方法学是:采用结构化技术(结构化分析、结构化设计和结构
化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。
14.软件生命周期包括:软件定义(即系统分析),软件开发(系统设计,系统
实现)和软件维护。
系统分析由问题定义、可行性研究和需求分析三个阶段组成。
总体设计:应该设计出实现目标系统的几种可能的方案。通常至少应该设计
出低成本、中等成本和高成本等3种方案。
详细设计:应该怎样具体地实现这个系统,设计出程序的详细规格说明。 编码和单元测试:写出正确的容易理解、容易维护的程序模块
综合测试:集成测试是根据设计的软件结构,把经过单元测试检验的模块按
某种选定的策略装配起来,在装配过程中对程序进行必要的测试。
软件维护:改正性维护、适应性维护、完善性维护、预防性维护。
※ 15.瀑布模型: 传统软件工程方法学的软件过程,基本上可以用瀑布模型来
描述。
阶段间具有顺序性和依赖性,尽可能推迟实现的观点,质量保证的观点 ※ 16.快速原型模型:快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。
※ 17.增量模型: 使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。
※ 18. 螺旋模型: 使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型
第二章:
19.可行性研究的目的不是解决问题,而是确定问题是否值得去解决。
20.可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。
21.可行性研究过程:1) 复查系统规模和目标,2)研究目前正在使用的系统
3)导出新系统的高层逻辑模型,4) 进一步定义问题,5.)导出和评价供选择的解法,6)推荐行动方针,7)草拟开发计划,8)书写文档提交审查 ※ 22.数据流图的四种基本符号:
正方形(或立方体)表示数据的源点或终点;
圆角矩形(或圆形)代表变换数据的处理;
开口矩形(或两条平行横线)代表数据存储;
箭头表示数据流,即特定数据的流动方向。
在数据流图中应该描绘所有可能的数据流向,而不应该描绘出现某个数据
流的条件。
23.数据字典:是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
※ 24.数据字典由对下列4类元素的定义组成:
(1) 数据流
(2) 数据流分量(即数据元素)
(3) 数据存储
(4) 处理
※ 24.数据字典记录数据元素:
①一般信息(名字,别名,描述等等), ②定义(数据类型,长度,结构等等), ③使用特点(值的范围,④使用频率,⑤使用方式——输入、输出、本地,条件值等等),⑥控制信息(来源,用户,使用它的程序,改变权,使用权等等) ⑦分组信息(父结构,从属结构,物理位置——记录、文件和数据库等等)。
25.由数据元素组成数据的方式有三种基本类型:
(1) 顺序 即以确定次序连接两个或多个分量;
(2) 选择 即从两个或多个可能的元素中选取一个;
(3) 重复 即把指定的分量重复零次或多次。
(4) 可选 即一个分量是可有可无的(重复零次或一次)
26.软件开发成本使用代码行技术、任务分解技术、自动估计成本技术。
27.运行费用取决于系统的操作费用(操作员人数,工作时间,消耗的物资等等)和维护费用。
28.系统的经济效益等于因使用新系统而增加的收入加上使用新系统可以节省的运行费用。
29.货币的时间价值:
通常用利率的形式表示货币的时间价值。假设年利率为i,如果现在存入P元,则n年后可以得到的钱数为:F=P(1+i)n
30.投资回收期:是使累计的经济效益等于最初投资所需要的时间。
31.纯收入:是在整个生命周期之内系统的累计经济效益(折合成现在值)与投资之差。
第三章
32.系统分析的准则:
(1) 必须理解并描述问题的信息域,根据这条准则应该建立数据模型。
(2) 必须定义软件应完成的功能,这条准则要求建立功能模型。
(3) 必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型。
(4) 必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。
33.确定对系统的综合要求
※1)功能需求:指定系统必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能。
※2)性能需求:指定系统必须满足的定时约束或容量约束,通常包括速度(响应时间)、信息量速率、主存容量、磁盘容量、安全性等方面的需求。 ※3)可靠性和可用性需求:可靠性需求定量地指定系统的可靠性。
可用性与可靠性密切相关,它量化了用户可以使用系统的程度。
※4)出错处理需求:说明系统对环境错误应该怎样响应。
5)接口需求:接口需求描述应用系统与它的环境通信的格式。常见的接口需求有:用户接口需求;硬件接口需求;软件接口需求;通信接口需求。
6)约束:设计约束或实现约束描述在设计或实现应用系统时应遵守的限制条
件。
7) 逆向需求:逆向需求说明软件系统不应该做什么。
8)将来可能提出的要求:应该明确地列出那些虽然不属于当前系统开发范畴,
但是据分析将来很可能会提出来的要求。
34.数据对象可以是外部实体(例如,产生或使用信息的任何事物)、事物(例如,
报表)、行为(例如,打电话)、事件(例如,响警报)、角色(例如,教师、学生)、单位(例如,会计科)、地点(例如,仓库)或结构(例如,文件)等。总之,可以由一组属性来定义的实体都可以被认为是数据对象。
35.联系:数据对象彼此之间相互连接的方式称为联系,也称为关系。联系可
分为以下3种类型:
(1) 一对一联系(1∶1)
(2) 一对多联系(1∶N)
(3) 多对多联系(M∶N)
※36.ER图中包含了实体(即数据对象)、关系和属性3种基本成分,通常用矩
形框代表实体,用连接相关实体的菱形框表示关系,用椭圆形或圆角矩形表示实体(或关系)的属性,并用直线把实体(或关系)与其属性连接起来。
37.第一、第二和第三范式的定义:
(1) 第一范式每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。
(2) 第二范式满足第一范式条件,而且每个非关键字属性都由整个关键字决定(而不是由关键字的一部分来决定)。
(3) 第三范式符合第二范式的条件,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述(即一个非关键字属性值不依赖于另一个非关键字属性值)。
第五章
38.典型的总体设计过程包括下述9个步骤:
1) 设想供选择的方案
2) 选取合理的方案
3) 推荐最佳方案
4) 功能分解
5) 设计软件结构
6) 设计数据库
7) 制定测试计划
8) 书写文档
9) 审查和复审
39.模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一
个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
※40.抽象就是抽出事物的本质特性而暂时不考虑它们的细节。
41.逐步求精:通过逐步分解对功能的宏观陈述而开发出层次结构,直至最终
得出用程序设计语言表达的程序。
※42.信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的
信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。
43.所谓局部化是指把一些关系密切的软件元素物理地放得彼此靠近。
44.模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦
合。
45.耦合是对一个软件结构内不同模块之间互连程度的度量。
※46.数据耦合: 如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅
是数据
控制耦合: 如果传递的信息中有控制信息
特征耦合: 当把整个数据结构作为参数传递而被调用的模块只需要使用其
中一部分数据元素.
公共环境耦合: 当两个或多个模块通过一个公共数据环境相互作用时 内容耦合:一个模块访问另一个模块的内部数据;
一个模块不通过正常入口而转到另一个模块的内部;
两个模块有一部分程序代码重叠(只可能出现在汇编程序中);
一个模块有多个入口(这意味着一个模块有几种功能)。
尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。
47. 内聚: 标志一个模块内各个元素彼此结合的紧密程度
48. 偶然内聚: 如果一个模块完成一组任务,这些任务彼此间即使有关系,关
系也是很松散的,
逻辑内聚: 如果一个模块完成的任务在逻辑上属于相同或相似的一类, 时间内聚: 如果一个模块包含的任务必须在同一段时间内执行
过程内聚: 如果一个模块内的处理元素是相关的,而且必须以特定次序执
行
通信内聚: 如果模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据
顺序内聚: 如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行
功能内聚: 如果模块内所有处理元素属于一个整体,完成一个单一的功能
第六章
49.结构化程序:如果一个程序的代码块仅仅通过顺序、选择和循环这3种基
本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称
这个 程序是结构化的。
经典结构程序设计:如果只允许使用顺序、IF-THEN-ELSE型分支和DO-WHILE型循环这3种基本控制结构,则称为经典的结构程序设计; 扩展的结构程序设计:如果除了3种基本控制结构之外,还允许使用DO-CASE型多分支结构和DO-UNTIL型循环结构,则称为扩展的结构程序设计;
修正的结构程序设计:如果再加上允许使用LEAVE(或BREAK)结构,则称为修正的结构程序设计。
50.人机界面设计应考虑的问题:① 系统响应时间 ②用户帮助设施 ③出错
信息处理 ④命令交互。
51.用户界面设计过程:是一个迭代的过程。通常先创建设计模型,再用原型
实现这个设计模型,并由用户试用和评估,然后根据用户意见进行修改。
52.各种用于界面设计和原型开发的软件工具为简化窗口、菜单、设备交互、
出错信息、命令及交互环境的许多其他元素的创建,提供了各种例程或对象。既可以用基于语言的方式也可以用基于图形的方式来实现。
53.人机界面设计一般交互指南
(1) 保持一致性;(2)应向用户提供视觉的和听觉的反馈;(3) 在执行有较大破坏性的动作之前要求用户确认;(4) 允许取消绝大多数操作;
(5) 减少在两次操作之间必须记忆的信息量;(6) 提高对话、移动和思考的效率;(7) 允许犯错误;(8) 按功能对动作分类;(9) 提供对用户工作内容敏感的帮助设施;(10) 用简单动词或动词短语作为命令名。
54.人机界面设计信息显示指南
(1) 只显示与当前工作内容有关的信息;(2) 不要用数据淹没用户;(3)
使用一致的标记、标准的缩写和可预知的颜色;(4) 允许用户保持可视化的语境;(5) 产生有意义的出错信息;(6) 使用大小写、缩进和文本分组以帮助理解;(7) 使用窗口分隔不同类型的信息;(8) 使用“模拟”显示方式表示信息,以使信息更容易被用户提取;(9) 高效率地使用显示屏。
55.盒图(N-S图)的特点
(1) 功能域(即,一个特定控制结构的作用域)明确;(2) 不可能任意转
移控制;(3) 很容易确定局部和全程数据的作用域;(4) 很容易表现嵌套关系,也可以表示模块的层次结构。
56.PAD是问题分析图(problem analysis diagram)用二维树形结构的图来
表示程序的控制流,主要优点
(1) 使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化
程序;(2) PAD图所描绘的程序结构十分清晰;(3) 用PAD图表现程序逻辑,易读、易懂、易记;(4) 容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成;(5) 即可用于表示程序逻辑,也可用于描绘数据结构;(6) PAD图的符号支持自顶向下、逐步求精方法的使用
57.判定表
一张判定表由4部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作。判定表右半部的每一列实质上是一条规则,规定了与特定的条件组合相对应的动作。
58.判定树是判定表的变种,它能清晰地表示复杂的条件组合与应做的动作之
间的对应关系。判定树的优点在于,它的形式简单到不需任何说明,一眼就可以看出其含义,因此易于掌握和使用。
59.过程设计语言(PDL)也称为伪码,具有严格的关键字外部语法,用于定义
控制结构和数据结构;另一方面,PDL表示实际操作和条件的内部语法通常又是灵活自由的,可以适应各种工程项目的需要。
60.PDL的优点:(1) 可以作为注释直接插在源程序中间;(2) 可以使用普通的
正文编辑程序或文字处理系统;(3) 已经有自动处理程序存在,可以自动由PDL生成程序代码。
61. McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度
量出的结果称为程序的环形复杂度。
62.流图:实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,
完全不表现对数据的具体操作以及分支或循环的具体条件。
63.在流图中用圆表示结点,一个圆代表一条或多条语句。程序流程图中的一
个顺序的处理框序列和一个菱形判定框,可以映射成流图中的一个结点。流图中的箭头线称为边,它和程序流程图中的箭头线类似,代表控制流。在流图中一条边必须终止于一个结点,即使这个结点并不代表任何语句(实际上相当于一个空语句)。由边和结点围成的面积称为区域,当计算区域数时应该包括图外部未被围起来的那个区域。
补充作业:总结从开学到目前学过的有关软件需求、概要设计和详细设计讲到的图形表示方法。描述它们各自的特点、规范要求,进行比较。
第七章
※64.黑盒测试:如果已经知道了产品应该具有的功能,可以通过测试来检验
是否每个功能都能正常使用。
白盒测试:如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。
※65.模块测试:是保证每个模块作为一个单元能正确运行,所以模块测试通
常又称为单元测试。
子系统测试:是把经过单元测试的模块放在一起形成一个子系统来测试。 系统测试:是把经过测试的子系统装配成一个完整的系统来测试。
验收测试:目的是验证系统确实能够满足用户的需要,在这个测试步骤中
发现的往往是系统需求说明书中的错误。验收测试也称为确认测试.
66.单元测试测试重点:模块接口,局部数据结构,重要的执行通路,出错处
理通路和边界条件。
67.渐增式测试方法:每次增加一个模块的方法称为渐增式测试。
68.自顶向下集成方法:从主控制模块开始,沿着程序的控制层次向下移动,
逐渐把各个模块结合起来。
69.自底向上测试:从“原子”模块开始组装和测试。
70.回归测试:是指重新执行已经做过的测试的某个子集,以保证上述这些变
化没有带来非预期的副作用。
71.Alpha测试:由用户在开发者的场所进行,并且在开发者对用户的“指导”
下进行测试。
72.Beta测试:由软件的最终用户们在一个或多个客户场所进行,用户记录在
Beta测试过程中遇到的一切问题,并且定期把这些问题报告给开发者。
73.逻辑覆盖包括:语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,条件组
合覆盖,点覆盖,边覆盖和路径覆盖。
74.控制结构测试包括:基本路径测试,条件测试和循环测试。
75.黑盒测试:采用等价划分,边界值分析和错误推测技术。
76.调试:就是把错误症状和原因联系起来的尚未被人深入认识的智力过程。
77.软件可靠性:程序在给定的时间间隔内,按照规格说明书的规定成功地运
行的概率。
78.软件可用性:是程序在给定的时间点,按照规格说明书的规定,成功地运
行的概率。
79.平均无故障时间MTTF(mean time to failure,平均失效前时间):系统按
规格说明书规定成功地运行的平均时间。
80.平均维修时间MTTR(mean time to restoration, 平均恢复前时间):是修
复一个故障平均需要用的时间。
第九章
※81.面向对象方法的4个要点:客观世界是由各种对象组成的;把所有对象
都
划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和 一组方法;在层次结构中,通常下层的派生类具有和上层的基类相同的特性(包括数据和方法),这种现象称为继承(inheritance);对象彼此之间仅能通过传递消息互相联系。
82.面向对象方法学的优点:是按照人类习惯的思维方法建立问题域的模型;稳定性好,软件系统的结构是根据问题领域的模型建立起来的,而不是基于对系统应完成的功能的分解;可重用性好,因为对象具有很强的自含性,固有的封装性和信息隐藏机制,具有较强的独立性;较易开发大型软件产品,可以把一个大型软件产品分解成一系列本质上相互独立的小产品来处理;可维护性好:面向对象的软件稳定性比较好,比较容易修改,比较容易理解,易于测试和调试。
※83.对象的定义:
(1) 定义1: 对象是具有相同状态的一组操作的集合。
这个定义主要是从面向对象程序设计的角度看“对象”。
(2) 定义2: 对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与它交互的能力。也就是说,对象是对属性值和操作的封装。
这个定义着重从信息模拟的角度看待“对象”。
(3) 定义3: 对象∷=〈ID,MS,DS,MI〉。其中,ID是对象的标识或名字,MS是对象中的操作集合,DS是对象的数据结构,MI是对象受理的消息名集合(即对外接口)。
※84.类(class):就是对具有相同数据和相同操作的一组相似对象的定义。
※85.实例(instance):就是由某个特定的类所描述的一个具体的对象。 ※86.消息(message):消息就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。
※87.方法(method):对象所能执行的操作,也就是类中所定义的服务。 ※88.属性(attribute):类中所定义的数据,它是对客观世界实体所具有的性
质的抽象。
※89.封装(encapsulation):就是把某个事物包起来,使外界不知道该事物的
具体内容。
对象具有封装性的条件如下:
(1) 有一个清晰的边界。所有私有数据和实现操作的代码都被封装在这个边界内,从外面看不见更不能直接访问。
(2) 有确定的接口(即协议)。这些接口就是对象可以接受的消息,只能通过向对象发送消息来使用它。
(3) 受保护的内部实现。实现对象功能的细节(私有数据和代码)不能在定义该对象的类的范围外访问。
※90.继承(inheritance):继承是指能够直接获得已有的性质和特征,而不必重复定义它们。
91.多态性(polymorphism):在类等级的不同层次中可以共享(公用)一个行为(方法)的名字,然而不同层次中的每个类却各自按自己的需要来实现这个行为。
92.重载(overloading):
函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;
运算符重载是指同一个运算符可以施加于不同类型的操作数上面。
93.模型:就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧
义的书面描述。
94.用面向对象方法开发软件,通常需要建立3种形式的模型,它们分别是描
述系统数据结构的对象模型,描述系统控制结构的动态模型和描述系统功能的功能模型。
95.对象模型表示静态的、结构化的系统的“数据”性质。它是对模拟客观世
界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。 通常,使用UML提供的类图来建立对象模型。类图描述类及类与类之间的静态关系。
※96.定义类
UML中类的图形符号为长方形,用两条横线把长方形分成上、中、下3个区域(下面两个区域可省略),3个区域分别放类的名字、属性和服务, ※97.定义属性
UML描述属性的语法格式如下:
可见性 属性名: 类型名=初值{性质串}
属性的可见性(即可访问性)通常有下述3种:公有的(public)、私有的(private)和保护的(protected),分别用加号(+)、减号(-)和井号(#)表示。如果未声明可见性,则表示该属性的可见性尚未定义。
※98.定义服务
服务也就是操作,UML描述操作的语法格式如下:
可见性操作名(参数表): 返回值类型{性质串}
操作可见性的定义方法与属性相同。
99.关联表示两个类的对象之间存在某种语义上的联系。
100.普通关联是最常见的关联关系,只要在类与类之间存在连接关系就可以用普通关联表示。普通关联的图示符号是连接两个类之间的直线
101.关联的角色
在任何关联中都会涉及到参与此关联的对象所扮演的角色(即起的作用),在某些情况下显式标明角色名有助于别人理解类图。
102.限定关联通常用在一对多或多对多的关联关系中,可以把模型中的重数从一对多变成一对一,或从多对多简化成多对一。
103.关联类
关联中的每个连接与关联类的一个对象相联系。关联类通过一条虚线与关联连接
104.聚集也称为聚合,是关联的特例。聚集表示类与类之间的关系是整体与部分的关系。
105.(1)共享聚集:例如,一个课题组包含多个成员,每个成员又可以属于其他课题组。用空心菱形表示,画在紧挨着整体类的部位。
(2) 组合聚集
如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失(或失去存在价值了),则该聚集称为组合聚集(简称为组成)。组成关系用实心菱形表示。
106.UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系。用一端为空心三角形的连线表示泛化关系,三角形的顶角紧挨着通用元素。
分为普通泛化与受限泛化;可以给泛化关系附加约束条件,以进一步说明该泛化关系的使用方法或扩充方法,这样的泛化关系称为受限泛化。
107.依赖关系:描述两个模型元素(类、用例等)之间的语义连接关系: 其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。用带箭头的虚线连接有依赖关系的两个类,箭头指向独立的类。
108.细化关系
当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系。 细化的图示符号为由元素B指向元素A的、一端为空心三角形的虚线(注意,不是实线),如图9.16所示。
109.动态模型:表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。
范文四:软件工程概念
软件工程的提出:1968年北大西洋公约组织在前联邦德国开会提出的。
软件危机:在计算机软件的开发和维护中所遇到的一系列严重问题。
定义:1)完成特定功能的程序。
2)适合程序处理的数据结构。
3)描述程序功能需求以及程序如何操作和使用所需求的文档。
经典定义:软件 = 程序 + 数据结构 + 文档
软件危机的表现:1)软件开发成本和进度估计极不准确。
2)软件产品质量较差,可靠性低。
3)用户对开发出来的软件产品不满意。
4)开发出来的软件几乎是不可维护的。
5)软件产品缺少应有的文档资料。
6)软件开打生产率远远低于计算机硬件发展速度和用户的需求,造成了
软件产品的供不应求。
软件危机的问题可概括为两个方面:1)如何开发出符合用户需求的高质量软件产品。
2)如何维护不断增加的已有软件。
软件危机产生的客观原因:1)软件与硬件产品不同,软件是“开发的”而非“制造的”。
2)软件没有“磨损”,但是他会不断“退化”。
3)现代的软件都是规模庞大,而程序的复杂性是随其规模的扩
大呈指数增加。
软件危机产生的主观原因:1)对用户要求没有完整和准确的认识就匆忙编写程序是许多软
件开发失败的主要原因。
2)对软件开发过程的认识不准确也是造成软件危机的原因之一
3)对软件质量重视不够是造成软件开发成本激增的主要原因。
4)轻视软件维护将是一个重大的错误。
分析软件危机的产生原因是为了寻找避免和消除它的方法。
软件工程的概念:1993年IEEE给出的较典型的定义。
定义:软件工程是把系统的,规范的,可度量的途径应用于软件开发,运行和维护过程,也
就是把软件工程应用于软件;并对这些途径加以研究。
软件工程的基本原理:1)分阶段的生命周期计划严格管理。
2)坚持进行阶段评审。
3)实行严格的产品控制。
4)采用现代程序设计技术。
5)结果应该能清楚的审查。
6)开发小组的人员应当少而精。
7)承认不断改进软件工程实践的必要性。
软件工程方法学:1)传统方法学。2)面向对象方法学。
软件工程方法学3个基本要素:方法、工具、过程。
软件生命周期概念:软件的生命周期也称为软件的生存周期,是指一个软件从提出开发要求
开始直到该软件报废为止的整个时期。
软件生命周期的3个时期:软件定义、软件开发、软件维护
软件定义时期包括:问题定义,可行性研究,需求分析。
软件开发时期包括:总体设计,详细设计,编码和单元测试,综合测试。
软件的维护时期是:使软件持久的满足用户的需要。
软件生命周期各阶段的基本任务:
1) 问题定义:明确软件系统要解决的问题是什么。
2) 可行性研究:确定软件系统是否值得去解。
3) 需求分析:确定目标系统必须具备的功能有哪些。
4) 总体设计:也称为概要设计,应当设计出实现目标系统的方案,不但要确定系统的实现
策略和组成部分,还要根据模块化的原理将系统结构划分为若干个规模适中
的模块所组成的层次结构。
5) 详细设计:详细的设计每个模块的算法和数据结构,明确每个模块的功能。
6) 编码和单元测试:写出容易理解和维护的程序模块。
7) 综合测试:通过各种测试活动使软件达到预期的要求,主要包括集成测试和验收测试。
8) 维护:采用各种必要的维护活动使系统能够持久的满足用户的需要。
常见的维护活动有:
改正性维护:诊断和改进软件使用过程中发现的错误。
适应性维护:修改软件以适应环境的变化。
完善性维护:根据用户要求完善和扩充软件。
预防性维护:为将来的维护活动进行准备的修改。
在软件测试阶段应当将测试计划、测试方案、实测结果作为文档资料保存下来,作为软件
配置的重要组成部分。
软件生命周期的模型:瀑布模型、原型模型、增量模型。
范文五:软件工程概念
软件:在信息处理和计算机领域内,一般认为软件是计算机程序、各种相关的文档和数据的集合
文档:指为了委托、购入、使用、开发、维护软件,以及管理开发过程所需要的所有文书和资料。
软件危机:软件发展的第二阶段末期的规模较大的项目开发中,出现了与当初的计划推迟交工、费用比预算大幅度上升、不能满足用户要求、可靠性低、维护困难等问题,导致了软件危机。
软件工程:指用科学知识和技术原理来定义、开发、维护软件的一门学科。或者说,软件工程就是运用工程学的基本原理和方法来组织管理软件的生产、研究、开发、管理、维护的过程、方法和技术。
软件工程过程:指在获取、供应、开发、操作和维护软件时,要实施的过程、活动和任务。
软件生存周期:是指一个软件从立项开始,经过制造、测试、使用和维护直到软件废止为止的整个时期。
数据流图:是以图形的方式描述数据在系统中流动和处理的过程,只反映系统必须完成的逻辑功能,是一种功能模型。 数据字典:用来定义数据流图中各个成分的具体含义。
模块:在程序中是数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素,在软件的体系结构中,模块是可组合、分解和更换的单元。
模块化:指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。每个模块完成一个特定的子功能,所有模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。
抽象:是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同特性而暂不考虑它的细节,不考虑其他因素。 信息隐蔽:指在设计和确定模块时,使得一个模块内包含的信息(过程和数据),对于不需要这些信息的其他模块来说,是不能访问的。
模块独立性:指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。
耦合性:也称块间关系,指软件系统结构中各模块间相互联系紧密程度的一种度量。
数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中值传递。
内聚性:又称块内联系,指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。
软件测试:是指为了发现软件中的错误而执行软件的过程。它的目标是尽可能多地发现软件中存在的错误,将测试结果作为纠正的数据。
黑盒测试:指把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能需求,又称为功能测试或数据驱动测试。
白盒测试:指把测试对象看成一个打开的盒子,测试人员需了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际运行状态与预期的状态是否一致。
测试用例:指为寻找程序中的错误而精心设计的一组测试数据。
调试:指确定错误的原因和位置,并改正错误的过程,也称纠错。
校正性维护:指识别和纠正隐含在软件中的错误的过程。
适应性维护:指为了使软件系统适应计算机运行环境的不断变化而修改软件的过程。
完善性维护:指为了适应用户业务和机构的发展变化而对软件的功能、性能进行修改、增加的过程。
预防性维护:指为了提高软件可靠性和可维护性而对软件做出的修改。
软件的可维护性:指软件能够被理解、校正、适应及增加功能的容易程度。
面向对象设计的准则:模块化、抽象、信息隐藏、低耦合、高内聚。
对象:指人们要进行研究的任何事件,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件,主要的事件类型有有型实体、作用、事件、性能说明。
类:具有相同或类似性质的对象的抽象就是类,类具有属性和操作。
继承性:是指子类自动共享父类数据结构和方法的机制。
多态性:指相同的操作或函数、过程可用于多种类型的对象上并获得不同结果。不同的对象,收到同一消息可产生不同的结果,这种现象成为多态性。
重用性:指同一事物不经修改或稍加修改就可以多次重复使用的性质。