收藏 分销(赏)

软件系统分析第二章.ppt

上传人:精*** 文档编号:12350535 上传时间:2025-10-10 格式:PPT 页数:73 大小:891.50KB 下载积分:16 金币
下载 相关 举报
软件系统分析第二章.ppt_第1页
第1页 / 共73页
软件系统分析第二章.ppt_第2页
第2页 / 共73页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,软件的发展,大体经历了如下三个阶段:,程序设计阶段,约为,50,至,60,年代,程序系统阶段,约为,60,至,70,年代,软件工程阶段,约为,70,年代以后,软件的发展,时间,特点,程 序 设 计,程 序 系 统,软 件 工 程,软件所指,程序,程序及说明书,程序、文档、数据,主要程序设计语言,汇编及机器语言,高级语言,软件语言,软件工作范围,程序编写,包括设计和测试,软件生存期,需求者,程序设计本人,少数用户,市场用户,开发软件的组织,个人,开发小组,开发小组及大中型开发机构,软件规模,小型,中小型,大中小型,决定质量的因素,个人程序技术,小组技术水平,管理水平,软件的概念,软件是计算机系统中与硬件相互依存的另一部分,它包括程序、数据、相关文档的完整集合以及完善的售后服务。,软件,=,程序,+,数据,+,文档,+,服务,software=program+data+document+service,软件危机(software crisis),定义,:软件危机是指在计算机软件的开发、使用和维护过程中所遇到的一系列严重问题。,主要包含,两方面的问题,:,如何开发新的软件,怎样满足对软件日益增长的需求;,如何维护数量不断膨胀的已有软件。,软件危机的表现,对软件开发成本和进度的估计常常不够准确。,用户对“已完成的”软件系统不满意的现象经常发生。,软件产品的质量往往靠不住。,软件常常是不可维护的。,软件通常没有适当的文档资料。,软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。,软件危机的原因,客观,:软件本身特点,软件的规模庞大、复杂性高。,主观,:不正确的开发方法,错误的认识,忽视需求分析,软件开发,=,程序编写,轻视软件维护,软件危机的解决途径,组织管理,工程项目管理方法,技术措施,软件开发技术与方法,软件工具,从而出现了“软件工程”的概念。,软件工程的定义,“,软件工程,”一词是,1968,年北大西洋公约组织(,NATO,)在联邦德国召开的一次会议上首次提出的,这个会议专门讨论了软件危机问题。这次会议被看作是软件发展史上一个重要的里程碑。,软件工程的定义,1993,年,权威组织,IEEE,对软件工程定义为:软件工程是将系统化的、严格约束的、可量化的方法,应用于软件开发、运行和维护中去。,2001,年,,Roger S.Pressman,对软件工程的定义是:软件工程是一个,过程,、一组,方法,和一系列,工具,。,现在的定义,软件工程是研究软件开发和软件管理的一门工程科学。,11,软件工程的定义是与时俱进的,软件工程的定义,具体地说:,采用工程的概念、原理、技术和方法来计划、开发与维护软件,把经过时间考验且证明,正确的管理技术,和当前能够得到的,最好的技术方法,结合起来,以较经济的手段获得能在实际机器上运行的可靠软件的,一系列方法,。,简言之:,工程方法,+,管理技术,+,技术方法,软件工程研究的内容,13,研究方面,具体内容,软件开发模型,瀑布模型、增量模型、敏捷模型、原型模型,软件开发方法,结构化的方法、面向对象的方法、,UML,的方法,软件支持工具,建模工具、开发工具、测试工具、文档工具、,配置工具、安装工具,软件管理过程,ISO9000,、,CMM/CMMI,、,微软企业文化,(MSF),、,IBM,企业文化、敏捷文化现象,(XP).,软件工程三要素:方法、工具、过程,软件工程的,8,个基本原理,用分阶段的生命周期计划,严格管理软件开发。,坚持进行阶段评审。,实行严格的产品版本控制。,采用现代程序设计技术。,结果应能清楚地审查,文档要有严格要求。,开发小组的成员要少而精。,要不断地改进软件工程实践的经验和技术。,牢记二八定律,14,软件工程中的二八定律,对软件项目进度和工作量的估计:一般人主观上认为已经完成了,80%,,但实际上只完成了,20%,对程序中存在问题的估计:,80%,的问题存在于,20%,的程序之中,对模块功能的估计:,20%,的模块,实现了,80%,的功能,对人力资源的估计:,20%,的人,解决了软件中,80%,的问题,对投入资金的估计:企业信息系统中,80%,的问题,可以用,20%,的资金来解决。,15,软件工程的作用,从,软件项目团队,来讲,在规定的时间内,按照规定的成本,完成预期目标,(,软件的功能、性能和接口达到需求报告标准,),的软件。,从,软件企业,本身来讲,持续地规范软件开发过程和软件管理过程,不断地优化软件组织的个人素质和集体素质,从而逐渐增强软件企业的市场竞争实力。,从,软件发展,进程来讲,克服软件危机,控制软件进度,节约开发成本,提高软件质量。,从,院校,来讲,以前它只是作为一门课或一本书。现在它成为一门学科和一个体系。,16,软件工程中的文档,可行性研究报告,项目开发计划,软件需求分析说明书,数据要求说明书,概要设计说明书,详细设计说明书,软件测试说明书,测试分析报告,用户手册,操作手册,程序维护手册,开发进度月报,项目开发总结,软件工程中的三个开发方法,结构化的方法,面向对象的方法,UML,的方法,18,结构化开发方法简介,1978,年,,E.Yourdon,和,L.L.Constantine,提出了结构化开发方法,SASD(Structure Analysis Structure Design),属于自顶向下的设计,在设计阶段就得考虑如何实现系统的功能,因为分解的过程其实就是实现功能的过程。,基本思想,是软件功能的,分解和抽象,原理是将一个软件分为多个过程(函数)进行开发,用结构体(,struct,)管理数据。,也称面向数据流或面向过程的软件开发方法,结构化编程,SP(Structure Programming),程序的主体是方法,方法是最小的功能模块,一组相关的方法组合成一个大的功能模块,早期的程序开发,如,C,语言,都是用结构化开发方法。,结构化开发方法举例,一个画板系统,Panel,包括,4,个功能,选择形状,画长方形,画圆,画直线,自顶向下结构化分析设计,工具:数据流图,DFD,选择形状模块数据流图,结构化编程,定义形状标示常量,drawCircle(),drawLine(),drawRectangle(),selectShape(),接收用户输入的形状,switch,void selectShape(),int shape;,scanf(%d,switch(shape),case Circle;,drawCircle();,break;,case Line;,drawLine();,break;,case Rectangle;,drawRectangle();,break;,default;,printf(,输入的形状不存在,),;,break,;,假定需求发生变化,要求增加一个画三角形的功能,需要对系统做多处改动,增加一个形状常量定义,增加一个画三角形的功能方法,在,selectShape,中增加一个分支逻辑,优缺点,缺点:,制约了软件的可维护性和可扩展性,模块之间的松耦合性不高,修改或增加一个模块会影响到其他模块,根本原因:,自顶向下地按照功能来划分,但是软件的功能不是一成不变的,方法和一部分与之相关的数据分离,全局变量和常量数据分散在系统的各个角落,削弱了各个系统之间的相对独立性。,面向对象的方法,发展历程,其根源可追溯到,60,年代的挪威,当时挪威计算中心的,Kristen Nygaard,和,Ole-Johan Dahl,开发了一种称作,Simula67,的语言。,Simula67,首次引入了类、协同程序和子类的概念。,70,年代中期,,Xerox Palo Alto,研究中心的研究人员设计了,Smalltalk,语言,该语言的每个元素都被当作一个对象来实现。,80,年代早期,,AT&T,贝尔实验室的,Bjarne Stroustrup,把,C,语言扩展为支持面向对象程序设计的,C+,。,内容,面向对象需求分析,面向对象设计,面向对象编程,面向对象测试,面向对象维护,面向对象管理。,在分析、设计、实现中用到“对象、类、继承、消息通信”这四个基本概念,就是面向对象的方法。,28,特点及优缺点,特点:,以数据为中心,把数据和对数据的操作紧密地结合起来,用对象分解代替传统的功能分解。,分析设计时面向类,编程时面向对象。,优点:,用无穷的方法来描述无穷的,(,随机的,),信息世界,所以能完全描述信息世界;易于维护。,缺点:,较难掌握。,29,把对象作为融合数据和操作的统一的构件,把所有对象都划分成类,子类自动拥有父类中定义的数据和操作,对象间仅能通过发送消息互相联系,Return,面向对象方法学的,4,个要点,思考,用面向对象的方法实现画板?,UML的方法,没有五线谱,作曲家如何能精确表达自己的灵感?,UML定义,UML,UML,是一种绘制软件蓝图的标准语言,可以使用,UML,对软件系统的进行以下工作:,可视化(,visualizing,),详述(,specifying,),构造(,constructing,),文档化(,documenting,),UML,的发展历程,优点:P17,软件工具一般是指为了支持软件人员开发和维护活动而使用的软件。,软件工具发展的三个阶段,工具箱,软件开发环境,SDE,计算机辅助软件工程,CASE(Computer Aided Software Engineering),工具应该支持软件生命周期的各个阶段,Requirements Management-Visual Modeling-Programming Tool-Quality Assurance,软件工具,软件工程常用支持工具,系统分析设计与建模工具,IBM Rational Rose,Microsoft Visual Studio Team System,数据库设计与建模工具,Sybase Power Designer,CA ERWin,Microsoft Office Visio,开发工具,Microsoft Visual Studio(.NET,平台,),开源,Eclipse(JAVA,平台,),单元测试工具,开源,NUnit(.NET,平台,),开源,JUnit (JAVA,平台,),37,软件生存周期概论,任何有生命的动物、植物和人,都有一个生存周期,(Life Cycle),,例如人的生存周期为胎儿、婴儿、幼儿、儿童、少年、青年、中年、老年、死亡。,没有生命的事物或实体,例如,PC,机、路由器、家具、房子、汽车,它们也有一个生存周期,这个生存周期就是使用寿命,即生产周期加上使用周期。,38,软件生命周期(software life cycle),定义:软件生命周期是指软件产品从功能确定、设计,到开发成功投入使用,并在使用中不断修改、增补、完善,直到该软件产品停止使用为止的整个时期。,软件生命周期可分为三个阶段:即,定义阶段,、,开发阶段,和,运行维护阶段,,每个阶段需完成几个任务。,各阶段任务,阶段,关键问题,结束标准,系统定义,问题是什么?,关于规模和目标的报告书,可行性研究,有可行的解吗?,系统的高级逻辑模型;数据流图,成本效益分析,需求分析,系统必须做什么?,系统的逻辑模型;数据流图;数据字典;算法描述,总体设计,概括地说,应该如何解决这个问题?,可能的解法:系统流程图;成本效益分析;推荐的系统结构;层次图,详细设计,怎样具体地实现这个系统?,编码规格说明:,HIPO,图或,PDL,编码和单元测试,正确的程序模块,源程序清单;单元测试方案和结果,综合测试,符号要求的软件,综合测试方案和结果,维护,持久地满足用户需求的软件,完整准确的维护记录,软件开发模型,在软件开发过程中,为了从宏观上管理软件的开发和维护,要对软件过程建模。,常见的有:,编码修正模型,、,瀑布模型,、,快速原型模型,、,螺旋模型,,RUP,模型,。,编码修正模型,在软件开发早期,开发只有两个阶段:,编写程序代码,修改程序代码,弊端:代码缺少统一规划;,闭门造车;,代码维护非常困难。,瀑布模型(Waterfall Model),1970,年温斯顿,罗伊斯(,Winston Royce,)提出了著名的“瀑布模型”。,核心思想,:按工序将问题化简,将功能的实现与设计分开,便于分工协作。将软件生命周期划分为,制定计划、需求分析、软件设计、程序编写、软件测试和运行维护,等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。,瀑布模型,瀑布模型的特点,从上一项开发活动接受该项活动的工作对象,作为输入,利用这一输入,实施该项活动应完成的工作内容,给出该项活动的工作成果,作为输出传给下一项活动,对该项目活动实施的工作成果进行评审。若工作得到确认,则继续进行下一次开发活动,否则返回前一项,甚至更前项的活动,瀑布模型优缺点,优点:,提供了软件开发的基本框架,为项目提供了按阶段划分的检查点,当前一阶段完成后,您只需要去关注后续阶段,缺点:,在项目各个阶段之间极少有反馈,由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险,各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量,早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果,46,瀑布模型选择条件,选择模型的条件:,在开发时间内需求没有或很少变化。,低风险项目(对目标、环境很熟悉)。,用户使用环境很稳定。,用户除提出需求以外,很少参与开发。,Jiangsu Microsoft Technology Center,47,快速原型模型,非正常现象模型,针对需求模糊或需求经常变化。,在,初步需求分析,之后,马上向客户,展示一个软件产品原型,,对客户进行培训,让客户试用,在试用中收集客户意见,,修改原型,,再让客户试用,反复循环几次,直到客户确认为止。,48,快速原型模型图,49,快速原型模型的特点,需求分解,用户的参与,较早地展示,不断修改完善的过程,原型模型的选择条件,选择模型的条件:,已有产品或产品的原型,只需客户化的项目。,简单而熟悉的行业或领域。,有快速原型开发工具。,进行产品移植或升级。,51,优点,增进软件人员和用户对系统服务的理解,使比较含糊的、具有不确定的软件需求明确化。,提供了一种有力的学习手段。,容易地确定系统的性能,确认系统设计的可行性。,软件原型的最终版本,有的可原封不动地成为产品。,若开发人员和用户在“原型”上达成一致,可以减少设计中的错误和开发中的风险,也减少了对用户培训的时间。,缺点,当告诉用户,还必须重新生产该产品时,用户是很难接受的。,不宜利用原型系统作为最终产品。采用原型模型开发系统,用户和开发者必须达成一致。,53,螺旋模型,非正常现象模型,将瀑布模型和快速原型模型相结合。,需求明确,风险不明确。,适合大型的,复杂的,有一定风险的软件开发过程。,螺旋模型模型图,螺旋模型的特点,这种模型适合于大型系统的开发,对于具有高度高风险的大型复杂软件系统的开发是最为有效的方法。,螺旋模型沿着螺线旋转,在坐标的四个象限上分别表达了四个方面的活动。,沿螺线自内向外每旋转一圈便开发出更为完善的一个新的软件版本。,RUP模型,RUP(Rational Unified Process,Rational统一过程),与UML开发方法同生共长,前提:人对需求的认识是一个渐进的过程,软件的完成时不断迭代和递增的过程,RUP模型图,RUP模型特点,在,RUP,中,软件开发生命周期根据时间的推进和,RUP,的核心工作流化分为二维空间:横轴表示项目的时间维,纵轴则以工作内容来组织。,每个阶段都由一个或多个连续的迭代组成,每个迭代都是一个完整的开发过程。,每个阶段结束于一个主要的里程碑,(Major Milestones),,在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。,RUP的优点,迭代过程的优点是降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这个开发有误的迭代的花费;降低了产品无法按照既定进度进入市场的风险。,由于用户的需求并不能在一开始就做出完全的界定,通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易。,敏捷过程与极限编程,2001,年,2,月,为更有效地解决需求不确定性较大,而开发时间又较紧的软件项目开发带来的困扰,一批(,17,位)专家联合提出了一个敏捷软件开发宣言。敏捷开发过程的方法主要有:,SCRUM,,,Crystal,特征驱动软件开发(,Feature Driven Development,,简称,FDD,),自适应软件开发,(Adaptive Software Development,,简称,ASD),,以及最重要的极限编程,(eXtreme Programming,简称,XP,极限编程,,XP,是于,1998,年由,Smalltalk,社群中的大师级人物,Kent Beck,首先倡导的,),。,开发模型小结,进入,IT,企业参与软件开发或软件管理时,首先要明确:当前的项目或产品开发到底采用什么开发模型,由此确定软件的生存周期和当前的软件开发进度;合理安排项目组成员的工作。迅速适应,IT,企业文化,并很快进入角色。,瀑布模型、增量模型、迭代模型和原型模型。因为,4,个模型各有所长,所以它们有各自的生存空间。善于根据实际情况灵活运用。,Jiangsu Microsoft Technology Center,62,软件工程中的,5,个面向原则,面向流程分析。,面向数据设计,面向对象实现,面向功能测试,面向过程管理,63,面向流程分析,面向流程分析,就是面向流程需求分析。,在需求分析时,系统分析员要面向业务流、资金流、信息流进行分析。只有将这“三个流”分析透了,才建立好系统的业务模型和功能模型。因为计算机网络在本质上只认识数据及数据流,(,严格地讲,它只认识二进制数和二进制数据的流动,),,而且这“三个流”,可以用“数据流”这一个流程来代替,或者说“三个流”是“数据流”在三个不同方向的投影。,64,面向数据的设计,面向数据设计,就是面向元数据进行概要设计。,在系统设计时,系统设计师要采用面向数据的方法进行概要设计。面向数据就是面向“元数据”(,Metadata,)。概要设计的主要任务是建立系统的数据模型,包括概念数据模型,CDM,和物理数据模型,PDM,,以及体现业务规则的存储过程和触发器,然后以数据模型为支撑,去实现系统的业务模型和功能模型,(,包括性能模型和接口模型,),。为此,要对元数据进行分析,只有将元数据分析透了,才能建立好由元数据所构成的数据模型。,这里讲的面向数据设计,主要表现在数据库服务器上的关系数据库设计。,65,面向对象的实现,面向对象实现,就是面向对象进行详细设计和编程实现。,在两层结构,(C/S),的客户层上,在三层结构,(B/A/S),的表示层和业务逻辑层上,进行详细设计和编程实现时,要采用面向对象的方法。当然,在数据服务层上的设计和编程实现,仍然要采用面向数据的方法,因为主要是设计和编写存储过程,它们是面向数据的,不是面向对象的。详细设计和编程实现,实质上是用构件加上程序来实现系统的业务模型和功能模型。只有对系统的三个模型思想,(,业务模型、功能模型、数据模型,),吃透了,才能设计和编写出合格的程序。,面向对象实现,实质上是面向类实现,因为实例化的类称为对象。,66,面向功能的测试,面向功能测试,就是面向功能进行单元测试、集成测试、,Alpha,测试和,Beta,测试,(,或系统测试和验收测试,),。,在进行测试时,测试人员要采用面向功能的方法。这里讲的功能,包括系统的功能、性能和接口三部分内容。面向功能测试的方法就是黑盒子测试方法,随着第四代程序设计语言和构件技术的发展,该测试方法会越来越广泛。今后采用白盒子测试方法,(,面向程序执行路径测试,),的人,只有从事软件构件生产和核心代码编程的极少数人员。,67,面向过程的管理,面向过程管理,就是面向过程对软件生命周期各个阶段进行管理和控制。,因为软件产品质量的提高与改进,完全取决于软件企业生产过程的改善。无论是,CMM/CMMI,、,ISO9000,、微软企业文化,都是站在软件生命周期过程的观念上去提高软件企业的素质。,那种认为“只要有几个优秀的程序员就能办好软件企业,就能生产出高质量的软件产品”的观点,在上世纪,80,年代理直气壮,在,90,年代还能解决温饱问题,在本世纪就站不住脚了,混不下去了,因为他们是手工作坊式的开发方法,忽视了软件中的面向过程管理。,68,课后作业,1.,完成课后习题:,(,1,)什么是软件危机?有何具体表现?,(,2,)什么是软件工程?怎样运用软件工程消除或缓解软件危机?,2.,软件开发方法有哪些?各自的优缺点?,3.,列举你知道的软件开发工具。,4.,什么是软件过程?,5.,软件生命周期的模型有哪几种?各自的特点?,作业,6.,假设你开发一软件,其功能是把读入的浮点数开平方,所得到的结果精确到小数点后,4,位。一旦实现并测试完成后,该产品将被抛弃。你打算选用哪种过程模型?,分析,1,、需求很明确,2,、实现浮点数开平方的算法也很成熟,不需要原型过程模型,3,、一旦实现并测试完成后,该产品将被抛弃,可以不考虑产品的进化问题,4,、规模相对较小,功能比较单一,不需要螺旋过程模型,总之,使用瀑布模型即可,资源,Roger S,Pressman,软件过程改善和软件工程技术方面国际知名的权威。,30,多年来,他作为软件工程师、管理人员、教授、作者及咨询顾问始终投身于软件工程领域。,大道至简,软件工程实践者的思想,-,周爱民,在大学时代、在课桌上令人昏昏欲睡的,软件工程,才是软件开发中的髓质与灵魂,选择什么语言、如何重构、有没有或应不应该采用某种模式,都是软件开发的细微末节,我们常常陷于行动而没有思想,思想与行为脱节。常常知道做什么,但不知道为什么要这样做,73,“停下来,思考才是进步的本质!”,资源,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服