1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑
2、母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,软件工程案例教程,内容摘要,本书为配合国家技能型紧缺人才培养培训工程并根据计算机应用和软件专业领域技能型紧缺人才培养培训指导方案的要求而编写。,本书针对职业院校学生的特点,充分体现指导方案中素质为基础、能力为本位、需求为依据、就业为导向的基本原则,教学内容注重选择当前软件工程中的一些新理论、新方法与新技术,通过一个小型软件项目为案例贯穿全书,使学生在学完后能基本掌握软件工程的基本理论与方法在软件项目开发中的实际应用。其主要内容涉及软件工程中
3、的可行性分析、软件开发模型,需求分析,结构化的分析和设计,面向对象的分析和设计,软件编码及实现,软件界面设计,软件测试等方面的内容。考虑职业院校学生的就业定位,重点侧重于详细设计、软件编码、软件测试、软件维护这几个方面的基本知识与技能。为保持教学内容的先进性同时便于对教学进行科学灵活的组织,对诸如,UML,方法、面向对象的分析、设计与编程、面向对象软件测试、,CMM,等也作了介绍。,本书可以作为职业院校计算机类专业的软件工程课程的教材或教学参考书,也可作为,IT,行业程序员、测试员、维护员等的培训教材或参考书。,主要内容,第,1,章 软件工程概述,第,2,章 可行性分析,第,3,章 需求分析,
4、第,4,章 结构化分析方法,第,5,章 结构化的设计方法,第,6,章 面向对象的分析与设计,第,7,章 软件编码与实现,第,8,章 用户界面设计,第,9,章 软件测试,第,1,章,软件工程,概述,本章主要内容,1.1,软件与软件工程,1.2,软件工程基本原理,1.3,软件生命周期,1.4,软件体系结构,1.5,软件开发模型,11,软件及软件工程,软件,软件的定义,在运行中能提供所希望的功能与性能的程序,使程序能够正确运行的数据及其结构,描述软件研制过程和方法所用的文档,软件的特点,软件角色的双重性,软件不是传统意义上的被制造,软件不会“磨损”,但会退化,软件都是手工定制的,开发过程的复杂与费用
5、的昂贵,11,软件及软件工程,软件,软件的分类,分类方法,软件类型,按功能,(1),系统软件,(2),支撑软件,(3),应用软件,按版权,(1),商业软件,(2),共享软件,(3),自由,(,免费,),软件,(4),公有领域软件,按工作方式,(1),实时软件,(2),分时软件,(3),交互式软件,(4),批处理软件,按销售方式,(1),订制软件,(2),产品软件,11,软件及软件工程,软件工程,软件危机,软件开发的生产率远远不能满足客观需要,开发的软件产品往往不能满足用户的实际需要,软件产品的质量低下且可维护性差,很难估计软件开发的进度计划与成本,软件神话,有了软件开发书籍,就可以解决软件开发
6、中的一切问题,进度滞后了?好,增加程序员,只要程序正确,项目就成功,文档可有可无,软件质量只能在正式投入运行后才知道,11,软件及软件工程,软件工程,软件工程的定义,IEEE,定义:,软件工程是将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。,通俗地说,软件工程是指导软件开发和维护的一门工程学科。它采用工程的概念、原理、技术和方法,把经过时间检验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,用于开发和维护软件。,质量焦点,11,软件及软件工程,软件工程,软件工程,层次化技术,过程,方法,软件工程三个要素:,方法、工具、过程,工具,11,软
7、件及软件工程,软件工程,软件工程的作用,【成功案例】美国联邦速递公司,(FedEX),的管理信息系统,【失败案例】英国伦敦的急救服务管理信息系统,1.2,软件工程的基本原理,1.,软件工程的定义,Fritz Bauer,曾经为软件工程下了定义:“软件工程是为了经济地获得能够在实际机器上有效运行的可靠软件而建立和使用的一系列完善的工程化原则。”,1983,年,IEEE,给出的定义为:“软件工程是开发、运行、维护和修复软件的系统方法”,其中,“软件”的定义为:计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所必需的数据。,2.,软件工程的目标和原则,付出较低的开发成本;,达到要求的软件功
8、能;,取得较好的软件性能;,开发的软件易于移植;,需要较低的维护费用;,能按时完成开发工作,及时交付使用。,软件工程目标之间的关系,3.,软件工程的基本原理,用分阶段的生存周期计划严格管理,坚持进行阶段评审,实行严格的产品控制,采用现代程序设计技术,结果应能清楚地审查,开发小组的人员应该少而精,承认不断改进软件工程实践的必要性,13,软件生存周期与开发模型,生存周期,1.3,软件生存周期,人的生存周期,婴儿,幼儿,儿童,少年,青年,中年,老年,死亡,软件的生存周期,软件定义,软件开发,软件支持,问题定义,可行性分析,需求分析,概要设计,详细设计,编 码,测 试,软件发布,软件运行,维护或退役,
9、12,软件生存周期与开发模型,生存周期,软件定义阶段,问题定义,可行性分析,立项或签订合同,软件开发阶段,需求分析,软件设计,编码与测试,发布或安装验收,软件开发阶段,软件的使用、运行,软件维护,12,软件生存周期与开发模型,开发模型,问题的提出,软件工程需要解决什么问题?,软件开发模型,做什么软件?,怎么做软件?,软件如何适应变化?,软件开发过程概括,是软件工程思想的具体化,它是跨越整个软件生存周期的各个阶段所需要的全部工作与任务的结构框架,1,4,软件体系结构,软件体系结构是一个系统的高层结构共性的抽象,是建立系统时的构造模型、构造风格、构造模式。,目前,在商业软件开发中常用的软件体系结构
10、有:层次结构、,C/S,结构和,B/S,结构。,1.,层次结构,所谓层次结构,就是将软件的实现分成多个层次,低层的模块实现相对单纯的功能,多个低层模块组合成一个较高的模块,实现相对多的功能,最后所有的模块组合起来完成整个的软件的功能。,C/S,结构,客户,-,服务器结构简称,C/S,结构或两层体系结构,由服务器提供应用(数据)服务,多台客户机进行连接。,B/S,结构,浏览器,服务器结构简称,B/S,结构,如下图所示。,在这种结构下,主要事务逻辑在服务器端(,Server,)实现,极少部分事务逻辑在前端浏览器(,Browser,)实现。客户机统一采用浏览器,用户工作界面是通过,WWW,浏览器来实
11、现的。,12,软件生存周期与开发模型,开发模型,1,5,软件开发模型,可行性分析,需求分析,设 计,编 码,测 试,支 持,定义阶段,开发阶段,支持阶段,瀑布模型,线性顺序模型,2.,原型模型,3,螺旋模型,12,软件生存周期与开发模型,开发模型,瀑布模型的特点:,瀑布模型的应用范围,阶段间具有顺序性和依赖性,每个阶段必须完成规定的文档,;,每个阶段结束前完成文档审查,及早改正错误,但:,开发过程一般不能逆转,否则代价太大。,实际的项目开发很难严格按该模型进行。,客户往往很难清楚地给出所有的需求,而该模型却要求如此。,软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心,。,
12、用户的需求非常清楚全面,且在开发过程中没有或很少变化,开发人员对软件的应用领域很熟悉。,用户的使用环境非常稳定。,开发工作对用户参与的要求很低,12,软件生存周期与开发模型,开发模型,原型模型,用户测试,运行原型,建造,/,修改,原型,听取用,户意见,12,软件生存周期与开发模型,开发模型,原型模型的特点:,原型模型的应用范围,可以得到比较良好的需求定义,容易适应需求的变化。,有利于开发与培训的同步。,开发费用低、开发周期短、维护容易且对用户更友好。,客户与开发者对原型理解不同,准确的原型设计比较困难,不利于开发人员的创新,对所开发的领域比较熟悉而且有快速的原型开发工具,项目招投标时,可以以原
13、型模型作为软件的开发模型,进行产品移植或升级时,或对已有产品原型进行客户化工作时,原型模型是非常适合的。,12,软件生存周期与开发模型,开发模型,基于构件的开发模型,特点:,属于演化式开发或迭代式开发,其开发过程:,客户的交流,获得问题的定义,标识基本类,计划与风险分析,类的复用或重新开发,构造系统,用户评估,采用了先进的面向对象技术。,基于构件库的开发,这是软件复用的基础,开发速度快。,融合了螺旋模型特征,支持软件开发的迭代方法,是一种演化型的开发技术。,软件工程标准,软件工程标准,ISO9000,IS09001,:,设计、开发、生产、安装和服务的质量保证模式,IS09002,:生产、安装和
14、服务的质量保证模式,IS09003,:,最终检验和试验的质量保证模式。,软件工程标准,CMM,软件能力成熟度模型,CMM(Capability Maturity Model),CMM,的级别,初始级,Initial,可重复级,Repeatable,已定义级,Defined,已管理级,Managed,优化级,Optimizing,开发工具的作用与功能,软件开发工具简介,CASE,工具,计算机辅助软件工程,CASE,作用,认识与描述系统需求,保存与管理开发过程中的信息,代码的生成,文档的编制与生成,软件项目的管理,开发工具的分类,14,软件开发工具简介,CASE,工具,分类,方法,按应用阶段划分,
15、按功能划分,设计工具,分析工具,项目管理,软件配置,质量保证,分析设计,计划工具,界面开发,客户服务器,Web,开发,IBM Rational,工具,14,软件开发工具简介,常用,CASE,工具,Rational,公司是专门从事,CASE,工具研制与开发的软件公司,,2003,年被,IBM,公司收购。该公司所研发的,Rational,系列软件是完整的,CASE,集成工具,贯穿从需求分析到软件维护的整个软件生存周期。,需求分析与设计工具,产品主要构成,测试工具,软件配置管理工具,Rose,PurifyPlus Robot,ClearCase,北大青鸟工具,14,软件开发工具简介,常用,CASE,
16、工具,北大青鸟系列,CASE,工具北京北大青鸟软件有限公司开发研制的,在国内有较高的知名度,北京大学软件工程国家工程研究中心就设在该公司。,产品主要构成,面向对象软件开发工具集,JBOO,构件库管理系统,JBCLMS,项目管理与质量保证,JBCM,JBPM,JBCCM,软件测试系统,Safepro,微软版本管理器,VSS,14,软件开发工具简介,常用,CASE,工具,版本管理是软件配置管理中的核心工作,由,Microsoft,公司开发的,Visual SourceSafe 6.0,使用非常广泛而且很容易获得。,文件检入与检出,产品主要功能,版本控制,文件的拆分与共享,权限管理,第,2,章,可行
17、性分析,这个项目是做还是不做呢?,还是先去做可行性分析吧,!,2.1,问题定义,2.2,可行性研究,本章主 要内容,21,可行性研究,-,问题的定义,问题定义,确定软件开发项目必须完成的目标。其关键问题是:“,要解决什么问题,?,”,含义,主要,内容,问题的背景、总体要求与目标、类型范围、功能规模、实现目标的方案、开发的条件、环境要求等,问题定义报告,应包括内容,项目名称,使用方,对问题的概括定义,项目的目标,项目的规模,21,可行性研究,-,问题的定义,案例,分析,某校在校生近,5000,人,每学期在期中都要进行一次对教师的教学质量测评,要求所有学生都要参加。以前测评的方式都是手工操作,由教
18、务处发出书面问卷调查表,每个同学填写完成后交回到教务处。然后教务处再使用手工的方法对问卷进行统计汇总,最后得出学生对每一位教师的总体评价。这种方法一方面浪费了大量的财力、人力,另一方面统计繁琐且容易出错。考虑到现在学校校园网已经建成,为节省开支,提高效率,学校决定委托计算机系开发一套基于校园网的教师教学网络测评系统,1,、问题的提出,21,可行性研究,-,问题的定义,案例,分析,2,、问题分析,系统分析人员经过与学校教务部门及各相关单位进行充分的调查后,了解了该项目的一些背景资料与基本要求。教师测评分两大部分,一是师德测评;二是教学质量测评。师德测评有,4,项指标,教学质量测评有,14,项指标
19、。系统要实现的目标是:,所有学生在指定时间内在指定机房的计算机上完成对任课教师的测评打分,测评过程全部采用选择的方法,不需要输入任何信息,所有的测评数据保存在学校中心服务器上,有较为严格的安全措施,系统能对所有的数据进行统计汇总,得出每一位教师的测评结果,并能进行排序、输出。,系统开发的大体费用在,1.2,万元左右,开发周期大约,6,个人月。,21,可行性研究,-,问题的定义,案例,分析,3,、系统定义报告,根据以上分析,形成如下的系统定义报告。,案例文档之一,系统定义报告,用户单位:,XX,学校教务处 负责人:,XXX,开发单位:,XX,学校计算机系 分析员:,XXX,项目名称:基于校园网的
20、教学质量测评系统,问题概述:教师教学质量测评每学期必须进行一次,原有的手工方法存在资源浪费、效率极低、结果不准确等问题。,(,其它的相关说明,),项目目标:开发一个效率高且相对通用的教师教学网络测评系统。,项目规模:开发成本大约,1.2,万元,开发周期约,6,个人月。,可行性研究:建议进行一周,费用不超过,500,元。,21,可行性研究,-,可行性研究的任务与步骤,一、,可行性研究的任务,2,、经济可行性,3,、社会因素的考虑,分析成本,收益与短期效益,长远利益这两个方面,。,要作出投资的估算和系统投入运行后可能获得的经济效益或可节约的费用估算,。,分析利用现有的技术能否实现,能否解决系统中的
21、技术难题,所开发的系统能否达到所要求的功能和性能,系统对技术人员的要求,现有的技术人员能否胜任,开发所需要的软件与硬件能否如期得到等,1,、技术可行性,主要考虑的是市场、政策与法律方面的问题,21,可行性研究,-,可行性研究的任务与步骤,二、,可行性研究的步骤,1,、重新检查系统定义报告中相关内容,,,明确对目标系统限制与约束。,2,、研究目前正在使用的系统,找出其基本功能和所需要的基本信息,绘制系统流程图。,3,、设想新系统高层逻辑模型,分析归纳现有系统,最后建造新物理系统。,4,、导出各种实现方案,并对方案,进行评价,5,、推,荐,可行性方案,6,、编写可行性研究报告,21,可行性研究,-
22、,技术可行性分析,技术可行性分析,的,三个方面,1,、在给定的时间内能否实现系统定义中的功能,。,2,、软件的质量如何?如实时性、正确性和精确性。,3,、软件的生产率如何?高生产率意味着利润。,做得了吗?做得好吗?做得快吗?,先分析,21,可行性研究,-,技术可行性分析,在进行技术可行性分析时,一个重要的内容是对现有系统与拟开发的系统绘制系统流程图。系统流程图中所用的符号与程序设计语言中的程序流程图所用的符号类似。但系统流程图与程序流程图不同,系统流程图表达的是信息在系统中各个部件之间的流动情况,而程序流程图表达的是程序对信息进行加工处理的控制过程,系统流,程图,21,可行性研究,-,技术可行
23、性分析,符,号,名称,含,义,处理,能改变数据或数据位置的加工或部件,输入,/,输出,广义的不指明具体设备的输入与输出,连接,在同一页上指明转到图的另一部分或从图的另一部分转来,换页连接,指转到另一页或从另一页转来,数据流,连接其他符号,指明数据的流动方向,文档,通常表示打印输出,系统流程图中的常用符号,系统流程图中的常用符号,21,可行性研究,-,技术可行性分析,联机存储,任何种类的联机存储,磁盘,磁盘的输入,/,输出,也表示存储在磁盘上的数据库或文件,人工输入,在脱机情况下人工输入数据,如填写表格,人工操作,人工完成的操作,如在表格上的签名,通信链路,通过通信链路传送数据,测评,数据库,测
24、评设置,测评人员,管理人员,数据处理,数据提交,验证,验证,测评,测评结果,教师教学网络测评系统流程图,21,可行性研究,-,技术可行性分析,21,可行性研究,-,经济可行性分析,经济,可行,性分,析,1.,成本分析,2.,收益分析,办公成本,人员成本,资源成本,其它成本,货币的时间价值,纯收入,如果从经济可行性的角度分析得出纯收入小于或等于零的结论,则这个项目是不能投资的,最难准确核算,纯收入,=,总收入折现,-,总成本折现,P=F(1+i),-n,称为折现,21,可行性研究,-,经济可行性分析,常用成本估算策略,1,、在项目后期进行估算,即完全精确核算,2,、基于已经完成的类似项目进行估算
25、,3,、使用相对简单的分解技术以生成项目成本及工作量的估算,4,、使用一个或多个经验模型进行软件成本及工作量的估算估算,不能选择,比较切实可行,两种常用策略,21,可行性研究,-,经济可行性分析,两种成,本估算,方法,代码行法,(LOC),功能点法,(FP),每行代码的平均成本乘以程序的行数,采用软件所提供的功能来测量的,21,可行性研究,-,案例分析(可行性研究),可行性研究最终生成可行性研究报告,案例文档之二,可行性研究报告,1,引言,1.1,编写目的,本报告分析了教师教学网络测评系统开发的可行性,请院领导审阅并对是否进行该系统的开发做出批示。,1.2,项目背景,建议进行教师教学网络测评系
26、统的开发。,(,背景介绍略,),我院计算机系具备进行该软件系统开发的能力并承担本软件系统的开发与维护工作。该软件系统由我院教务处使用。,详见教材,22,软件项目计划,系统定义报告,用户的需求报告,可行性研究报告,项目开发计划,及相关的一些,专题计划,如,:,测试计划、质量保证计划、配置管理计划、人员培训计划、系统安装计划,22,软件项目计划,-,软件项目计划的主要内容制订方法,软件,项目,计划,资源计划,软件估算计划,进度安排计划,人力资源,可复用的构件,开发环境,高层管理人员,项目经理,开发人员,客户、最终用户,软件,/,硬件环境,采用任务分解技术对软件的规模与工作量进行估算,并将总的开发费
27、用分配到开发的各个阶段中,软件规模,工作量,进度,成本,进度安排要确定最终的软件交付日期,并在限定的日期内安排和分配工作量;或者在合理复用各种资源分配工作量的基础上确定最终交付日期。,其它专题计划,如质量保证计划、配置管理计划、里程碑及评审计划、测试计划等,22,软件项目计划,-,案例分析(软件项目开发计划书),案例文档之三,软件项目开发计划书,1,引言,1.1,编写目的,为保证教师教学网络测评系统的开发成功,按期交付使用,特编写项目开发计划,请参与开发的人员遵照执行。,1.2,项目背景,(,略,),1.3,定义,教师教学网络测评系统以下简称测评系统。,。,第,3,章 需求分析基础,本章主要内
28、容,3.1,需求分析的概念,3.2,需求工程,3.3,需求分析的方法,3.4,需求规格说明,3.5,原型化方法,31,需求分析概述,-,需求分析的重要性,需求分析是发现、求精、建模、规格说明和复审的过程;,需求分析是系统设计的基础,关系到程的成败和软件产品的质量。,重要性,需求获取,困难,原因有三,一是用户需求的动态性,(,不稳定性,),二是需求的模糊性,(,不准确性,),三是需求必须得到用户的确认,否则毫无意义,31,需求分析概述,需求分析的任务,1,、确定对系统的综合要求:,系统界面要求、系统功能要求、系统性能要求、完全性可靠性保密性要求、系统运行要求、异常处理要求、将来可能提出的要求、分
29、析系统的数据要求。,2,、分析系统的数据要求,3,、异出系统的逻辑模型,4,、修正项目开发计划,5,、开发原型系统,需求分析任务,需求工程,需求开发,需求管理,需求获取,需求分析,编写需求文档,需求确认,需求工程层次分解图,31,需求分析概述,-,需求分析的过程与方法,需求工程,需求获取,用户,概要,信息,业务需求,功能需求,用户需求,非功能性需求,可行性报告,系统定义报告,系统分析员,程序员,分析,调研,座谈法调查表法观察法,31,需求分析概述,-,需求分析的过程与方法,需求分析,获取数据,分析、处理,目标逻辑模型,需求获取,系统分析员,从数据流和数据结构出发,找出系统各元素之间的联系、接口
30、特征及设计限制、能否满足功能需求,31,需求分析概述,-,需求分析的过程与方法,系统分析员,需求规格说明书,编写,目标系统的基本描述系统各项需求系统限制及条件系统数据定义,需求分析结果,需求文档编写,31,需求分析概述,-,需求分析的过程与方法,评审、验证,的四个方面,一致性,完整性,现实性,有效性,所有需求必须一致,不能前、后和相互矛盾,说明书应包括用户需求的每一方面,在现有基础上可实现,必须证明需求有效,能解决用户提出的问题,需求评审与确认,31,需求分析概述,-,需求分析的过程与方法,31,需求分析概述,-,需求分析的过程与方法,二、需求分析的方法,分析,方法,支持数据域分析的机制,2.
31、,功能表示的方法,3.,接口的定义,4.,问题分解的机制以及对抽象的支持,5.,逻辑视图和物理视图,6.,系统抽象模型,3,4,需求规格说明与评审,1.,需求规格说明书的内容,2.,需求评审,3.,需求变更管理,3,5,原型化方法,1.,软件原型化方法,通常,原型是指模拟某种产品的原始模型。在软件开发过程中,原型是软件的一个早期可运行的版本,它反映最终系统的部分重要特性。如果在获得一组基本需求说明后,通过快速分析构造出一个小型的软件系统,满足用户的基本要求。使得用户可在试用原型系统的过程中得到亲身感受和受到启发,做出反应和评价。然后开发者根据用户的意见对原型加以改进。随着不断试验、纠错、使用、
32、评价和修改,获得新的原型版本,如此周而复始,逐步减少分析和通信中的误解,弥补不足之处,进一步确定各种需求细节,适应需求的变更,.,原型主要有三种不同的作用类型:,探索型,实验型,进化型,2,快速原型开发模型,案例分析,-,尚品购书网站系统需求分析与需求规格说明,1.,“,尚品购书网站“系统需求分析,.“,尚品购书网站”项目开发背景,“尚品购书网站”系统业务需求,.“,尚品购书网站”系统环境需求,.“,尚品购书网站”系统维护需求,.“,尚品购书网站”系统安全性需求,.“,尚品购书网站”系统性能需求,.“,尚品购书网站”系统接口需求,2.“,尚品购书网站”系统软件需求规格说明,第,4,章 结构化分
33、析方法,4,1,结构化分析方法概述,结构化方法的基本思想可以概括为:自顶向下、逐步求精;采用模块化技术、分而治之的方法,将待开发的系统按功能分解成若干模块;模块内部由顺序、分支、循环等基本控制结构组成;应用子程序实现模块化,.,基本思想,自顶向下,逐层分解,结构化分析,(Structured Analysis),它是一种面向数据流的需求分析方法,适用分析大型数据处理系统,是一种简单、实用的方法。,结构化分析,软件系统(,S,),D1,D2,D3,Dn,问题域,Di,P1,P2,P3,Pn,问题,Pj,F1,F2,F3,Fn,问题域,问题,行为(功能),对应于软件子系统,对应于子软件的软构件,对
34、应于软件子系统,32,结构化分析,自顶向下需求分析模型图,S=D1,,,D2,,,D3,,,Dn,Di=P1,,,P2,,,P3,,,Pm,Pj=F1,,,F2,,,F3,,,Fk,定义,数据流,变换数据的处理,数据存储,数据的源,/,宿,32,结构化分析,-,数据流图,数据流图,(DFD),是一种图形化技术,它描绘信息和数据从输入到输出的过程中所经受的变换。,符号,银行取款流程图,数据流图说明:描绘“做什么”,不考虑“怎么做”,箭头,:数据流图和程序图中用箭头表示的控制流有本质不同,不能混淆。在数据流图中应该描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件。,处理,:处理并不一定是一
35、个程序。一个处理框可以代表一系列程序、单个程序或者程序的一个模块,也可代表一个人工处理过程,如用户目视检查数据正确性。,数据存储,:一个数据存储并不等同于一个文件,它可以表示一个文件、文件的一部分、数据库的元素或记录的一部分等;数据可以存储在磁盘、磁带、磁鼓、主存、微缩胶片、穿孔卡片及其他任何介质上,(,包括人脑,),。,数据存储和数据流都是数据,仅仅所处的状态不同。数据存储是处于静止状态的数据,数据流是处于运动中的数据。,32,结构化分析,-,数据流图,数据流图的分层,为了表达数据处理过程的加工情况,用一个数据流图是不够的。为表达稍为复杂的实际问题,需要按照问题的层次结构进行逐步分解,并以分
36、层的数据流图反映这种结构关系。,32,结构化分析,-,数据流图,数据流图(案例),1,“尚品购书网站”系统数据流程图(第一层),概念,是描述数据信息的集合,是对系统中所有数据元素定义的集合。,包含信息,数据、控制项、数据存储或外部实体的主要名称和别名,使用数据和对象的列表、使用对象的方式,描述数据或控制内容的符号,关于数据类型、预置值、限制等其他补充信息,32,结构化分析,-,数据字典,一、定义,32,结构化分析,-,数据字典,二、数据项的定义,数据三种基本类型,顺序,选择,循环,即以确定次序连接两个或多个分量,从两个或多个可能的元素选取一个,即把指定的分量重复零次或多次,算符,意义,=,等价
37、于或定义为,+,连接两个分量,或,(,从方括号内列出的若干个分量中选择一个,),用“,|”,号分开供选择分量,重复,(,重复花括号内的分量,),(),可选,(,圆括号内的分量可有可无,),数据字典符号,三、数据字典举例,尚品购书网站系统中,顶层数据数据流图中,共有,10,个不同的数据流。,32,结构化分析,-,数据字典,加工的描述,目前用于写加工逻辑说明的工具有结构化英语,(PDL),、判定表和判定树 等。,1,、结构化英语(,PDLProcedure Design Language,),结构化英语也称为,PDL,,是一种介于自然语言和形式化语言之间的半形式化语言。它是在自然语言的基础上加了一
38、些限制而得到的语言,是使用有限的词汇和有限的语句来描述加工逻辑。结构化英语的词汇表由英语命令动词、数据词典中定义的名字、有限的自定义词和控制结构关键词,IF_THEN_ELSE,、,WHILE_DO,、,REPEAT_UNTIL,、,CASE_0F,等组成。,2.,判定表,(Decision Table),在某些数据处理问题中,某数据流图的加工需要依赖于多个逻辑条件的取值,就是说完成这一加工的一组动作是由于某一组条件取值的组合而引发的。这时使用判定表来描述比较合适。下面以“检查发货单”为例,说明判定表的构成。,3.,判定树(,Decision Tree,),判定树也是用来表达加工逻辑的一种工具
39、。有时侯它比判定表更直观。用它来描述加工,很容易为用户接受。下面把前面的“检查发货单”的例子用判定树表示。,4.,实体,-,关系图,在数据密集型应用问题中,对复杂数据及数据之间复杂关系的分析和建模将成为需求分析的重要任务。显然,这项任务是简单的数据字典机制无法胜任的。所以,有必要在数据流分析方法中引进适合于复杂数据建模的实体,关系图。,实体,关系图是表示数据对象及其关系的图形语言机制。数据对象用长方形、关系用菱形表示。数据对象之间数量上的对应关系的表示见下图:,案例,-“,尚品购书网站”系统结构化分析,一层图:,二层图:,系统,E-R,图:,第,5,章 结构化的设计方法,5,1,结构化设计的基
40、本概念,5,1,1,模块化设计,实现模块化设计的重要指导思想是分解、信息隐藏和模块独立性,。,1,分解,分解是人们处理复杂问题时常用的方法。有一种说法,模块化是为了使一个复杂的大型程序能够被人的智力所管理,是软件所应该具备的惟一属性。,软件模块,定义,整个软件被划分成若干单独命名和可编址的部分,称之为模块。,模块的基本属性,模块实现什么功能,模块的内部实现逻辑,该模块使用时的环境和条件,2,信息隐蔽,1972,年,,D.L.Parnas,提出了把系统分解为模块时应该遵守的指导思想,称为,信息隐蔽(,information hiding,),。他认为,模块内部的数据与过程,应该对不需要了解这些数
41、据与过程的模块隐蔽起来。只有那些为了完成软件的总体功能而必须在模块间交换的信息,才允许在模块间进行传递。,3,模块独立性,模块独立性(,module independence,)概括了把软件划分为模块时要遵守的准则,也是判断模块构造是否合理的标准。一般地,坚持模块的独立性是获得良好设计的关键。,模块的独立性可以由两个定性标准度量,这两个标准分别称为内聚和耦合。,模块划分的原则,划分模块的重要目标是提高模块的独立性。度量模块独立性的两个准则是模块间的内聚性和耦合性。好的软件结构应该具有高内聚、低耦合的模块化结构。,内聚性,耦合性,内聚性是一个模块内部各个元素彼此结合的紧密程度的度量。,耦合性是模
42、块间互相连接的紧密程度的度量。它取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。,(,1,)耦合 耦合是对一个软件结构内不同模块之间互联程度的度量。,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。,在软件设计中应该追求模块间尽可能松散耦合的系统。在这样的系统中可以测试或维护任何一个模块,而不需要对系统中的其他模块有很多的了解。此外,由于模块间联系简单,发生在一处的错误传播到整个系统的可能性就很小。因此,模块间的耦合程度对系统的可理解性、可测试性、可靠性和可维护性有非常大的影响。,耦合性,(1),非直接耦合,(2),数据耦合,(3),标记耦合,(4)
43、,控制耦合,(5),外部耦合,(6),公共耦合,(7),内容耦合,模块间的耦合按照模块独立性由高到低的顺序列举如下:,(2),内聚 内聚标志着一个模块内部各个元素间彼此结合的紧密程度。,简单地说,理想内聚的模块只做一件事情。设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多。但是,坚决不要使用低内聚。,内聚性,模块内聚按照模块独立性由高到低的顺序叙述如下:,(1),功能内聚,(2),信息内聚,(3),通信内聚,(4),过程内聚,(5),时间内聚,(6),逻辑内聚,(7),巧合内聚,软件设计工作内容,概要设计,详细设计,将软件需求转化为软件体系结构,确定系统级接
44、口、全局数据结构或数据库模式。,确立每个模块的实现算法、局部数据结构,用适当方法表示算法和数据结构的细节。,概要设计需要完成的工作,(1),制定规范,(2),软件系统结构的总体设计,(3),处理方式设计,(4),数据结构设计,(5),可靠性设计,(6),编写概要设计阶段的文档,概要设计的目标,概要设计的主要目标是把需求转换为软件的体系结构。,软件的体系结构,程序的模块结构,程序的数据结构,5,2,过程设计技术和工具,5,2,1,结构化程序设计,Bohm,和,Jacopini,提出仅用“,顺序,”、“,分支,”和“,循环,”三种基本的控制构件即能构造任何,单入口单出口,程序,这个结论奠定了结构程
45、序设计的理论基础,结构程序设计是程序设计技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制构件。,5,2,2,图形表示法,流程图、结构图是描述过程细节的出色工具。,5,2,3,判定表,当模块中包含复杂的条件组合,并要根据这些条件选择动作时,流程图、,N-S,结构图及下节将介绍的过程设计语言(,PDL,)都有一定的缺陷,只有判定表能清晰地表示出复杂的条件组合与各种动作之间的对应关系。,5,3,结构化设计方法,结构化设计是一种面向数据流的设计(,Data Flow-Oriented Design,DFOD,),是与数据流分析对应的软件设计技术。数据流分析得到的是用数据流图和数据字典描述的需
46、求规格说明书,面向数据流的设计得到的则是以数据流图为基础导出的软件模块结构图。,面向数据流的设计(,SD,)方法能方便地将数据流图转换为软件结构,其过程分为五步:,(,1,)确定信息流的类型;,(,2,)划定流界;,(,3,)将数据流图映射为程序结构;,(,4,)提取层次控制结构;,(,5,)通过设计复审和使用启发式策略进一步精化所得到的结构。,信息流分为变换流和事务流两种类型。,变换流。具有较明确的输入、变换(或称主加工)和输出界面的数据流图称为变换型数据流图。,事务流。事务型数据流图中存在某个加工,它将其输入分离成若干发散的数据流,形成许多活动路径,并根据输入的值选择其中之一条路径。,案例
47、,-“,尚品购书网站”系统结构化设计,软件总体结构设计:用系统结构图描述,设计程序的模块结构,程序的模块结构表明了程序各个部件,(,模块,),的组织情况,是软件的过程表示。,模块间关系的表示,结构图反映程序中模块间的调用关系和模块间信息的传递。结构图的要素包括:,(1),模块:模块用矩形框表示,并用模块的名字标记它。,(2),模块的调用关系和接口:模块之间用单向箭头联结,箭头从调用模块指向被调用模块,表示调用模块调用了被调用模块。,设计程序的数据结构,(1),确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计。,(2),确定输入、输出文件的详细的数据结构。,(3
48、),结合算法设计,确定算法所必需的逻辑数据结构及其操作。,(4),确定对逻辑数据结构所必需的那些操作的程序模块,(,软件包,),。,(5),限制和确定各个数据设计决策的影响范围。,(6),若需要与操作系统或调度程序接口所必须的控制表等数据时,确定其详细的数据结构和使用规则。,(7),数据的保护性设计,详细设计需要完成的工作,在详细设计过程中,需要完成的工作是:,(1),确定软件各个组成部分内的算法以及各部分的内部数据组织。,(2),选定某种过程的表达形式来描述各种算法。可选用的过程表达形式有:流程图、盒图、,PAD,图等。,(3),编写详细设计说明书。,(4),制定单元测试计划。,(5),进行
49、详细设计评审。,详细设计的表示,详细设计中应采用合适的方式来描述模块内问题解决过程的细节,采用结构化的图形设计表示法是人们易于使用、易于理解的方式。,图形设计表示法,流程图,盒图,PAD,图,程序流程图,结构化程序基本结构,顺序结构,选择结构,循环结构,标准流程图符号,我国,国家标准局批准的国家标准,(GB1525-89),流程图符号,:,盒图(,N-S,图),第,6,章 面向对象的分析和设计,面向对象的分析,面向对象分析方法的核心是利用面向对象的概念和方法为软件需求建造模型。它包含面向对象的图形语言机制以及用于指导需求分析的面向对象的方法学。,本节主要介绍面向对象的概念、面向对象方法及面向对
50、象分析过程。,面向对象的需求分析,-,面向对象的概念,面向对象对象分类继承通信,对象,对象是现实世界中个体或事物的抽象表示,它封装了特殊的属性,(,数据,),和行为方法。,例如,大型客机可视为对象,它具有位置、速度、颜色、容量等属性,对于该对象可施行起飞、降落、加速、维修等操作,这些操作将或多或少地改变飞机的属性值,(,状态,),。,类,类是具有相同属性和操作的一组相似对象的抽象,例如,飞行器类是所有能够飞行的器械的抽象,(,如各种飞机、航天器等,),,它可以包含位置、速度、颜色等属性,同时也具有起飞、降落、加速等操作。显然类是一个支持继承的抽象数据类型,而对象就是类的实例。,面向对象的需求分
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100