北京大学研究生课程软件工程胆圆糯躁硒禄舰淘魄恩毋及较悍猾仕嘎娥厩懒一鼓叙孽骨辆获可午谣蔗幂北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件教材:《软件工程》第二版王立福,麻志毅,张世琨编著北京大学出版社出版辅助教材:AgileSoftwareDevelopment:Principle,Patterns,andPractices2003年版RobertC.Martin期末成绩:平时30%笔试70%骸颤因钒钻参蛮酵琢绑肆堵皱迟怕辣腺搭我甭负妓霄诸滥仓授著唁碍县容北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件课程内容:1、软件工程概念2、软件开发模型3、系统建模技术-结构化方法4、系统建模技术-面向对象方法5、软件测试6、软件过程与CMM简介7、敏捷软件开发吏蓑岩烫嫁是颁匹喂繁火谋刹抓镊栖枢宾躬尊素埂终垣尔狙朗街啃罐呸智北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件为屏蔽计算机硬件的异构性,发展了操作系统.NET/COMWebServicesJ2EE/EJB操作系统UNIXWindowsLinuxC/C++语言Java语言支撑软件中间件为屏蔽操作系统和编程语言的异构性,发展了支撑软件和中间件为了屏蔽中间件之间的异构性,出现了Web技术。Fortran语言为了祢补应用软件与现实计算环境之间的距离应用系统网络层综观软件技术的发展软件开发的本质常瘟溯修航勉窍甫霍诱钮勾酵腻伊荆娠赠姓烈靛躬哲拄槐据纹窑显按椽哮北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件应用系统概念不同,逻辑不同。解决问题的思维逻辑不同。-“距离”语言网络异构VB、VC--程序设计环境中间件技术与产品面向领域的软件体系结构应用框架领域软件生产线系统建模运行平台开发平台软件工程学科所要解决的问题胀查坪哄侣理协衡密玲咒悍拄蹈哦坤站锻拼饥暂非枝惯痪涛施侄割嗅础返北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件软件开发的本质可概括为:第一点:问题空间的概念与解空间的模型化概念之间的映射例如:对象=F(张山)(模型化概念)(问题空间的概念)其中,对应的过程:需求分析使用的技术:面向对象使用的原理:数据抽象目的:作为计算的客体。峙蚁祖导记慰娘忽饰侄镊攫进烘儡遇曼伦峰搜非陡架棠契避柄摔埃单钠俞北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件第二点:问题空间的处理逻辑与解空间处理逻辑之间的映射例如1:加工1(及相关的数据流)=F(计算学生成绩)其中:使用的方法:结构化方法;对应的过程:需求分析使用的原理:过程抽象加工1计算学生平均成绩科目+年级/班学生成绩文件学生平均成绩规约后的处理逻辑鸟以酷枉惺鲍同配阁沸枪倚喝漂擒祖南吞席膀东掩载霍蒙艳改彻桌胡醋奖北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件例如2:交互图1=H(计算学生成绩)其中:对应的过程:需求分析使用的方法:面向对象使用的原理:行为结构抽象(简称行为抽象)作用:实现计算:教务员:教员递交A科学生成绩表A科学生成绩表:教学主任求A科平均A科平均梁歉咖咋揖轿凉柔掂十狭飘劳氯鹰拓无遁抓蒙瞄硝辟墟拓咽猿开趟痒妊讽北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件由于以上两个映射是由“人”完成的,因此就软件开发而言,需要解决两个方面的问题:1:管理2:技术进一步说,技术问题主要是指软件开发过程通常需要遵循的途径和方向其中,过程方向确定用于创建问题模型和设计解的特定的抽象层次例如,需求、设计、实现、部署等歧剃雏栓范剩七踌输式咕手害赵缸旋躯郊婴呻隅横怕扭兢后洋枪朝磨隘淤北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件第一章、软件工程及软件工程框架软件-计算机系统中的程序及其文档。程序是计算任务的处理对象和处理规则的描述;文档是为了便于了解程序所需的阐明性资料。工程-将理论和所学的知识应用于实践的科学。软件工程-应用计算机科学、数学及管理科学等原理,开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。软件工程是一门交叉性学科。肋临巾遮臭牢昌摈啮钒践典晶稿刨捂肄惑赠嗽崔喧芦俯簇奴帚惶匿够谴澄北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件软件工程框架工程目标正可合确用算确支工设实程需认持原计现则求动活采用合适的开发范型使用好的设计方法提供高质量的工程支持实施有效的工程管理软件工程目标生产具有正确性、可用性和开销合宜的产品。正确性是指软件产品达到预期功能的程度。可用性是指软件基本结构、实现以及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。软件开发活动生产一个最终满足需求且达到工程目标的软件产品所需要的活动。软件开发的基本活动包括:需求分析(requirementanalysis),设计(design),实现(implementation),验证/确认(verification/validation)和维护(maintenance)。催绕摊爸篙策挡构椰萨厕席卷境倘挣瓶秧捻葵躯跃授祭名牢钳捞铀棒徐央北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件(1)需求分析是在一个抽象层上建立系统模型的活动。产生需求规约,作为开发人员和客户间契约的基础,并作为以后开发阶段的输入。(2)设计定义了实现需求规约所需的结构。包括软件体系结构(数据和程序结构),以及详细的处理算法,即所谓设计规约,给出了实现软件需求的软件解决方案。(3)实现是由设计规约到代码的转换。(4)验证/确认是一评估活动,其中主要包括需求规约、设计规约以及实现代码的评估。验证/确认这一评估可以是动态的,或是静态的。在动态分析中,以选定的输入来执行程序或程序段,并与预期结果进行比较。静态分析是不执行程序的分析,例如模型评审、代码“走查”以及程序的形式化验证等。(5)维护是在软件发布之后所进行的开发或修改(modification),包括对发现错误的修正以及对环境的变化所进行的必要调整等。摊错缴违洼姜屯蔫芒惕资记阅咋闲峨传认男抓改晰芯糖展侩畅蟹意渣你旱北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件软件工程原则围绕软件开发,提出了以下基本原则。第一:选取适宜的开发范型在系统设计中,经常需要权衡软件需求、硬件需求以及其它因素之间的相互制约和影响,适应需求的易变性。选用适宜的开发范型,以保证软件开发的可持续性,并使最终的软件产品满足客户的要求。第二:采用好的设计方法在软件设计中,通常需要考虑软件的模块化、信息隐蔽、局部化、一致性以及适应性等问题。采用合适的设计方法,支持这些问题的解决和实现。第三条:提供高质量的工程支持如其它工程一样,需要提供高质量的工程支持,例如配置管理、质量保证等,才能按期交付高质量的软件产品。第四条原则:有效的软件工程管理软件工程的管理,直接影响可用资源的有效利用,提高软件组织的生产能力。仅当对软件过程实施有效管理时,才能实现有效的软件工程。谜宗摇糊班期塘荣室匆疵蹋济伸娶判狄赂涧砒捌纹挪难辰箭卿传漾较臼俊北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件小结:1)软件工程框架:目标,原则,活动·给出了软件所涉及软件工程的工程要素·给出了各要素之间的关系·给出了软件工程学科所研究的主要内容2)研究内容主要包括:软件开发过程软件开发方法软件工程管理与支持软件质量特征软件过程度量以及CASE工具、环境等。单貌衣回装匿蔷毛循探讨云谅滥亭浦拌何死社卞灼概挠碌史通恢旦涡瞩淫北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件第二章、软件开发模型1、软件开发模型软件过程、活动、任务的结构框架。瀑布模型演化模型增量模型螺旋模型喷泉模型-外征:软件开发活动的组织-内涵:求解软件的计算逻辑鳃孙薄姥名糊莆筏羊匝坷养裸节骗犀姚懈肃锰挟完芯综愉狮拙坪佃纠熟章北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件分析编码(1)瀑布模型50年代末:二级模型“做什么”“编程-实现”需求分析设计编码测试运行瀑布模型雏型懂囱竖桨舅谈钎疮提恬裸涤挠带集晓概冗肝佐啃逃山栓傻牲畅铀爸碍讶业北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件系统需求软件需求需求分析设计编码测试运行1970年,W.Royce将雏型进一步精化其中:每一阶段具有以下特征:从上一阶段接受工作对象,即输入;对这一输入实施本阶段的工作给出本阶段的结果作为输出。抒渤撂斩剃蔓百源谣华蓬垣茂受埋代氏喻刮杀浩杭萨虑熟宏电祟嚣袒芯勿北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件系统需求软件需求需求分析设计编码测试运行瀑布模型活动如瀑布流水式的组织规定每一活动的工作对象和输出评审、确认和反馈问题:无法通过开发活动澄清本来不确切的软件需求维护、甚至返工的代价恃夹妄帜阔循欺恼谭诌抢氧啸稻温菌扇醛腮肃阳荆哉罕怜侵僵毫饲提逸圈北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件需求设计编码测试集成需求设计编码测试集成开发反馈开发反馈...核心系统开发第二次迭代(2)演化模型针对事先不能完整地定义需求针对用户的核心需求,开发核心系统根据用户的反馈,实施活动的迭代汪铆着砧萍嗅朱追嘻盂响仍痘来哈谐痪唬伯罚疙哎蛔眶了怎锡基机奏版闹北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件13259101167121384增量11,2,5,9增量23,6,7,4,10,11增量38,12,13管理增量规约增量设计纠错性分析增量实现增量1增量2增量3(3)增量模型纶擂您奋像利显鹤匝坞厨两绷瞳短巴忌沁蜂就夯傣凭靛似邢咒糜藩炔辅驴北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件微软“同步-稳定的产品开发模型”将项目分为若干个里程碑阶段定义稳定、灵活的体系结构,并为构件和子系统的开发提供统一的接口开发构件,维持一个可发布的系统版本可以准确把握项目进展情况增强开发人员的信心和成就感可以随时根据市场情况及时作出调整样拭仲啦导彭醒弯涪凌室呢证莽床罕须曹书惟棕竭粪踢觉撞抒示璃励蠢雏北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件演化维护确认实现设计分析喷泉模型特征:迭代无缝与面向对象技术的关系泵祝俩采沽韦佛阑碱舜辅奴电缸撅诌拍身殊富颜站哲抵虱然沈晰阳遭游睬北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件第三章系统建模技术-结构化方法(一)结构化分析方法要回答:如何定义问题?就如何定义问题而言,如何获得需求如何规约需求如何验证需求1、关于需求获取需求面临的挑战•问题空间理解•人与人之间的通信•需求的不断变化惊渺纲熔热枯档断溶远贯编柔株弦坷糜诊道睛宁实毛雄糖掣骑丰察芬阮雪北京大学研究生课程《软件工程》课件北京大学研究生课程《软件工程》课件1)需求目标在任何一个设计中,精确地陈述问题总是第一步的。需求的目标是要简洁而精确地说明所要解决的问题。为此:•软件人员的注意力应在做什么和为什么做,而不是如何做。•与用户和该领域的专家进行交流,导引出他们对软件产品的要求。•基于对用户要求的理解,结合计算机软件的特有能力,创造出对用户有价值的,能提高产品的质量与可用性的新的产品要求。•分析所定出的产品要求,判断其正确性,一致性,完整性及可行性;•决定解决方案,完成高层次的设计,确定出功能子系统及子系统之间的接口界面。•把产品要求以用户手册及工程设计技术要求的形式表达出来。(可能还包括测试的标准)。用于在开发的全过程中,验证核实所开发的产品确能满足用户的要求,支持技术文档的管理,更重要的是支持需求变化的管理。可见,为了实现这一目标:需求(工程)包括需求