软件工程笔记一__概述
1 软件工程
1.1软件工程的介绍
概括的说,软件工程是指导计算机软件开发和维护的一门工程学科。
1.2软件生命周期
(1)问题定义
这个阶段的关键问题是:“要解决的问题是什么?”。
通过对客户的访问调查,系统分析员扼要地写出关于问题的性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后,这份报告应得到客户的确认。
(2)可行性研究
这个阶段的关键问题是:“对于上一阶段所确定的问题有行得通的解决办法吗?”
这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。
(3)需求分析
这个阶段的任务仍旧不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。
系统分析员必须和用户密切配合,充分交流信息,已得到经过用户确认的系统逻辑模型。通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。
这个阶段的一项重要任务,使用正式文档准确的记录对目标系统的需求,这份文档通常称为规格说明书。
(4)总体设计/概要设计
这个阶段的关键问题是:“概括地说,应该怎样实现目标系统?”
通常至少应该设计出低成本、中等成本和高成本3种方案。推荐一个最佳方案。
(5)详细设计/模块设计
这个阶段的关键问题是:“应该怎样具体地实现这个系统?”
这个阶段的任务不是编写程序,而是设计出程序的详细规格说明。详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。
(6)编码和单元测试
这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。
程序员应根据目标系统的性质和实际环境,选取一种适当的程序设计语言,用选定的语言书写程序,并仔细测试编写出的每一个模块。
(7)综合测试
这个阶段的关键任务是通过各种类型的测试,是软件达到预定的要求。
(8)软件维护
这个阶段的关键任务是通过必要的维护活动使系统持久地满足用户需求
1.3 软件过程
1.3.1 生命周期模型/过程模型
通常使用生命周期模型简洁地描述软件过程。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。
问题定义和可行性研究的主要任务都是概括的了解用户的需求,为了简洁的描述软件过程,把他们都归并到需求分析中。同样,把总体设计和详细设计合并在一起称为“设计”。
1.3.2 瀑布模型
瀑布模型一直是被广泛采用的生命周期模型。
瀑布模型特点:
(1)阶段间具有顺序性和依赖性
1)必须等前一阶段的工作完成之后,才能开始后一阶段的工作;
2)前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。
(2)推迟实现的观点
清楚地区分逻辑设计和物理设计,尽可能推迟程序的物理实现,是按照瀑布模型开发软件的一条重要指导思想。
(3)质量保证的观点
瀑布模型的每个阶段都应坚持两个重要做法
1)每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务;
2)每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误
瀑布模型优缺点:
瀑布模型的成功之处在于它基本上是一种文档驱动的模型,这使得软件比较容易维护,显著降低软件预算。
但这也是它的一个主要缺点,在软件交付给用户之前,用户只能通过文档来了解产品,很可能导致最终开发出的软件产品不能真正满足用户需求。
1.3.3 快速原型模型
快速原型
快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成功能的一个子集。
快速原型模型优点:
1)无反馈环,能基本上做到线性顺序开发,因为原型系统已通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户需求;
2)快速原型的本质是快速,加速软件开发过程,节约软件开发成本。
1.3.4 增量模型/渐增模型
使用增量模型开发软件时,把软件产品作为一系列的增量构建来设计、编码、集成和测试。第一个增量构件往往实现软件的基本需求。提供最核心的功能。
1.3.5 螺旋模型
螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看做在每个阶段之前都增加风险分析过程的快速原型模型
1.3.6 喷泉模型
喷泉模型是典型的而面向对象的软件过程模型之一。“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。