软件工程自学指导书.docx

上传人:b****4 文档编号:4028588 上传时间:2022-11-27 格式:DOCX 页数:88 大小:824.12KB
下载 相关 举报
软件工程自学指导书.docx_第1页
第1页 / 共88页
软件工程自学指导书.docx_第2页
第2页 / 共88页
软件工程自学指导书.docx_第3页
第3页 / 共88页
软件工程自学指导书.docx_第4页
第4页 / 共88页
软件工程自学指导书.docx_第5页
第5页 / 共88页
点击查看更多>>
下载资源
资源描述

软件工程自学指导书.docx

《软件工程自学指导书.docx》由会员分享,可在线阅读,更多相关《软件工程自学指导书.docx(88页珍藏版)》请在冰豆网上搜索。

软件工程自学指导书.docx

软件工程自学指导书

软件工程

自学指导书

宋海南

2011年于东北石油大学

第一章软件与软件工程

教学内容

1.软件

软件的发展、软件的定义、软件的特点、软件的种类。

2.软件工程的概念

软件危机与软件工程的定义、软件工程的目标、软件工程的原则。

3.软件生存周期与软件开发模型

瀑布模型、原型模型、螺旋模型。

教学要求

掌握:

软件和软件工程的基本概念。

了解:

软件生命周期及软件开发的各个模型。

自学要点

软件、软件工程、软件生存周期和软件开发模型学时分配

3学时(自学学时:

6学时)

1.1软件的定义及其特点

软件的定义

计算机系统是通过运行程序来实现各种不同的应用。

把各种不同功能的程序,包括用户为自己的特定目的编写的应用程序、检查和诊断机器系统的程序、支持用户应用程序运行的系统程序、管理和控制机器系统资源的程序等通常称为软件。

软件的非精确定义:

软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档组成的完整集合。

比较公认的软件定义由以下三部分组成:

在运行中能提供所希望的功能和性能的指令集(即程序);使程序能够正确运行的数据结构;描述程序研制过程、方法所用的文档。

软件的特点

•软件具有抽象特征。

软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性

•软件是智力劳动的结果。

软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。

•软件无备件特征。

在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。

•软件对硬件有明显的依存性。

软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。

在软件的开发和运行屮必须以硬件提供的条件为基础。

•软件的研发主要由人工完成。

软件的开发至今尚未完全摆脱手工的开发方式。

•软件无明显的制造过程。

软件的开发费用越来越高,成本相当昂贵。

软件的分类

软件依据不同的标准,可划分为不同的分类。

根据软件的应用领域可分为:

系统软件、实时软件、商业软件、科学计算软件、嵌入式软件、人工智能软件。

1.2软件工程概念

软件危机与软件工程定义

软件危机

软件危机指的是软件开发和维护过程中遇到的一系列严重问题。

软件危机的表现

•产品不符合用户的实际需要。

•软件开发生产率提高的速度远远不能满足客观需要,软件的生产率远远低于硬件生产率和计算机应用的增长,使人们不能充分利用现代计算机硬件提供的巨大潜力。

•软件产品的质量差。

•对软件开发成本和进度的估计常常不准确。

•软件的可维护性差。

•软件文档资料通常既不完整也不合格。

•软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。

产生软件危机的原因

•软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。

在写出程序代码并在计算机上试运行Z前,很难检验开发的正确性,而且软件开发的质量也较难评价。

•软件不同于一般程序,它的一个显著特点是规模庞大。

•虽然软件本身独有的特点确实给开发和维护带来一些客观困难,但是人们在

开发和使用计算机系统的长期实践屮,也确实积累和总结出了许多成功的经验。

・开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的需求。

•软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范。

•在软件的开发与维护关系问题上存在错误的概念。

软件工程的定义

软件工程是指导计算机软件开发和维护的工程学科。

采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。

软件工程准则可以概括为如下六条基本原理。

(1)用分阶段的生存周期计划严格管理

-

(2)坚持进行阶段评审

•(3)实行严格的产品控制

-(4)采用现代程序设计技术

•(5)结果应能清楚地审查

•(6)合理安排软件开发小组的人员

软件工程的基本内容与目标

软件工程的基本内容

从内容上划分软件工程学可分为理论、结构、方法、工具、环境、管理、规范等。

软件工程学研究的基本目标

•定义良好的方法学,面向计划、开发维护整个软件生存周期的方法学。

•确定的软件成分,记录软件生存周期每一步的软件文件资料,按步显示轨迹。

•可预测的结果,在生存周期中,每隔一定时间可以进行复审。

件产品。

软件工程学是研究软件结构、软件设计与维护方法、软件工具与环境、软件工程标准与规范、软件开发技术与管理技术的相关理论。

软件工程的原则

为了开发出低成本高质量的软件产品,软件工程学应遵守以下基本原则:

分解、独立性、一致性、确定性。

1.3软件生存周期与软件开发模型

软件工程采用的生存周期方法就是从时间角度对软件的开发与维护这个复杂问题进行分解,将软件生存漫长的时期分为若干阶段,每个阶段都有其相对独立的任

务,然后逐步完成各个阶段的任务。

软件生存周期

期,通常把软件经历的这个漫长的时期称为生存周期。

软件生存周期就是从提出软件产品开始,直到该软件产品被淘汰的全过程。

软件生存周期一般可分为以下阶段:

•问题定义

•可行性研究

•需求分析

•设计

•编码

•测试

•运行与维护

软件生存期也可以分为三个大的阶段:

计划阶段、开发阶段和维护阶段。

软件开发模型

为了反映软件生存周期内各种工作应如何组织及软件生存周期各个阶段应如何衔接,需要用软件开发模型给出直观的图示表达。

软件开发模型是软件工程思想的具体化,是实施于过程模型屮的软件开发方法和工具,是在软件开发实践屮总结出来的软件开发方法和步骤。

总的说来,软件开发模型是跨越整个软件生存周期的系统开发、运行、维护所实施的全部工作和任务的结构框架。

1.瀑布模型

瀑布模型:

瀑布模型规定了各项软件工程活动,包括:

制定开发计划,进行需

求分析和说明,软件设计,程序编码。

测试及运行维护,参看图1.1。

并且规定了它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。

图1」软件生存周期的瀑布模型

然而软件开发的实践表明,上述各项活动之间并非完全是自上而下,呈线性图

式。

实际情况是,每项开发活动均处于一个质量环(输入■处理■输出-评审)中。

有当其工作得到确认,才能继续进行下一项活动,在图i.i中用向下的箭头表示;否

则返工,由向上的箭头表示。

2•螺旋模型

对于复杂的大型软件,开发一个原型往往达不到要求。

螺旋模型将瀑布模型与演化模型结合起来,并且加入两种模型均忽略了的风险分析。

螺旋模型沿着螺线旋转,如图1.2所示,在笛卡尔坐标的四个象限上分别表达了四个方面的活动,即:

制定计划——确定软件目标,选定实施方案,弄清项目开发的限制条件;

风险分析——分析所选方案,考虑如何识别和消除风险;

实施工程——实施软件开发

客户评估——评价开发工作,提出修正建议。

沿螺线自内向外每旋转一圈便开发出更为完善的一个新的软件版本。

图1.2螺旋模型

3.原型模型

又称快速成型模型,快速原型模型正是为了克服瀑布模型的缺点而提出来的。

一般用于最终系统的早期用户评价,开发工期短,质量有保证。

其本质是“快速”,开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成

本。

原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。

主要优点:

使用这种软件过程开发出的软件产品通常能满足用户的真实的需求;

软件产品的开发过程基本上是线性顺序过程。

4.变换模型

是基于形式化规格说明语言以及程序变换技术的软件系统开发模型。

第二章可行性研究

教学内容

1.

问题的定义

2.

可行性研究的任务

3.

可行性研究的步骤

4.

系统流程图

5.

成本/效益分析

教学要求

了解:

可行性分析的步骤

自学要点

可行性研究的任务和步骤、系统流程图。

学时分配

2学时(自学学时:

4学时)

可行性研究

问题的定义

问题定义阶段需解决问题是“该软件开发项目要解决什么问题”。

可行性研究的任务

决。

也就是说可行性研究的目的不是解决问题,而是确定问题是否值得去解,研究在当前的具体条件下,开发新系统是否具备必要的资源和其它条件。

一般说来,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案的选择等方面研究可行性。

可行性研究需要的时间长短取决于工程的规模,一般说来,可行性研究的成本只占预期的工程中成本的5-10%0

可行性研究的步骤

1・确定系统规模和目标

2.分析目前正在使用的系统

3.设计出新系统的高层逻辑模型

4.评审系统模型

5.设计和评价供选择的方案

6.推荐一个方案并说明理由

7.制定行动方针

8.拟定开发计划并书写计划任务书

9.编制可性报告并提交审查

可行性研究工具一一系统流程图

系统流程图是描绘物理系统的传统工具。

它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、数据库、图表、人工处理等)。

系统流程图不同于程序流程图。

系统流程图的基本符号

系统流程图的作用

1.制作系统流程图的过程是系统分析员全面了解系统业务处理概况的过程,它是系统分析员作进一步分析的依据。

2.系统流程图是系统分析员、管理人员、业务操作人员相互交流的工具。

3.系统分析员可直接在系统流程图上拟出可以实现计算机处理的部分。

4.可利用系统流程图来分析业务流程的合理性。

成本效益分析

成本/效益分析的目的是要从经济角度分析开发一个特定的新系统是否划算,从而帮助使用部门负责人正确地做出是否投资于这项开发工程的决定。

成本估计

本课程把主要的成本估计方法归并为自顶向下估计、自底向上估计和算法模型估计三类。

费用估计

1.代码行技术

一旦估计出源代码行数以后,用每行代码的平均成本乘以行数就可以确定软件的成本。

每行代码的平均成本主要取决于软件的复杂程度和工资水平。

2.任务分解技术

这种方法首先把软件开发工程分解为若干个相对独立的任务。

再分别估计每个单独的开发任务的成本,最后加起来得出软件开发工程的总成本。

几种度量效益的方法

1.货币的时间价值

成本估算的目的是要求对项目投资。

但投资在前,取得效益在后。

因此要考虑货币的时间价值。

通常用利率表示货币的时间价值。

2.投资回收期

投资回收期是衡量一个开发工程价值的经济指标。

所谓投资回收期就是使累计的经济效益等于最初的投资所需的时间。

投资回收期越短,就能越快获得利润,就越值得投资。

3.纯收入

工程的纯收入是衡量工程价值的另一项经济指标。

所谓纯收入就是在整个生存期Z内系统的累计经济效益(折合成现在值)与投资之差。

如果纯收入为零,则工程的预期效益与在银行存款一样。

但开发一个软件项目有风险,从经济观点看,这项工程可能是不值得投资的。

如果纯收入小于零,那么显然这项工程不值得投资。

只有当纯收入大于零,才能考虑投资。

第三章需求分析

教学内容

1.需求分析的任务与步骤

2.需求分析方法(面向数据流的分析方法)

1.基本符号、基于数据流的分析方法、数据字典。

4.需求规格说明书

教学要求

掌握:

需求分析的方法;理解:

需求分析的任务和原则自学要点

数据流图、面向数据流的分析方法。

学时分配

4学时(自学学时:

10学时)

3.1需求分析的任务与步骤

需求分析的任务

需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?

”这个问题。

需求分析所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求。

通常软件开发项目是要实现目标系统的物理模型,即确定待开发软件系统的系统元素,并将功能和数据结构分配到这些系统元素屮。

它是软件实现的基础。

需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。

在这个阶段结束时交出的文档中应该包括详细的数据流图(DFD),数据字典(DD)和一组简明的算法描述。

需求分析阶段的任务包括下述几方面

1・确定目标系统的具体要求。

确定系统的运行环境要求;系统的性能要求;系统功能。

2.分析系统的数据要求。

分析系统的数据需求是由系统的信息流归纳抽象岀数

据元素组成、数据的逻辑关系、数据字典格式和数据模型。

并以输入/处理/输出

(IPO)的结构方式表示。

因此,必须分析系统的数据需求,这是软件需求分析的一个重要任务。

3.建立目标系统的逻辑模型,就是在理解当前系统需要“怎样做”的基础上,抽取其“做什么”的本质。

4.修正系统开发计划

5.建立原型系统

6.编写软件需求规格说明书及评审

需求分析的方法

结构化分析方法(简称SA方法)就是面向数据流自顶向下逐步求精进行需求分析的方法。

需求分析的过程或步骤

1.调查研究

2.描述和分析系统的逻辑模型

应注意下述两条原则:

第一,在分层细化时必须保持信息连续性,也就是说细化前后对应功能的输入/输出数据必须相同;第二,当进一步细化将涉及如何具体地实现一个功能时,也就是当把一个功能进一步分解成子功能后,并将考虑为了完成这些子功能而写出其程序代码时,就不应该再分解了。

3.编制文档

在这个阶段应该完成下述四种文档资料:

①系统规格说明--用比较形式化的

术语和表示对软件功能构成的详细描述,作用是:

技术合同说明;设计和编码的基础;测试和验收的依据。

②数据要求-・・数据结构、数据域、数据精度。

③用户系

统描述。

④修正的开发计划。

4.需求分析审查

需求分析的原则

1.必须能够表达和理解问题的数据域和功能域

2.按自顶向下、逐层分解问题

3.要给出系统的逻辑视图和物理视图

需求分析评审标准的主要内涵

正确性、无歧义性、完全性、可验证性、一致性、可理解性、可修改性、可追踪性。

需求分析方法

大多数的需求分析方法是由数据驱动的,数据域具有三种属性:

数据流、数据内容和数据结构。

通常,一种需求分析方法总要利用一种或几种属性。

需求分析方法的共性

1.支持数据域分析的机制

2.功能表示的方法

3.接口的定义

4.问题分解的机制以及对抽彖的支持

5.逻辑视图和物理视图

6.系统抽象模型

面向数据流的需求分析方法

结构化分析方法是面向数据流进行需求分析的方法。

结构化分析方法使用数据流图DFD与数据字典DD來描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。

其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。

3.2数据流图与数据字典

数据流图(DFD)

1.数据流图的含义

数据流图是描述数据处理过程的工具。

数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的传输变换过程。

数据流图是结构化系统分析的主要工具,它表示了系统内部信息的流向,并表示了系统的逻辑处理的功能。

2.数据流图的特性:

抽象性、概括性、层次性。

3.数据流图基本符号

(1)数据流图屮的主要图形元素

数据流图的基本图形元素有4种,如图所示。

数据流图基本图形符号

(2)数据流与加工之间的关系

“*”表示相邻的一对数据流之间是“与”关系;

“+”表示相邻的两个数据流是“或”关系;

“㊉”表示相邻的两个数据流是“异或”的关系。

(3)

分层的数据流图

数据流图加工关系

4.数据流图的用途

数据流图的作用主要有以下几条:

(1)系统分析员用这种工具可以自顶向下分析系统信息流程。

(2)可在图上画出需要计算机处理的部分。

(3)根据数据存贮,进一步作数据分析,向数据库设计过渡。

(4)根据数据流向,定出存取方式。

(5)对应一个处理过程,用相应的语言、判定表等工具表达处理方法。

5.数据流图的优缺点

(1)总体概念强,每一层都明确强调“干什么”,“需要什么”,“给出什么”。

(2)可以反映出数据的流向和处理过程。

(3)由于自顶向下分析,容易及早发现系统各部分的逻辑错误,也容易修正。

(4)容易与计算机处理相对照。

(5)不直观,一般都要在作业流程分析的基础上加以概括、抽彖、修正来得到。

(6)如果没有计算机系统帮助的话,人工绘制太麻烦,工作量较大。

6.数据流图画法

(1)画数据流图的一般原则:

画数据流图的基本步骤概括地说,就是自外向内,自顶向下,逐层细化,完善求精。

(2)数据流图的分层方法

(3)分层法绘制流程图的几个问题

7.数据流图的绘制与其它流程图的差别

(1)数据流图与系统流程图的区别

(2)数据流与程序流程图的区别

(3)数据流与程序结构图的区别

(4)数据流与控制流的区别

要求会画第一层数据流图。

数据字典

1.数据字典的定义

数据字典是关于数据的信息的集合,对数据流程图中的各个元素做完整的定义与说明,是数据流程图的补充工具。

数据流图和数据字典共同构成系统的逻辑模型。

2.数据字典的内容

数据字典由下列六类元素的定义组成。

(1)数据流

1数据流名称及其称号;

2数据流的来源:

可能是一个外部实体、处理逻辑、数据存储;

3数据流的去处;

4数据流的组成:

一个数据流可能包括若干个数据结构,若只有一个数据结构,就不需要专门定义;

5数据流的流通量:

单位时间的传输次数;

6高峰时期的流通量:

业务的频繁程度和时间有关。

(2)数据项

数据项也称数据元素,是“不可再分”的数据单位,是数据的最小组成单位。

主要内容有:

1数据项名称及编号:

数据项名称必须唯一地标识这个数据项,以区别于其他数据项;给数据项取名时,要反映该数据项的含义,易于他人理解、记忆。

2别名:

同一•数据项的名称可能不止一个,称为别名。

3取值的范围和取值的含义。

4数据项的长度:

指数据项所包含的字符或数字的位数。

(3)数据结构

1数据结构的名称及其编号;

2数据结构的组成:

如果是一个简单的数据结构,只要列出它所包含的数据项即可。

如果是一个嵌套的数据结构,只需列岀它所包含的数据结构名称,因为这些数据结构同样在数据字典屮有定义。

(4)数据存储

数据存储是数据结构停留或保存的场所。

主要内容:

1数据存储的名称及编号:

在DFD中对数据存储给以命名,并编上一个唯一的编号;

2流入、流出的数据流:

流入的数据流指岀其来源,流出的数据流指出其去

向;

3数据存储的组成:

指它所包含的数据项或数据结构。

(5)处理逻辑

主要内容:

1处理逻辑的名称及编号:

2简述:

对处理逻辑的简明描述,其目的是使人了解这个处理逻辑是做什么用的;

3处理逻辑的输入和输出;

4处理逻辑的主要功能:

5处理逻辑的小说明(文档之一)。

(6)外部实体

外部实体是系统的“人■机”界面,也就是系统的数据流由外部实体流入,或者系统的数据向外部流出。

主要内容:

1外部实体的名称及编号;

2与外部实体有关的数据流。

例如:

1外部实体名称:

供应商;

2编号:

GS03-22;

3简述:

向本公司供应货物的个人和单位;

4有关的数据流:

数据元素的別名就是该元素的其他等价的名字,岀现别名主要有下述三个原因:

1对于同样的数据,不同的用户使用了不同的名字;

2一个分析员在不同时期对同一个数据使用了不同的名字;

3两个分析员分别分析同一个数据流时,使用了不同的名字。

虽然应该尽量减少出现别名,但是不可能完全消除别名。

3.定义数据的方法

由数据元素组成数据方式的基本类型:

1、顺序:

以确定次序连接两个或多个分量;

2、选择:

从两个或多个可能的元素中选取一个;

3、重复:

把指定的的分量重复零次或多次;

4、可选:

一个分量是可有可无的。

4.数据字典的用途

1、作为分析工具;

2、包含了对每个数据元素的控制信息;

3、是开发数据库的第一步。

5.数据字典的特点

1、通过名字能方便查询数据定义;

F2、没有冗余;

F3、尽量不重复在规格说明的其他组成部分屮已经出现的信息;

F4、容易更新和修改;

F5、能单独处理描述每个数据元素信息;

F6、定义的书写方法简单方便而且严格。

图形工具

层次方框图

Warnier图

IPO图

3.3需求规格说明书

需求分析应交付的主要文档是需求规格说明。

软件需求规格说明的一般格式:

1•引言

2.任务概述

3.数据描述

4.功能要求

5.性能需求

6.运行需求

7.其他要求

8.附录

需求分析的评审

需求分析评审的方法

必须从一致性、完整性、现实性和有效性等四个不同角度验证软件需求的正确性。

第四章概要设计与数据库设计

教学内容

1.概要设计的任务与步骤

2.软件设计的概念与原则

3.概要设计的方法

面向数据流的设计方法。

基本概念、变换分析、事务分析、设计优化原则。

面向数据结构的设计方法(Jackson方法)。

4.概要设计文档与评审

5.数据库设计

教学要求

掌握软件设计的概念与原则,概要设计的步骤、方法。

学会撰写概要设计的文档并能评审出概要设计文档是否符合要求。

概要设计说明书的主要内容及结构。

自学要点

面向数据流的设计方法、面向数据结构的设计方法、变换分析、事务分析、设计优化原则。

学时分配

4学时(自学学时:

10学时)。

4.1概要设计的任务与步骤

概要设计任务

1.系统分析员审查软件计划、软件需求分析提供的文档,提出候选的最佳推荐方案,用系统流程图,组成系统物理元素清单、成本效益分析和系统进度计划,供专家审定,审定后进入设计。

2.确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。

确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。

3.编写概要设计说明书,用户手册,测试计划,选用相关的软件工具來描述软件结构,结构图是经常使用的软件描述工具。

选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等。

4.概要设计后转入详细设计(又称过程设计,算法设计),其主要任务,根据概要设计提供的文档,确定每一个模块的算法,内部的数据组织,选定工具清晰正确表达算法。

编写详细设计说明书,详细测试用例与计划.用到如何确定程序的复

杂程度的程序图,算法流程图的表述工具,如PAD图,N・S图等。

概要设计的过程

在概要设计过程中要先进行系统设计,复审系统计划与需求分析,确定系统具体的实施方案;然后进行结构设计,确定软件结构。

一般步骤如下:

S1:

设计系统方案

S2:

选取一组合理的方案

S3:

推荐最佳实施方案

S4:

功能分解

S5:

软件结构设计

S6:

数据库设计、文件结构的设计

S7:

制定测试计划

S8:

编写概要设计文档

S9:

审查与复审概要设计文档。

4.2软件设计的概念和原则

软件设计的概念与原则

主要内容包括有:

(1)将软件划分成若干独立成分的依据。

(2)怎样表示不同的成分内的功能细节和数据结构。

(3)怎样统一衡量软件设计的技术质量。

模块化

模块是数据说明、可执行语句等程序对彖的集合,模块可以单独被命名的而且可通过名字来访问,例如,过程、函数、子程序、宏等等都可作为模块。

抽象与逐步求精

软件工程过程的每一步都是对软件解法的抽象层次的一次精化。

逐步求精与抽象是紧密相关的。

信息隐蔽和局部化

模块独立性

模块独立性是软件系统屮每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。

模块独立的概

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1