1、软件设计师培训(二)培训课程1. 软件工程基础2. 软件开发项目管理3. 软件工具与开发环境4. 软件过程管理、软件质量管理5. 结构分析与设计、系统设计知识6. 软件测试与维护学习内容1. 软件工程基础 开发生命周期模型概念:系统开发的生命周期是指一个系统历经计划、分析、设计、编程、测试、维护直至淘汰的整个过程。生命周期的阶段划分通常采用以下三种方法: boehm划分法:计划(问题定义、可行性研究)、开发(需求分析、总体设计、详细设计、编码、测试)、运行(维护)三大阶段。 国际(GB8566-1988)划分法:可行性研究与计划,需求分析、概念设计、详细设计、实现、组装测试、确认测试、实用和维
2、护。定义了获取过程、供应过程、开发过程、运行过程、维护过程、管理过程、支持过程骑个部分。 RUP划分法:分为初始、细化、构造、移交四个主要阶段软件开发模型: 瀑布模型:严格遵循软件生命周期各阶段的固定顺序,一个阶段完成再进入另一个阶段 快速原型模型:对于许多需求不够明确的项目,比较适合采用该模型。 演化模型:它将从初始的模型中逐渐演化为最终软件产品,是一种“渐进式”原型法。 增量模型:它采用一种“递进式”模型,它将软件产品划分为一系列的增量构件,分为分别设计、编码、集成和测试。 螺旋模型:结合了瀑布模型和演化模型的优点,最主要的特点在于加入了风险分析。 喷泉模型:主要用于描述面向对象开发过程,
3、最核心的特点是迭送。 系统开发方法论结构化分析与设计:采用结构化技术来完成软件开发的各项任务。面向数据结构的设计:基本思想是根据数据结构导出程序结构。面向对象分析与设计:将数据和方法封装在一起,提高了模块的聚合度,降低了耦合度,更大程度上支持软件复用。构件化开发:基于构件的开发(CBD),通过有计划地集成现有的软件部分来进行软件开发。采用CBD后所,所有的软件解决方案将可以使用预建的构件和模板,像“搭积木”式的建造。构件五个要素:规格说明、一个或多个接实现、受约束的构件标准,包装方法和部署方法。重点难点思考题1、掌握各种常见的开发生命周期模型的概念及特点,能够正常的做出比较与选择,了解结构化分
4、析与设计、面向数据结构的设计、面向对象分析与设计,以及构件四种开发方法的基础知识、概念和特点,对其建立宏观的认识与理解。软件设计师培训(二)培训课程1. 软件工程基础2. 软件开发项目管理3. 软件工具与开发环境4. 软件过程管理、软件质量管理5. 结构分析与设计、系统设计知识6. 软件测试与维护学习内容2. 软件开发项目管理项目管理是基于被接受的管理原则的一套技术或方法,这些技术或方法用于计划、评估和控制工作活动,以便按时、按预算、依照规范达到理想的最终效果。 制定项目计划制定项目计划包括确定项目范围、识别项目活动、工作量的估算、资源计划、进度计划。 软件项目估算度量估算策略:包括“自顶向下
5、”和“自底向上”两种。软件规模估算:也就是估算完成的工作范围,常用的方法有LOC和FP估算法。软件工作量估算:工作量的单位通常是人月,计算方法为规模/产能=工作量。成本估算:通常包括人员成本、资源成本、其他开支等。常用的估算辅助方法:Delphi法和三点法。 进度计划与监控甘特图:使用水平线段表示任务的工作阶段,线段的起点和终点分别对应着任务的开工时间和完成时间,线段的长度表示完成任务所需的时间。PERT技术和CPM方法:PERT叫做计划评审技术,CPM方法则是关键路径法。她们都是采用网络图来描述一个项目的任务网络,通常使用两张图来定义网络图。 开发组织和作用建立开发结构的组织结构时,可以采用
6、三种不同的组织结构:按课题划分、按职能划分、矩阵式。程序设计小组的组织形式也有三种常见结构:主程序员制、民主制、层次式。 配置管理软件配置管理的任务包括:制定配置管理计划、实施变更管理、实施版本管理和发行管理。 风险管理项目风险管理通常包括:风险识别、风险估计(风险评估)和风险驾驭(风险控制)三个主要活动。风险识别包括:项目风险、技术风险和商业风险三种。当在软件工程中考虑风险时,主要是基于关心未来、关心变化、关心选择这三个概念提出的。重点难点思考题1、重点在意了解项目管理的目标,项目计划的内容,了解各种如那件估算的策略与方法,了解软件规模,工作量、成本估算的常用模型,了解项目进度计划与监控技术
7、,掌握甘特图、PERT技术、CPM方法的关键特征。软件设计师培训(二)培训课程1. 软件工程基础2. 软件开发项目管理3. 软件工具与开发环境4. 软件过程管理、软件质量管理5. 结构分析与设计、系统设计知识6. 软件测试与维护学习内容3. 软件工具与开发环境软件开发环境包括:软件开发工具和集成环境开发环境(简称开发环境)两种。软件工具是指用于辅助软件开发、运行、维护、管理、支持等过程中的活动的软件,通常也称为CASE工具。继承开发环境是一种把支持多种软件开发方法和开发模型、支持软件开发全过程的软件工具集成在一起的软件开发环境。环境集成机制主要包括:数据集成机制:提供统一的数据模式和数据接口规
8、范。控制集成机制:支持各种工具或各开发活动之间的通信、切换、调度和协调工作,并支持软件开发过程的描述、执行和转换。界面集成机制:为统一的工具界面分割和同意的操作方式提供支持,使得环境中的工具具有相同的视觉效果和操作规则。4. 软件过程管理、软件质量管理 软件质量管理 软件质量特性描述ISO/IEC9126模型:详见GB/T 16120-1996软件产品评价、质量特性及其使用指南McCall质量模型: 软件质量保证基本概念软件质量保证就是保证软件产品充分满足消费者要求的质量而进行的有计划、有组织的活动。 技术评审正式的技术评审FTR是软件工程师组织的软件质量保证活动。通常采用系统化、严密的过程,
9、包括制定计划、总体会议、做准备、开会、返工、追踪和因果分析。 过程管理基础软件过程是软件生命周期中的一系列相关的过程,即用于开发和维护软件及相关产品的一系列活动。 过程分类:按照IOS/IEC 12207标准信息技术软件生存期过程,可以将软件生存周期氛围基本过程、支持过程和组成过程三大类。 软件过程改进相关标准:分类为两类一类是理论指导类,一类是时间指南类。重点难点思考题1. 软件开发环境:重点在于了解各种如那件开发工具的分类、作用以及典型的CASE工具。2. 软件过程管理:重点在于了解软件过程改进的基本概念,熟悉常见软件过程模型。3. 质量管理基础:掌握ISO/IEC9126软件质量模型和M
10、cCall软件质量模型中定义的质量特性的含义。了解主要的软件质量保证措施。软件设计师培训(二)培训课程1. 软件工程基础2. 软件开发项目管理3. 软件工具与开发环境4. 软件过程管理、软件质量管理5. 结构分析与设计、系统设计知识6. 软件测试与维护学习内容 统一过程(UP)基础统一过程是重型方法论中的百科全书,其核心特色是“用例和风险驱动,以架构为中心,迭送的增量开发过程。”UP和RUP一样将软件开发工作分成先启(初始)、精化(细化)、构建、产品化(移交)四个阶段,在每个阶段中RUP定义了9个核心工作流(5个核心开发工作流及4个核心支持工作流)的工作。 极限编程(XP)基础XP是一种轻量(
11、敏捷)、高效、低风险、柔性、可预测、科学而且充满乐趣的软件开发方式。它由价值观、原则、实践、和行为四部分组成,彼此相互依赖、关联,并通过行为贯穿整个生命周期。四大价值观:沟通、简单、反馈、勇气。五个原则:快速反馈、简单性假设、逐步修改、提倡更改、优质工作。十二个最佳实践:计划游戏(快速制定计划,随着细节的不断变化而完善),小型发布、隐喻(找到合适的比喻传达信息)、简单设计、测试先行(先写测试代码,然后再编写程序)、重构、结构编程、集体代码所有制、持续集成、每周工作40小时以上、现场客户、编码标准。 主要开发文档:太多自己百度或Google。 软件维护活动软件维护从性质上分为:纠错型维护,适应性
12、维护、预防型和完善型维护。5. 结构化分析与设计、系统设计知识 需求分析与设计基础 需求分的任务过程:需求分析主要是确定等开发软件的功能、性能、数据、界面等要求。 需求分析的原则:必须能够表达和理解问题的数据域和功能域、必须按照自顶向下、逐层分解的方式对问题进行分解和不断的细化、要给出系统的逻辑视图和物理视图。 需求的分类:包括功能需求、非功能需求、设计约束。 需求工程:包括需求开发、需求管理。 软件设计的任务与活动:软件设计分为以下两步,概要设计(也称为高层设计),详细设计(也称为低层设计)。重点难点思考题1. 结构化分析与设计、系统设计知识:重点在于掌握结构化分析方法的基本特征,数据流图和
13、数据字典两大分析工具的要点。掌握结构化设计技术的基本知识,深入领会模块化设计的要点。软件设计师培训(二)培训课程1. 软件工程基础2. 软件开发项目管理3. 软件工具与开发环境4. 软件过程管理、软件质量管理5. 结构分析与设计、系统设计知识6. 软件测试与维护学习内容软件设计包括四个既独立又相互联系的活动:体系结构设计、接口设计、数据设计和过程设计。 结构化分析与设计结构化分析方法也称为生命周期方法学,它采用结构化分析、设计、编程来完成软件开发的各项任务。它具有阶段性、推迟实现、文采管理三大特点。 结构化分析基础数据流图:数据流图是用来描述数据流从输出到输出的变化过程流,由加工、数据流(包括
14、输入数据流和输出数据流)、文件、外部实体构成。数据字典:数据字典就是对数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项进行说明。 结构化设计基础概要设计:主要是设计软件的结构、确定系统是由哪些模块组成,以及每个模块之间的关系。详细设计:确定如何具体地实现所要求的系统,得出对目标系统的精确描述。 模块设计原则:信息隐蔽:信息隐蔽是开发整体程序结构时使用的法则,既将每个程序的成分隐蔽或封装在一个单一的设计模块中,并且尽可能少地暴露其内部的处理。模块独立:模块独立是指每个模块成一个相对独立的特定子功能,并且与其他模块之间的联系最简单。通常我们用耦合和内聚两个标准来衡量,我们的目标是高
15、内聚、低耦合。除了以上两大原则之外,通常在模块分解时还需要注意:保持模块的大小适中;尽可能的减少调用的深度;直接调用该模块的个数应该尽量大,但调用其他模块的个数则不宜过大;保证模块是单入口、单出口的;模块的作用域应该在之内;功能应该是可以测的。6. 软件测试与维护 测试阶段与任务测试的四个阶段:单元测试、集成测试、确认测试、验收测试。 测试的种类与目的:重点难点思考题1.软件测试:重点在于掌握四个阶段以及他们的任务,了解各种常见的测试种类。软件设计师培训(二)培训课程1. 软件工程基础2. 软件开发项目管理3. 软件工具与开发环境4. 软件过程管理、软件质量管理5. 结构分析与设计、系统设计知
16、识6. 软件测试与维护学习内容设计审查、代码审查、代码走查、功能测试、结构测试、回归测试、可靠性测试、强度测试、性能测试、恢复测试、启动/停止测试、配置测试、安全性测试、可使用性测试、可支持性测试、安装测试、互联测试、兼容性测试、容量测试、文档测试。 黑盒测试与白盒测试 白盒测试:又称为结构测试或逻辑驱动测试,在已知产品内部工作过程的基础上,通过测试证明每种内部操作是否符合设计规格要求。最常见的方法是逻辑覆盖法,覆盖程度从弱到强排序为:语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖。 黑盒测试常用方法包括:等价类划分,边界值分析,错误推策法,因果图,功能图。 面向对象测试基础通常包括四个测试层次,从低到高排序分别是:算法层、类层、模板层和系统层。 集成测试的目的是确保各单元组合在一起后能够按既定意图协作运行,并确保增量的行为正确。它测试的内容包括单元间的接口以及集成后的功能。各种测试策略的方法:自底向上集成测试自顶向下集成测试Big-Ban(大棒)集成测试三明治集成测试核心系统先行集成测试高频集成测试重点难点思考题1系统测试与评审:掌握黑盒白盒两种主要测试方法论,对常见的黑盒测试技术与白盒测试技术有宏观的认识和了解。