版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
全国计算机等级考试
公共基础知识主讲人:刘槐德软件工程基础
一软件危机与软件工程
1、软件的相关概念
计算机软件是包括程序、数据及相关文档的完整集合。软件的特点包括:软件是一种逻辑实体;具有抽象性;软件的生产与硬件不同,它没有明显的制作过程;
软件在运行、使用期间不存在磨损、老化问题;
软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题;
软件复杂性高,成本昂贵;
软件开发涉及诸多的社会因素。软件分类:软件按功能分为应用软件、系统软件、支撑软件(或工具软件)。
软件发展的趋势程序设计阶段,约为50至60年代硬件通用,软件专用;程序规模小,编写者和使用者为同一人(同组人)。程序系统阶段,约为60至70年代出现“软件作坊”、产品软件;“个体化”开发方法。软件工程阶段,约为70年代以后软件开发成为一门新兴的工程学科——软件工程。2、软件危机与软件工程
所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机可以归结为成本、质量、生产率等问题。软件工程源自软件危机。
软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。即将软件产品看作是一个工程产品来处理。中心思想:把软件当作一种工业产品,要求“采用工程化的原理和方法对软件进行计划、开发和维护”。这样做的目的,不仅是为了实现按预期的进度和经费完成软件生产计划,也是为了提高软件的生产率和可靠性。软件工程—一种层次化技术工具方法过程软件工程三个要素:方法、工具、过程软件工程过程包含4种基本活动:
(1)P(Plan)——软件规格说明。规定软件的功能及其运行时的限制。(2)D(Do)——软件开发。产生满足规格说明的软件。(3)C(Check)——软件确认。确认软件能够满足用户提出的要求。
(4)A(Action)——软件演进。为满足客户的变更要求,软件必须在使用的过程中演进。软件生命周期:软件产品从提出、实现、使用维护到停止使用退役的过程。
软件生命周期三个阶段:软件定义软件开发运行维护3、软件生命周期软件生命周期的主要活动阶段
如下图:
可行性研究初步项目计划需求分析概要设计详细设计实现测试维护使用退役定义阶段开发阶段维护阶段4、软件工程的目标和与原则(1)软件工程目标:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。(2)软件工程需要达到的基本目标应是:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发,及时交付使用。(3)软件工程原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。5软件工程的内容内容软件开发技术软件开发方法学基于瀑布模型的结构化生命周期方法基于动态需求的快速原型法基于结构的面向对象的软件开发方法软件工具用来开发软件的软件软件工程环境支持软件开发的环境,软件工具及其相互间关系的总和软件工程管理软件管理人力管理、进度安排、质量保证、资源管理软件工程经济学以经济学的观点研究开发过程中的经济效益。成本估算、效益分析的方法和技术6、软件开发工具与软件开发环境(1)软件开发工具软件开发工具的完善和发展将促使软件开发方法的进步和完善,促进软件开发的高速度和高质量。软件开发工具的发展是从单项工具的开发逐步向集成工具发展的,软件开发工具为软件工程方法提供了自动的或半自动的软件支撑环境。(2)软件开发环境
软件开发环境(或称软件工程环境)是全面支持软件开发全过程的软件工具的集合。计算机辅助软件工程(CASE,ComputerAidedSoftwareEngineering)将各种软件工具、开发机器和一个存放开发过程信息的中心数据库组合起来,形成软件工程环境。它将极大降低软件开发的技术难度并保证软件开发的质量。二结构化生命周期方法1.计划时期主要任务:
是分析用户需求、新系统的主要目标、开发系统的可行性1)问题定义任务:确定软件系统的功能和要解决的问题(软件系统的目标和范围说明)特点:时间较短2)可行性研究:经济可行性:技术可行性:法律可行性:运行可行性:方案可行性最终提交:可行性分析报告(软件开发阶段的第一个文档)这是在软件项目计划阶段应该做的事情,包括四个方面的研究:
经济可行性:进行成本∕效益分析。从经济角度判断系统开发是否“合算”。
技术可行性:进行技术风险评价。从开发者的技术实力、以往工作基础、问题的复杂性等出发,判断系统开发在时间、费用等限制条件下成功的可能性。
法律可行性:确定系统开发可能导致的任何侵权、妨碍和责任。
方案的选择:评价系统或产品开发的几个可能的候选方案。最后给出结论意见。3)软件计划
i任务 分析和估算 分析 功能的界限(应包括哪些,不含哪些功能) 估算 开发的资源、费用、进度等进行定量估计
ii资源 人力资源:技术人员:分析设计人员、编码测试人员、管理人员 软件资源:支持软件、应用软件硬件资源:开发系统的硬件设备、新系统的硬件设备描述资源(具体规格),资源的起始时间和终止时间
iii进度安排 限时进度安排——用户 自定义进度安排——公司4)需求分析:弄清用户对软件系统的全部需求并用需求说明书的形式准确地表达出来。当采用结构化分析方法时,需求说明通常由数据流图、数据字典和加工说明等一整套文档组成。需求分析的任务任务:需求分析的任务就是导出目标系统的逻辑模型,解决“做什么”的问题。软件需求分析的目标是深入描述软件的功能和性能,确定软件设计的约束和软件同其它系统元素的接口细节,定义软件的其它有效性需求。需求分析阶段研究的对象是软件项目的用户要求。一方面,必须全面理解用户的各项要求,但又不能全盘接受所有的要求,另一方面,要准确地表达被接受的用户要求。只有经过确切描述的软件需求才能成为软件设计的基础。特点:准确性和一致性。是连接计划时期和开发时期的桥梁,也是软件设计的依据。清晰性和没有二义性。直观、易读和易于修改。需求分析方法(1)结构化需求分析方法(重点)
(A)面向数据流的结构化分析方法
B)面向数据结构的Jackson方法
C)面向数据结构的结构化数据系统开发方法(2)面向对象的分析方法。
需求分析一般分为需求获取、需求分析、编写需求规格说明书和需求评审四个步骤进行。结构化方法包括配套的结构化分析方法、结构化设计方法和结构化编程方法。核心和基础是结构化程序设计理论。结构化分析方法(SA):
结构化分析方法是结构化程序设计理论在软件需求分析阶段的应用。结构化分析方法的实质:着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。结构化分析方法SA结构化分析的常用工具:(1)数据流图;(2)数据字典;(3)判定树;(4)判定表。
实体—关系图
数据词典数据流图数据对象描述控制规格说明加工规格说明结构化分析方法SA核心是数据词典,它描述了所有的在目标系统中使用的和生成的数据对象。围绕着这个核心的有三种图:实体—关系图(ERD)描述数据对象及数据对象之间的关系;数据流图(DFD)描述数据在系统中如何被传送或变换,以及描述如何对数据流进行变换的功能(子功能);状态—迁移图(STD)描述系统对外部事件如何响应,如何动作。ERD用于数据建模,DFD用于功能建模,STD用于行为建模。一)数据流图(DFD):软件系统逻辑模型的一种图形表示1.特点:直观2.数据流图的基本符号二)数据字典1·定义:分析模型中包含了对数据对象、功能和控制的表示。在每一种表示中,数据对象和控制项都扮演一定的角色。为表示每个数据对象和控制项的特性,建立了数据词典。数据词典精确地、严格地定义了每一个与系统相关的数据元素,并以字典式顺序将它们组织起来,使得用户和分析员对所有的输入、输出、存储成分和中间计算有共同的理解。数据字典的作用是对数据流图中出现的被命名的图形元素的确切解释2·词条描述在数据词典的每一个词条中应包含以下信息:①名称:数据对象或控制项、数据存储或外部实体的名字。②别名或编号。③分类:数据对象?加工?数据流?数据文件?外部实体?控制项(事件∕状态)?④描述:描述内容或数据结构等。⑤何处使用:使用该词条(数据或控制项)的加工。3·内容描述 在数据词典的编制中,分析员最常用的描述内容或数据结构的符号如表2.1所示。
4·加工:加工规格说明用来说明DFD中的数据加工的加工细节。加工规格说明描述了数据加工的输入,实现加工的算法以及产生的输出。加工规格说明指明了加工(功能)的约束和限制,与加工相关的性能要求,以及影响加工的实现方式的设计约束。注意,写加工规格说明的主要目的是要表达“做什么”,而不是“怎样做”。应描述数据加工实现加工的策略而不是实现加工的细节。目前用于写加工规格说明的工具有结构化语言、判定表和判定树。三)加工规格化说明工具a.结构化语言:自然语言加上结构化形式化的语言。是一种介于自然语言和程序设计语言之间的语言。b.判定树是判定表的图形表示。c.判定表采用表格化的形式,适于表达含有复杂判断的加工逻辑。d.加工说明卡片加工说明可以像字典条目一样记载在卡片上2.软件设计
1)总体设计:主要任务是建立软件的总体结构,画出有模块组成的软件结构图或层次图。又称结构设计。
2)详细设计:针对单个模块的设计,目的是确定模块内部的过程结构。要求为每一个模块提供一个模块过程性描述。详细说明实现该功能的算法和数据结构,又称算法设计。
需求分析主要解决“做什么”的问题,而软件设计主要解决“怎么做”的问题。软件设计主要内容包括:软件结构设计、数据设计、接口设计、过程设计。(按技术观点划分)软件设计分两步完成,即概要设计和详细设计。(按工程管理角度划分)1、软件设计的基础软件设计的基本原理包括:抽象、模块化、信息隐蔽和模块独立化。模块的耦合性和内聚性是衡量软件的模块独立性的两个定性指标。内聚性:是一个模块内部各个元素间彼此结合的紧密程度的度量。耦合性:是模块间互相连接的紧密程度的度量。一个设计良好的软件系统应具有高内聚、低耦合的特征。结构化设计方法从系统设计的角度出发,软件设计方法可以分为三大类。第一类是根据系统的数据流进行设计,称为面向数据流的设计或者过程驱动的设计,以结构化设计方法为代表。第二类是根据系统的数据结构进行设计,称为面向数据结构的设计或者数据驱动的设计,以LCP(程序逻辑构造)方法、Jackson系统开发方法和数据结构化系统开发(DSSD)方法为代表。第三类是根据数据、类和对象进行设计即面向对象的设计。结构化设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。2、总体设计(概要设计)和详细设计
(1)总体设计(概要设计)软件概要设计的基本任务是:1)设计软件系统结构;2)数据结构及数据库设计;3)编写概要设计文档;4)概要设计文档评审。
常用的软件结构设计工具是结构图,也称程序结构图。经常使用的结构图有四种模块类型:传入模块、传出模块、变换模块和协调模块。(1)总体设计(概要设计)程序结构图的基本图符:模块用一个矩形表示,箭头表示模块间的调用关系。在结构图中还可以用带注释的箭头表示模块调用过程中来回传递的信息。还可用带实心圆的箭头表示传递的是控制信息,空心圆箭心表示传递的是数据信息。
程序结构图的有关术语深度:表示控制的层数。上级模块、从属模块:上、下两层模块a和b,且有a调用b,则a是上级模块,b是从属模块。宽度:整体控制跨度(最大模块数的层)的表示。扇入:调用一个给定模块的模块个数。扇出:一个模块直接调用的其他模块数。原子模块:树中位于叶子结点的模块。结构图的基本形式:基本形式、顺序形式、重复形式、选择形式。
面向数据流的设计方法:面向数据流的设计就是将数据流图变换成结构图。
典型的数据流类型有两种:变换型和事务型。
变换型系统结构图由输入、中心变换、输出三部分组成。
事务型数据流的特点是:接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。
(2)详细设计详细设计是为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。详细设计的任务是确定实现算法和局部数据结构,不同于编码或编程。
常用的过程设计(即详细设计)工具有以下几种:图形工具:程序流程图、N-S(方盒图)、PAD(问题分析图)和HIPO(层次图+输入/处理/输出图)。表格工具:判定表。语言工具:PDL(伪码):过程设计语言,它是用正文形式表示数据和处理过程的设计工具。4、软件测试
1、软件测试定义:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。
软件测试的目的:尽可能地多发现程序中的错误,不能也不可能证明程序没有错误。
2、软件测试方法:静态测试和动态测试。
静态测试包括代码检查、静态结构分析、代码质量度量。不实际运行软件,主要通过人工进行。
动态测试:是基于计算机的测试,主要包括白盒测试方法和黑盒测试方法。
(1)白盒测试白盒测试方法也称为结构测试或逻辑驱动测试。它是根据软件产品的内部工作过程,检查内部成分,以确认每种内部操作符合设计规格要求。白盒测试的基本原则:保证所测模块中每一独立路径至少执行一次;保证所测模块所有判断的每一分支至少执行一次;保证所测模块每一循环都在边界条件和一般条件下至少各执行一次;验证所有内部数据结构的有效性。白盒测试法的测试用例是根据程序的内部逻辑来设计的,主要用软件的单元测试,主要方法有逻辑覆盖、基本路径测试等。(2)黑盒测试黑盒测试方法也称为功能测试或数据驱动测试。黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。黑盒测试主要诊断功能不对或遗漏、接口错误、数据结构或外部数据库访问错误、性能错误、初始化和终止条件错误。主要方法有等价类划分法、边界值分析法、错误推测法等。黑盒测试是程序功能的测试,主要用软件的确认测试。
3、软件测试过程软件测试过程一般按4个步骤进行:单元测试集成测试确认测试系统测试(1)单元测试单元测试是对软件设计的最小单位——模块(程序单元)进行正确性检测的测试。单元测试的目的是发现各模块内部可能存在的各种错误。(1)单元测试单元测试的依据是详细设计说明书和源程序。单元测试的技术可以采用静态分析和动态测试。对动态测试通常以白盒测试为主,辅之以黑盒测试。在进行单元测试时,要用一些辅助模块去模拟与被测模块相联系的其他模块,即为被测模块设计和搭建驱动模块和桩模块。驱动模块相当于被测模块的主程序,它接收测试数据,并传给被测模块,输出实际测试结果;桩模块是模拟其他被调用模块,不必将子模块的所有功能带入。(2)集成测试集成测试是测试和组装软件的过程。它是把模块在按照设计要求组装起来的同时进行测试,主要目的是发现与接口有关的错误。集成测试的依据是总体设计说明书。集成测试所涉及的内容包括:软件单元的接口测试全局数据结构测试边界条件和非法输入的测试等(3)确认测试确认测试的任务是验证软件的功能和性能及其他特性是否满足需求规格说明中确定的各种需求,以及软件配置是否完全、正确。(4)系统测试系统测试是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、支持软件、数据和人员等其他系统元素组合在一起,在实际运行(使用)环境下对计算机系统进行一系列的集成测试和确认测试。
5、程序的调试程序调试的任务是诊断和改正程序中的错误,主要在开发阶段进行。(注意与软件测试区分)程序调试的基本步骤:(1)错误定位;(2)修改设计和代码,以排除错误;(3)进行回归测试,防止引进新的错误。
软件调试可分为静态调试和动态调试。静态调试主要是指通过人的思维来分析源程序代码和排错,是主要的调试手段,而动态调试是辅助静态调试。对软件主要的调试方法可以采用:(1)强行排错法;(2)回溯法;(3)原因排除法。6软件的维护基本概念软件维护的任务:改正错误和缺陷改进设计和适应新的环境增加新的应用范围维护的分类改正性维护诊断和改正错误的过程。
适应性维护是为了和变化了的环境适当地配合而进行的修改软件的活动,是既必要又经常的维护活动。
完善性维护用户提出的一般性的改进意见。
预防性维护为了改进未来的可维护性和可靠性,或为了给未来的改进奠定更好的基础而修改软件。例题讲解软件生命周期中所花费用最多的阶段是
A)详细设计 B)软件编码C)软件测试D)软件维护下列叙述中,不属于软件需求规格说明书的作用的是
A)便于用户、开发人员进行理解和交流
B)反映出用户问题的结构,可以作为软件开发工作的基础和依据
C)作为确认测试和验收的依据
D)便于开发人员进行需求分析下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2022年西南民族大学汉语国际教育专业《现代汉语》期末试卷A(有答案)
- 管理学电子课件
- 广东省深圳市2026年七年级上学期期中调研数学试题附答案
- 剑麻纤维生产工技能安全模拟考核试卷含答案
- 高压成套设备装配配线工岗中沟通技巧考核试卷含答案
- 氯甲烷生产工岗中综合应用考核试卷含答案
- 消防设施操作员岗位综合技能考核试卷含答案
- 2025年职业技能鉴定考试(动物疫病防治员高级/三级)历年参考题库含答案详解
- 2025年质量知识问答题库及答案(可下载)
- 2025年中国注册心理咨询师考试模拟题集与答案
- 大学四史考试题型及答案
- 矿山委托经营协议书
- 《药物研发》课件
- 民用航空RNP运行培训课件
- 超声科护理健康宣教
- 2025年南通汽运实业集团有限公司招聘笔试参考题库含答案解析
- 林木砍伐施工方案
- 多水源联合调度技术
- 慢性肾功能衰竭Chronic Renal Failure-尿毒症-慢性肾炎-病例分析
- 生猪屠宰兽医卫生检验人员理论考试题库及答案
- -物理-湘豫名校联考2023-2024学年高三上学期9月一轮复习诊断考试(一)带答案
评论
0/150
提交评论