版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章软件工程第8章软件工程软件工程”一词是由北大西洋公约组织(NorthAtlanticTreatyOrganization,NATO)的计算机科学家在1968年联邦德国召开的国际会议上首次提出来的。8.1软件工程概述自从1946年世界上第一台通用电子数字积分计算机问世以来,由软件和硬件组成的计算机被广泛地应用于科学计算、数据处理、工程设计、控制、通信、设计、制造和教育等涉及人们日常生活的广大领域,成为减轻人类智力和体力劳动的有效工具,帮助完成许多人类无法完成的任务。8.1.1软件的定义1软件的定义软件是一系列按照特定顺序组织的计算机指令和数据的集合。软件不仅包括可以在计算机上运行的程序,与这些程序相关的文档一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。2.软件的特点(1)软件是一种逻辑产品,而不是具体的物理实体,具有抽象性。(2)软件产品的生产主要包括开发、研制过程,没有明显的制造过程。(3)软件产品在使用过程中,不存在磨损、消耗、老化等问题。(4)软件产品的开发主要需要进行脑力劳动,还未完全摆脱人工开发方式,大部分产品是“定做”的,生产效率低。2.软件的特点(5)软件产品的成本相当昂贵,软件的研制需要投入大量的人力、物力和资金,生产过程中还需对产品进行质量控制,对每件产品进行严格的检验。(6)软件对硬件和环境有不同程度的依赖性,为了减少这种依赖性,在软件开发中提出了软件的可移植性问题。(7)软件是复杂的。软件是人类有史以来生产的复杂度最高的工业产品,软件是一个庞大的逻辑系统。3.软件的发展(1)程序设计阶段(1946—1956年)在这一时期,软件的生产主要是个体手工劳动的生产方式。(2)程序系统阶段(1957—1967年)这个时期,语言工具是高级语言。在程序设计中开始提出结构化方法,采用“生产作坊方式”开发软件。(3)软件工程阶段(1968年至今)这个阶段的主要任务是为了克服软件危机,适应软件发展的需要,而采用“工程化的生产”方式。8.1.2软件危机软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。软件危机主要包含两方面的问题:一是如何开发软件以满足软件日益增长的需求;二是如何维护数量不断增长的已有软件。2.软件危机的典型表现形式(1)已完成的软件系统时常出现功能、性能不满意或出现故障等现象。(2)软件产品的可靠性和质量安全等方面时常达不到标准。软件产品质量难以保证,甚至在开发过程中就被迫中断。(3)软件开发管理差,对成本和进度的估计时常不准确。(4)系统时常出现无法维护、升级或更新现象。2.软件危机的典型表现形式(5)软件开发没有标准、完整、统一规范的文档资料。计算机软件不仅只是程序,还应当有一整套规范的文档资料和售后服务。(6)软件开发效率低,无法满足计算机应用迅速发展与提高的实际需要。(7)软件研发成本在计算机系统总成本中所占的比例逐年上升。3.产生软件危机的主要原因(1)软件开发规模逐渐变大、软件复杂度和软件的需求量不断增加。(2)没有按照工程化方式运作,开发过程没有统一的标准和准则、规范的指导方法。(3)软件需求分析与设计考虑不周,软件开发、维护和管理不到位。(4)开发人员与用户或开发人员之间互相的交流沟通不够,文档资料不完备。(5)软件测试调试不规范不细致,提交的软件质量不达标。(6)忽视软件运行过程中的正常维护和管理。8.1.3软件工程的定义软件工程是指导计算机软件开发和维护的一门工程学科,是计算机学科中一个重要分支,强调采用工程化的思想、原理、技术和方法来开发与维护软件,把相关的管理方法和最先进的开发技术结合起来,解决软件生产中的问题。8.2软件开发模型模型是为了理解事物而对事物做出的一种抽象。建模是软件工程最常使用的一种技术。软件开发模型是软件开发全部过程、活动和任务的结构框架,是为整个软件周期建立的模型。也称软件过程模型或软件生存周期模型。常用的开发模型有瀑布模型、原型模型、增量模型和螺旋模型。8.2.1软件生存周期软件生存周期可划分成四个活动时期:软件分析时期、软件设计时期、编码与测试时期及软件运行与维护时期8.2.2瀑布模型瀑布模型也称为生存周期模型或线性顺序模型,是W.Royce于1970年首先提出来的。这种模型是将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型,包括问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试和维护。瀑布模型规定了由前至后、相互衔接的固定次序,恰如奔流不息顺流而下的瀑布,如下图所示。8.2.2瀑布模型8.2.3原型模型原型(Prototype)是首先快速建立一个能够反映用户主要需求的原型系统,它反映了系统性质(如功能、计算结果等)的一个选定的子集。一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。原型模型从软件工程师与客户的交流开始,其目的是定义软件的总体目标并标注需求。然后快速制订原型开发的计划,确定原型的目标和范围,采用快速设计的方式进行建模,并构建原型。8.2.3原型模型8.2.4增量模型增量模型也称为渐增模型,是瀑布模型的顺序特征和原型模型的迭代特征相结合的产物,是一种非整体开发的模型。增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件的一个可发布的“增量”版本,后一个版本是对前一版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。8.2.4增量模型8.2.5螺旋模型螺旋模型加入了瀑布模型与增量模型都忽略了的风险分析。它是一种风险驱动的模型。螺旋模型是一种迭代模型,它把开发过程分为几个螺旋周期,每迭代一次,螺旋线就前进一周,螺旋模型沿着螺线旋转。在四个象限上分别表达四个方面的活动,即:制定计划:确定软件目标,选定实施方案,明确项目开发的限制条件。风险分析:评价所选的方案,识别风险,消除风险。工程实施:实施软件开发,验证工作产品。客户评估:评价开发工作,提出修正建议。8.2.5螺旋模型8.3软件开发方法
软件开发模型是指开发软件项目的总体过程思路。软件开发方法是一种使用早已定义好的技术集及符号表示习惯组织软件生产过程的方法。8.3.1结构化方法结构化方法由结构化分析、结构化设计和结构化程序设计构成,也称Yourdon方法。它适用于一般数据处理系统,是一种较流行的软件开发方法。结构化分析:按照系统中数据处理的流程,用数据流图来建立系统的功能模型。结构化设计:将数据流图转换为软件的体系结构,用软件结构图来建立系统的物理模型。
结构化程序设计:根据结构程序设计原理,将每个模块的功能用相应的标准控制结构表示出来。8.3.2面向对象的开发方法面向对象开发的基本出发点是尽可能按照人类认识世界的方法和思维方式来分析和解决问题。面向对象的开发方法的重点是放在软件生存周期的分析阶段。因为面向对象方法在开发的早起就定义了一系列面向问题领域的对象,即建立了对象模型,整个开发过程统一使用这些对象,并不过分充实和扩展对象模型。8.4软件开发过程软件开发过程指按照项目的进度、成本和质量限制,开发和维护满足用户要求的软件所必需的一组有序的软件开发活动集合。主要包括可行性研究、需求分析、总体设计、详细设计、编码实现、测试和维护等过程。8.4.1可行性研究开发一个基于计算机的系统通常都受到资源(人力、财力、设备等)和时间上的限制,可行性分析主要从经济、技术和法律等方面分析所给出的解决方案是否可行,以及能否使用限定的资源在规定的时间内完成。1.经济可行性分析2.技术可行性分析3.法律可行性分析8.4.2需求分析软件需求分析是软件开发期的第一个阶段,基本任务是准确地回答“系统必须完成哪些工作”这个问题。在实际工作中,通常把软件需求细化为三个不同的层次:功能需求性能需求领域需求8.4.2需求分析软件需求各层次之间的关系2.需求分析的常用方法(1)功能分解方法(2)结构化分析方法(3)信息建模方法(4)面向对象方法3.需求分析的描述工具结构化分析(StructuredAnalysis,简称SA)是面向数据流的需求分析方法,是20世纪70年代后期被提出并得到广泛的应用。结构化分析就是使用数据流图、数据字典、结构化语言、判定树和判定表等工具,来建立一种新的称为结构化说明书的目标文档。3.需求分析描述工具(1)数据流图数据流图(DFD)是一种图形化技术,用于表示系统逻辑模型,它以直观的图形清晰地描述了系统数据的流动和处理过程。是分析人员与客户之间极好的沟通方式。3.需求分析描述工具(2)数据字典
数据字典(DataDictionary,DD)是软件需求分析阶段的另一个有力工具。数据流图描述了系统的分解过程,直观且形象,但是没有对图中各个成分进行准确且完整的定义。数据字典是为数据流图中的每一个数据流、文件、加工以及组成数据流或文件的数据项做出说明。3.需求分析描述工具数据字典包含四类条目:数据流、数据存储、数据项和数据加工。数据字典的使用符号:=:表示被定义为或等价于或由……组成。
+:表示“与”(和),用来连接两个数据元素;[…|…]:表示“或”,
对“[]”中列举的数据元素可任选其中某一项。{…}:表示“重复”,对{}中内容可以重复使用。m{…|…}n:表示{}中内容至少出现m次,最多出现n次。(…):表示“可选”,对“()”中的内容可选、可不选;3.需求分析描述工具(3)结构化语言
结构化语言是一种介于自然语言和形式化语言之间的半形式化语言。它是在自然语言的基础上加入了一定的限制,通过使用有限的词汇和有限的语句来严格地描述加工逻辑。3.需求分析描述工具结构化语言中的三种基本结构的描述方法是:(1)顺序结构,由自然语言中的简单祈使语句序列构成。(2)选择结构,通常采用IF…THEN…ELSE…ENDIF结构和CASE…OF…结构。(3)循环结构,通常采用DOWHILE…ENDDO结构和REPEAT…UNTIL结构。8.4.3总体设计总体设计又称为概要设计,经过需求分析阶段的工作,系统必须完成哪些工作已经清楚了,总体设计阶段则应该决定如何完成。总体设计的基本目标就是回答“概括的话,系统该如何实现?”这个问题。这个阶段主要内容是设计系统的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。1.总体设计的内容(1)设想供选择的方案(2)选取合理的方案(3)推荐最佳方案(4)功能分解(5)设计软件结构(6)设计数据库(7)制定测试计划(8)书写文档(9)审查和复审2.总体设计原理在进行总体设计的过程中,应该遵循守模块化、抽象化、逐步求精、信息隐藏和局部化、模块独立性这五方面的原理。2.总体设计原理一般使用两个定性标准来衡量模块的独立程度:耦合和内聚。耦合用于衡量不同模块彼此间互相依赖的紧密程度;内聚用于衡量一个模块内部各个元素彼此结合的紧密程度。2.总体设计原理1耦合耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。在软件设计中应该追求实现尽可能松散耦合的系统。2.总体设计原理2内聚内聚用于衡量一个模块内部各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。内聚按紧密程度(强度)从低到高排列的次序为偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。8.4.4详细设计总体设计是完成软件整体结构的设计,详细设计是对总体设计的细化,需要详细设计每个模块实现算法所需的局部结构。详细设计工具用来描述每个模块执行的过程,可以分为图形工具、表格工具和语言工具三类。(1)图形工具:包括传统的程序流程图、盒图和问题分析图(PAD图)等。(2)表格工具:包括判定表、判定树等。
(3)语言工具:过程设计语言(PDL)等。1.程序流程图程序流程图又称为程序框图,它是一种最古老、应用最广泛,且最有争议的描述详细设计的工具。它易学、表达算法直观。缺点是不够规范,特别是使用箭头使质量受到很大影响,因此必须加以限制,使其成为规范的详细设计工具。1.程序流程图2.盒图(N-S图)为了克服流程图的缺陷,1973年,由纳西和施奈得曼提出来的,要求流程图都应由三种基本控制结构顺序组合和完整嵌套而成,不能有相互交叉的情况,这就是N-S图。它体现了结构化设计的精神。是目前过程设计中广泛使用的一种图形。2.盒图(N-S图)3.问题分析图(PAD图)PAD是问题分析图(problemanalysisdiagram)的英文缩写,在1977年被研究与开发的。它使用二维树状结构图来描述程序的逻辑,将这种图翻译成程序代码比较容易。是一种十分有前途的表达方法。PAD仅具有顺序、选择、循环三类基本成分,其中选择和循环又有几种形式。3.问题分析图(PAD图)
4.过程设计语言(PDL)PDL是一种用于描述功能模块的算法设计和加工细节的语言。PDL是一种“混杂式语言”,语法规则分为“外语法”和“内语法”。其外层语法是确定的,而内层语法则故意不确定。外层语法描述控制结构和数据结构,所以是确定的,而内层语法可使用自然语言的词汇描述具体操作。4.过程设计语言(PDL)例如,在PDL描述ifXisnotnegativethenreturn(squarerootofXasarealnumber);elsereturn(squarerootof-Xasanimaginarynumber);8.4.5编码实现经过软件的总体设计和详细设计后,便得到了软件系统的结构和每个模块的详细过程描述,接着便进入了软件的制作阶段,或者称编码阶段,也就是通常人们惯称的程序设计阶段。8.4.5编码实现程序设计语言选择的理想标准主要有以下几点。(1)所选用的高级语言应该有理想的模块化机制,以及可读性好的控制结构和数据结构。(2)语言特点应该使编译程序能够尽可能多地发现程序中的错误。(3)选用的高级语言应该有良好的独立编译机制。8.5软件质量软件质量可定义为“软件与明确和隐含定义的需求相一致的程度”,是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准,以及所有专业开发的软件都应具有的隐含特征的程度。8.5软件质量定义强调以下三点。(1)软件需求是度量软件质量的基础,与需求不一致的软件的质量不高。(2)如果没有遵守软件开发准则,几乎肯定会导致软件的质量不高。(3)如果满足明确描述的需求,但却不满足隐含的需求,那么软件的质量仍然值得怀疑。8.5.1软件可靠性可靠性(Reliability)是产品在规定的条件下和规定的时间内完成规定功能的能力,它的概率度量称为可靠度。软件可靠性是软件系统的固有特性之一,它表明了一个软件系统按照客户的要求和设计的目标执行其功能的正确程度。8.5.2软件质量的度量软件产品的度量主要针对作为软件开发成果的软件产品的质量而言,独立于其被开发过程。软件的质量由一系列质量要素组成,每一个质量要素又由一些衡量标准组成,每个衡量标准又由一些量度标准加以定量刻画。质量度量贯穿于软件工程的全过程及软件交付之后。8.5.2软件质量的度量软件质量可分解成六个要素,这六个要素是软件的基本特征。(1)功能性
(2)可靠性(3)易使用性(4)效率
(5)可维护性(6)可移植性8.5.3软件评审软件评审包括:(1)管理评审:高层管理者针对质量方针和目标,对质量体系的现状和适应性进行正式评价。(2)技术评审:对软件及各阶段的输出内容进行评估。(3)文档评审:分为格式评审和内容评审。(4)过程评审:通过对流程监控,保证软件质量组织制定的软件过程在软件开发中得到遵循。8.6软件维护软件系统被开发完成并交付客户使用后,就进入软件的运行与维护阶段。软件维护阶段是软件生存周期中时间最长的一个阶段,也是耗费的精力和费用最多的一个阶段。8.6.1软件维护的定义软件维护指软件系统被交付客户使用后,为了改
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中国信息通信科技集团有限公司人员招聘笔试参考题库及答案详解
- 2026年中国石油集团海洋工程有限公司人员招聘笔试模拟试题及答案详解
- 2026年内蒙古产权交易中心有限责任公司人员招聘笔试备考题库及答案详解
- 2026年中国电信集团有限公司人员招聘笔试备考题库及答案详解
- IEC 60335-2-402022 EXV 家用和类似用途电器.安全.第2-40部分电热泵、空调器和除湿器的特殊要求标准立项发展报告
- 乡村健身步道项目规划设计方案
- 配电房智能监控运维管理SOP
- 数字地形测量航测辅助测图规范
- 天然气门站建设项目水资源论证报告书
- 边坡支护工程施工规范手册
- 浙江水利水电学院《高等数学Ⅱ》2025-2026学年期末试卷(A卷)
- T/CAPE 11005-2023光伏电站光伏组件清洗技术规范
- 美术治疗方案
- (高清版)DB62∕T 4759-2023 灌区玉米覆膜节水栽培技术规程
- 浙教版小学劳动四年级上册教学计划、教学设计及教学总结
- 律师事务所廉政风险点及防控措施
- 全国职业院校技能大赛高职组(研学旅行赛项)备赛试题及答案
- (高清版)DB52∕T 1723-2023 城市道路占道作业交通组织与安全设施设置要求
- 沪科版八年级数学上册全册教案教学设计(含教学反思)
- 零星工程维修 投标方案(技术方案)
- 幼儿园如何家长会培训
评论
0/150
提交评论