软件工程导论(第一章)

第一章 概述
软件的定义: 软件不是程序,而是 程序 数据 、以及开发使用和维护程序需要的所有 文档 的完整集合。
程序: 程序是为了解决某个特定问题而用 程序设计语言 描述的适合计算机处理的 语句序列 ,由开发人员设计和编码。
文档: 文档是软件开发活动的记录,主要供人们阅读,既可用于专业人员和用户之间的通信和交流,也可以用于软件开发过程的管
理和运行阶段的维护。
软件的特点:
(1)软件是一种逻辑产品,而不是具体的物理实体,具有抽象性。
(2)软件产品的生产主要是开发研制,没有明显的制造过程。
(3)软件产品在使用过程中,不存在磨损、消耗、老化等问题。
(4)软件产品的开发主要是脑力劳动,还未完全摆脱手工开发方式,大部分产品是“定做的”,生产效率低。
(5)软件产品的成本相当昂贵,软件费用不断增加,软件的研制需要投入大量的人力、物力和资金,生产过程中还需对产品进行
质量控制,对每件产品进行严格的检验。
(6)软件对硬件和环境有不同程度的依赖性,为了减少这种依赖性,在软件开发中提出了软件的可移植性问题。
(7)软件是复杂的。软件是人类有史以来生产的复杂度最高的工业产品,软件是一个庞大的逻辑系统。软件开发,尤其是应用软
件的开发常常涉及到其他领域的专门知识,这就对软件开发人员提出了很高的要求。
软件的分类: 计算机系统 角度看,分为两大类: 系统软件和应用软件 ;从 计算机软件用途 来划分,分为: 服务类、维护类和操作
管理类
软件危机: 指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要包含了这样两方面的问题:一是如何开发
软件以满足多软件日益增长的需求;二是如何维护数量不断增长的已有软件。
软件危机的表现形式:
(1)对软件开发成本和研制进度的估计常常很不精确。
(2)“已完成”的软件不能满足用户要求。
(3)软件产品质量差,可靠性得不到保证。
(4)软件产品可维护性差。
(5)软件成本在计算机系统总成本中所占的比例逐年上升。
(6)软件开发生产率提高的速度,远远跟不上计算机应用速度普及深入的趋势。
软件危机产生原因:
(1)软件是计算机系统中的逻辑部件,软件产品往往规模庞大,结构复杂。
(2)软件开发的管理困难。
(3)软件开发费用不断增加,维护费用急剧上升,直接威胁计算机应用的扩大。
(4)软件开发技术落后。
(5)生产方式落后。
(6)开发工具落后,生产效率提高缓慢。
软件危机的解决途径:
(1)首先应该对计算机软件有一个正确的认识,彻底清除“软件就是程序”的错误观念。
(2)要使用好的开发技术和方法,并且要不断研究探索更好更有效的技术和方法。尽快消除在计算机系统早期发展阶段形成的一
些错误观念和作法。
(3)要有良好的组织、严密的管理,各类人员要相互配合,共同完成任务。充分认识软件开发不是某种个体劳动的神秘技巧。
(4)应该开发和使用好的软件工具。
软件工程的定义: 软件工程是指导计算机软件 开发 维护 的一门工程学科,采用 工程的概念 原理 技术 方法 来开发和维护软件。
软件工程的目标:
(1)降低软件开发成本。
(2)满足用户要求的全部软件功能。
(3)符合用户要求,令用户满意的软件性能
(4)具有较好的易用性、可重用性和可移植性。
(5)较低的维护成本,较高的可靠性。
(6)按合同要求完成开发任务,即使交付用户使用。
软件工程研究的内容: 软件开发技术和软件开发过程管理。
在软件开发技术方面主要研究软件开发方法、软件开发过程、软件开发工具和技术。
在软件开发过程管理方面主要研究软件工程经济学和软件管理学。
软件工程的基本原理:
(1)用分阶段的生存周期计划严格管理。
(2)坚持进行阶段评审。
(3)实行严格的产品控制。
(4)采用现代程序设计技术。
(5)结果应能清楚地审查 。
(6)开发小组人员应该少而精。
(7)承认不断改进软件工程实践的必要性。
软件工程的发展史:
(1)程序设计时代(1946 年-1956 年)
(2)程序系统时代(1956 年-1968 年)
(3)软件工程时代(1968 年-至今)
软件过程:软件过程是为了获得高质量所需要完成的一系列任务的框架,它规定了完成多项任务的工作步骤 其中框架由几个重要
过程组成,包括用来获取、供应、开发、操作和维护软件所用的基本的、一致的要求。各种组织和开发机构可以根据具体情况进行
选择和取舍。
软件开发过程: 是把用户要求转化为软件需求,把软件需求转化为设计,用代码来实现设计,对代码进行测试,完成各阶段的文档
编制并确认软件可以投入运行使用的过程。
软件生存周期: 软件生存周期是借用工程中产品生存周期的概念而得来的, 是指某一软件项目被提出来并着手实现开始直到该软件
报废或停止使用为止 把生存周期划分为若干个阶段,赋予每个阶段相对 独立 的任务,每个阶段都有技术复审和管理复审,从技术
和管理两个方面对这个阶段的开发成果进行检查。
软件的生存周期一般分为软件计划、软件开发和软件运行三个时期。

注:软件设计包括总体设计(概要设计)和详细设计
软件开发模型:
瀑布模型: 也称生存周期模型或线性顺序模型。 这种模型是将 软件生存周期 各个活动规定为依线性顺序连接的若干阶段的模型,包
括问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试和维护。 在 20 世纪 80 年代之前,瀑布模型一直是唯一被
广泛采用的生存周期模型,现在它仍然是软件工程中应用得最广泛的 过程模型 。传统软件工程方法学的软件过程,基本上可以用瀑
布模型来描述。而且是 以文档为驱动 适合于需求很明确的软件项目开发的模型
瀑布模型的特点:
(1)阶段的顺序性和依赖性:首先必须等前一阶段的工作完成之后,才能开
始后一阶段的工作;其次前一阶段的输出文档就是后一阶段的输入文档。
(2)推迟实现的观点:充分准备后才编码实现,逻辑设计与物理设计分开。
(3)质量保证的观点: ①每一个阶段都必须完成所规定的相应文档; ②每
一个阶段结束之前都必须对已完成的文档进行评审
(4)存在的问题:是一种理想的线性开发模式,缺乏灵活性。特别是无法解
决软件需求不明确或不准确的问题。
快速原型模型: 首先快速建立一个能够反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践让用户了解未来目标系
统的概貌,以便判断哪些功能是符合需要的,哪些方面需要改进,用户会提出许多改进意见,开发人员按照用户的意见快速地修改
原型系统,然后再次请用户试用……,这样反复改进,最终建立完全符合用户需求的新系统。
增量模型: 也称为渐增模型,是瀑布模型的顺序特征和快速原型法的迭代特征相结合的产物,是一种非整体开发的模型。软件在模
型中是“逐渐”开发出来的,把软件产品作为一系列的增量构件来设计、编码、组装和测试。每个构件由多个相互作用的模型构成,
并且能够完成特定的功能。开发出一部分,向用户展示一部分,可让用户及早看到部分软件,及早发现问题。
螺旋模型: 加入了瀑布模型与增量模型都忽略了的风险分析,即将两种模型结合起来,弥补了两种模型的不足。它是一种风险驱动
的模型。
喷泉模型: 喷泉模型是一种比较典型的 面向对象软件开发模型 ,以用户需求为动力,以对象作为驱动的模型,适合面向对象的开发
方法。
各种软件开发模型的对比

传统软件工程和面向对象的软件工程:
传统软件工程是以 结构化程序设计 为基础
传统的软件工程的过程:
(1)采用结构化技术(结构化分析、结构化设计和结构化实现)完成软件开发的各项任务。
(2)把软件生存周期划分成若干个阶段,然后顺序完成各个阶段的任务。
(3)每一个阶段的开始和结束都有严格标准,前一阶段结束的标准是后一阶段工作开始的标准。
(4)在每一阶段结束之前必须正式地进行严格的技术审查和管理复审。
面向对象软件工程方法:
面向对象的开发方法的重点是放在软件生存周期的分析阶段。因为面向对象方法在开发的早起就定义了一系列面向问题领域的对象,
即建立了对象模型,整个开发过程统一使用这些对象,并不过分充实和扩展对象模型。面向对象开发过程的特点是,开发阶段界限
模糊,开发过程逐步求精,开发活动反复迭代。通常开发活动是在分析、设计和实现阶段的反复迭代。
两种软件工程方法的对比: 与面向过程的软件工程的开发思想相比,面向对象开发方法不再是以功能划分为导向,而是以对象作为
整个问题分析的中心,围绕对象展开系统的分析与设计工作。在开发过程方面,面向对象软件工程和传统软件工程一样也是把软件
开发划分为分析、设计、编码和测试等几个阶段,但各个阶段的具体工作不同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值