您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 软件工程基础培训-V10
软件工程基础KrisZhang章征晖江苏微软技术中心zhangzh@jsmstc.com前言《大道至简—软件工程实践者的思想》---周爱民在大学时代、在课桌上令人昏昏欲睡的《软件工程》才是软件开发中的髓质与灵魂选择什么语言、如何重构、有没有或应不应该采用某种模式,都是软件开发的细微末节我们常常陷于行动而没有思想,思想与行为脱节。常常知道做什么,但不知道为什么要这样做JiangsuMicrosoftTechnologyCenter2“停下来,思考才是进步的本质!”主题软件工程的定义软件工程的研究内容软件工程的基本原理软件工程的作用软件开发的4种常用方法软件工程的5个面向理论软件的支持过程软件的管理过程软件生存周期及开发模型JiangsuMicrosoftTechnologyCenter3RogerS.Pressman软件过程改善和软件工程技术方面国际知名的权威。30多年来,他作为软件工程师、管理人员、教授、作者及咨询顾问始终投身于软件工程领域。计算机工程的定义计算机由硬件和软件组成计算机工程由硬件工程和软件工程组成硬件工程:研究硬件生产和硬件管理的工程学科,包括计算机及网络硬件的分析、设计、生产、采购、验收、安装、培训、维护等。软件工程:研究软件生产和软件管理的工程学科,包括市场调研、正式立项、项目策划、需求分析、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护、版本升级等。系统集成工程:有时也称网络工程,介于硬件工程和软件工程之间的系统工程(如:规划设计安装一个校园网)JiangsuMicrosoftTechnologyCenter4程序与软件定义程序的定义面向过程的程序=算法+数据结构面向对象的程序=对象+消息面向构件的程序=构件+构架软件的定义软件=程序+数据+文档JiangsuMicrosoftTechnologyCenter5“人生就是一段程序,这段程序是用特殊代码写成的,只是算法极其复杂而已。”软件≠程序越早开始写代码的人,就是越迟完成代码的人!JiangsuMicrosoftTechnologyCenter6年代对软件定义的认识20世纪50年代软件就等于程序,软件系统就是程序系统20世纪60年代软件等于程序加文档,这里的文档仅指开发文档,即软件开发过程中的分析、设计、实现、测试、维护文档,还不包括管理文档20世纪70年代软件等于程序加文档和数据,这里的文档指开发文档和管理文档,这里的数据不仅包括初始化数据、测试数据、而且包括研发数据、运行数据、维护数据,也包括软件企业积累的项目工程数据和项目管理数据中的大量决策原始记录数据软件工程的定义1993年,权威组织IEEE对软件工程定义为:软件工程是将系统化的、严格约束的、可量化的方法,应用于软件开发、运行和维护中去。2001年,RogerS.Pressman对软件工程的定义是:软件工程是一个过程、一组方法和一系列工具。现在的定义,软件工程是研究软件开发和软件管理的一门工程科学。JiangsuMicrosoftTechnologyCenter7软件工程的定义是与时俱进的软件工程研究的内容JiangsuMicrosoftTechnologyCenter8研究方面具体内容软件开发模型瀑布模型、增量模型、迭代模型、原型模型…软件开发方法面向过程的方法、面向数据的方法、面向对象的方法…软件支持工具建模工具、开发工具、测试工具、文档工具、配置工具、安装工具…软件管理过程ISO9000、CMM/CMMI、微软企业文化(MSF)、IBM企业文化、敏捷文化现象(XP)...软件工程三要素:方法、工具、过程软件工程的8个基本原理用分阶段的生命周期计划,严格管理软件开发。坚持进行阶段评审。实行严格的产品版本控制。采用现代程序设计技术。结果应能清楚地审查。文档要有严格要求。开发小组的成员要少而精。要不断地改进软件工程实践的经验和技术。牢记二八定律JiangsuMicrosoftTechnologyCenter9软件工程中的二八定律对软件项目进度和工作量的估计:一般人主观上认为已经完成了80%,但实际上只完成了20%对程序中存在问题的估计:80%的问题存在于20%的程序之中对模块功能的估计:20%的模块,实现了80%的功能对人力资源的估计:20%的人,解决了软件中80%的问题对投入资金的估计:企业信息系统中80%的问题,可以用20%的资金来解决。JiangsuMicrosoftTechnologyCenter10这条原理特别重要,项目经理与高层经理,要特别牢记!软件工程的作用从软件项目团队来讲,解决在规定的时间内,按照规定的成本,完成预期质量目标(软件的功能、性能和接口达到需求报告标准)的软件。从软件企业本身来讲,解决持续地规范软件开发过程和软件管理过程,不断地优化软件组织的个人素质和集体素质,从而逐渐增强软件企业的市场竞争实力。从软件发展进程来讲,克服软件危机,控制软件进度,节约开发成本,提高软件质量。从院校来讲,以前它只是作为一门课或一本书。现在它成为一个学科,一个体系,一个计算机学位,即软件工程硕士学位和软件工程博士学位。JiangsuMicrosoftTechnologyCenter11软件工程中的4个开发方法面向过程的方法面向对象的方法面向数据的方法形式化方法(*)JiangsuMicrosoftTechnologyCenter12面向过程的方法内容:面向过程需求分析、面向过程设计、面向过程编程、面向过程测试、面向过程维护、面向过程管理。面向过程的方法,又称为面向功能的方法,或称为结构化方法。特点:程序的执行过程,不由用户控制,完全由程序员控制。优点:简单实用。缺点:企图用有穷的方法(枚举法)来描述无穷的(随机的)信息世界,所以不能完全描述信息世界;维护困难。JiangsuMicrosoftTechnologyCenter13面向对象的方法内容:面向对象需求分析、面向对象设计、面向对象编程、面向对象测试、面向对象维护、面向对象管理。在分析、设计、实现中用到“对象、类、继承、消息通信”这四个基本概念,就是面向对象的方法。今天用UML来开发软件,就是面向对象的方法。特点:(1).程序的执行过程,不由程序员控制,完全由用户控制。(2).分析设计时面向类,编程时面向对象。优点:用无穷的方法来描述无穷的(随机的)信息世界,所以能完全描述信息世界;易于维护。缺点:较难掌握。JiangsuMicrosoftTechnologyCenter14面向数据的方法内容:是建设信息系统数据库和数据仓库的基本方法。1)数据位于信息系统的中心。2)由元数据构成的数据模型是稳定的。3)对元数据的处理方法是可变的。4)企业信息系统的核心是数据模型。5)系统的实现方法主要是面向对象。6)用户始终参与信息系统的开发。特点:程序的执行过程,有时由程序员控制,有时由用户控制。优点:适合数据层设计与实现。缺点:实现窗口界面较困难。JiangsuMicrosoftTechnologyCenter15形式化方法软件工程的形式化方法是建立在严格数学基础上、以逻辑推理为出发点、并且具有精确数学语义的开发方法。作为一种以数学逻辑为基础的方法,形式化方法以其严密性越来越受到众多领域的重视,尤其是在安全性和可靠性作为关键问题的系统,如核电站、航空航天、铁路运输系统中得到了较为广泛的应用。但是对于形式化方法在工业领域的实际应用问题,在软件工程界,尤其是在系统开发人员当中,还存在着相当多的疑问。软件工程中的形式化方法是软件工程研究的领域之一,其内容包括:有限状态机、Statecharts、Petri网、通信顺序进程、通信系统演算、一阶逻辑、程序正确性证明、净室软件工程、时态逻辑、模型检验、Z形式规约语言、B语言和方法、VDM系统、Larch等。JiangsuMicrosoftTechnologyCenter16四种开发方法的比较JiangsuMicrosoftTechnologyCenter17方法名称优点缺点适合的场合面向过程的方法简单好学不适应窗口界面,维护困难大型工程计算,实时数据跟踪处理,各种自动化控制系统,以及系统软件实现等领域面向对象的方法功能强大,易于维护不易掌握互联网络时代,完全由用户交互控制程序执行过程的应用软件和系统软件的开发面向数据的方法通俗易懂不适应窗口界面以关系数据库管理系统为支撑环境的信息系统建设形式化方法准确、严谨难于上手和应用对安全性要求极高,不容许出错的软件系统,如军事、医药、交通等领域软件工程中的5个面向原则面向流程分析。面向数据设计面向对象实现面向功能测试面向过程管理JiangsuMicrosoftTechnologyCenter18面向流程分析面向流程分析,就是面向流程需求分析。在需求分析时,系统分析员要面向业务流、资金流、信息流进行分析。只有将这“三个流”分析透了,才建立好系统的业务模型和功能模型。因为计算机网络在本质上只认识数据及数据流(严格地讲,它只认识二进制数和二进制数据的流动),而且这“三个流”,可以用“数据流”这一个流程来代替,或者说“三个流”是“数据流”在三个不同方向的投影。JiangsuMicrosoftTechnologyCenter19面向数据的设计面向数据设计,就是面向元数据进行概要设计。在系统设计时,系统设计师要采用面向数据的方法进行概要设计。面向数据就是面向“元数据”(Metadata)。概要设计的主要任务是建立系统的数据模型,包括概念数据模型CDM和物理数据模型PDM,以及体现业务规则的存储过程和触发器,然后以数据模型为支撑,去实现系统的业务模型和功能模型(包括性能模型和接口模型)。为此,要对元数据进行分析,只有将元数据分析透了,才能建立好由元数据所构成的数据模型。这里讲的面向数据设计,主要表现在数据库服务器上的关系数据库设计。JiangsuMicrosoftTechnologyCenter20面向对象的实现面向对象实现,就是面向对象进行详细设计和编程实现。在两层结构(C/S)的客户层上,在三层结构(B/A/S)的表示层和业务逻辑层上,进行详细设计和编程实现时,要采用面向对象的方法。当然,在数据服务层上的设计和编程实现,仍然要采用面向数据的方法,因为主要是设计和编写存储过程,它们是面向数据的,不是面向对象的。详细设计和编程实现,实质上是用构件加上程序来实现系统的业务模型和功能模型。只有对系统的三个模型思想(业务模型、功能模型、数据模型)吃透了,才能设计和编写出合格的程序。面向对象实现,实质上是面向类实现,因为实例化的类称为对象。JiangsuMicrosoftTechnologyCenter21面向功能的测试面向功能测试,就是面向功能进行单元测试、集成测试、Alpha测试和Beta测试(或系统测试和验收测试)。在进行测试时,测试人员要采用面向功能的方法。这里讲的功能,包括系统的功能、性能和接口三部分内容。面向功能测试的方法就是黑盒子测试方法,随着第四代程序设计语言和构件技术的发展,该测试方法会越来越广泛。今后采用白盒子测试方法(面向程序执行路径测试)的人,只有从事软件构件生产和核心代码编程的极少数人员。JiangsuMicrosoftTechnologyCenter22面向过程的管理面向过程管理,就是面向过程对软件生命周期各个阶段进行管理和控制。因为软件产品质量的提高与改进,完全取决于软件企业生产过程的改善。无论是CMM/CMMI、ISO9000、微软企业文化,都是站在软件生命周期过程的观念上去提高软件企业的素质。那种认为“只要有几个优秀的程序员就能办好软件企业,就能生产出高质量的软件产品”的观点,在上世纪80年代理直气壮,在90年代还能解决温饱问题,在本世纪就站不住脚了,混不下去了,因为他们是手工作坊式的开发方法,忽视了软件中的面向过程管理。JiangsuMicrosoftTechnologyCenter23软件的支持过程软件工程中的过程,是指软件生命周期(LifeCycle)中的时间序列。过程作为一个时间序列,它自然
本文标题:软件工程基础培训-V10
链接地址:https://www.777doc.com/doc-988380 .html