软件工程-软件工程实践第二讲.ppt
《软件工程-软件工程实践第二讲.ppt》由会员分享,可在线阅读,更多相关《软件工程-软件工程实践第二讲.ppt(140页珍藏版)》请在三一办公上搜索。
1、软件教研室,本讲依据传统软件工程的生命周期划分,详细介绍软件项目在开发过程中的主要环节和各种主要描述方法。涉及在软件计划与开发过程中必须考虑的一些最广泛的概念、原理、方法和工具。主要涉及一些软件过程深层次的技术细节和过程。,第二讲 软件工程实践,软件教研室,软件工程的知识体系,软件工程知识体系,软件需求,软件设计,软件测试,软件维护,可行性研究,软件教研室,软件工程实践的各个环节的本质,1.理解问题(通讯和分析);2.计划一个解决方案(建模和软件设计);3.执行计划(编写代码);4.检查结果的精度(测试和品质保证),软件教研室,对需求内容进行初步的分析,确定解决问题的可能性,分析不同解决方案的
2、优劣,并提出建议。其本质实际上就是一个粗略的系统分析和设计过程,通常由客户完成。,可行性研究的目的,软件教研室,可行性研究的类型,研究型项目的可行性研究分析委托型可行性研究分析;自主开发性可行性研究分析;,软件教研室,可行性研究解决问题过程的本质,当前系统,物理模型,逻辑模型,逻辑模型,物理模型,目标系统,模型化,抽象化,怎么做,做什么,实例化,具体化,导出,理解需求,表达需求,软件教研室,问题定义,了解系统应解决的问题,这些问题是如何提出的设想这些问题如何解决才能满足要求了解问题的结构,软件教研室,设计方案选择,1.市场分析;2.软件环境分析;3.硬件环境分析;4.功能分析;5.动态分析;6
3、.压力分析;,软件教研室,方案评估,1.项目效益评估;2.社会效益评估;3.项目成本核算;4.工作计划评估;5.项目风险评估;,可行性研究报告,可行性研究报告研究型示例,招标文件,软件教研室,思考题,加油站基础信息管理系统,是一个定位于加油站基本信息、油机信息、油罐信息、加油站督查情况、督查图片、加油站电子地图等信息查询、维护的管理系统。该管理系统放在安徽省石油公司内网上,采用网站的形式使用该管理系统,有助于各分公司随时查看加油站基础信息,便于对加油站信息的统计、查询等。全系统共分为加油站信息管理、人的管理、费用管理三个大块。,编写可行性研究报告,软件教研室,系统流程图实例,软件教研室,面向数
4、据流的模型-数据流图,数据流图是一种图形化技术,它描述信息流和数据从输入移动到输出的过程中所经受的变换,Computer basedsystem,input,output,软件教研室,数据流图的主要图形元素,软件教研室,数据流与数据加工之间的关系,软件教研室,数据流的分层描述,为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统,软件教研室,编写数据流图的步骤一最高抽象层,抽取数据的源点和终点信息分析问题描述,重点提取问题描述中源点和终点信息,同时分析与源点和终点有关的各类高抽象度的加
5、工和数据流以及数据存储信息。,处理顺序是:1.首先抽取数据的源点和终点信息2.抽取加工点的信息3.最后考虑数据流和数据存储信息(数据流图与程序流不同,程序流图表示的是控制,而数据流图描述的是数据的流向。),软件教研室,编写数据流图的步骤一细化处理,进一步分解数据流图的加工,数据流和储存信息分析问题描述,重点细化加工点,处理顺序是:1.分析上层加工点的信息,细化加工点信息2.分析数据流和数据存储信息,细化数据流和数据存储信息3.对加工点、数据流和数据存储进行多层次的优化,软件教研室,数据流图绘制的准则,细化结束的准则:是当涉及到如何具体实现一个功能时就不应该再细化了。,细化一致性准则:当把一个处
6、理细化为一些子处理时,细化前和细化后的数据流必须相同。,层次编号准则:对数据流图中的元素进行编号处理时应该能够反映出元素的层次和分解关系。,数据分解简化性准则:数据流图中的元素不能太多,如果太多就需要进行分层描述处理。,软件教研室,创建数据流图方法-语法分析方法,所谓语法分析方法是通过对软件需求的文本描述的分析,选取出其中的动词和名词。其中动词通常表示为应用中的加工过程描述;而名词通常被描述为外部实体(方框)、数据或控制对象(箭头)、或数据存储(双线表示)。这些名词和动词之间是相互关联的。,软件教研室,语法分析方法实例,加油站电子帐表系统是根据加油站日常工作流程开发,适用于加油站进、销、付、存
7、管理的服务模块。系统可以根据加油站录入的日常顾客消费数据,结合油库的进货数据,自动生成各种报表和帐表。,软件教研室,加油站电子帐表系统这个数据流图只是一个高层的系统逻辑模型,它反映了目标系统要实现的功能0层:,数据流图实例,软件教研室,1层描述,软件教研室,2层描述,软件教研室,3层销售细化描述,软件教研室,数据词典,数据字典是关于数据信息的集合,也就是对数据流图中包含的所有元素的定义的集合。,软件教研室,数据词典实例-银行存折,软件教研室,数据词典实例-银行存折,软件教研室,数据词典实例-银行存折,存折格式存折户名所号帐号开户日性质(印密)1存取行50户名2字母24所号“001”.“999”
8、帐号“00000001”.“99999999”开户日年月日性质“1”.“6”注:“1”表示普通户,“5”表示工资户等印密“0”注:印密在存折上不显示存取行日期(摘要)支出存入余额操作复核,软件教研室,数据字典实例,加油站员工信息表,软件教研室,成本估算的三种技术,1.代码行技术:代码行技术的优缺点,估算代码行比较困难.如果有类似的经历也许可以比较简单但成本有高估的可能;2.任务分解技术:这是目前应用比较多的一种方法;3.自动估计成本技术;,软件教研室,成本/效益分析的方法,1.货币的时间价值;2.投资回收期;3.纯收入;4.投资回收率;,软件教研室,思考题,1.可行性研究的意义在哪里?2.可行
9、性研究的粒度如何?3.可行性研究的种类和可行分析的不同侧重点?4.数据流图是否仅仅应用于可行研究?5.甲古文公司的产品BC4J怎么念?,软件教研室,需求分析的任务,确定软件设计的约束、软件同其它系统元素的接口细节和逆向需求定义软件的其它有效性需求,如出错处理等基本要求需求分析研究的对象是软件项目的用户要求准确地表达被接受的用户要求确定被开发软件系统的系统元素将功能和信息结构分配到这些系统元素中建立四类模型(数据模型、功能模型、行为模型和层次模型),软件教研室,需求分析的数据流图,软件教研室,需求任务的过程模型,需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做
10、什么”的问题。通常软件开发项目是要实现目标系统的物理模型。目标系统的具体物理模型是由它的逻辑模型经实例化,即具体到某个业务领域而得到的,软件教研室,获取需求的方法,获取需求的方法,访谈,调查表,情景分析,功能分析,数据流图,数据字典,IPO图,使用说明书,建立快速原形,第四代开发语言,可重用的软件构件,形式化规格说明,软件教研室,其它获取需求的方法,头脑风暴:其基本概念是指一组人沉迷于一种“自由发言”的境界中,在无约束的环境下进行某个方面的自由思考,目的是产生新的想法。人种论:要求观察者只有靠完全溶入到工作中,才能彻底地了解各种实践、问题和所关注的事物等。需求剥离:当存在一份客户的需求文档或规
11、格说明时,或者存在一份可能相似的、原有产品的规格说明书时,使用需求剥离技术将单个需求可以从原始中抽取(剥离)出来,并加入到新的文档中。,软件教研室,分析模型的介绍,主要创建的模型是:数据模型:主要采用ERD图描述,描绘数据对象及数据对象之间的关系。功能模型:主要采用数据流图描述,描述当数据在软件系统中移动时被变换的逻辑过程,指明系统具有的变换数据的功能。行为模型:采用状态转换图描述,指明了作为外部事件结果的系统行为。为此,状态转换图描述了系统各种行为模式(状态)和在不同状态间转换的方式。,软件教研室,分析模型的关系,软件教研室,数据模型的描述工具-实体关系图,软件教研室,实体关系图中的主要元素
12、数据对象,实例:如操作的人员;报表;打印;报警信息;地理位置等,数据对象是对软件必须理解的复合信息的抽象。所谓复合信息是指具有一系列不同性质或属性的事物。总之可以由一组属性来定义的实体都可以被认为是数据对象。,软件教研室,实体关系图中的主要元素数据属性,实例:如汽车的属性(生产厂家、品牌、型号、发动机号等),数据属性定义了对象的性质。通过这些性质可以标识该系统具有的特点。,软件教研室,实体关系图中的主要元素数据联系,联系的方式:1.一对一(1:1)2.一对多(1:N)3.多对多(M:N),数据联系定义了数据对象之间相互连接的方式。,软件教研室,数据模型的描述工具-实体关系图,建立ER图的过程:
13、第1层提取所有的实体(对象)和对象之间的关第2层建模他们之间关系的整体模型第3层进一步描述所有实体、关系的属性信息,软件教研室,数据模型的描述工具-实体关系图,软件教研室,功能模型的描述工具-数据流图,数据流图让软件工程师能够建模同时建模信息模型和功能模型。,软件教研室,数据流图描述IC开发票需求,软件教研室,行为模型的描述工具-状态转换图,状态转换图是描述系统的状态如何相应外部的信号进行推移的一种图形表示。,注:状态迁移图的优点:状态之间的关系能够直观地捕捉到由于状态迁移图的单纯性,能够机械地分析许多情况,可很容易地建立分析工具,初始事件,结束事件,软件教研室,进程状态转换图,软件教研室,密
14、码验证状态转换图,软件教研室,其他图形-层次方框图,软件教研室,其他图形-,Warnier图;IPO图(主要作为算法描述图);,软件教研室,需求文档的介绍,主要的文档是:软件需求说明书;数据要求说明书;初步的用户手册;修改、完善与确定软件开发实施计划;,软件教研室,需求验证,所谓需求验证是指对通过需求分析过程获得的各类需求描述由第三方进行严格的综合再分析。其目的是提高软件品质,降低开发成本。,软件教研室,需求验证的方面,一般特别需要验证的方面有:(1)一致性验证:主要是分析需求描述中是否存在一些需求冲突问题;(2)完整性验证:需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能;(3
15、)现实性验证:验证需求内容的可实现性;(4)有效性验证:验证需求对于实际的问题解决确实是正确有效的;,软件教研室,其他需求文档介绍,需求说明书模板美国公司的需求文档日本公司的需求文档,软件教研室,第三节 总体设计,什么是设计Mitch Kapor(美国莲花公司的创始人,Lotus1-2-3)给出一个比喻。所谓设计就象一个人用一只脚站在两个世界中(一个是技术的世界,而另一个是人和人类目标的世界),并且这个人希望将这两个世界结合到一起。,软件教研室,软件设计的任务(技术观点),根据用信息域表示的软件需求,以及功能和性能需求,进行:,数据设计:侧重于数据结构的定义系统结构设计:定义软件系统各主要成份
16、之间的关系过程设计:是把结构成份转换成软件的过程性描述。在编码步骤,根据这种过程性描述,生成源程序代码,然后通过测试最终得到完整有效的软件,软件教研室,软件设计的任务(管理观点),从工程管理的角度来看,软件设计分两步完成。,概要设计:将软件需求转化为数据结构和软件的系统结构。(概要设计对应了技术观点中的系统结构设计)详细设计:即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。(详细设计对应了技术观点中的数据设计和过程设计),软件教研室,软件设计过程,1.制定规范在进入软件开发阶段之初,首先应为软件开发组制定在设计时应该共同遵守的标准,以便协调组内各成员的工作。,阅读和理解软件
17、需求说明书,确认用户要求能否实现,明确实现的条件,从而确定设计的目标,以及它们的优先顺序根据目标确定最合适的设计方法规定设计文档的编制标准规定编码的信息形式,与硬件,操作系统的接口规约,命名规则等,软件教研室,软件设计过程,2.软件系统结构的总体设计基于功能层次结构建立系统,采用某种设计方法,将系统按功能划分成模块的层次结构确定每个模块的功能建立与已确定的软件需求的对应关系确定模块间的调用关系确定模块间的接口评估模块划分的质量,软件教研室,软件设计过程,3.处理方式设计确定为实现系统的功能需求所必需的算法,评估算法的性能,确定为满足系统的性能需求所必需的算法和模块间的控制方式周转时间响应时间吞
18、吐量精度确定外部信号的接收发送形式,软件教研室,软件设计过程,4.数据结构设计,确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计确定输入,输出文件的详细的数据结构结合算法设计,确定算法所必需的逻辑数据结构及其操作确定对逻辑数据结构所必需的那些操作的程序模块(软件包)限制和确定各个数据设计决策的影响范围若需要与操作系统或调度程序接口所必须的控制表等数据时,确定其详细的数据结构和使用规则数据的保护性设计:在软件设计中就插入自动检错,报错和纠错的功能一致性设计:保证软件运行过程中所使用的数据的类型和取值范围不变;在并发处理过程中使用封锁和解除封锁机制保持数据不被破坏
19、;冗余性设计:针对同一问题,由两个开发者采用不同的程序设计风格不同的算法设计软件,当两者运行结果之差不在允许范围内时,利用检错系统予以纠正,或使用表决技术决定一个正确结果。,软件教研室,软件设计过程,5.可靠性设计可靠性设计也叫做质量设计。在运行过程中,为了适应环境的变化和用户新的要求,需经常对软件进行改造和修正。在软件开发的一开始就要确定软件可靠性和其它质量指标,考虑相应措施,以使得软件易于修改和易于维护,软件教研室,概要设计文档,概要设计阶段完成时应编写以下文档:,概要设计说明书数据库设计说明书用户手册制定初步的测试计划,软件教研室,概要设计的评审,可追溯性:确认该设计是否复盖了所有已确定
20、的软件需求,软件每一成份是否可追溯到某一项需求接口:确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制范围之内风险:确认该设计在现有技术条件下和预算范围内是否能按时实现实用性:确认该设计对于需求的解决方案是否实用技术清晰度:确认该设计是否以一种易于翻译成代码的形式表达可维护性:确认该设计是否考虑了方便未来的维护质量:确认该设计是否表现出良好的质量特征各种选择方案:看是否考虑过其它方案,比较各种选择方案的标准是什么限制:评估对该软件的限制是否现实,是否与需求一致其它具体问题:对于文档、可测试性、设计过程.等进行评估,软件教研室,软件设计原理
21、,核心概念:软件结构;程序结构;模块化;信息隐蔽;模块的独立性;自顶向下,逐步细化;抽象化;,软件教研室,软件结构,软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标系统的模型出发,对整个问题进行分割,使其每个部分用一个或几个软件成份加以解决,整个问题就解决了,注:软件结构包括两部分。程序的模块结构和数据的结构,软件教研室,程序结构,程序结构表明了程序各个部件(模块)的组织情况,是软件的过程表示。,软件教研室,模块化,软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。,注:软件的复杂性并不是随着分解模块的增
22、多而变的越来越容易,相反随着模块的增加由于交互的复杂,变的更加复杂。,软件教研室,模块定义,“模块”,又称“组件”。它一般具有如下三个基本属性:功能:描述该模块实现什么功能逻辑:描述模块内部怎么做状态:该模块使用时的环境和条件,在描述一个模块时,还必须按模块的外部特性与内部特性分别描述模块的外部特性:模块的模块名、参数表、其中的输入参数和输出参数,以及给程序以至整个系统造成的影响模块的内部特性:完成其功能的程序代码和仅供该模块内部使用的数据,软件教研室,模块的独立性,模块独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的接口是简单的。,注:例如,若一个模块只
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 实践 第二

链接地址:https://www.31ppt.com/p-6434188.html