软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。其目的是提高软件生产率、提高软件质量、减低软件成本。
软件工程是1968年在德国的NATO会议上提出的,希望用工程化的原则和方法来克服软件危机;而软件危机就是软件开发和维护过程中的各种问题,由于软件开发阶段缺乏好的方法的指导和好的工具的辅助,而且缺少有关的文档,使得大量的软件难以维护。
软件生命周期是指由软件定义、软件开发和软件维护等阶段组成的全过程,反映软件生存期内各种工作得组织以及各个阶段如何衔接。下表归纳了软件生存周期各个阶段的任务、参与人员和产生文档。
常见的软件开发模型有瀑布模型、演化模型、螺旋模型和喷泉模型等。
阶段
|
任务
|
参与人员
|
产生文档
|
软件定义阶段——待开发软件要“做什么”
|
系统分析
|
确定待开发软件的总体要求和适用范围,以及与之有关的硬件、支撑软件的要求
|
用户、项目负责人、系统分析员
|
可合并项目计划书中
|
软件项目计划
|
确定待开发软件的目标,对其进行可行性分析,并对资源分配、进度安排等做出合理的计划
|
用户、项目负责人、系统分析员
|
可行性分析报告、项目计划书
|
需求分析
|
确定待开发软件的功能、性能、界面等要求,从而确定系统的逻辑模型
|
用户、项目负责人、系统分析员
|
需求规格说明书
|
软件开发阶段——待开发软件“怎么做”
|
软件设计
|
概要设计
|
模块分解,确定软件的结构,模块的功能和模块间的接口,以及全局数据结构的设计
|
系统分析员、高级程序员
|
设计说明书、数据说明书、模块开发卷宗
|
详细设计
|
设计每个模块的实现细节和局部数据结构的设计
|
高级程序员、程序员
|
编码
|
用某种程序语言为每个模块编写程序
|
高级程序员、程序员
|
程序清单
|
软件测试
|
发现软件中的错误,并加以纠正
|
高级程序员或系统分析员(另一部门或单位)
|
软件测试计划、软件测试用例说明,软件测试报告
|
软件维护阶段—开发后交付使用的软件的维护
|
软件维护
|
使软件适应外界环境的变化、实现功能的扩充和质量的改善而修改软件
|
维护人员
|
维护计划、维护报告
|
软件由计算机程序、数据及文档组成,同时与硬件、数据库人、过程等共同构成计算机系统。软件工程包括三个要素:方法、工具和过程。
主要的软件开发方法有以下几种方法:
生命周期法:命周期法认为:每一个软件系统都有一定的生命周期。软件的生命周期是指一个软件系统从其提出、调查到分析、设计和有效使用,直至被淘汰或取代的整个期间。软件生命周期法就是按软件生命周期的各个阶段划分任务,按一定的规则和步骤,有效地进行软件开发的方法。
通常一个软件系统的生命周期可分为五个阶段:准备阶段、分析阶段、设计阶段、实施阶段、运行与维护阶段
原型法:原型法是先根据用户的最主要要求,开发出能实现系统最基本功能的一个原型,再根据用户对原型使用与评价的意见,反复修改完善原型,直到等到用户满意的最终系统为止。
原型法分4个阶段:确定用户需求;设计原型;使用、评价原型;修改、完善原型。
1.2软件分析
软件开发模型:瀑布模型;演化模型(原型法);螺旋模型;喷泉模型(迭代和无间隙);软件成本模型;可行性分析的任务是从技术上、经济上、使用上、法律上分析需解决的问题是否存在可行的解。
需求分析是软件生存周期中相当重要的一个阶段。需求分析主要是确定待开发软件的功能、性能、数据、界面等要求。具体有以下几点:
Ø 确定软件系统的综合要求
Ø 分析软件系统的数据要求
Ø 导出系统的逻辑模型
Ø 修正项目开发计划
Ø 如有必要,可开发一个原型系统
需求分析的基本原则是能够表达和理解问题的信息域和功能域;以层次化的方式进行分解和不断细化;要给出系统的逻辑视图和物理视图;
描述软件需求的方法:
功能层次模型:一般来讲就是系统的功能图,模块分布图等描述整个系统的功能的分布和功能的层次结构;
数据流模型:就是以数据流为着眼点的分析方法得到的模型,主要通过数据在整个系统的流动情况来确定系统的主要功能主线和流程;
控制流模型:通过了解和界定系统中控制线,通过控制流的走向和控制的对象来确定系统的功能分布和控制与被控制的关系;
结构化分析(SA)方法是一种面向数据流的需求分析方法,它适用于分析大型数据处理系统。结构化分析方法的基本思想是自顶向下逐层分解,这样做可以把一个大问题分解成若干个小问题,经过多次逐层分解,每个最底层的问题都是足够简单、容易解决的,这个过程就是分解的过程。
结构化方法的分析结果由数据流图DFD、数据词典和加工逻辑说明几个部分组成。其中,DFD的基本成分有数据流(data flow)、加工(process)、文件(file)和源/宿(source/sink)。
n 画数据流图的基本步骤:自外向内、自顶向下、逐层细化、完善求精;
n 数据流图的父图与子图要平衡, 即输入和输出的数据流一致;
n 数据流图中的每个加工至少有一个输入数据流和一个输出数据流;
n 局部的数据存储不画出来,只有当局部数据存储作为某些数据加工之间的数据接口才画出,这有利于信息隐蔽;
n 画数据流的时候不画控制流,两者的区别就是控制流中没有数据;
n 一个加工的数据流与输出流不应该同名;
n 允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出流向两个不同的加工;
n 保持数据守恒:一个加工的所有输出数据必须能从该加工的所有的输入流中获得;
n 在整套数据流图中,每个文件都必须既有读文件的数据流也有写文件的数据流;
软件开发过程中的软件工程原则(8个):
Ø 抽象;
Ø 自顶向下、逐层细化;
Ø 信息隐蔽和数据封装;
Ø 模块化;
Ø 局部化;
Ø 确定性;
Ø 一致性和标准化;
Ø 完备性和可验证性;
软件工程基本原理(7个):
n 按软件生存周期分阶段指定计划并认真实施;
n 坚持进行阶段评审;
n 坚持严格的产品控制;
n 使用现代程序设计技术;
n 明确责任,使得工作结果能够得到清楚的审查;
n 用人少而精;
n 不断改进开发过程;
分享到:
相关推荐
软件工程1复习提纲及考试范围,传统软件工程。1第一章 软件与软件工程2第二章 软件过程3第三章 软件项目管理4第四章 需求分析过程5第五章 软件设计过程8第八章 软件测试9第九章 编码10第十章 软件维护
初识软件工程1.ppt
软件工程1-100.pptx
李江雄-软件工程1.pptx
在软件开发过程中,软件工程是一门至关重要的学科,它涵盖了软件开发的整个生命周期,包括需求分析、设计、编码、测试和维护。这个压缩包文件似乎包含了一份关于软件工程的课后习题答案,以及可能与电子技术基础相关...
软件工程PDF课件 01_SEIntro软件工程概述.pdf 软件工程PDF课件 02_Process软件过程.pdf 软件工程PDF课件 03_Management软件项目管理.pdf 软件工程PDF课件 04_Requirement需求工程.pdf 软件工程PDF课件 05_OOIntro...
软件工程发展史 软件工程是指为了提高软件质量、降低成本、提高生产效率、降低维护难度的一门工程学科。软件工程的发展经历了漫长的过程,从软件的诞生到现在的发展趋势。下面是软件工程发展的主要阶段: 第一阶段...
软件工程课程设计飞机订票系统源代码软件工程课程设计飞机订票系统源代码软件工程课程设计飞机订票系统源代码软件工程课程设计飞机订票系统源代码软件工程课程设计飞机订票系统源代码软件工程课程设计飞机订票系统源...
软件工程课程设计 软件工程课程设计是软件工程专业学生的一门重要课程,旨在培养学生设计、开发和测试软件系统的能力。本文档旨在介绍软件工程课程设计的基本概念、方法和技术。 1. 绪论 软件工程课程设计是一个...
软件工程 第1章 软件工程学概述.ppt
ISO软件工程模板(1)可行性研究报告 ISO软件工程模板(2)项目开发计划 ISO软件工程模板(3)数据要求说明书 ISO软件工程模板(4)需求说明书 ISO软件工程模板(5)用户手册 ISO软件工程模板(6)概要设计说明书 ISO软件工程...
作者编著的枟软件工程导论枠被国内许多高校选作软件工程课的教材,累计销售约70 万册。为配合 读者学习软件工程,作者又精心编写了这本学习辅导书。 本书正文共10 章,每章由三部分内容组成:第一部分系统扼要地...
《面向对象软件工程》 作者:Stephen.R.Schach 学校:(美)范德比尔特大学 书名原名:Objected-Oriented Software Engineering 目录: 第一部分 面向对象软件工程简介 第一章 面向对象软件工程的范畴 第二章 ...
关键词:软件质量 工程管理 开发 软件工程 1 概述 为了高效率的实现企业的目标,软件工程的开发与管理越来越多的受到重视。 但是软件工程管理目前还没有引起人们的足够重视。因为软件工程管理的问题最近开始 受到...
软件工程课程设计 软件工程课程设计是计算机科学相关专业《软件工程》课程的后继教学环节,是一个重要的、不可或缺的实践环节。其目的是使学生能够针对具体软件工程项目,全面掌握软件工程管理、软件需求分析、软件...
1. 绪论:软件工程的起源与发展 在这一章节,我们将探讨软件工程的定义、重要性和历史背景。了解软件工程的目的,即解决传统编程方式带来的问题,如进度延误、成本超支和质量问题。同时,我们还会学习软件工程的发展...
### 软件工程设计案例相关知识点 #### 一、软件工程的历史背景与发展历程 - **背景**: 20世纪60年代,随着高级语言的普及,计算机的应用领域迅速扩大,导致对软件系统的需求激增。然而,当时的软件开发方式无法...
JAVA开发项目软件工程课程设计图书借阅管理系统源代码JAVA开发项目软件工程课程设计图书借阅管理系统源代码JAVA开发项目软件工程课程设计图书借阅管理系统源代码JAVA开发项目软件工程课程设计图书借阅管理系统源代码...
软件工程知识体系全景图 [1] 和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人...