计算机软件技术基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1.1 软件工程的形成与发展
1.软件发展的三个阶段
1.程序设计时期(1946年到60年代中期)
软件开发方法从机器语言编程到软件工程方法,经历了三个阶段。
生产方式是手工生产、个体劳动。只有程序,无软件的概念。
2.软件时期(60年代中期至70年代中期) 程序不再是硬件的附属,有软件的概念。 作坊式的生产方式已难满足软件生产的质量和数量上的要求。 出现了“软件危机”。 3.软件工程时期(70年代至今) 1968年、1969年北大西洋公约组织成员国的软件工件者召开了两 个研讨会,提出了“软件工程”这一述语,根本目的在于克服 “软件危机”中所遇到的困难问题,从此进入软件工程时代。
面向对象方法和技术是自80年代以来逐渐形成的一种分析问
题和解决问题的新方法,其基本出发点就是尽可能按照人类认 识世界的方法和思维方式来分析和解决问题。客观世界是由许 多具体的事物或事件、抽象的概念和规则等组成的,因此,我 们将要加以研究的事、物、概念都称为对象。面向对象的方法 正是以对象作为最基本的元素,以对象作为分析问题,解决问 题的核心。
2、结构化设计 结构化设计方法,亦称SD(Structured Design)方法。是 一种面向数据流的设计方法,目的在于确定软件的结构。 (1)SD方法的基本思想 其基本思想是:根据SA方法中的数据流图建立一个良好的
模块结构图(例如SC图或软件层次方框图);运用模块化的 设计原理控制系统的复杂性,即设计出模块相对独立的,模 块结构图深度、宽度都适当的,单入口单出口的,单一功能 的模块结构的软件结构图或软件层次方框图。
1、面向对象分析(OOA)
把对象作为现实世界的抽象表示,然后定义对象的属性 和专门操纵那些属性的服务,属性和服务被看成对象的特
问题定义
定义 阶段 或行性研究
(目标与范围说明)
(可行性论证报告)
需求分析 设 计
开发 阶段 编 程
(需求说明书)
(设计文档)
百度文库(程序)
测 试
运行与维护
(测试报告)
维护 阶段 传统的软件工程范型――瀑布模型
(维护报告)
1.2 软件开发方法 两种不同的开发方法:结构化开发方法和面向对象的开发方法。 1.2.1 结构化开发方法 一、结构化分析 1.结构化分析方法,亦称SA(Structured Analysis)方法。 (1)SA方法的特点: ①核心思想:自顶向下和逐步求精。 ②基本手段:分解和抽象。 分解:把大问题分割成若干小问题,然后分别解决。 抽象: 略去细节,先考虑问题最本质的属性。 ③使用了描述需求说明书的几个规范工具。 即数据流图、数据词典、小说明(加工逻辑的描述)等,使文 档规范化。 (2)数据流图(Data Flow Diagram,简称DFD图) SA方法采用“分解”的方法来描述一个复杂的系统,数据流图 是描述系统中数据流程的图形工具,它标识了一个系统的逻辑输 入和逻辑输出以及把逻辑输入转换为逻辑输出所需要的加工处理。
2.软件危机 (1) 软件危机的主要表现: 1)软件开发成本和进度的估计常常很不准确。 2)用户往往对已完成的软件不满意。 3)软件的质量常被怀疑。 4)软件极难维护。
5)缺乏良好的软件文档。
6)软件开发生产率提高的速度远远跟不上计算机应用迅速普及深 入的趋势。
(2)软件危机的产生原因
一般以为,软件危机的发生与软件产品的特征和软件产品开
内聚有六种,从小到大如下: ①偶然内聚,即一个模块由多任务组成,这些任务之间关系松 散或根本没联系; ②逻辑内聚:即一个模块完成的任务在逻辑上相同或相似; ③时间内聚:即一个模块所包含的任务必须在同一时间内执行; ④通信内聚:即一个模块内所有处理元素集中于相同的数据结 构; ⑤顺序内聚:即一个模块中所有处理元素都是为完成同一功能 而且必须顺序执行;
第一章 软件工程 第二章 数据结构 第三章 操作系统 第四章 数据库技术
第五章 面向对象程序设计
第六章 计算机网络 第七章 网页设计 综合练习题
第一章 软件工程
本章简单介绍软件工程的形成和发展,重点介绍软件开发
的不同方法和软件测试策略与方法,最后就软件开发环境和
软件重用技术作一简要介绍。 1.1 概述 软件工程的提出源于20世记60年代末期出现的“软件危 机”,并在较短的时间内发展成一个完整的学科方向,30多 年来,在理论研究和工程实践两个方面作了大量的工作。
3、软件工程 1983年IEEE定义为:“软件工程是开发、运行、维护和修 复软件的系统方法”。 软件工程学的多个分支 (1)软件工程方法学 方法学是研究软件构造技术的学问。一个软件从定义、开发 到维护,都需要有适当的方法。 (2)软件工程环境 对最终用户而言,环境就是他们运行程序所使用的计算机系 统。 对于应用软件开发人员,环境是开发活动的舞台。 软件工具是环境中最活跃的成分。所谓工具,在这里泛指一 切帮助开发软件的软件。在软件开发的各个方面都研制了许多 有效的工具。集成化工具的自动切换,可以明显提高软件的生 产率。 (3)软件工程管理 软件工程管理的目的,是为了按照软件的预算和进度完成项 目计划,实现预期的经济和社会效益。
(4)SD方法的设计过程 使用SD方法的基础是数据流图。正如前面所述,几乎所有软 件在分析阶段都可以表示为数据流图,所以SD方法基本上可适 用于任何软件的开发工作。 用SD方法进行总体设计的过程大致如下: (1)研究、分析和审查数据流图,从软件的需求说明书弄清 楚数据流加工的过程; (2)根据数据流图确定数据流图的类型; (3)从数据流图导出系统的初始软件结构图; (4)改进初始软件结构图,直到符合要求为止; (5)复查。 (5)软件结构的描述方式 在SD方法中,软件结构用一种结构图来描述,它是设计说明 书的一部分。结构图描述了软件模块结构,并反映了模块和模 块间联系等特性。
1.1.2 软件工程范型 1、传统的软件工程范型――瀑布模型 瀑布模型是1976年由B· Boehm提出的,是基于软件生存周 W· 期的一种范型。它将软件生存周期分为定义、开发、维护三个 阶段,每个阶段又分为若干个子阶段,各子阶段的工作顺序展 开,如自上而下的瀑布。(见后图) 定义阶段:分析用户需求。 问题定义:收集、分析、理解、确定用户的要求。 可行性研究:确定对问题是否有可行的解决办法。 需求分析:确定用户对软件系统的全部需求。 开发阶段: 设计:设计软件系统的模块层次结构、数据库结构、模块控制 流程等。 编程:将每个模块的控制流程纺出相应的程序。 测试:检查并排除软件中的错误,提高软件的可靠性。 维护阶段: 运行与维护:维护软件系统的正常运行。 各个阶段确均有相应的文档。
发与维护的方法不正确有关。 其一:软件是逻辑的系统部件而不是物理的系统部件,以程
序和文档形式存在,具有无形性。
其二:软件规模越来越大,功能越来越强,导致软件结构非 常复杂。 (3)解决软件危机的途径 方法是要充分吸取和借鉴人类长期以来从事各种工程项目 所积累的行之有效的原理、概念、技术和方法,并应用于软 件开发的实践中,将软件开发变成一种组织良好、管理严密、 各类人员协同完成的工程项目
1.2.2 面向对象开发方法 面向对象技术是一种非常实用而强有力的软件开发方法。 面向对象软件开发方法又称OOSD(Object-Oriented Software Development)。OOSD包括面向对象分析(OOA)、面向对 象设计(OOD)和面向对象程序设计(OOP)三个方面 。其 中OOP是基础,OOA和OOD是应用OOP的机制。
此方法提供了描述软件系统的工具,提出了评价模块结构
图质量的标准,即模块之间的联系越松散越好,而模块内各 成分之间的联系越紧凑越好。
(2)SD方法的设计原理 1)模块化: 模块化就是把系统划分为若干个模块,从而获得满足问题需要 的一个解的过程。 2)模块的独立性: 模块独立性有两个定性的度量标准,即内聚和耦合。耦合有六 种,从小到大如下: ①两个模块完全独立(没有任何联系); ②数据耦合:即两个模块只通过数据进行交换; ③状态耦合:即两个模块之间通过控制状态进行传递; ④环境耦合:即两个模块之间通过公共环境进行数据存取; ⑤公共块耦合:即多个模块引用一个全程数据区; ⑥内容耦合:即一个模块使用保存在另一模块内部的数据或控制 信息,或转移进入另一个模块中间时,或一个模块有多个入口时。 由此看出模块间耦合性越小越好。
事务处理型: 另一类数据流图可看成是对一个数据流经过某种加工后, 按加工的结果选择一个输出数据流继续执行的处理。这种 类型的处理可以抽象为事务处理型。在事务处理中,输入 数据流称为事务流,加工称为事务中心,若干平行数据流 称为事务路径。当事务流中的事务送到事务中心后,事务 中心分析每一事务,根据事务处理的特点和性质选择一个 事务路径继续进行处理。
(2)方框图(N-S图):图形描述工具。限制了随意的控制转移。
顺序结构
选择结构
多分支选择结构
先判定型循环结构
后判定型循环结构
(3)结构化编码方法 ①对源程序的编码要求:最基本要求是源程序的正确性,同时 还要考虑其可读性、可理解性、可测试性和可维护性。 ②写程序的风格:一个好的源程序意味着源程序代码逻辑简明 清晰,易读易懂。 编码原则: • 程序内部文档应选取含义鲜明的名字,注解正确,程序清单 层次清晰,布局合理。 • 数据说明和次序应该标准化,个别复杂的数据结构应加注释。 • 每个语句应该简单直接,不能为提高效率而使程序变得过份 复杂。 • 对输入数据应进行合法性检查;对输出数据要加输出数据的 标志。 • 在程序编码阶段以不影响程序的清晰度和可读性为前提,尽 可能提高效率。
⑥功能内聚:一个模块所有处理都完成一个而且仅完成一个功
能。 内聚性给出模块的内在联系,因此内聚性越大越好。
3)模块的设计准则
①通过模块的分解和合并,提高模块的独立性; ②模块调用个数最好不要超过五个;
③降低模块接口的复杂性;
④一个模块的所有下属模块应该包括该模块受某一 判定影响的所有模块的集合; ⑤模块应设计成单入口和单出口; ⑥模块的大小要适中,一般在50句左右。
数据 流图的基本符号:
(1)数据流 (2)加工 (3)数据存储 (4)数据源点或终点。 画各层数据流图应注意的问题: 1 (1)父图和子图平衡 (2)子图的编号 (3)数据守恒
(3)数据词典(Data Dictionary,简称DD) 对数据流图中包含的所有元素的定义的集合构成了数据字典。 数据词典中有四种类型的条目:数据流、文件、数据项和加工。 (1)数据流条目 数据流条目给出某个数据流的定义,它通常是列出该数据流的 各组成数据项。 如:课程=课程名+教员+教材+课程表 课程表={星期几+第几节+教室} (2)文件条目 文件条目给出某个文件的定义。 订单文件=订单编号+顾客名称+产品名称+订货数量+交货日期 (3)数据项条目 数据项条目给出某个数据单项的定义。 学号编号=1~9999 (4)加工条目 加工条目又称小说明。小说明中应精确地描述用户要求某个加工 做什么。
3、详细设计和编码 (1)详细设计的任务 为软件结构图中的每一个模块确定采用的算法和块内数据 结构,用某种选定的表达工具给出清晰的描述。 (2)详细设计的描述工具 ①程序流程图 也称为程序框图,独立于任何一种程序设计语言,比较直 观、清晰、易于掌握。 任何复杂的程序流程图都可以由以下不同类型的基本结构 组合或嵌套而成: 顺序结构 选择结构(IF-THEN-ELSE) 多分支选择结构(CASE) 先判定循环结构(WHILE) 后判定循环结构(UNTIL)
(3)数据流图的类型 数据流图通常分为两大类型:转换处理型和事务处理型. 转换处理型: 由于大多数数据流图都可看成是对输入数据进行转换而得 到输出数据的处理,因此可把这类处理抽象为转换处理型。 转换处理过程大致分为输入数据,变换数据和输出数据三步; 它包含的数据流有输入流、转换流、输出流三个部分。在输 入流中,信息由外部形式转换为内部形式的结果;在输出流 中,信息由内部形式的结果转换为外部形式数据流出系统。 转换处理型的数据流图。