目录
1,软件生存周期
2,软件过程
3,瀑布模型
4,增量模型
5,演化模型
6,螺旋模型
7,喷泉模型
8,统一过程
9,敏捷过程
10,软件过程评估
11,软件工具
12,软件维护工具
13,软件管理和软件支持工具
14,软件开发环境
软件包括程序、数据和文档。
软件生存周期:问题定义—>可行性研究—>需求分析—>总体设计—>详细设计—>编码和单元测试—>综合测试—>软件维护。
1,软件定义时期:问题定义、可行性研究、需求分析;主要任务是确定相应的工作。
2,软件开发时期:系统设计(总体设计、详细设计)、系统实现(编码和单元测试、综合测试);具体设计和实现在前一个时期定义的软件。
3,软件维护:软件维护;任务是使软件持久地满足用户地需要。
软件过程:
是软件生存周期中的一系列相关的过程。过程是活动的集合,活动是任务的集合。主要有以下三层含义:
1,个体含义:指软件产品或系统在生存周期中的某一类活动的集合;
2,整体含义:指软件产品在所有上述含义下的软件过程的总体;
3,工程含义:指解决软件过程的工程。
常见的软件生存周期模型:
1,瀑布模型:规定了由前至后、相互衔接的固定次序。
优点是:容易理解,管理成本低,强调开发的阶段性早期计划及需求调查和产品测试;
不足之处:客户必须能够完整、正确和清晰地表达它们地需要。需求和设计中的错误往往到了项目后期才能够被发现。
2,增量模型:融合了瀑布模型的基本成分和原型实现的迭代特征。
它假设可以将需求分段为一系列增量产品,每一增量可以分别的开发。
优点:具有瀑布模型的所有优点,第一个可交付版本所需要的成本和时间很少。
缺点:如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定。
3,演化(原型模型)模型:主要针对事先不能完整定义需求的软件开发,是在快速开发一个原型的基础上,根据用户在使用原型的过程中提出的意见和建议对原型进行改进,获得原型的新版本。
优点:任何功能一经开发就能进入测试,以便验证是否符合产品需求,可以帮助引导出高质量的产品需求;
缺点:如果不加控制地让用户接触开发中尚未稳定地功能,可能对开发人员及用户都会产生负面影响。
4,螺旋模型:将瀑布模型和演化模型结合起来,加入了两种模型均忽略地风险分析,弥补了这两种模型的不足。
在每个螺旋周期分为如下4个工作步骤:
1>,制定计划:确定软件的目标,选定实施方案,明确项目开发的限制条件;
2>,风险分析:分析所选的方案,识别风险,消除风险;
3>,实施工程:实施软件开发,验证阶段性产品;
4>,用户评估:评价开发工作,提出修正建议,建立下一个周期的开发计划。
5,喷泉模型:是一种以用户需求为动力,以对象作为驱动的模型。
优点:可以提高软件项目开发效率,节省开发时间。
缺点:开发过程中需要大量的开发人员,不利于项目的管理;要求严格管理文档,使得审核的难度加大。
6,统一过程:特色是“用例和风险驱动,以架构为中心,迭代的增量开发过程”。
迭代的意思是将整个软件开发项目划分为许多小的“袖珍项目”,每个“袖珍项目”都包含正常软件项目的所有元素:计划、分析和设计、构造、继承和测试,以及内部和外部发布。
定义了五个阶段:
1>,起始阶段:专注于项目的初始活动。本阶段的里程碑是生命周期目标。
2>,精化阶段:在理解了最初的领域范围之后进行需求分析和架构演讲。本阶段的里程碑是生命周期架构。
3>,构建阶段:关注系统的构建,产生实现模型。
4>,移交阶段:关注于软件提交方面的工作,产生软件增量。本阶段的里程碑是产品发布版本。
5>,生产阶段:对持续使用的软件进行监控,提供运行环境(基础设施)的支持,提交并评估缺陷报告和变更请求。
统一过程的典型代表是RUP,RUP是UP的商业扩展,完全兼容UP,但比UP更完整、更详细。
7,敏捷过程:敏捷开发的主体是通过“尽可能早地、持续地对有价值地软件的交付”。
1>,极限编程XP:是一种轻量级的、高效、低风险、柔性、可预测的、科学的软件开发方式。它由价值观、原则、实践、行为4个方面组成,彼此进行依赖、关联,并通过行为贯穿整个生存周期。
四大价值观:沟通、简单性、反馈、勇气。
5个原则:快速反馈、简单性假设、逐步修改、提倡更改、优质工作。
2>,水晶法
3>,并列争求法
4>,自适应软件开发(ASD)
软件过程评估:
1,软件能力成熟度模型CMM:
是提供一种评价软件承接方能力的方法。分为5个成熟度模型:初始级,可重复级、已定义级,已管理级,优化级。
2,能力成熟度模型集成CMMI:
是若干过程模型的综合和改进。提供了两种表示方法:阶段式模型和连续性模型。
阶段式模型:结构类似于CMM,有5个成熟度模型:初始的、已管理的、已定义的、定量管理的、优化的。
连续式模型:关注每个过程域的能力。
软件工具:
用来辅助软件开发、运行、维护、管理和支持等过程中的活动的软件称为软件工具。
软件开发工具:对应于软件开发过程的各种活动。
1,需求分析工具:用于辅助软件需求分析活动的软件称为需求分析工具;
2,设计工具:用于辅助软件设计活动的软件称为设计工具,可分为概要设计工具和详细设计工具;
3,概要设计工具:用于辅助设计人员设计目标软件的体系结构、控制结构、数据结构;
4,编码和排错工具:分为编码工具和排错工具;
5,测试工具:用于支持进行软件测试的工具称为测试工具,分为数据获取工具、静态分析工具、动态分析工具、模拟工具、测试管理工具。
软件维护工具:辅助软件维护过程中相关活动的软件称为软件维护工具,主要有版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。
软件管理和软件支持工具:有项目管理工具、配置管理工具、软件评价工具。
软件开发环境:是支持软件产品开发的软件系统。特征如下:
1,环境的服务是集成的;
2,环境应支持小组工作方式,并为其提供配置管理;
3,环境的服务可用于支持各种软件开发活动。