当前位置>>软件工程


软件工程(1——2章)
辅导教师 彭继学
第一章 软件工程概述
学习目标

1.掌握:软件和软件工程的基本概念
2.了解:软件生存周期及软件开发的各种模型

学习要点

软件、软件工程、软件生存周期和软件开发模型

软件定义

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

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

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

软件的特点


软件的特点可归纳如下:

1.软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。
2.软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。
3.在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。
4.软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。在软件的开发和运行中必须以硬件提供的条件为基础。
5.软件的开发至今尚未完全摆脱手工的开发方式。
6.软件的开发费用越来越高,成本相当昂贵。

软件的分类

软件工程概念


软件危机与软件工程定义


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

(1)软件危机的表现

·产品不符合用户的实际需要。
·软件开发生产率提高的速度远远不能满足客观需要,软件的生产率远远低于硬件生产率和计算机应用的增长,使人们不能充分利用现代计算机硬件提供的巨大潜力。
·软件产品的质量差。
·对软件开发成本和进度的估计常常不准确。
·软件的可维护性差。
·软件文档资料通常既不完整也不合格。
·软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。

(2)产生软件危机的原因

·软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。在写出程序代码并在计算机上试运行之前,很难检验开发的正确性,而且软件开发的质量也较难评价。
软件不同于一般程序,它的一个显著特点是规模庞大。
·虽然软件本身独有的特点确实给开发和维护带来一些客观困难,但是人们在开发和使用计算机系统的长期实践中,也确实积累和总结出了许多成功的经验。
·开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的需求。
·软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范。
·在软件的开发与维护关系问题上存在错误的概念。

2.软件工程的定义

软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。
软件工程准则可以概括为如下六条基本原理。
(1)用分阶段的生存周期计划严格管理
(2)坚持进行阶段评审
(3)实行严格的产品控制
(4)采用现代程序设计技术
(5)结果应能清楚地审查
(6)合理安排软件开发小组的人员

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

1.软件工程的基本内容
从内容上划分软件工程学可分为理论、结构、方法、工具、环境、管理、规范等。
2.软件工程学研究的基本目标
(1)定义良好的方法学,面向计划、开发维护整个软件生存周期的方法学。
(2)确定的软件成分,记录软件生存周期每一步的软件文件资料,按步显示轨迹。
(3)可预测的结果,在生存周期中,每隔一定时间可以进行复审。
软件工程学的最终目标是以较少投资获得易维护、易理解、可靠、高效率的软件产品。
软件工程学是研究软件结构、软件设计与维护方法、软件工具与环境、软件工程标准与规范 、软件开发技术与管理技术的相关理论。

软件工程的原则


为了开发出低成本高质量的软件产品,软件工程学应遵守以下基本原则:
1.分解
2.独立性
3.一致性
4.确定性

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

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

1.1.1 软件生存周期

从前面的介绍中可以知道,一个软件从定义到开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件生存周期就是从提出软件产品开始,直到该软件产品被淘汰的全过程。
软件生存周期一般可分为以下阶段:

·问题定义
·可行性研究
·需求分析
·设计
·编码
·测试
·运行与维护

软件生存期也可以分为三个大的阶段:计划阶段。开发阶段和维护阶段。

(1)计划阶段
(2)开发阶段
(3)维护阶段

软件开发模型

为了反映软件生存周期内各种工作应如何组织及软件生存周期各个阶段应如何衔接,需要用软件开发模型给出直观的图示表达。软件开发模型是软件工程思想的具体化,是实施于过程模型中的软件开发方法和工具,是在软件开发实践中总结出来的软件开发方法和步骤。总的说来,软件开发模型是跨越整个软件生存周期的系统开发、运行、维护所实施的全部工作和任务的结构框架。

1.瀑布模型
2.螺旋模型
3.第四代技术模型
4.原型模型
5.构件组装模型
6.混合模型

 

第二章 可行性研究
一、可行性研究的任务

  可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。也就是说可行性研究的目的不是解决问题,而是确定问题是否值得去解,研究在当前的具体条件下,开发新系统是否具备必要的资源和其它条件。

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

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

二、可行性研究的步骤

  1.复查系统规模和目标

  2.研究目前正在使用的系统

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

  4.重新定义问题

  5.导出和评价供选择的方案

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

  7.推荐行动方针

  8.书写计划任务书

  9.提交审查

三、系统流程图

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

  系统流程图的作用可以总结如下:

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

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

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

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

四、成本效益分析

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

  成本估计

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

  费用估计

  1.代码行技术

  一旦估计出源代码行数以后,用每行代码的平均成本乘以行数就可以确定软件的成本。每行代码的平均成本主要取决于软件的复杂程度和工资水平。

  2. 任务分解技术

  这种方法首先把软件开发工程分解为若干个相对独立的任务。再分别估计每个单独的开发任务的成本,最后加起来得出软件开发工程的总成本。

  几种度量效益的方法

  1.货币的时间价值

  2.投资回收期

  3.纯收入

 

第三章 需求分析

第三章 需求分析

 

学习目标

  1. 掌握:需求分析的方法

  2. 理解需求分析的任务和原则

学习要点

  面向数据流的分析方法

需求分析的任务与步骤

 

需求分析的任务

  需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。需求分析所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求。

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

  需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。在这个阶段结束时交出的文档中应该包括详细的数据流图(DFD),数据字典(DD)和一组简明的算法描述。

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

  1.确定对系统的综合需求

  2.分析系统的数据需求

  分析系统的数据需求是由系统的信息流归纳抽象出数据元素组成、数据的逻辑关系、数据字典格式和数据模型。并以输入/处理/输出(IPO)的结构方式表示。因此,必须分析系统的数据需求,这是软件需求分析的一个重要任务。

  3.导出系统的逻辑模型

  就是在理解当前系统“怎样做”的基础上,抽取其“做什么”的本质。

  4.修正系统开发计划

  5.开发原型系统

需求分析的步骤

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

  1. 调查研究

  2.分析与综合

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

  3.书写文档

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

    ①系统规格说明。

    ②数据要求。

    ③用户系统描述。

   ④修正的开发计划。

 

  4.需求分析评审

需求分析的原则

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

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

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

需求分析方法

  大多数的需求分析方法是由数据驱动的,数据域具有三种属性:数据流、数据内容和数据结构。通常,一种需求分析方法总要利用一种或几种属性。

需求分析方法具有以下的共性。

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

  2.功能表示的方法

  3.接口的定义

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

  5.逻辑视图和物理视图

  6.系统抽象模型

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

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

  结构化分析方法使用数据流图DFD与数据字典DD来描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。

数据流图

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

  1.数据流图的含义

  数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的传输变换过程。数据流图是结构化系统分析的主要工具,它表示了系统内部信息的流向,并表示了系统的逻辑处理的功能。

  2.数据流图的特性

  (1)抽象性

  (2)概括性

  (3)层次性

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)数据流与控制流的区别

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

 

3.2.3 数据字典

  1.数据字典的定义

  数据字典是关于数据的信息的集合,对数据流程图中的各个元素做完整的定义与说明,是数据流程图的补充工具。数据流图和数据字典共同构成系统的逻辑模型

  2.数据字典的内容

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

  (l)数据流

    ① 数据流名称及其称号;

    ② 数据流的来源:可能是一个外部实体、处理逻辑、数据存储;

    ③ 数据流的去处;

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

    ⑤ 数据流的流通量:单位时间的传输次数;

    ⑥ 高峰时期的流通量:业务的频繁程度和时间有关。

  (2)数据项

  数据项也称数据元素,是“不可再分”的数据单位,是数据的最小组成单位。主要内容有:

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

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

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

    ④ 数据项的长度:指数据项所包含的字符或数字的位数。

(3)数据结构

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

    ② 数据结构的组成:如果是一个简单的数据结构,只要列出它所包含的数据项即可。如果是一个嵌套的数据结构,只需列出它所包含的数据结构名称,因为这些数据结构同样在数据字典中有定义。

(4)数据存储

  数据存储是数据结构停留或保存的场所。主要内容:

    ① 数据存储的名称及其编号:在数据流程图中对数据存储给以命名,并编上一个唯一的编号;

    ② 流入、流出的数据流:流入的数据流指出其来源,流出的数据流指出其去向;

    ③ 数据存储的组成:指它所包含的数据项或数据结构。

(5)处理逻辑

主要内容:

  ① 处理逻辑的名称及编号 ;

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

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

  ④ 处理逻辑的主要功能 ;

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

(6)外部实体

  外部实体是系统的“人-机”界面,也就是系统的数据流由外部实体流入,或者系统的数据向外部流出。主要内容:

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

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

  例如:

  ① 外部实体名称:供应商;

  ② 编号:GS03-22;

  ③ 简述:向本公司供应货物的个人和单位;

  ④ 有关的数据流:

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

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

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

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

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

 

  3.定义数据的方法

  4.数据字典的用途

  5.数据字典的实现

 

图形工具

 

层次方框图

Warnier 图

IPO图

I

需求规格说明与评审

需求规格说明的主要内容

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

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

  1.引言

  2.任务概述

  3.数据描述

  4.功能要求

  5.性能需求

  6.运行需求

  7.其他要求

  8.附录

需求分析的评审

需求分析评审的方法

 

 
三级电大在线链接
中央电大在线 湖南电大在线 湘西电大在线
七、视频教学资源链接
录像资源第1讲第一节 录像资源第7讲第一节
录像资源第2讲第一节 录像资源第8讲第一节
录像资源第3讲第一节 录像资源第9讲第一节
录像资源第4讲第一节 录像资源第10讲第一节
录像资源第5讲第一节 录像资源第11讲第一节
录像资源第6讲第一节 录像资源第12讲第一节
特别提示:以上链接资源需先在湘西电大在线用自己的用户名及密码登陆,然后再点击此链接即可。
   

    

   
 
COPYRIGHT(c) 2005 龙山县教师进修学校 龙山县广播电视大学
编辑:现代教育技术中心      ICP备案号:湘ICP备05010908