软件工程知识回顾概要_第1页
软件工程知识回顾概要_第2页
软件工程知识回顾概要_第3页
软件工程知识回顾概要_第4页
软件工程知识回顾概要_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程知识回顾概要主要参考教材

张海藩,软件工程,人民邮电出版社,2010。

S.L.Pfleeger,软件工程,人民邮电出版社,2007.

LanSommerville,软件工程(英文版第7版),SoftwareEngineering,SeventhEdition,机械工业出版社,2004.11,ISBN7-111-15309-X21 软件工程知识回顾3#include<iostream.h>

voidmain()

{

inta,b;

cout<<"\ninputa,b=\n";

cin>>a>>b;

intc;

c=a/b;

intd=a%b;

cout<<"\na/b="<<c<<end;

cout<<"\na%b="<<d<<end;

}

问题1

请讨论以下C++程序的作用和不足?//I/O流库头文件//输出提示语//对a、b变量输入//变量可随用随定义//输出a除以b的商//输出a除以b的余数2026/5/24JunweiGeITisnowoneofthelargestcorporateexpensesoutsideemployeecostsOrganizationsand

governmentsspendanestimated$1trilliononIThardware,software,andservicesworldwide.Theaveragecompanyspendsabout4to5percentofrevenueonIT.ThecompaniesthatarehighlyITdependent—suchasfinancialandtelecommunicationscompanies—spendingmorethan10percentonit.5CQUPT葛君伟Governmentsarebigconsumersof

software…TheUnitedKingdomhadmorethan100majorgovernmentITprojectsunderwaythattotaled$20.3billion.TheU.S.governmentcataloged1200civilianITprojectscostingmorethan$60billion,plusanother$16billionformilitarysoftware.6CQUPT葛君伟Governmentsarebigconsumersof

softwareAnyoneoftheseprojectscancostover$1billion.Forexample,thecomputermodernizationeffortattheU.S.DepartmentofVeteransAffairsisprojectedtorun$3.5billion,whileautomatingthehealthrecordsoftheUK’sNationalHealthServiceislikelytocostmorethan$14.3billionfordevelopmentandanother$50.8billionfordeployment.Suchmegasoftwareprojectsarenowmuchmorecommon,assmallerIToperationsarejoinedinto“systemsofsystems.”Airtrafficcontrolisaprimeexample,becauseitreliesonconnectionsamongdozensofnetworksthatprovidecommunications,weather,navigation,andotherdata.7CQUPT葛君伟问题2

你应如何开发一个电信业务管理系统?2026/5/28JunweiGe1 软件工程知识回顾

1.1 软件工程的基本概念Whatissoftware具有以下特征的实体(Entities)可以被看成软件。TheyAreNon-tangible,andNon-physical,butOftenIntendedtoManageTangibles.HierarchicalStructureIsaCommonFeature.TheyConsistofComponentsHavingDifferentPurposes.AllAreExpectedtoRequireModification/Evolution.InterconnectionsAreKey.AnalysisandVerificationAreUniversalUnderlyingNeeds.2026/5/29CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念Whatiscomputersoftware具有以下特征的软件可以被看成计算机软件。有可以在计算机上运行的程序/代码。有可以被程序处理的数据。有说明文档。2026/5/210CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件工程的定义软件工程是软件工程师用工具和技术(方法),按照某一过程和范例来构造软件,从而增强软件产品的质量,更有效地解决问题。2026/5/211CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件发展的三个阶段高级语言出现之前(约1946年~1956年);高级语言出现到软件工程出现之前(约1956年~1969年);软件工程阶段(1969年~至今)。2026/5/212CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件工程的作用解决软件危机;从"技术"和"技术管理"的角度来研究和探讨软件的设计、开发和维护问题。但由于软件本身的特点,软件产业既受技术影响,又受市场影响。所以我们不能说,只要解决软件工程问题就能推进软件产业。2026/5/213CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件危机的特征从微观上看,软件危机的特征正是表现在完工日期一再拖后、经费一再超支,甚至工程最终宣告失败等方面。而从宏观上、从整个社会对软件的需求来看,软件危机的实质是软件产品的供应跟不上需求的增长。2026/5/214CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件危机举例丹佛国际机场的行李地下传输系统有4000台遥控车,21英里长的钢轨,5000个电子眼,400台无线电接收机,56台条码机,在20家航空公司、柜台和行李领取处之间传送行李。通过由100台计算机组成的互联网来管理该系统。投资1.93亿美元,机场的开放时间拖了7个月以上。2026/5/215CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件危机举例1993年距伦敦90英里的塞兹韦尔核电站正式投入运行,但是工作人员很快发现核电站的反应堆内温度控制失灵,这使得欧洲人口最为稠密的地区面临巨大危险。事后查明,在反应堆的"主要保护系统"中,有一个10万行代码的控制软件几乎有一半未能通过测试。2026/5/216CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件危机举例80年代中,加拿大一家原子能公司生产的、由微处理机控制的癌症治疗仪,在美国和加拿大的多家医院使用均告失灵,致使6个病人因受超剂量辐射而死亡或受到严重伤害。2026/5/217CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件危机举例海湾战争中,一个软件故障打乱了"爱国者"导弹雷达跟踪系统,使导弹发射后未能迎击对方的"飞毛腿"导弹,反而轰击了自己的军营,造成28名士兵丧生、98人受伤。2026/5/218CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件危机举例1996年欧洲航天局发射的阿丽亚娜5型火箭,发射40秒钟后火箭爆炸,发射场上2名法国士兵当场死亡,耗资10亿美元、历时9年的航天计划严重受挫,引起了国际宇航界的震惊。事故发生后,专家组的调查分析报告指明,爆炸的根本原因在于惯性导航系统软件中技术要求和设计的错误。2026/5/219CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件危机举例德国电话计费系统的软件问题,造成用户需交付不合理电话费的事件,引起了公众的抗议。2026/5/220CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件危机举例2006年10日13时28分,中国民航信息网络股份公司在首都机场的离港系统发生故障,导致机场部分航班无法办理值机手续。北京、广州、深圳、长沙机场至少84个离港航班发生延误。而发生航班延误的机场,由于延误航班较多,机场人满为患。2026/5/221CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件危机举例——更多的例子2026/5/222CQUPT1 生命周期知识回顾

1.1 软件工程的基本概念软件危机举例——更多的例子2026/5/223CQUPT国内失败案例…资源一号02型飞行两年,在1473圈,变轨没有成功发现是潜通道问题。系统实现是分散到五个子程序,变量在前一个模块被清掉,需要姿态正常,才能开发动机。方法:把部分程序重新设计,再送上去24CQUPT葛君伟国内失败案例…三号卫星2004年11月发射,12月-05.1,有四次进入异常工作模式。分析:异常指令-内存传下来分析,发现是轨道计算发现寻址跳变。减法运算指令,是否带进位关系到结果正确。25CQUPT葛君伟国内失败案例神州飞船返回的前天晚上,发现异常,发现发动机通讯有短暂不成功。神州二号发射逃逸模式,发出指令却没有转化到逃逸模式。问题:时间清零问题26CQUPT葛君伟TheproblemonlygetsworseasITgrowsubiquitousFailurecanbedefinedasthetotalabandonmentofaprojectbeforeorshortlyafteritisdelivered.OftheITprojectsthatareinitiated,from5to15percentwillbeabandonedbeforeorshortlyafterdeliveryashopelesslyinadequate.Manyotherswillarrivelateandoverbudgetorrequiremassivereworking.FewITprojects,inotherwords,trulysucceed.27CQUPT葛君伟WHENASOFTWAREPROJECTFAILSThefailuredoesn’treflectprojectsthatexceedtheirbudgets—whichmostprojectsdo,thatdeliveredlate—whichthemajorityare,thathavetostartoveronceaprojectisabandoned,orthatarebug-riddensystemswhichhavetoberepeatedlyreworked.发生用户诉讼的项目。包括以上所有浪费的费用,仅美国每年在软件开发上浪费的费用就在60-70billion美元。这些钱可以发射太空飞船100次,建造由24颗卫星组成的GPS系统,或者从头研制开发Boeing777飞机,还要剩余几billion美元。28CQUPT葛君伟1 软件工程知识回顾

1.1 软件工程的基本概念出现大量软件开发失败的主要原因Acomplexsoftwaresystemcomprisesindividualadaptivesystemswhosebehaviorandinteractionschangeovertime.Thesechangesareusuallynotcentrallyplanned,butarisefromindependentprocessesanddecisionswithinandoutsidethecomplexsoftwaresystem.因此,软件的适应能力差是主要原因。出现大量软件开发失败的根本原因?2026/5/229CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件工程的地位1991年,ACM和IEEE-CS的计算学科教程CC1991专题组将软件工程列为计算学科的九个知识领域之一。2001年,CC2001将计算科学划分为5个相对独立的部分:计算机科学,计算机工程,软件工程,信息系统和信息技术。2004年8月,全世界500多位来指大学、科研机构和企业的专家、教授推出了软件工程知识体和软件工程教育知识体(SEEK),标志着软件工程学科在世界范围正式确立。2011年,教育部正式将软件工程列为一级学科。2026/5/230CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件工程学科Softwareengineeringisthedisciplinethataimsatproviding,evaluating,andimprovingmethods,techniques,processes,andtoolsforthedevelopmentofdefect-freesoftwarethatfulfillstheneedsofcustomersanduserswithintimeandbudgetconstraints.

——摘自《PerspectivesontheFutureofSoftwareEngineering》,20132026/5/231CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件工程的十个知识域软件需求——软件工程基础软件设计——软件工程核心软件构造软件测试软件维护软件配置管理软件工程管理—基础设施管理,项目管理,度量和控制计划软件工程过程软件工程工具和方法软件质量2026/5/232CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件工程的传统途径—生命周期方法学对复杂问题进行分解逐步完成每个阶段的任务阶段审查的主要标准是高质量的文档2026/5/233CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念软件的生命周期(LifeCycle):计划需求分析设计程序编写测试运行维护等六个步骤2026/5/234CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念瀑布式模型(waterfallmodel)系统需求分析软件需求分析设计编码测试维护2026/5/235CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念原型开发模型(rapidprototyping)需求分析快速设计建立原型用户评价原型修改原型生产产品2026/5/236CQUPT1 软件工程知识回顾

1.1 软件工程的基本概念面向对象生存期模型(object-orientedsoftwareengineering)2026/5/237CQUPT软件工程模型螺旋模型(spiralmodel)38CQUPT葛君伟软件工程模型增量模型示意图39CQUPT葛君伟1 软件工程知识回顾

1.2 可行性研究目的:确定问题是否值得去解任务进一步分析和澄清问题的定义导出系统的逻辑模型探索若干种解决方案,并分析各种方案的技术可行性经济可行性操作可行性对以后的行动方针提出建议2026/5/240CQUPT1 软件工程知识回顾

1.2 可行性研究研究目前正在使用的系统现有系统的功能现有系统的不足现有系统的经济指标现有系统和其它系统之间的接口情况2026/5/241CQUPT1 软件工程知识回顾

1.2 可行性研究导出新系统的系统流程图用图形符号以黑盒子形式描述物理系统的构成。导出新系统的高层逻辑模型数据流图描述数据在系统中流动和处理的情况描绘系统的逻辑模型数据字典2026/5/242CQUPT可行性研究

风险分析风险:是由于从事某项特定活动过程中存在的不确定性而产生的经济或财务的损失,自然破坏或损伤的可能性。任务:针对不同项目结合具体风险分析方法,进行项目风险评价,以采取有效方式进行风险管理,从而达到损失最小化的目的和效果。类型自然风险:是由于自然灾害(如水灾、火灾、地震、台风等)引起的项目风险。人为风险:是指由于人为因素带来的风险,包括行为风险、政治风险、经济风险、技术风险、组织风险等。2026/5/243JunweiGe可行性研究

风险分析过程风险识别:项目包括那些活动;各种活动存在那些风险;风险产生的原因是什么;这些风险的主次关系;各风险之间是否相关。风险估计:风险发生的概率大小;风险概率的分布情况;风险估算。风险评价:给出方案,选择规则;选出最佳方案;检验各风险因素对指标的影响;对风险对策提出建议。2026/5/244JunweiGe可行性研究

风险分析方法风险识别:专家调查法,故障树分析法,幕景分析法。风险估计确定型风险估计:盈亏平衡分析,敏感性分析。不确定型风险估计:小中取大原则,大中取小原则,遗憾原则,最大数学期望原则。随机型风险估计风险评价定性风险评价方法:主观评分法,层次分析法。定量风险评价方法;风险报酬法,决策树法,外推法,等。2026/5/245JunweiGe1 软件工程知识回顾

1.2 可行性研究系统流程图举例2026/5/246CQUPT1 软件工程知识回顾

1.2 可行性研究2026/5/247CQUPT1 软件工程知识回顾

1.2 可行性研究问题1? 打算开发“公共场所安全监控系统的公共服务平台”,请作可行性分析。问题2? 打算开发“互联网上身份证挂失系统”,请作可行性分析。问题3?

某区打算开发基于云计算的社区卫生服务系统,请作可行性分析。2026/5/248CQUPT1 软件工程知识回顾

1.3 需求分析总任务确定系统必须要做什么?2026/5/249CQUPT1 软件工程知识回顾

1.3 需求分析具体任务确定对系统的综合要求分析系统的数据要求导出系统的逻辑模型:数据流图,数据字典和处理算法。开发原型系统2026/5/250CQUPT1 软件工程知识回顾

1.3 需求分析分析的基本方法结构化方法(SA)—强调过程,

围绕功能面向对象方法(OOA)—强调方法,

围绕对象互补2026/5/251CQUPT1 软件工程知识回顾

1.3 需求分析_结构化数据流图处理+数据,但数据无关联2026/5/252CQUPT1 软件工程知识回顾

1.3 需求分析_结构化数据流图细化过程举例2026/5/253CQUPT1 软件工程知识回顾

1.3 需求分析_结构化数据流图细化过程举例2026/5/254CQUPT1 软件工程知识回顾

1.3 需求分析_结构化数据流图举例2026/5/255CQUPT1 软件工程知识回顾

1.3 需求分析_结构化数据字典举例名字:定货报表别名:定货信息描述:每天一次送给采购员的需要定货的零件表定义:定货报表=零件编号+零件名称+定货数量+目前价格+主要供应者+次要供应者位置:输出到打印机2026/5/256CQUPT1 软件工程知识回顾

1.3 需求分析_结构化数据字典举例名字:定货数量别名:描述:某个零件一次定货的数量定义:定货数量=1{数字}5位置:定货报表定货信息2026/5/257CQUPT1 软件工程知识回顾

1.3 需求分析_结构化什么是概念模型或信息模型?按用户的观点来对数据和信息建模,即建立数据之间的关系。2026/5/258CQUPT1 软件工程知识回顾

1.3 需求分析_结构化常用的概念模型的建模方法2026/5/259CQUPT1 软件工程知识回顾

1.3 需求分析_面向对象将处理、数据和数据之间的关系聚合在一个模型中,即类图。2026/5/260CQUPT1 软件工程知识回顾

1.3 需求分析_面向对象对需求更直观的描述—用例图2026/5/261CQUPT需求分析

概念模型和规范化衡量数据聚合在一个实体或对象中是否合适的方法—规范化采用分解的方法,力求使关系的语义单纯化。2026/5/262CQUPTGEJ.需求分析

概念模型和规范化什么是范式?表示关系的某一种级别(或消除数据冗余的程度)。2026/5/263CQUPTGEJ.需求分析

概念模型和规范化范式定律第一范式(1NF)关系的每一个分量必须是不可分的数据项。2026/5/264CQUPTGEJ.需求分析

概念模型和规范化范式定律第二范式(2NF)若R

1NF,且每一个非主属性完全函数依赖于码,则R

2NF。例:运动会管理系统,下面的实体:项目(项目编号,名称,时间,场地,成绩);

由于项目编号不能唯一确定成绩,故不满足2NF。项目(项目编号,名称,时间,场地,成绩,运动员);由于名称等部分函数依赖于项目编号,故不满足2NF。2026/5/265CQUPTGEJ.需求分析

概念模型和规范化范式定律第三范式(3NF)R<U,F>中若不存在这样的码X、属性组Y与非主属性Z(Z\

Y)使得X→Y,Y→Z,Y→/X成立,则称R

3NF。或即若R

3NF,则每一个非主属性既不部分依赖于码,也不传递依赖于码。例:裁判(裁判编号,姓名,项目编号,项目名称)假设一个裁判只能执法一个项目。项目名称←项目编号←裁判编号,存在传递依赖2026/5/266CQUPTGEJ.需求分析

概念模型和规范化范式定律的图示2026/5/267CQUPTGEJ.1 软件工程知识回顾

1.3 需求分析讨论:“互联网上身份证挂失系统”的顶层数据流图?2026/5/268CQUPT1 软件工程知识回顾

1.4 总体设计总体设计的任务划分出组成系统的物理元素;设计软件的结构。怎么从需求分析结果导出系统架构?2026/5/269CQUPT总体设计

SoftwareArchitecture

Softwarearchitectureisthedesignandspecificationofoverallsystemstructure.Itdefinesasoftwaresystemintermsofcomputationalcomponents(structure)andinteractionsamongthosecomponents(topology).

Components:areidentifiedandassignedresponsibilitiesthatclientcomponentsinteractwiththrough"contracted"interfaces.Interactions:specifycommunicationandcontrolmechanisms,andsupportallcomponentinteractionsneededtoaccomplishsystembehavior.2026/5/270CQUPT总体设计

SoftwareArchitecture

Structureissuesincludethedescriptionofelementsfromwhichsystemsarebuilt,interactionsamongthoseelements,thatis,interchangerepresentationsandprotocols,patternsthatguidetheircomposition,andconstraintsonthesepatterns.2026/5/271CQUPT总体设计

SoftwareArchitecture

Architectureexamples

procedurecall,sharedvariableaccess,client-serverprotocols,database-accessingprotocols,asynchronouseventmulticast,andpipedstreams.2026/5/272CQUPT1 软件工程知识回顾

1.4 总体设计总体设计的基础数据流图2026/5/273CQUPT1 软件工程知识回顾

1.4 总体设计总体设计的基本原理模块化抽象—摩托车整车生产和零部件生产的管理过程模块独立模块之间低耦合,如数据耦合,控制耦合,公共环境耦合,内容耦合模块内高内聚,如功能内聚,顺序内聚,通信内聚,过程内聚,时间内聚,逻辑内聚,偶然内聚2026/5/274CQUPT1 软件工程知识回顾

1.4 总体设计用层次图描述软件结构2026/5/275CQUPT1 软件工程知识回顾

1.4 总体设计_结构化软件结构图数据流图获得软件结构图的基本方法2026/5/276CQUPT1 软件工程知识回顾

1.4 总体设计_结构化数字仪表板系统的软件结构分析低耦合:数据耦合中耦合:控制耦合高耦合:内容耦合低内聚:偶然,逻辑,时间中内聚:过程,通信高内聚:顺序,功能2026/5/277CQUPT1 软件工程知识回顾

1.4 总体设计_结构化数字仪表板系统的软件结构分析2026/5/278CQUPT

总体设计

面向数据流的设计方法数字仪表板系统的第二级分解20

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论