第一章 软件工程概述②(下)

目录:

1、 软件工程介绍

2、 软件生命周期

3、 软件过程

 


 

1、 软件工程的介绍

① 软件工程的来源:1968年,北约组织NATO召开计算机科学会议。会议中首次提出了“软件工程”的概念和克服“软件危机”的策略,强调按照工程化原则和方法组织软件开发工作。软件工程技术领域由此应运而生。

 

②工程的含义

(1) 工程的含义:工程师将理论和所学的知识应用于实践的科学,一遍经济有效地解决实际问题。

(2) 工程的特征:平衡与决策、度量与验证、运用工具、团队协同工作、角色分工、最佳实践、强调重用(重复使用)

 

③ 软件工程的定义

(1) 典型定义:软件工程是指导计算机软件开发维护的一门工程学科,采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考研儿整明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

(2) 软件工程的本质特征:

  • 关注于大型程序的构造;
  • 软件工程的中心课题是控制复杂性;(将软件解决的复杂问题进行分解
  • 软件经常变化;
  • 开发软件的效率非常重要;(寻求更好更有效的方法和工具
  • 和谐地合作是软件开发的关键;
  • 软件必须有效地支持它的用户
  • 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品

(3) 软件工程的七条基本原则

  1. 分阶段的生命周期计划严格管理;
  2. 坚持进行阶段评审;(可以尽早在软件开发过程中发现错误
  3. 实行严格的产品控制;(实行基准配置管理,即修改要有审查)
  4. 采用现代程序设计技术;
  5. 结果能清楚地审查;(根据目标规定组织责任和标准,便于审查)
  6. 开发小组的人员应该少而精;
  7. 承认不断改进软件工程实践的必要性。(主动采纳新的软件技术,不断总结经验

 

④ 软件工程方法学

 

 

 技术:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(Methodology),也称为范型(Paradigm)。

管理:通过计算,组织和控制等一系列活动、合理地配置各种资源,以达到既定目标的过程。

方法:完成软件开发的各项任务的计划方法,回答“怎么做”的问题

工具:是为运用方法而提供的自动或半自动的软件工程支撑环境

过程:是为了获得高质量的软件所需要完成的一些列任务的框架,它规定了完成各项任务的工作步骤

 

(1) 传统方法学:这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。

  • 方法:结构化程序设计方法、瀑布模型螺旋模型
  • 编程语言:Fortran语言、Pascal语言、C语言等

 

(2) 面向对象方法学:把数据对数据的操作紧密结合起来的方法,模拟人类认识世界解决问题的方法和过程;

 

⑤ 软件生命周期

定义:指软件从提出到最终被淘汰的这个存在其

过程:软件定义(需求分析:问题定义、可行性研究、需求分析)–>软件开发(总体设计、详细设计、编码和单元测试、综合测试) –>运行维护(主要任务是使软件持久地满足用户的需求)

 

(1) 软件生命周期八个阶段

  1. 问题定义:回答要解决的问题是什么
  2. 可行性研究:确定项目是否值得做,是否有好方案
  3. 需求分析:准确地确定目标系统必须做什么
  4. 总体设计(概要设计):概括的说应该怎样实现目标系统,确定程序由哪些模块组成及其之间的关系
  5. 详细设计(模块设计):应该怎样具体实现这个系统,确定实现模块功能所需要的算法和数据结构
  6. 编码与单元测试:写出正确容易理解、容易维护的程序模块、并仔细测试这些模块。
  7. 综合测试:通过各种类型的测试使软件达到预定的要求
  8. 维护:通过各种必要的维护活动使系统持久的满足用户需要。(分为:5%预防性维护、20%改正性维护、25%适应性维护、50%完善性维护)

⑥ 软件过程

为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

 

目标:开发出客户满意的软件

  • 什么人(who)
  • 什么时候(when)
  • 做什么事(what)
  • 怎么做(how)

 

(1) 软件过程定义:使用资源将输入转化为输出的活动所都成的系统。

过程定义了运用方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各阶段任务完成的里程碑

 

(2) 过程模型简介

通常我们使用生命周期模型简洁地描述软件过程。生命周期模型规定了把生命周期划分成哪些阶段及各阶段执行顺序,也叫过程模型,是对实际过程的抽象描述。

过程模型有:瀑布模型、快速原型模型、增量模型、螺旋模型等。

 

(3) 瀑布模型

特点:

  • 阶段间具有顺序性和依赖性。(前一阶段结束 后一阶段开始,前一个阶段输出文档,后一个阶段输入文档)
  • 推迟实现的观点。(推迟程序的物理实现)
  • 质量保证的观点(文档生成,文档评审)

优点:

  • 迫使开发人员采用规范的方法
  • 每个阶段必须提交文档(文档驱动)
  • 每个极端的产品都必须质量验证

缺点:

  • 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。(文档多,写的多)
  • 开发过程中很难响应客户的变更要求。(流程是死的)
  • 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。

适用范围:

  • 需求稳定,变化小且开发人员能够一次性获取全部需求的项目。(要提前规划好进度)
  • 软件开发人员有丰富经验,对于应用领域非常熟悉。(要保证质量)
  • 软件项目本身的风险很低
  • 适用于功能、性能明确、完整无变化的软件系统开发。(和第一点类似)

 

(4) 快速模型

简介:快速建立原型,原型的功能是最终产品功能的子集(也就是部分功能)。用户对该模型所展示的部分功能和性能进行评定与意见,开发人员后续修改直至完成所有功能且获得用户满意。

特点:

  • 线性开发模型,不带反馈环开发的系统能够满足用户真实的需求。

优点:

  • 快速构建,容易修改(从名字就能看出来)
  • 容易适应需求的变化;
  • 用户参与(用户驱动
  • 能够处理模糊需求

缺点:

  • 原型系统的内部结构可能不好;
  • 开发人员需要掌握建立快速原型的开发技术和工具。

适用范围:

  • 适用于需求快速变化(可以后续增加)
  • 小型或中等规模的交互式系统
  • 大型系统的某些部分,例如用户界面
  • 生命周期较短的系统(比较快)
 
 
(5) 增量模型
简介:每次开发一点点,把软件产品作为一系列的增量构件来设计、编码、继承和测试。每个构建分别开发再合在一起。
特点:

  • 系统模块化和构件化(构件驱动

优点:

  • 将待开发的软件系统模块化,可以分批次地提交软件产品
  • 以构件为单位进行开发,降低了软件开发的风险
  • 开发顺序灵活

缺点:

  • 新的模块集成时,必须不能破坏已经开发出来的产品。

适用范围:

  • 待开发系统能够被模块化(前提)
  • 软件产品可以分批次交付(看甲方爸爸要求)
  • 软件开发人员对应用领域不熟悉,或一次性开发的难度很大
  • 项目管理人员把握全局的水平不高

 

 

原文地址:http://www.cnblogs.com/qichengxiaoqi/p/16846748.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性