[从业资格考试]软件工程基础new.ppt

上传人:sccc 文档编号:4604220 上传时间:2023-04-30 格式:PPT 页数:47 大小:932KB
返回 下载 相关 举报
[从业资格考试]软件工程基础new.ppt_第1页
第1页 / 共47页
[从业资格考试]软件工程基础new.ppt_第2页
第2页 / 共47页
[从业资格考试]软件工程基础new.ppt_第3页
第3页 / 共47页
[从业资格考试]软件工程基础new.ppt_第4页
第4页 / 共47页
[从业资格考试]软件工程基础new.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《[从业资格考试]软件工程基础new.ppt》由会员分享,可在线阅读,更多相关《[从业资格考试]软件工程基础new.ppt(47页珍藏版)》请在三一办公上搜索。

1、第12章 软件工程基础,12.1.1 软件的定义与特点1.软件(software)的定义 计算机软件是计算机系统中与硬件相互依存的另一部分,应包括程序、实现此程序功能所采取的方法、规则以及与其相关的文档和在机器上运行它所需要的数据等。软件在开发、生产、维护合使用等方面与硬件相比存在着明显差异。2.软件具有以下特点(1)软件是功能、性能相对完善的程序系统。软件不仅是程序,还包括说明其功能、性能的说明、文档。(2)软件的生产与硬件不同,没有明显的制造过程,是具有使用性能的软设备。(3)软件的开发、运行对计算机系统具有依赖性。(4)软件是只有过时而无“磨损”的商品。(5)软件开发涉及诸多的社会因素。

2、,12.1 软件工程的基本概念,12.1.2 软件危机与软件工程1.软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的诸如成本、质量、生产率等一系列严重问题。主要表现:(1)软件开发成本和进度难以控制。开发成本高,很少有在预定的成本预算内完成的;进度无法控制,周期拖的很长。(2)软件质量难以保证,出错率高。(3)软件产品维护困难,维护人员和费用不断增加,甚至出现不可维护。(4)软件开发生产率的提高与硬件的发展和应用需求差距大。,2.软件工程 软件工程是采用工程的概念、原理和方法来指导软件的开发和维护,目的是解决软件开发中的问题,提高软件的生产率和质量,促进软件的发展。软件工程包括3个

3、要素:即方法、工具和过程。方法是完成软件工程项目的技术手段;工具用于支持软件的开发、管理和文档生成;过程是对软件开发各个环节的控制、管理。软件工程方法是完成软件工程项目的技术手段,它支持项目计划和估算、系统和软件需求分析、软件设计、编码、测试和维护。软件工程使用的软件工具是人类在开发软件的活动中智力和体力的扩展和延伸,它自动或半自动地支持软件的开发和管理,支持各种软件文档的生成。,12.2.1 软件的生命周期 软件从产生、发展到最后被淘汰的全过程。可大致分为几个阶段:问题定义、可行性研究与制定计划、需求分析、概要设计、详细设计、编码、测试及运行维护。生命周期的主要活动阶段:1.问题定义。确定系

4、统“解决什么问题”,明确任务。2.可行性研究与制定计划。在对软件系统进行调研和可行性论证的基础上制定初步的项目开发计划。3.需求分析。指用户对待开发软件系统功能、行为、性能、设计约束等方面提出来的需求进行分析并给出详细定义。编写软件规格说明书及初步用户手册,提交评审。,12.2 软件生命周期与开发模型,(4)软件设计。分概要设计和详细设计。给出软件的结构图、模块划分、功能的分配及处理流程。(5)编码。完成程序的编码。(6)测试。完成系统的测试工作。(7)运行和维护。软件交付用户运行使用,并在使用中不断维护,根据用户 提出的要求进行必要和可能的扩充与修改。,12.2.2 软件开发模型1.瀑布模型

5、 按照软件生命周期的划分,明确规定每个阶段的任务,并且规定了它们自上而下、互相衔接的固定次序,如同瀑布流水,逐级下落。,使用范围用户需求比较明确,开发技术比较成熟,工程管理比较严格的情况。如 操作系统、编译系统、数据库管理系统、卫星图象处理系统等系统软件。此模型适合于面向过程的软件开发方法。,需求分析,设计,运行、维护,测试,编码,计划,要解决什么问题,是否有可行解?确定目标系统的功能和信息。,确定系统的实现方案及软件模块功能。,采用某种程序设计语言及结构程序设计技术书写程序。,在软件投入运行之前,尽可能多地发现错误,即对重要的执行通路进行测试。,软件交付使用后,为了改正错误或满足需要而修改软

6、件的过程。,全面了解用户需求,了解业务流程,“逻辑模型”-做什么,“物理模型”-怎么做,2.演化(原型)模型 演化模型开发方法不要求从一开始就有一个完整的软件需求定义,往往是用户自己对软件需求的理解还不甚明确,故可以从部分需求定义出发,先建立一个不完全的系统,通过测试运行系统取得经验和反馈,加深对软件需求的理解,进一步完善和扩充系统,如此反复进行,直至软件人员和用户对所设计完成的软件满意为止。,适用范围需求比较模糊或随时间变化的系统。如商业信息处理系统、决 策 支持系统。,用快速原型法开发软件的,概括地确立用户的需求,根据系统的主要功能,建立原型系统,评价、使用原型系统,修改原型系统,转变成最

7、佳的目标系统,软件生存期的演化模型,用户满意否,N,Y,3.螺旋模型 螺旋模型是瀑布模型与原型模型的结合,不仅体现了两个模型的优点,而且还增加了新的“风险分析”部分。由需求定义、风险分析、工程实现、评审4个部分组成。软件开发过程每迭代一次,软件开发就推进一个层次,系统又生成一个版本,而软件开发的时间和成本又有了新的投入。最后总能得到一个用户满意的版本。在实际开发中,只有降低迭代次数,减少每次迭代的工作量,才能降低软件开发的时间和成本。,12.3 软件工程的目标与原则软件工程的目标 在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可

8、操作性且满足用户需求的软件产品。软件工程的原则 为了达到软件工程的目标,在软件开发过程中,必须遵循软件工程的基本原则。基本原则包括:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。,抽象:抽取事物最基本的特性和行为,忽略本质细节。采用自顶向下、逐步细化的方法,控制软件开发过程的复杂性。信息隐蔽:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。模块化;模块是程序中相对独立的成分,一个独立的编程单位,应该有良好的接口定义,模块大小要适中。局部化:要求在一个物理模块内集中逻辑上相互关联的计算资源,保障模块间具有松散的偶合关系,模块内部有较强的内聚性。,小概念:衡量模

9、块独立的两个标准耦合和内聚耦合:指模块之间联系的紧密程度。耦合度越高,则模块的独立性越差。在设计软件时,应该追求尽可能松散耦合的系统。内聚:是对模块内各元素彼此结合的紧密程度的度量。内聚度越高越好。,确定性:软件开发过程中所有的概念的表达应是确定的、无二义性且规范的。一制性:包括程序、数据和文档的整个软件的各模块,应使用已知的概念、符号和术语。完备性:软件系统不丢失任何部分,完全实现系统所需的功能。可验证性:系统应遵循易检查、易评测、易评审的原则,确保系统的正确性。,12.4 软件开发方法 主要有3种:面向过程的方法、面向对象的方法、面向数据的方法。12.4.1 面向过程的方法 1.面向过程的

10、方法简介 面向过程的方法又称为结构化的方法,习惯上称为结构化分析(SA)、结构化设计(SD)、结构化编程(SP)、结构化测试(ST)和结构化维护(SM)。包括面向可维护性和可设计性设计的 Parmas方法和面向数据结构设计的Jackson方法等。支持这些方法的是面向过程的结构化编程语言。基本特点:分析设计中强调“自顶向下”、“逐步求精”,编程实现强调程序的“单入口和单出口”,程序的执行过程不由用户控制,完全由程序控制。此方法在国内曾经十分流行,应用广泛。,2.面向过程方法开发过程(1)制定开发计划 确定要开发软件的目标,并对资源分配、进度安排等作出合理计划书。参加人员:用户、项目负责人、系统分

11、析员等。生成的文档:项目计划书(2)可行性论证 在系统开发前,对整个系统开发的总体目标、时间与周期、人员安排、投资情况等作出客观的分析与评价。产生的文档:可行性报告。可行性分析包括以下三方面内容:经济可行性技术上的可行性社会可行性,(3)需求分析 需求分析的任务:确定系统的要求系统功能要求系统性能要求系统的运行要求系统将来可能提出的要求安全、保密性及可靠性方面的要求 分析系统的数据要求 分析系统的基本元素、数据之间的关系及数据量等,然后导出系统的逻辑模型。修正开发计划 根据在分析过程中获得的对系统的更深入具体的了解,可以比较准确地估计系统的成本和进度,修正以前制定的开发计划。编写需求分析报告,

12、(4)概要设计 概要设计的内容:划分子系统、代码设计、设计规范制定、功能结构图设计、系统物理配置方案设计等。,功能结构图:按功能从属关系画成的图表,图中的每一框称作一个功能。例:库存管理功能结构图,工资管理系统功能结构图,(5)详细设计 详细设计的主要内容:数据存储文件设计、输出设计、输入设计、编写程序模块设计说明书等。输出设计:输出设计的内容:有关输出信息方面的内容,包括使用者、使用目的、报告量、使用周期、有效期、复写份数等;输出信息的内容,包括输出项目、位数、数据形式(文字、汉字);输出介质,如输出到磁盘还是磁带上,输出用纸是专用还是通用白纸,输出设计的原则:方便使用者;要考虑计算机的硬件

13、功能;要考虑原系统的输出格式,如有修改,应与有关部门协商,征得用户同意;对打印字域的大小要根据打印机的最大列数认真设计,并在计算机上试打印出样品,认真修改后才能正式使用;输出表格要考虑到系统发展的需要。例如是否有必要在输出表中留出备用项目。,输入设计:输入设计的内容:输入设计首先要确定输入设备的类型和输入介质。原始单据的格式设计。设计原始单据的原则便于填写,减少填写量,版面排列要有条不紊。便于归档。如单据大小要标准化,留装订位置等。简化和减轻输入操作。采取的措施如采用人机对话方式,输入数据的校核工作由程序保证,减少数据冗余度等。格式保证输入精度。,(6)软件编码 把系统设计的结果转化成某种高级

14、语言书写的程序代码。选择一种好的语言,具有良好的程序设计习惯是软件编码阶段成功的关键。应注意如下几方面:1)程序内部文档 2)语句构造 3)输入输出设计 4)程序的效率,(7)软件测试软件测试的目标:采用特定的测试数据,对软件的各项功能进行测试验证,找出那些尚未发现的错误,提高软件的可靠性。软件测试的原则:测试工作不应由开发软件的个人或小组承担,应按测试计划,由特定的测试小组来完成。软件测试的方法:黑盒测试法。把程序看成是一个黑盒子,完全不考虑程序的内部结构和处理过程,只对程序的接口进行测试,检查程序的功能是否适当的接受数据输入并能产生正确的输出信息。白盒测试法。把程序看成一个透明的白盒子,要

15、求测试人员完全了解程序内部的结构和处理过程。按照程序内部的逻辑来测试,检查程序中的每条路是否都能正确工作。测试数据的种类:正常数据 异常数据 错误数据,(8)软件维护定义:指在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。软件维护的必要性:改正运行中新发现的软件错误和设计上的缺陷。适应软件功能需求的变化,增加软件的功能,提高软件的性能。使已运行的软件适应特定的硬件、软件的工作环境或已变动的数据文件。使软件的功能得到必要的扩充。软件维护分为两类:面向缺陷维护(程序级维护)、面向功能性维护(设计级维护)。,缺陷性维护的条件:软件产品能够正常运转,可以满足用户的功能需求,个别地方

16、存在缺陷,用户感到不方便,不影响大局。维护的方法只需修改程序代码,不用修改数据结构(设计)。功能性维护的条件:软件产品在功能、性能、接口上存在某些不足,不能满足用户的需要,需要增加某些功能。不维护,就不能正常运转。维护的方法是不但要修改数据结构,又要修改编码。,20年来软件维护成本的变化:,人力资源分布:世界上90的软件人员在从事系统的维护工作;10开发新系统。,3.结构化分析与结构化设计方法简介 结构化分析方法简称SA方法,是面向数据流进行需求分析的方法。该方法使用数据流图(DFD)和数据字典(DD)的描述工具,适合于数据处理类型软件的需求分析。(1)数据流图:是一种能全面地描述信息系统逻辑

17、模型的主要工具,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储情况。外部实体 数据流 处理(功能)数据存储,库存管理数据流程图,(2)数据字典 建立数据字典是为了对数据流图上各个元素作出详细的定义和说明。DFD配以DD,就可以从图形和文字两个方面对系统的逻辑模型进行描述,从而形成一个完整的说明。数据字典的内容包括:数据项、数据结构、处理逻辑、数据存储、外部实体。,数据存储定义数据存储编号:S1数据存储名称:库存台帐简 述:存放产品的库存量和单价数据存储组成:产品代码+产品名称+单价+库存量关 键 字:产品代码相关联的处理:P1、P2,结构化设计方法(Structure Desi

18、gn)面向数据流的设计方法,可以很方便地从数据流图表示的信息转换成系统结构图。,基本成分:,A,B,表示模块,表示已有模块,表示模块A调用模块B,表示数据信息,表示控制信息,表示调用,面向对象方法具有以下四个要点认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。所有对象都可划分成各种对象类(class),每个类都定义了一组数据和方法。按照子类与父类的关系,可把若干个对象类组成一个层次结构的系统,通常下层的子类完全具有上层父类的特性,这种现象称为继承。对象彼此之间仅能通过传递消息互相联系。,12.4.2 面向对象的开发方法,面向对象程序设计的基本

19、概念,对象:描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。每个对象就是一个微型程序,有自己的数据、操作、功能和目的。对象=数据+方法(行为)标识:对象的名称以区别其他对象数据:对象的属性或状态方法:作用于数据上的操作以电视机为例数据:种类、品牌、外观、大小、颜色、产地等。方法:有打开、关闭、调节亮度等行为或操作。,面向对象的软件开发过程,面向对象分析(OOA)面向对象设计(OOD)面向对象编程(OOP)面向对象测试(OOT),1.面向对象分析(OOA),OOA包括需求分析和需求模型化两个部分。其主要作用是明确用户的需求,并用标准化的面向对象模型来规范地表达这一需求

20、,最后形成面向对象的分析模型。它是系统设计的依据。分析主要明确干什么(What?),面向对象分析的主要内容,识别出问题域中的对象,并分析它们之间的相互关系,最终建立起问题域的对象模型、动态模型和功能模型。其中,对象模型是最基本、最重要、最核心的。,OOA 的基本步骤,确定问题域 识别对象和类 确定对象的属性 确定对象的服务 识别对象类之间的关系,对象模型,对象模型是描述系统静态结构的工具。它用对象模拟客观世界中的实体,并将实体之间的关系映射到对象的关系上。,描述对象模型的图形符号,表示“关系”的图形符号,“整体-部分”关系,“一般-特殊”关系,“关联”关系,“关联”关系反映对象之间相互依赖、相

21、互作用的关系。,教师与属于他的书之间的关联关系,链属性,一家公司的对象模型,参加,员工,公司,雇用 解雇,名字电话号码主要产品 地址,姓名 地址身份证号 工资,为之工作,工人,经理,项目,项目名 预算 优先级,预算,主持,部门名,部门,产品,产品名,预算,成本,价格,报价,生产,管理,1+,1+,1+,1+,0,1,1+,2.面向对象设计(OOD),(1)OOD的主要任务 把OOA阶段得到的问题域需求转变成符合要求 的、抽象的系统实现方案。OOD分为两个阶段:系统设计:确定实现系统的策略和目标系统的高层结构对象设计:确定解空间中的类、关联、接口形式及实现服务的算法设计主要明确怎么做(How?)

22、,(2)设计阶段的主要内容,设计问题域子系统设计人-机交互子系统设计任务管理子系统设计数据管理子系统设计类中的服务设计关联,3.面向对象实现(编程)(OOP),选择一种支持面向对象的程序设计语言实现 OOD 的设计结果。选择语言应考虑的因素:将来能否占主导地位 可重用性 类库 开发环境,小 结,面向对象的系统开发基本经历两个阶段:其一:“WHAT”,既研究问题域;其二:“HOW”,既研究如何实现目标;特征与趋势:分析与设计更加紧密难分,程序设计比重愈来愈小(主要由于重用性提高),系统测试和维护简化,更易于扩充,开发模型愈加注重对象之间交互能力的描述。传统结构化方法:依然有其可取之处,应各自取长补短,使面向对象的系统开发更加合理、完善。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号