没有合适的资源?快使用搜索试试~ 我知道了~
专题七:软件工程专题.doc
需积分: 47 11 下载量 102 浏览量
2007-12-04
10:16:37
上传
评论
收藏 232KB DOC 举报
温馨提示
试读
16页
专题七:软件工程专题.doc
资源推荐
资源详情
资源评论
系统分析师(软件设计师)计算机学科部分经典教材
专题七:软件工程专题
1、软件工程知识
1.1 概述
软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工
程。其目的是提高软件生产率、提高软件质量、减低软件成本。
软件工程是 1968 年在德国的 NATO 会议上提出的,希望用工程化的原则和方法来克服软件危机;
而软件危机就是软件开发和维护过程中的各种问题,由于软件开发阶段缺乏好的方法的指导和好的工具的
辅助,而且缺少有关的文档,使得大量的软件难以维护。
软件生命周期是指由软件定义、软件开发和软件维护等阶段组成的全过程,反映软件生存期内各种工
作得组织以及各个阶段如何衔接。下表归纳了软件生存周期各个阶段的任务、参与人员和产生文档。
常见的软件开发模型有瀑布模型、演化模型、螺旋模型和喷泉模型等。
阶段 任务 参与人员 产生文档
软件定义阶段——待开发软件要“做什么”
系统分析 确定待开发软件的总体要求和
适用范围,以及与之有关的硬
件、支撑软件的要求
用户、项目负责人、系
统分析员
可合并项目计划书中
软件项目计划 确定待开发软件的目标,对其
进行可行性分析,并对资源分
配、进度安排等做出合理的计
划
用户、项目负责人、系
统分析员
可行性分析报告、项
目计划书
需求分析 确 定 待 开 发 软 件 的 功 能 、 性
能、界面等要求,从而确定系
统的逻辑模型
用户、项目负责人、系
统分析员
需求规格说明书
软件开发阶段——待开发软件“怎么做”
软
件
设
计
概要设计 模块分解,确定软件的结构,
模块的功能和模块间的接口,
以及全局数据结构的设计
系统分析员、高级程序
员
设计说明书、数据说
明书、模块开发卷宗
详细设计 设计每个模块的实现细节和局
部数据结构的设计
高级程序员、程序员
编码 用某种程序语言为每个模块编
写程序
高级程序员、程序员 程序清单
软件测试 发现软件中的错误,并加以纠
正
高级程序员或系统分析
员(另一部门或单位)
软件测试计划、软件
测试用例说明,软件
测试报告
软件维护阶段—开发后交付使用的软件的维护
软件维护 使软件适应外界环境的变化、
实现功能的扩充和质量的改善
而修改软件
维护人员 维护计划、维护报告
软件由计算机程序、数据及文档组成,同时与硬件、数据库人、过程等共同构成计算机系统。软件
工程包括三个要素:方法、工具和过程。
主要的软件开发方法有以下几种方法:
共 16 页 第 页
1
系统分析师(软件设计师)计算机学科部分经典教材
生命周期法:命周期法认为:每一个软件系统都有一定的生命周期。软件的生命周期是指一个软件系
统从其提出、调查到分析、设计和有效使用,直至被淘汰或取代的整个期间。软件生命周期
法就是按软件生命周期的各个阶段划分任务,按一定的规则和步骤,有效地进行软件开发的
方法。
通常一个软件系统的生命周期可分为五个阶段:准备阶段、分析阶段、设计阶段、实施阶段、运行与
维护阶段
原型法:原型法是先根据用户的最主要要求,开发出能实现系统最基本功能的一个原型,再根据用户
对原型使用与评价的意见,反复修改完善原型,直到等到用户满意的最终系统为止。
原型法分 4 个阶段:确定用户需求;设计原型;使用、评价原型;修改、完善原型。
1.2 软件分析
软件开发模型:瀑布模型;演化模型(原型法);螺旋模型;喷泉模型(迭代和无间隙);软件成本
模型;可行性分析的任务是从技术上、经济上、使用上、法律上分析需解决的问题是否存在可行的解。
需求分析是软件生存周期中相当重要的一个阶段。需求分析主要是确定待开发软件的功能、性能、
数据、界面等要求。具体有以下几点:
确定软件系统的综合要求
分析软件系统的数据要求
导出系统的逻辑模型
修正项目开发计划
如有必要,可开发一个原型系统
需求分析的基本原则是能够表达和理解问题的信息域和功能域;以层次化的方式进行分解和不断细化;
要给出系统的逻辑视图和物理视图;
描述软件需求的方法:
功能层次模型:一般来讲就是系统的功能图,模块分布图等描述整个系统的功能的分布和功能
的层次结构;
数据流模型:就是以数据流为着眼点的分析方法得到的模型,主要通过数据在整个系统的流动
情况来确定系统的主要功能主线和流程;
控制流模型:通过了解和界定系统中控制线,通过控制流的走向和控制的对象来确定系统的功
能分布和控制与被控制的关系;
结构化分析(SA)方法是一种面向数据流的需求分析方法,它适用于分析大型数据处理系统。结构
化分析方法的基本思想是自顶向下逐层分解,这样做可以把一个大问题分解成若干个小问题,经过多次逐
层分解,每个最底层的问题都是足够简单、容易解决的,这个过程就是分解的过程。
结构化方法的分析结果由数据流图 DFD、数据词典和加工逻辑说明几个部分组成。其中,DFD 的基
本成分有数据流(data ow)、加工(process)、文件(le)和源/宿(source/sink)。
画数据流图的基本步骤:自外向内、自顶向下、逐层细化、完善求精;
数据流图的父图与子图要平衡, 即输入和输出的数据流一致;
数据流图中的每个加工至少有一个输入数据流和一个输出数据流;
局部的数据存储不画出来,只有当局部数据存储作为某些数据加工之间的数据接口才画出,这
有利于信息隐蔽;
画数据流的时候不画控制流,两者的区别就是控制流中没有数据;
一个加工的数据流与输出流不应该同名;
允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出流向两个不同
的加工;
保持数据守恒:一个加工的所有输出数据必须能从该加工的所有的输入流中获得;
在整套数据流图中,每个文件都必须既有读文件的数据流也有写文件的数据流;
软件开发过程中的软件工程原则(8 个):
抽象;
自顶向下、逐层细化;
信息隐蔽和数据封装;
模块化;
局部化;
确定性;
一致性和标准化;
完备性和可验证性;
软件工程基本原理(7 个):
按软件生存周期分阶段指定计划并认真实施;
坚持进行阶段评审;
坚持严格的产品控制;
共 16 页 第 页
2
系统分析师(软件设计师)计算机学科部分经典教材
使用现代程序设计技术;
明确责任,使得工作结果能够得到清楚的审查;
用人少而精;
不断改进开发过程;
1.3 软件设计
软件设计原则: 软件设计的原则对提高软件的设计质量有很大的帮助。
◆ 抽象
抽象是指忽视一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。过程抽
象和数据抽象是常用的两种主要抽象手段。
◆ 模块化
模块化是指将一个待开发的软件分解成若干个小的简单的部分——模块,每个模块可独立地开发、测试、
最后组装成完整的软件。这是一种复杂问题的“分而治之”的原则。
模块是指执行某一特定任务的数据结构和程序代码。一个模块有它的外部特征和内部特征。
◆ 信息隐蔽
信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,
定义每一个模块时尽可能少地显露其内部的处理。信息隐蔽原则对提高软件的可修改性、可测试性和可移
植性都有重要的作用。
◆ 模块独立
模块独立是指每个模块完成一个相对独立的子功能,并且与其他模块之间的联系简单。衡量模块独立程度
的度量标准有两个:耦合和内聚。
耦合是指模块之间联系的紧密程度。耦合度越高则模块的独立性越差。按耦合度从低到高依次有 7 种耦合
方式。
非直接耦合(独立运行)
数据耦合(用参数表传递简单数据)
标记耦合(传递数据结构或者一部分)
控制耦合(传递的信息包括控制模块的信息)
外部耦合(模块与软件之外的环境有关)
公共耦合(多个模块引用同一全局的数据区)
内容耦合(访问内部数据,代码重叠或者多个入口)
内聚是指模块内部各元素之间联系的紧密程度内聚度越低模块的独立性越差。按内聚度从低到高依次有 7
种内聚种类。
偶然内聚(模块完成的多个任务,任务之间的关系松散)
逻辑内聚(模块完成逻辑相关的一组任务)
瞬时内聚(模块的所有任务必须在同一时间间隔内执行)
过程内聚(模块的处理元素相关而且按照特定的次序执行)
通信内聚(模块的所有元素集中在一个数据结构区域上)
顺序内聚(模块的处理元素相关,必须顺序执行)
功能内聚(模块完成单一的功能,各个部分协调工作,而且不可缺少)
模块分解原则:
满足信息隐蔽;
尽量内聚度高,模块间偶合度低;
模块大小在(50-100 语句);
模块调用深度不能过大;
模块的扇入(直接调用该模块)应尽量大,扇出(直接调用下级模块数)不宜过大;
设计单入口和单出口的模块;
模块的作用域应在控制域之内:
作用域:受模块内一个判定影响的所有的模块的集合;
控制域:该模块本身和被该模块直接或间接调用的所有的模块的集合;
模块的功能应是可以预测的,相同输入得到相同输出
结构化设计方法
结构化设计(SD)方法是一种面向数据流的设计方法,它可以与 SA 方法衔接。
结构化设计采用结构图(SC)来描述程序的结构。其基本成分有模块、调用和输入/输出数据。
结构图:
共 16 页 第 页
3
剩余15页未读,继续阅读
资源评论
yntangming
- 粉丝: 4
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功