
南京师范大学-软件工程-方法与实践-.pptx
89页软件工程-方法与实践窦万峰计算机科学与技术学院南京师范大学2021年8月第一局部:软件工程与过程第一局部:软件工程与过程v什么是软件工程?v什么是工程化思想?v什么是软件过程?有哪些过程模型?v如何建立过程模型?v什么是统一过程?v什么是敏捷过程?有哪些模型?v什么是软件工程实践?v注:本局部的实验课参照实验教材实验1和实验2进行第第1章章 概述主要内容概述主要内容v软件工程的根本概念v软件工程化思想v软件工程两大范型v软件工程思想与根本原理v软件工程根本活动软件工程定义软件工程定义vB.W.Boehm的定义:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必须的相关文件资料vFritz Bauer的定义:软件工程是为了经济地获得能够在实际机器上有效运行的可靠软件而建立和使用的一系列完善的工程化原那么v1983年美国?IEEE软件工程标准术语?的定义为:软件工程是开发、运行、维护和修复软件的系统方法,其中“软件的定义为:计算机程序、方法、规那么、相关的文档资料以及在计事机上运行时所必需的数据什么是软件?什么是软件?v三要素:v程序v文档v数据v特性:v复杂性v一致性v不会磨损和“老化v易变性v移植性v本钱高软件演化软件演化v第一代:程序设计阶段。
1946年到60年代初,其主要特征是程序生产方式为个体手工方式 v第二代:程序系统阶段60年代初到70年代初,软件工程学科诞生软件的开发方式由个体生产开展到了小组生产,软件的开发与维护费用以惊人的速度增加,维护困难,导致软件危机v第三代:传统软件工程阶段20世纪70年代中期至80年代中期,软件工程师把工程化的思想参加到软件的开发过程中,用工程化的原那么、方法和标准来开发和维护软件v第四代:面向对象阶段20世纪80年代中期至今,面向对象的方法学受到了人们的重视,促进了软件业的飞速开展,软件产业在世界经济中已经占有举足轻重的地位软件危机软件危机v两个方面的问题:如何开发如何维护v表现:软件的规模大复杂度增加软件的需求量增大价格昂贵供需差增大开发速度慢质量难以保证软件危机解决途径v重视需求分析,明确与确切表达需求v重视与客户沟通与交流v统一的、公认的方法论和标准指导v重视设计和实现过程的资料v充分的检测工作软件工程化思想v把软件看作是一个工程产品v两个方面:v软件开发技术v软件工程管理v原因:v缺乏软件过程控制能力v能力成熟模型Capability Maturity M软件工程两大范型v传统的结构化范型特征:结构化技术要么面向行为,要么面向数据构成结构化范型的技术包括:结构化分析结构化设计结构化编程结构化测试结构化维护软件工程两大范型v面向对象范型特征:将对象视作一个融合了数据及在其上操作的行为的、统一的软件组件。
技术包括:面向对象分析面向对象设计面向对象编程面向对象测试面向对象维护优势:对象的概念符合业务或领域的客观实际维护容易软件工程根本原理v分阶段的软件生存周期v坚持进行阶段评审v实行严格的产品控制v采用现代程序设计技术v明确职责v开发小组的人员应少而精v不断改进开发过程软件工程思想v推迟实现的观点v逐步求精的观点v分解与抽象的观点v信息隐蔽观点v质量保证观点软件工程根本活动v开发活动v软件生命周期模型v工程管理活动v工程的范围要做的内容v进度要花费的时间v本钱要消耗的资源v过程改进活动v关注质量v软件开发的最正确实践v过程定义和改进小结小结v软件工程的是主旨以工程化的思想进行软件开发,以生产高质量和高效率的软件v软件工程化思想的核心是,把软件看作是一个工程产品v软件工程方法学分别是传统结构化范型和面向对象范型v软件工程活动包括开发活动、管理活动和过程改进活动第第2章章 软件过程内容提要软件过程内容提要v什么是软件过程?v什么软件生命周期?v能力成熟度模型v敏捷过程v软件过程实践软件过程软件过程v定义:v软件过程是为了开发出软件产品,或者是为了完成软件工程工程而需要完成的有关软件工程的活动v通常使用生命周期模型简洁地描述软件过程v层次:v软件工程是一门建立在以质量焦点为根底,分过程、方法和工具三个研究层次的综合技术过程方法与工具工具 方法 过程 质量焦点软件过程框架v定义:v框架是实现整个软件开发活动的根底,并且那些与过程有关的角色、职责的定义以及实现也都离不开框架的支持v两个方面v组织及管理框架v技术及工具框架软件过程模型v把软件生命周期中各项开发活动的流程用一个合理的框架开发模型来标准描述,这就是软件过程模型。
v软件生命周期模型v软件生命周期v划分为定义、开发和运行三个阶段v细分为六个阶段:v问题的定义及规划v需求分析v软件设计v程序编码v软件测试v运行维护能力成熟度模型集成vCMM(Capability Maturity Model)是指“能力成熟度模型vCMM是由美国卡内基梅隆大学的软件工程研究所SEI开发的软件成熟度模型v思想:管理软件过程的方法不当引起的问题,导致新软件技术的运用并不会自动提高软件的生产率和质量vCMM为软件企业的过程能力提供了一个阶梯式的改进框架,它基于过去所有软件工程过程改进的成果,吸取了以往软件工程的经验教训,提供了一个基于过程改进的框架v能力成熟度模型集成CMMI-Capability Maturity Model Integration是CMM模型的最新版本CMM概述概述v为企业的开展规定过程成熟级别,分为5级Version 1.0:v初始级Initial:一般企业皆具有v可重复级Repeatable:成功经验可以重复v定义级Defined:一套完整的企业过程,人员自觉遵守培训v管理级Managed:过程&产品可度量和控制v优化级Optimizing:过程持续改进v从无序到有序、从特殊到一般、从定性管理到定量管理、最终到达动态优化CMM概述续概述续2. Repeatable1. Initial3. Defined4. ManagedDisciplined ProcessStandard, Consistent ProcessPredictable ProcessContinuously Improving ProcessUnpredictable and poorly controlledCan repeat previously mastered tasksProcess characterized, fairly well understoodProcess measured and controlledFocus on process improvement5.OptimizingProject Management Integrated Engineering ProcessProduct and Process QualityManaging ChangeDisorder Disciplined Predictable Immature Mature CMM的概念模型的概念模型v关键过程域KPA:代表一组相关的工作活动。
每个KPA都有一个确定的目标,完成该目标即认为过程能力的提高v一般特性CFCommon Features:进一步细分KPA的工作五个特性:v承诺commitmentv准备abilityv执行activityv度量分析measurement & analysisv验证verifying CMM的五个级别的五个级别vLevel 1:初始级过程无序且不可见OutICMM的五个级别的五个级别vLevel 2:可重复级vMilestone可见,按方案开发CMM的五个级别的五个级别vLevel 2的6个KPA:侧重于管理v需求管理Requirements Managementv软件工程方案Software Project Planningv软件工程的跟踪和监控Software Project Tacking and Oversightv软件子合同管理Software Subcontract Managementv软件质量保证Software Quality Assurancev软件配置管理Software Configuration MCMM的五个级别的五个级别vLevel 3:定义级v每个阶段的内部活动可见v标准过程和工程定义过程裁剪CMM的五个级别的五个级别vLevel 3的7个KPA:工程过程企业理念v机构过程关注Organization Process Focusv机构过程定义Organization Process Definitionv培训方案Training Programv集成软件管理Integrated Software Management过程裁剪和定义v软件产品工程Software Product Engineering过程执行v组间协调Intergroup Coordinationv对等审查Peer RCMM的五个级别的五个级别vLevel 4 管理级过程可度量,预测值与结果之间的偏差可控CMM的五个级别的五个级别vLevel 4的2个KPA:预测量化管理v定量过程管理Quantitative Process Management过程度量v软件质量管理Software Quality Management产品度量CMM的五个级别的五个级别vLevel 5 优化级过程动态调整、新技术的采用CMM的五个级别的五个级别vLevel 5的3个KPA:动态优化v缺陷预防Defect Preventionv技术改变管理Technology Change Managementv过程改变管理Process Change M能力成熟度模型集成能力成熟度模型集成vCMMI-Capability Maturity Model Integration是CMM模型的最新版本。
vCMMI有两种表示方法:v和软件CMM一样的阶段式表现方法v连续式的表现方法v过程管理v工程管理v工程v支持vCMMI的目标是质量、时间表和最低的本钱敏捷过程敏捷过程v敏捷不是一个过程,是一类过程的统称v敏捷方法的两大主要特征:v对“适应性的强调v对“人的关注v做法:v引入迭代式的开发手段v将整个软件生命周期分解为假设干个小的迭代周期v获取切实有效的客户反响v提出12条根本原那么极限编程极限编程v极限编程eXtreme Programming,XP是一种软件工程方法学,是敏捷开发中最富有成效的方法学之一v由KentBeck在1996年提出v具有强沟通、简化设计、迅速反响等特点v适合于规模小、进度紧、需求不稳定、开发小工程的小团队极限编程极限编程v特点:vXP模型是“轻量型或“灵活的软件过程模型v与面向对象语言结合的开发方案v“专家协作的开发方式,解决难点问题v核心有四个要点:v交流v简单v反响v勇气结对编程结对编程v结对编程(Pair-Programming) 是XP中非常重要的实践之一v定义:两个人坐在同一台计算机前面,使用相同的键盘和鼠标来开发同样的一个模块,一个称为驾驶者(Driver),负责代码的键入,另外一个称为领航员(Navigator),负责监看与决策,包括低级错误和方向性的错误。
当出现的一个问题对其中一个人来说,难以解决,而恰好是另外一个人的强项的时候,那么角色就会发生转换结对编程结对编程v优势:v可以减少风险v可以使团队生产效率更高v是知识传播的最好途径v可以打造出最正确的合作团队v可以生成更好的代码v三个方面的应用:v教育学结对学习v工业界结对开发与编程v分布式结对编程环境结对编程研究结对编程研究v教育学研究结对编程学习效果研究结对双方的相容性研究结对编程过程研究v软件工业界结对编程实践方式社会动力学研究个人编程能力的增强v分布式结对编程结对编程开发环境研究开发结对编程工具的需求适合开展分布式结对编程的工具研究自适应软件开发自适应软件开发v自适应软件开发Adaptive Software Development由Jim Highsmith提出v着眼于人。
