1.1.2、软件的特征:软件的开发不同于硬件设计、不同于硬件制造、不同于硬件维修。 1.1.3、软件危机出现的原因:
软件维护费用的急剧上升,直接威胁计算机应用的扩大; 软件生产技术进步缓慢,是加剧软件危机的重要原因。
1.2.1、软件工程学的范畴:
软件开发技术(软件开发方法学、软件工具、软件工程环境)、软件工程管理(软件管理学、软件经济学、度量学)。
1.2.2、软件工程:是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,目的是为了实现按照预期的进度和经费完成软件生产计划,同时提高软件的生产率和可靠性。
1.3.1、3种编程泛型:
过程式编程泛型、面向对象编程泛型、基于构件技术的编程泛型 1.3.2、软件工程自身的进化 (3代)
传统软件工程--》面向对象软件工程--》基于构件的软件工程
2.1 软件生存周期
基于软件生命周期开发的主要活动:
需求分析-》软件分析-》软件设计-》编码测试-》软件测试-》运行维护
2.2 传统软件过程
瀑布模型 特点:阶段间的顺序性和依赖性、推迟实现的观点、保证质量的观点。 瀑布模型存在的问题:只有在需求分析准确的前提下,才能得到预期的结果。 快速原型模型:原型系统只包括对未来系统的主要功能以及系统的重要接口。特点:快速开发工具、循环、低成本。种类:渐进型、抛弃型。
2.3 软件演化模型
常见的演化模型(渐增式、迭代式):增量模型、螺旋模型。
增量模型:结合瀑布模型的顺序特征与快速原型法的迭代特征。增量:小而可用的软件 一般情况下,第一个增量是软件的核心部分。如(增量一:需求-设计-实现和集成-交付客户)
螺旋模型(目前最常用):当项目按照顺时针方向沿螺旋线移动时,每轮螺旋包含:计划、风险分析、建立原型、用户评审 4种活动。(高风险的大型软件采用此方法)
构件集成模型:适应于面向对象的软件开发。利用预先封装好的构件来构造应用软件系统。 2.5 统一过程和敏捷过程
统一过程:统一过程RUP 包括 4 个阶段:初始、细化、构造、迁移。以用例为驱动, 以系
统架构为中心的迭代与增量过程。每个阶段又分为若干次迭代,每次迭代都有一个核心工作流,有5 个活动(需求、分析、设计、实现、测试)。
敏捷过程:敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。敏捷开发的价值观:个体和交互胜过过程和工具、可以工作的软件胜过面面俱到的文档、客户合作胜过合同谈判、响应变化胜过遵循计划。
极限编程:
价值观:交流、简单、反馈、勇气
核心实践:1,完整团队 2,计划对策 3,测试 4,简单设计 5, 结对编程 6,小软件版本 7,设计改进 8,持续集成 9,代码集体共有 10,编码标准 11系统比喻 12可持续的速度
2.6 软件可行性分析 可行性研究的内容:经济可行性、技术可行性、运行可行性、法律可行性。
步骤:对当前系统进行调查研究、导出新系统的解决方案、提出推荐方案、编写可行性论证报告。 软件风险分析包括:风险识别(项目风险、技术风险、商业风险)、风险预测、风险的驾驭和监控。
3.1 概述
结构化分析与设计:最初是由结构化程序设计扩展而来的。 分析=需求分析,设计=系统设计
瀑布模型的生命周期:需求定义与分析-》总体设计-》详细设计-》编码-》测试-》维护 SA模型 和SD模型:
结构化分析(SA)的基本步骤:自顶向下,功能分解(分层DFD)、由后向前,定义数据和加工(DD, PSPEC)、根据需要,分析复杂数据和动态模型(E-R图,CFD,CSPEC,STD)、编写软件需求规格说明书SRS。
SA模型组成:功能模型、数据模型、行为模型 3种。
SD模型是由SA模型映射而来的。
SA模型的数据字典可转换为待开发系统的数据设计 数据流图可转换为体系结构设计(SC图)与接口设计 加工规格说明可转换为模块内部的详细过程设计
SD模型的组成:从上到下依次是:过程设计、接口设计、体系结构设计、数据设计。
3.2 结构化系统分析
3.3 结构化系统设计
3.4 模块设计
4 用例图,状态图,时序图,协作图
5.1 软件需求工程
软件需求的定义及特性.
定义:指一个软件系统必须遵循的条件或具备的能力。
软件需求的6个特性:功能性、可用性、可靠性、性能、可支持性、设计约束。 软件需求的3个层次:业务需求、用户需求、功能需求。
软件需求工程:是一门应用有效的技术和方法,合适的工具和符号来确定、管理和描述目标系统及其外部行为特征的学科
5.3 需求获取的常用方法
常规的:1,建立联合分析小组 2,用户访谈 3,问题分析与确认 快速原型:
1, 利用各种分析技术和方法,生成一个简化的规格说明书
2, 对需求规格说明书进行必要的检查和修改后,确定原型的软件结构、用户界面和数据结
构等
3, 在现有的工具和环境的帮助下快速生成可运行的软件原型并进行测试和改进 4, 将原型提交给用户评估并征求用户的修改意见 5, 重复上述过程,直到得到用户的认可
5.5 软件需求描述
《需求规格说明书》内容:引言、信息描述、功能描述、行为描述、质量保证、接口描述、其他描述。
5.6 需求管理
需求管理的流程:需求确认、需求跟踪、需求变更。需求跟踪有两种方式,正向跟踪与逆向跟踪。
需求变更的流程:变更申请、审批、更改、更新确认。 需求管理的5个特定实践: 1,获得对需求的理解 2,获取需求承诺 3,管理需求变更
4,在需求变更后维护对需求的双向可追溯性。
5,标识项目工作(包括计划和产品)与需求 的不一致性。
6.1 软件分析概述
1. 面向对象分析OOA的建模步骤:需求理解、定义类和对象、标识对象的属性和操作、
标识类的结构和层次、建立对象-关系模型、建立对象-行为模型、评审OOA模型。 2. 面向对象分析OOA的优点:同时加强了对问题空间和软件系统的理解;改进包括用户
在内的软件分析有关的各类人员之间的交流;对需求的变化具有较强的适应性;很好的支持软件复用;确保从需求模型到设计模型的一致性。
3. 分析模型(是一种概念模型)的特点:全面覆盖软件的功能需求;分析模型与软件的实现
无关;分析模型的表述方法与所采用的分析技术有关。
6.2 面向对象分析建模
1,分析类的类型:边界类、控制类、实体类。
2, 边界类包括:用户界面类、系统接口类、设备接口类。如事务管理器、资源协调器、错
误处理器都可为控制类。
3, 对象-关系模型的内容:分析类的属性、分析类的关联、分析类图、分析类的合并。 4, 时序图中的元素有:对象、对象生命线、消息。协作图中的元素有:对象、链接、消息
流。
5, 面向对象分析的任务是:将需求阶段产生的需求模型 转换为 软件分析模型。
面向对象设计的任务是:将分析阶段建立的分析模型 转换为 软件设计模型。
7.1 软件设计概述
1. 软件设计的基本概念:模块(定义输入、输出和特性的程序实体)与构件、抽象与细化、
信息隐藏、软件复用。
2. 软件设计的基础:分析阶段对目标系统的数据、功能、行为建模。 3. 软件设计包括:数据设计、体系结构设计、接口设计、过程设计。 4. 分解和模块性是实现模块设计的重要指导思想。
5. 内聚分类:低内聚(偶然性内聚、逻辑性内聚、时间性内聚)、中内聚(过程性内聚、通讯性内聚)、高内聚(顺序性内聚、功能性内聚)
6. 耦合分类:弱耦合(非直接耦合、数据耦合、特征耦合)、中耦合(控制耦合)、较强耦
合(外部耦合、公共耦合)、强耦合(内容耦合)。
7.2 面向对象设计建模
1,系统架构设计的内容:系统高层结构设计、确定设计元素、确定任务管理策略、实现分布式机制、设计数据存储方案、人机界面设计。系统元素设计的内容:子系统设计、分包设计、类/对象设计。
2,软件模式分类(按抽象级别):架构模式、设计模式、习惯用法。
3, 常用的架构模式有:层次架构、模型-视图-控制架构、管道-过滤器架构、黑板架构。 4, 层次架构的基本原则:将系统划分不同的层次。确定设计元素的主要工作是:确定设计类、子系统、子系统接口。
7.3 系统架构设计
1, 系统架构设计的内容:系统高层结构设计、确定设计元素、确定任务管理策略、实现分布式机制、设计数据存储方案、人机界面设计。系统元素设计的内容:子系统设计、分包设计、类/对象设计。
2, 软件模式分类(按抽象级别):架构模式、设计模式、习惯用法。
3, 常用的架构模式有:层次架构、模型-视图-控制架构、管道-过滤器架构、黑板架构。 4, 层次架构的基本原则:将系统划分不同的层次。确定设计元素的主要工作是:确定设计类、子系统、子系统接口。
5, 面向并行需求的技术:引进任务管理部件、基于进程和线程的控制。 6, 任务管理策略:多处理机方案、操作系统方案、应用程序方案。
7, 设计管理并发任务对象的策略:确定任务的特征、定义一个协调者任务和与之关联的对象、集成其它任务和协调者。
8, 任务管理部件的设计步骤:识别由事件驱动和时间驱动的任务、识别关键性任务,任务优先级和任务管理类、定义任务、必要时扩充有关任务的类和对象。
8.1编码概述
编码风格
选择编码语言的标准:应用领域、算法与设计复杂性、数据结构的复杂性、效率的考虑。
8.4 测试的基本概念
目的,特性,种类
1, 测试(testing)的目的与任务:目的:发现程序的错误;任务:通过执行程序,暴露潜在的错误。
2, 纠错(debugging)的目的与任务:目的:定位和纠正错误;任务:消除软件故障,保证程序的可靠运行。
3, 测试的特性:挑剔型、复杂性、不彻底性、经济型。
4, 测试分类:静态分析(静态分析器分析、代码评审(代码会审、走查、办公桌检查));
动态测试(黑盒测试(功能测试)、白盒测试(结构测试))。
5, 测试文档内容:测试计划、测试报告。测试计划的主体是测试内容说明:测试项目名称、测试目的、步骤和进度、测试用例设计。测试报告的主题是测试结果:测试项目名称、实测结果和期望结果的比较、发现问题、测试效果。
8.4 黑盒测试与白盒测试
概念与区别
黑盒测试: 根据被测试程序功能来进行测试,所以也称功能测试. 黑盒测试常用技术: 1, 等价类法、2, 边界值法、3, 错误猜测法。
白盒测试:以程序的结构为依据,所以又称为结构测试.
1. 白盒测试分类:路经测试(点覆盖、边覆盖、路径覆盖)、逻辑覆盖测试(语句覆盖、
判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖)。
2. 路经测试的特征:满足结构测试的最低要求、有利于安排循环测试。
8.6 多模块程序的测试策略
单元测试、集成测试、确认测试、系统测试 多模块测试的层次 单元测试/模块测试 所处时段 编码阶段 解决的问题 1. 对模块代码进行编译,发现并纠正其语法错误; 2. 进行静态分析,验证模块结构及其内部调用序列是否正确; 3. 确定模块的测试策略,并据此设计一组测试用例和必要的测试软件; 4. 用选定的测试用例对模块进行测试,直至满足测试终止标准为止; 5. 注重执行路径、出错处理路径、局部数据结构、模块的对外接口的测试 6. 编制单元测试报告。 1. 制订集成测试实施策略 2. 确定集成测试的实施步骤,设计测试用例 3. 逐一地添加模块,进行测试 1. 进一步验证软件的有效性,即验证软件的功能和性能是否与用户的要求一致 1. 测试是否与硬件协调运行 2. 测试是否和原来就有的其它软件协调运行 3. 测试是否完成SRS对它的要求 涉及测试方法 黑盒测试——程序外部测试、功能性测试 白盒测试——程序内部测试、覆盖测试 成果 测试报告 集成测试 集成测试阶段 集成测试阶段 验收阶段 模块(子系统或小系统)集成测试;训练驱动与桩的设计、组合及集成测试。 已组装软件 已确认软件 可运行的系统 高 级 测 试 确认测试 系统测试 系统的性能检验和软件系统实时运行状况的测试 9.1 软件维护的种类 三类(要求) + 一类(扩展)
软件维护有哪些种类?他们的目标分别是什么? 解答:软件维护的种类以及对应目标依次是: a) 完善性维护
在软件漫长的运行时期中,用户往往会对软件提出新的功能要求与性能要求。为了适应这些变化,应用软件原来的功能和性能需要扩充和增强。这种增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善性维护。 b) 适应性维护
让软件适应运行环境的改变而进行的一种维护。 c) 纠错性维护
纠正在开发期间未能发现的遗留错误。 d) 预防性维护
为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。
9.2 软件可维护性
9.3 软件配置管理 整个软件生命周期中
软件配置管理能够系统的处理变更从而使得软件系统可以随时保持其完整性。 主要内容包括:配置管理数据库、版本控制、变动控制。
10.1 软件复用的基本概念
软件模块的性
软件模块性的两个定性度量标准是内聚性和耦合性。 共同需求
12.3 软件可靠性
定义: 就在给定的时间内,程序按照规定的条件成功地运行的概率. 分级: 甚低, 低, 正常, 高, 甚高
容错技术: 是软件可靠性的子属性之一.
1, 容错软件(1, 屏蔽错误 2,修复错误 3, 减少影响) 2, 冗余技术(1,结构冗余 2, 时间冗余 3, 信息冗余 ) 12.5 CMM软件能力成熟度模型
CMM1, CMM2, CMM3, CMM4, CMM5
成熟度等级1:初始级(Initial)。处于这个最低级的组织,基本上没有健全的软件工程管理制度。
成熟度等级2:可重复级(Repeatable)。在这一级,有些基本的软件项目的管理行为、设计和管理技术是基于相似产品中的经验,故称为“可重复”。
成熟度等级3:已定义级(Defined)。在第3级,已为软件生产的过程编制了完整的文档。软件过程的管理方面和技术方面都明确地做了定义,并按需要不断地改进过程,而且采用评审的办法来保证软件的质量。
成熟度等级4:已管理级(Managed)。一个处于第4级的公司对每个项目都设定质量和生产
目标。这两个量将被不断地测量,当偏离目标太多时,就采取行动来修正。
成熟度等级5:优化级(Optimizing)。—个 第5级组织的目标是连续地改进软件过程。这样的组织使用统计质量和过程控制技术作为指导。
一、数据流程图
二、软件危机出现的原因:
软件维护费用的急剧上升,直接威胁计算机应用的扩大; 软件生产技术进步缓慢,是加剧软件危机的重要原因。
三、软件生命周期
基于软件生命周期开发的主要活动:
需求分析-》软件分析-》软件设计-》编码测试-》软件测试-》运行维护
四、软件开发模型
瀑布模型,快速原型模型,增量模型,螺旋模型,构件集成模型
瀑布模型 特点:阶段间的顺序性和依赖性、推迟实现的观点、保证质量的观点。 瀑布模型存在的问题:只有在需求分析准确的前提下,才能得到预期的结果。
快速原型模型:原型系统只包括对未来系统的主要功能以及系统的重要接口。特点:快速开发工具、循环、低成本。种类:渐进型、抛弃型。
常见的演化模型(渐增式、迭代式):增量模型、螺旋模型。
增量模型:结合瀑布模型的顺序特征与快速原型法的迭代特征。增量:小而可用的软件 一般情况下,第一个增量是软件的核心部分。如(增量一:需求-设计-实现和集成-交付客户)
螺旋模型(目前最常用):当项目按照顺时针方向沿螺旋线移动时,每轮螺旋包含:计划、风险分析、建立原型、用户评审 4种活动。(高风险的大型软件采用此方法)
构件集成模型:适应于面向对象的软件开发。利用预先封装好的构件来构造应用软件系统。 五、《需求规格说明书》
软件需求规格说明书SRS的内容:引言、信息描述、功能描述、行为描述、质量保证、接口描述、其他描述。 六、《概要设计》 (总体设计):包括软件的结构和接口设计,并编写概要设计文档。详细设计,确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。每个阶段完成的文档都必须经过复审。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务