资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,CQUPT,*,软件工程基本知识简介,主要参考教材,张海藩,软件工程,人民邮电出版社,,2010,。,S. L. Pfleeger,,软件工程,人民邮电出版社,,2007.,Lan Sommerville,软件工程,(,英文版第,7,版,),,,Software Engineering, Seventh Edition,机械工业出版社,,2004.11,,,ISBN 7-111-15309-X,1软件工程知识回顾,2024/11/28,Junwei Ge,4,#include ,void main()int a,b;coutab;,int c;,c=a/b;int d=a%b;coutn a/b=cend;,coutn a%b=dend;,问题,1,请讨论以下,C+,程序的作用和不足?,/I/O,流库头文件,/,输出提示语,/,对,a,、,b,变量输入,/,变量可随用随定义,/,输出,a,除以,b,的商,/,输出,a,除以,b,的余数,CQUPT 葛君伟,5,IT is now one of the largest corporate expenses outside employee costs,Organizations and,governments,spend an estimated,$1 trillion on IT,hardware, software, and services worldwide.,The average company spends about,4 to 5 percent of revenue on IT,.,The companies that are highly IT dependentsuch as financial and telecommunications companiesspending,more than 10 percent,on it.,CQUPT 葛君伟,6,Governments are big consumers ofsoftware ,The,United Kingdom,had more than,100 major government IT projects,under way that totaled,$20.3 billion,.,The,U.S. government,cataloged,1200 civilian IT projects,costing more than,$60 billion, plus another,$16 billion for military software,.,CQUPT 葛君伟,7,Governments are big consumers ofsoftware,Any one of these projects can cost,over $1 billion,. For example,the computer modernization effort at the,U.S. Department of Veterans Affairs,is projected to run,$3.5 billion,while automating the,health records,of the UKs National Health Service is likely to cost more than,$14.3 billion,for development and another,$50.8 billion,for deployment.,Such megasoftware projects are now much more common, as smaller IT operations are joined into “systems of systems.”,Air traffic control,is a prime example, because it relies on connections among dozens of networks that provide communications, weather, navigation, and other data.,2024/11/28,Junwei Ge,8,问题2,你应如何开发一个电信业务管理系统?,2024/11/28,CQUPT,9,1软件工程知识回顾,1.1软件工程的基本概念,What is software?,具有以下特征的实体,(Entities),可以被看成软件。,They Are Non-tangible, and Non-physical, but Often Intended to Manage Tangibles.,Hierarchical Structure Is a Common Feature.,They Consist of Components Having Different Purposes.,All Are Expected to Require Modification/Evolution.,Interconnections Are Key.,Analysis and Verification Are Universal Underlying Needs.,2024/11/28,CQUPT,10,1软件工程知识回顾,1.1软件工程的基本概念,What is computer software?,具有以下特征的软件可以被看成计算机软件。,有可以在计算机上运行的程序,/,代码。,有可以被程序处理的数据。,有说明文档。,2024/11/28,CQUPT,11,1软件工程知识回顾,1.1软件工程的基本概念,软件工程的定义,软件工程是软件工程师用工具和技术(方法),按照某一过程和范例来构造软件,从而增强软件产品的质量,更有效地解决问题。,2024/11/28,CQUPT,12,1软件工程知识回顾,1.1软件工程的基本概念,软件发展的三个阶段,高级语言出现之前(约1946年1956年);,高级语言出现到软件工程出现之前(约1956年1969年);,软件工程阶段(1969年至今)。,2024/11/28,CQUPT,13,1软件工程知识回顾,1.1软件工程的基本概念,软件工程的作用,解决软件危机;,从技术和技术管理的角度来研究和探讨软件的设计、开发和维护问题。但由于软件本身的特点,软件产业既受技术影响,又受市场影响。所以我们不能说,只要解决软件工程问题就能推进软件产业。,2024/11/28,CQUPT,14,1软件工程知识回顾,1.1软件工程的基本概念,软件危机的特征,从微观上看,软件危机的特征正是表现在完工日期一再拖后、经费一再超支,甚至工程最终宣告失败等方面。,而从宏观上、从整个社会对软件的需求来看,软件危机的实质是软件产品的供应跟不上需求的增长。,2024/11/28,CQUPT,15,1软件工程知识回顾,1.1软件工程的基本概念,软件危机举例,丹佛国际机场的行李地下传输系统,有4000台遥控车,,21英里长的钢轨,,5000个电子眼,,400台无线电接收机,,56台条码机,,在20家航空公司、柜台和行李领取处之间传送行李。,通过由100台计算机组成的互联网来管理该系统。,投资1.93亿美元,,机场的开放时间拖了7个月以上。,2024/11/28,CQUPT,16,1软件工程知识回顾,1.1软件工程的基本概念,软件危机举例,1993年距伦敦90英里的塞兹韦尔核电站正式投入运行,但是工作人员很快发现核电站的反应堆内温度控制失灵,这使得欧洲人口最为稠密的地区面临巨大危险。事后查明,在反应堆的主要保护系统中,有一个10万行代码的控制软件几乎有一半未能通过测试。,2024/11/28,CQUPT,17,1软件工程知识回顾,1.1软件工程的基本概念,软件危机举例,80年代中,加拿大一家原子能公司生产的、由微处理机控制的癌症治疗仪,在美国和加拿大的多家医院使用均告失灵,致使6个病人因受超剂量辐射而死亡或受到严重伤害。,2024/11/28,CQUPT,18,1软件工程知识回顾,1.1软件工程的基本概念,软件危机举例,海湾战争中,一个软件故障打乱了爱国者导弹雷达跟踪系统,使导弹发射后未能迎击对方的飞毛腿导弹,反而轰击了自己的军营,造成28名士兵丧生、98人受伤。,2024/11/28,CQUPT,19,1软件工程知识回顾,1.1软件工程的基本概念,软件危机举例,1996年欧洲航天局发射的阿丽亚娜5型火箭,发射40秒钟后火箭爆炸,发射场上2名法国士兵当场死亡,耗资10亿美元、历时9年的航天计划严重受挫,引起了国际宇航界的震惊。事故发生后,专家组的调查分析报告指明,爆炸的根本原因在于惯性导航系统软件中技术要求和设计的错误。,2024/11/28,CQUPT,20,1软件工程知识回顾,1.1软件工程的基本概念,软件危机举例,德国电话计费系统的软件问题,造成用户需交付不合理电话费的事件,引起了公众的抗议。,2024/11/28,CQUPT,21,1软件工程知识回顾,1.1软件工程的基本概念,软件危机举例,2006,年,10,日,13,时,28,分,中国民航信息网络股份公司在首都机场的离港系统发生故障,导致机场部分航班无法办理值机手续。北京、广州、深圳、长沙机场至少,84,个离港航班发生延误。而发生航班延误的机场,由于延误航班较多,机场人满为患。,2024/11/28,CQUPT,22,1软件工程知识回顾,1.1软件工程的基本概念,软件危机举例,更多的例子,2024/11/28,CQUPT,23,1生命周期知识回顾,1.1软件工程的基本概念,软件危机举例,更多的例子,CQUPT 葛君伟,24,国内失败案例,资源一号,02,型,飞行两年,在,1473,圈,变轨没有成功,发现是潜通道问题。系统实现是分散到五个子程序,变量在前一个模块被清掉,需要姿态正常,才能开发动机。,方法:把部分程序重新设计,再送上去,CQUPT 葛君伟,25,国内失败案例,三号卫星,2004,年,11,月发射,,12,月,-05.1,,有四次进入异常工作模式。,分析:异常指令内存传下来分析,发现是轨道计算发现寻址跳变。减法运算指令,是否带进位关系到结果正确。,CQUPT 葛君伟,26,国内失败案例,神州飞船,返回的前天晚上,发现异常,发现发动机通讯有短暂不成功。,神州二号,发射逃逸模式,发出指令却没有转化到逃逸模式。,问题:时间清零问题,CQUPT 葛君伟,27,The problem only gets worse as IT grows ubiquitous,Failure,can be defined as the total abandonment of a project before or shortly after it is delivered.,Of the IT projects that are initiated, from,5 to 15 percent,will be abandoned before or shortly after delivery as hopelessly inadequate.,Many others will arrive late and over budget or require massive reworking.,Few IT projects, in other words, truly succeed.,CQUPT 葛君伟,28,WHEN A SOFTWARE PROJECT FAILS,The failure doesnt reflect projects,that exceed their budgetswhich most projects do,that delivered latewhich the majority are,that have to start over once a project is abandoned, or,that are bug-ridden systems which have to be repeatedly reworked.,发生用户诉讼的项目。,包括以上所有浪费的费用,仅美国每年在软件开发上浪费的费用就在,60-70 billion,美元。这些钱,可以发射太空飞船,100,次,,建造由,24,颗卫星组成的,GPS,系统,或者,从头研制开发,Boeing 777,飞机,还要剩余几,billion,美元。,2024/11/28,CQUPT,29,1软件工程知识回顾,1.1软件工程的基本概念,出现大量软件开发失败的主要原因,A complex software system comprises individual adaptive systems whose behavior and interactions change over time. These changes are usually not centrally planned, but arise from independent processes and decisions within and outside the complex software system.,因此,软件的适应能力差是主要原因。,出现大量软件开发失败的根本原因?,2024/11/28,CQUPT,30,1软件工程知识回顾,1.1软件工程的基本概念,软件工程的地位,1991,年,,ACM,和,IEEE-CS,的计算学科教程,CC1991,专题组将软件工程列为计算学科的九个知识领域之一。,2001,年,,CC2001,将计算科学划分为,5,个相对独立的部分:计算机科学,计算机工程,软件工程,信息系统和信息技术。,2004,年,8,月,全世界,500,多位来指大学、科研机构和企业的专家、教授推出了软件工程知识体和软件工程教育知识体,(SEEK),,标志着软件工程学科在世界范围正式确立。,2011,年,教育部正式将软件工程列为一级学科。,2024/11/28,CQUPT,31,1软件工程知识回顾,1.1软件工程的基本概念,软件工程学科,Software engineering is the discipline that aims at providing, evaluating, and improving methods, techniques, processes, and tools for the development of defect-free software that fulfills the needs of customers and users within time and budget constraints.,摘自,Perspectives on the Future of Software Engineering,,,2013,2024/11/28,CQUPT,32,1软件工程知识回顾,1.1软件工程的基本概念,软件工程的十个知识域,软件需求,软件工程基础,软件设计,软件工程核心,软件构造,软件测试,软件维护,软件配置管理,软件工程管理,基础设施管理,项目管理,度量和控制计划,软件工程过程,软件工程工具和方法,软件质量,2024/11/28,CQUPT,33,1软件工程知识回顾,1.1软件工程的基本概念,软件工程的传统途径生命周期方法学,对复杂问题进行分解,逐步完成每个阶段的任务,阶段审查的主要标准是高质量的文档,2024/11/28,CQUPT,34,1软件工程知识回顾,1.1软件工程的基本概念,软件的生命周期(,LifeCycle),:,计划,需求分析,设计,程序编写,测试,运行维护等六个步骤,2024/11/28,CQUPT,35,1软件工程知识回顾,1.1软件工程的基本概念,瀑布式模型(,waterfall model),系统需求分析,软件需求分析,设计,编码,测试,维护,2024/11/28,CQUPT,36,1软件工程知识回顾,1.1软件工程的基本概念,原型开发模型(,rapid prototyping),需求分析,快速设计,建立原型,用户评价原型,修改原型,生产产品,2024/11/28,CQUPT,37,1软件工程知识回顾,1.1软件工程的基本概念,面向对象生存期模型,(,object-oriented software engineering),CQUPT 葛君伟,38,软件工程模型,螺旋模型(,spiral model),CQUPT 葛君伟,39,软件工程模型,增量模型示意图,2024/11/28,CQUPT,40,1软件工程知识回顾,1.,2,可行性研究,目的:确定问题是否值得去解,任务,进一步分析和澄清问题的定义,导出系统的逻辑模型,探索若干种解决方案,并分析各种方案的,技术可行性,经济可行性,操作可行性,对以后的行动方针提出建议,2024/11/28,CQUPT,41,1软件工程知识回顾,1.,2,可行性研究,研究目前正在使用的系统,现有系统的功能,现有系统的不足,现有系统的经济指标,现有系统和其它系统之间的接口情况,2024/11/28,CQUPT,42,1软件工程知识回顾,1.,2,可行性研究,导出新系统的系统流程图,用图形符号以黑盒子形式描述物理系统的构成。,导出新系统的高层逻辑模型,数据流图,描述数据在系统中流动和处理的情况,描绘系统的逻辑模型,数据字典,2024/11/28,Junwei Ge,43,可行性研究,风险分析,风险:是由于从事某项特定活动过程中存在的不确定性而产生的经济或财务的损失,自然破坏或损伤的可能性。,任务:针对不同项目结合具体风险分析方法,进行项目风险评价,以采取有效方式进行风险管理,从而达到损失最小化的目的和效果。,类型,自然风险:是由于自然灾害(如水灾、火灾、地震、台风等)引起的项目风险。,人为风险:是指由于人为因素带来的风险,包括行为风险、政治风险、经济风险、技术风险、组织风险等。,2024/11/28,Junwei Ge,44,可行性研究,风险分析,过程,风险识别:,项目包括那些活动;各种活动存在那些风险;风险产生的原因是什么;这些风险的主次关系;各风险之间是否相关。,风险估计:,风险发生的概率大小;风险概率的分布情况;风险估算。,风险评价:,给出方案,选择规则;选出最佳方案;检验各风险因素对指标的影响;对风险对策提出建议。,2024/11/28,Junwei Ge,45,可行性研究,风险分析,方法,风险识别:,专家调查法,故障树分析法,幕景分析法。,风险估计,确定型风险估计:盈亏平衡分析,敏感性分析。,不确定型风险估计:小中取大原则,大中取小原则,遗憾原则,最大数学期望原则。,随机型风险估计,风险评价,定性风险评价方法:主观评分法,层次分析法。,定量风险评价方法;风险报酬法,决策树法,外推法,等。,2024/11/28,CQUPT,46,1软件工程知识回顾,1.,2,可行性研究,系统流程图举例,2024/11/28,CQUPT,47,1软件工程知识回顾,1.,2,可行性研究,典型环境下各个开发阶段需要使用的,人力的百分比,任 务 人 力,可行性研究 5,需求分析 10,设计 25,编码和单元测试 20,综合测试 40,总计 100,2024/11/28,CQUPT,48,1软件工程知识回顾,1.,2,可行性研究,问题,1,?,打算开发“公共场所安全监控系统的公共服务平台”,请作可行性分析。,问题,2,?,打算开发“互联网上身份证挂失系统,”,,请作可行性分析。,问题,3,?,某区打算开发基于云计算的社区卫生服务系统,请作可行性分析。,2024/11/28,CQUPT,49,1软件工程知识回顾,1.,3,需求分析,总任务,确定系统必须要做什么?,2024/11/28,CQUPT,50,1软件工程知识回顾,1.,3,需求分析,具体任务,确定对系统的综合要求,分析系统的数据要求,导出系统的逻辑模型:,数据流图,数据字典和处理算法。,开发原型系统,2024/11/28,CQUPT,51,1软件工程知识回顾,1.,3,需求分析,分析的基本方法,结构化方法,(SA),强调过程,,围绕功能,面向对象方法,(,OOA),强调方法,,围绕对象,互补,2024/11/28,CQUPT,52,1软件工程知识回顾,1.,3,需求分析,_,结构化,数据流图 处理,+,数据,但数据无关联,2024/11/28,CQUPT,53,1软件工程知识回顾,1.,3,需求分析,_,结构化,数据流图细化过程举例,2024/11/28,CQUPT,54,1软件工程知识回顾,1.,3,需求分析,_,结构化,数据流图细化过程举例,2024/11/28,CQUPT,55,1软件工程知识回顾,1.,3,需求分析,_,结构化,数据流图举例,2024/11/28,CQUPT,56,1软件工程知识回顾,1.,3,需求分析,_,结构化,数据字典举例,名字:定货报表,别名:定货信息,描述:每天一次送给采购员的需要定货的零件表,定义:定货报表=零件编号+零件名称+定货数量,+目前价格+主要供应者 +次要供应者,位置:输出到打印机,2024/11/28,CQUPT,57,1软件工程知识回顾,1.,3,需求分析,_,结构化,数据字典举例,名字:定货数量,别名:,描述:某个零件一次定货的数量,定义:定货数量=1数字5,位置:定货报表,定货信息,2024/11/28,CQUPT,58,1软件工程知识回顾,1.,3,需求分析,_,结构化,什么是概念模型或信息模型?,按用户的观点来对数据和信息建模,,即,建立数据之间的关系,。,2024/11/28,CQUPT,59,1软件工程知识回顾,1.,3,需求分析,_,结构化,常用的概念模型的建模方法,2024/11/28,CQUPT,60,1软件工程知识回顾,1.,3,需求分析,_,面向对象,将处理、数据和数据之间的关系聚合在一个模型中,即类图。,2024/11/28,CQUPT,61,1软件工程知识回顾,1.,3,需求分析,_,面向对象,对需求更直观的描述,用例图,2024/11/28,CQUPT GE J.,62,需求分析,概念模型和规范化,衡量数据聚合在一个实体或对象中是否合适的方法,规范化,采用分解的方法,力求使关系的语义单纯化,。,2024/11/28,CQUPT GE J.,63,需求分析,概念模型和规范化,什么是范式?,表示关系的某一种级别(或消除数据冗余的程度)。,2024/11/28,CQUPT GE J.,64,需求分析,概念模型和规范化,范式定律,第一范式(1,NF),关系的每一个分量必须是不可分的数据项。,2024/11/28,CQUPT GE J.,65,需求分析,概念模型和规范化,范式定律,第二范式(2,NF),若,R,1NF,,且每一个非主属性完全函数依赖于码,则,R,2NF。,例:运动会管理系统,下面的实体:,项目,(,项目编号,,名称,时间,场地,成绩,);,由于项目编号不能唯一确定成绩,故不满足,2NF,。,项目,(,项目编号,,名称,时间,场地,成绩,,运动员,);,由于名称等部分函数依赖于项目编号,故不满足,2NF,。,2024/11/28,CQUPT GE J.,66,需求分析,概念模型和规范化,范式定律,第三范式(3,NF),R,中若不存在这样的码,X、,属性组,Y,及非主属性,Z(Z,Y),使得,X,Y,Y,Z,Y,/,X,成立,则称,R,3NF。,或,即若,R,3NF,,则每一个非主属性既不部分依赖于码,也不传递依赖于码。,例:裁判,(,裁判编号,,姓名,项目编号,项目名称,),假设一个裁判只能执法一个项目。,项目名称项目编号裁判编号,存在传递依赖,2024/11/28,CQUPT GE J.,67,需求分析,概念模型和规范化,范式定律,的图示,2024/11/28,CQUPT,68,1软件工程知识回顾,1.,3,需求分析,讨论:“,互联网上身份证挂失系统,”,的顶层数据流图?,2024/11/28,CQUPT,69,1软件工程知识回顾,1.,4,总体设计,总体设计的任务,划分出组成系统的物理元素;,设计软件的结构。,怎么从需求分析结果导出系统架构?,2024/11/28,CQUPT,70,总体设计,Software Architecture,Software architecture is the design and specification of overall system structure. It defines a software system in terms of computational components (structure) and interactions among those components (topology).,Components:,are identified and assigned responsibilities that client components interact with through contracted interfaces.,Interactions:,specify communication and control mechanisms, and support all component interactions needed to accomplish system behavior.,2024/11/28,CQUPT,71,总体设计,Software Architecture,Structure issues include,the description of elements from which systems are built,interactions among those elements, that is, interchange representations and protocols,patterns that guide their composition,and constraints on these patterns.,2024/11/28,CQUPT,72,总体设计,Software Architecture,Architecture examples,procedure call,shared variable access,client-server protocols,database-accessing protocols,asynchronous event multicast,and piped streams.,2024/11/28,CQUPT,73,1软件工程知识回顾,1.,4,总体设计,总体设计的基础,数据流图,2024/11/28,CQUPT,74,1软件工程知识回顾,1.,4,总体设计,总体设计的基本原理,模块化,抽象,摩托车整车生产和零部件生产的管理过程,模块独立,模块之间低耦合,如数据耦合,控制耦合,公共环境耦合,内容耦合,模块内高内聚,如功能内聚,顺序内聚,通信内聚,过程内聚,时间内聚,逻辑内聚,偶然内聚,2024/11/28,CQUPT,75,1软件工程知识回顾,1.,4,总体设计,用层次图描述软件结构,2024/11/28,CQUPT,76,1软件工程知识回顾,1.,4,总体设计,_,结构化,软件结构图,数据流图,获得软件结构图的基本方法,2024/11/28,CQUPT,77,1软件工程知识回顾,1.,4,总体设计,_,结构化,数字仪表板系统的软件结构分析,低耦合:数据耦合,中耦合:控制耦合,高耦合:内容耦合,低内聚:偶然,逻辑,时间,中内聚:过程,通信,高内聚:顺序,功能,2024/11/28,CQUPT,78,1软件工程知识回顾,1.,4,总体设计,_,结构化,数字仪表板系统的软件结构分析,2024/11/28,CQUPT,79,总体设计,面向数据流的设计方法,数字仪表板系统的第二级分解,2024/11/28,CQUPT,80,1软件工程知识回顾,1.,4,总体设计,_,面向对象,类图,2024/11/28,CQUPT,81,1软件工程知识回顾,1.,4,总体设计,_,面向对象,为了更好地描述行为之间的关系,状态图,2024/11/28,CQUPT,82,总体设计,讨论,上述数字仪表板系统模块的独立性?,如何总体设计才能获得更好的模块独立性?,2024/11/28,CQUPT,83,1软件工程知识回顾,1.,5,详细设计,任务,设计程序流程图,从而确定具体实现系统的方法。,基本设计方法,采用自顶向下逐步求精的设计方法和单入口单出口的结构化设计方法。,2024/11/28,CQUPT,84,1软件工程知识回顾,1.,5,详细设计,设计方法举例,Jackson,设计方法,Jackson,设计方法是面向数据结构的设计方法。,根据输入输出数据结构,导出问题解法。,2024/11/28,CQUPT,85,1软件工程知识回顾,1.,6,测试,软件测试是指为了发现程序中的错误而执行程序的过程,并最终修正错误(调试)。,2024/11/28,CQUPT,86,1软件工程知识回顾,1.,6,测试,讨论,中央,2,台,2013,年,3,月,29,日早上第一时间报道了一个汽车加装,GPS,防盗系统的消费者投诉案例。汽车在正常行驶过程中会无故突然自行停止行驶,形成安全隐患。,讨论两个测试报告,QWERP,项目测试,信访项目测试,2024/11/28,CQUPT,87,1软件工程知识回顾,1.,6,测试,软件测试不可能发现软件中所有的错误。,2024/11/28,CQUPT,88,1软件工程知识回顾,1.,6,测试,测试的方法,黑盒测试(功能测试):检验程序的每个功能是否正常。,白盒测试(结构测试):检验程序的逻辑结构和处理过程是否正常。,2024/11/28,CQUPT,89,1软件工程知识回顾,1.,6,测试,设计测试方案的基本方法,用黑盒法设计基本的测试方案;,用白盒法设计补充的测试方案。,2024/11/28,CQUPT,90,1软件工程知识回顾,1.,6,测试,测试方案中应包括的内容,预定要测试的功能,应该输入的测试数据,预期的测试结果,设计测试方案应尽可能做到逻辑覆盖,2024/11/28,CQUPT,91,1软件工程知识回顾,1.,6,测试,根据给定的三个长度值,判断三角形的类型。,2024/11/28,CQUPT,92,1软件工程知识回顾,1.,6,测试,选择下图中的某个处理,设计一个测试方案。,2024/11/28,CQUPT,93,1软件工程知识回顾,1.,7,维护,软件维护是为了改正错误或满足新的需要而修改软件的过程。,2024/11/28,CQUPT,94,1软件工程知识回顾,1.,7,维护,软件维护的分类,改正性维护,适应性维护,完善性维护,预防性维护,2024/11/28,CQUPT,95,1软件工程知识回顾,1.,7,维护,软件可维护性的定义:,维护人员理解、改正、改动和改进这个软件的难易程度。,2024/11/28,CQUPT,96,1软件工程知识回顾,1.,7,维护,决定软件可维护性的因素,可理解性,可测试性,可修改性,文档:影响软件可维护性的决定因素。,
展开阅读全文