您好,欢迎访问三七文档
观察与思考为什么要学软件工程?在软件工程中学什么?应该怎么学软件工程?课程简介1.《软件工程》:授课48学时,上机8学时。2.教材:赵池龙等编著,《实用软件工程(第二版)》,电子工业出版社,2006。3.考试评分:期末笔试60%,平时40%。4.大作业:3-5人为一项目组,自选项目,走完项目需求、设计、编程、测试、运行的全过程,要求文档齐全、程序正确、界面友好、使用方便。同学们加油干啊!第1章软件工程的内容与方法1.1软件工程的定义1.2软件工程的作用1.3软件的开发方法1.4软件工程的五个面向理论1.5软件的支持过程1.6软件的管理过程软件危机软件危机软件危机出现的历史•例1:1966年开发的IBM360机的操作系统例2:1963年美国的火箭控制系统程序例3:1996年欧空局的阿里安5火箭软件例4:windowsvista1.1软件工程的定义硬件:身体软件:神经中枢软件开发:痛并快乐着软件的定义软件==程序+数据+文档。数据==初始化数据+测试数据文档==开发文档+管理文档。RogerS.Pressman说:“越早开始写代码的人,就是越迟完成代码的人”。对管理文档的认识:1974年,美国人认识到软件需要管理。1984年,美国人认识到软件管理是一个过程管理,或是一个管理过程。1991年,出现了软件过程能力成熟度模型CMM(CapabilityMaturityModel)版。软件的最新定义软件==知识+程序+数据+文档对这一定义的讨论:正方:因为软件是知识在网络上的体现,所以这个定义非常好。反方:程序、数据、文档本身就是知识的表现,所以这个定义是画蛇添足。软件文档具有严格的层次关系(1)《目标程序》覆盖《源程序》;(2)《源程序》覆盖《详细设计说明书》;(3)《详细设计说明书》覆盖《概要设计说明书》;(4)《概要设计说明书》覆盖《需求规格说明书》;(5)《需求规格说明书》覆盖《用户需求报告》;(6)《用户需求报告》覆盖《软件合同》。管理文档具有严格的时序关系:因为管理是一个过程。程序的定义(1).面向过程的程序==算法+数据结构。(2).面向对象的程序==对象+消息。(3).面向数据的程序==数据库表+在表上的操作(如存贮过程、触发器或视图)。(4).面向构件的程序==构件+构架。优秀的程序(或模块):“高内聚、低耦合”有人说:“人生就是一段程序,这段程序是用特殊代码写成的,只是算法极其复杂而已。”软件工程的定义(1).1990年,IEEE对软件工程的定义是:软件工程是将系统化的、严格约束的、可量化的方法,应用于软件开发、运行和维护中去。(2).2001年,RogerS.Pressman对软件工程的定义是:软件工程是一个过程、一组方法和一系列工具。(3).2003年,赵池龙对软件工程的定义是:软件工程是研究软件开发和软件管理的一门工程科学。软件工程的定义是与时俱进的。软件工程研究的内容(1).软件开发模型,如:瀑布模型、增量模型、原型模型、螺旋模型、迭代模型等。(2).软件开发方法,如:面向过程的方法、面向数据的方法、面向对象的方法(包括面向业务基础平台的方法、面向工作流方法、面向主体的方法、面向方面的方法、面向代理的方法等等),以及形式化方法。(3).软件支持过程,如:CASE工具Rose、北大青鸟系统、PowerDesigner、ERWin,以及配置管理工具等。(4).软件管理过程,如:ISO9000、CMM/CMMI、软件企业文化(微软企业文件、敏捷文化现象、IBM企业文化)。【例】请读者开发一个“图书馆信息系统”,即图书馆MIS。通过软件开发过程和管理过程体验软件工程。著名软件工程专家B.Boehm于1983年在一篇论文中提出了软件工程的七条基本原理。软件工程的基本原理软件工程的基本原理(1).用分阶段的生命周期计划,严格管理软件开发。(2).坚持进行阶段评审。(3).实行严格的产品版本控制。(4).采用现代程序设计技术。(5).结果应能清楚地审查。文档要有严格要求。(6).开发小组的成员要少而精。(7).要不断地改进软件工程实践的经验和技术。(8).二八定律,这条原理特别重要,项目经理与高层经理,要特别牢记。1.2软件工程的作用【例】20世纪90年代初,有两个软件团队,一个较大(10多人),一个较小(6人),都在开发财务系统。较小团队分工明确:一人负责原始凭证和输出报表的收集、归类和整理一人负责科目和数据字典(代码)一人负责记账凭证的录入和修改一人负责日记账、明细账和总账之间的平衡与对账一人负责统计、报表和查询一人负责总体设计和项目管理软件工程的作用从软件项目团队来讲从软件企业本身来讲从软件发展进程来讲从院校来讲软件工程作用的具体表现在选择开发工具上,软件工程的基本观点是:工具不是越新越好,而是你越熟悉越好;在风险评估上,软件工程的基本观点是:任何项目组都存在技术风险和技能风险;在项目策划上,软件工程的基本观点是:需求分析在前,项目策划在后;在开发进度上,软件工程的观点是:宁愿慢些,也要保证软件的质量;在开发质量上,软件工程的观点是:质量蕴涵于开发过程之中,而不是过程之后;在开发人员上,软件工程的观点是:项目组在中途靠增加开发人员来提高开发速度是无效的;在项目经理的职责上,软件工程的观点是:80%的时间是写文档,20%的时间是内部勾通.1.3软件的开发方法1.3.1三种开发方法到目前为止,共有4种软件开发方法:(1).面向过程的方法(2).面向数据的方法(3).面向对象的方法(包括面向业务基础平台的方法、面向工作流方法、面向方面的方法、面向服务的方法)。(4).形式化方法。开发方法来自于程序设计语言(1).面向过程的程序==算法+数据结构。(由顺序、分支、循环三种结构组成)由它产生了面向过程的方法。(2).面向数据的程序==表+表上的操作。由它产生了面向数据的方法。(3).面向对象的程序==对象+消息。由它产生了面向对象的方法。1.3.2面向过程的方法内容:面向过程需求分析、面向过程设计、面向过程编程、面向过程测试、面向过程维护、面向过程管理。面向过程的方法,又称为面向功能的方法,或称为结构化方法。面向过程的方法特点:程序的执行过程,不由用户控制,完全由程序员控制。优点:简单实用。缺点:企图用有穷的方法(枚举法)来描述无穷的(随机的)信息世界,所以不能完全描述信息世界;维护困难。应用:如在军事上的实时跟踪监控系统中有很好的应用。1.3.2面向对象的方法内容:面向对象需求分析、面向对象设计、面向对象编程、面向对象测试、面向对象维护、面向对象管理。在分析、设计、实现中用到“对象、类、继承、消息通信”这四个基本概,就是面向对象的方法。今天用UML来开发软件,就是面向对象的方法。面向对象的方法特点:(1).程序的执行过程,不由程序员控制,完全由用户控制。(2).分析设计时面向类,编程时面向对象。优点:用无穷的方法来描述无穷的(随机的)信息世界,所以能完全描述信息世界;易于维护。缺点:较难掌握。应用广泛是面向元数据(Metadata)的方法,它是建设信息系统数据库和数据仓库的基本方法。该方法将与关系数据库同生死、共患难。1.3.3面向数据的方法面向数据的方法内容:(1)数据位于信息系统的中心。(2)由元数据构成的数据模型是稳定的。(3)对元数据的处理方法是可变的。(4)企业信息系统的核心是数据模型。(5)系统的实现方法主要是面向对象。(6)用户始终参与信息系统的开发。面向数据的方法特点:程序的执行过程,有时由程序员控制,有时由用户控制。优点:适合数据层(数据库服务器)设计与实现。缺点:实现窗口界面较困难。应用:如面向数据的方法在电子商务中也有应用。*1.3.4软件工程的形式化方法不讲,考研的人可以自学。因为在IT企业用不上。1.3.5四种开发方法总结对比方法名称优点缺点适合的场合面向过程的方法简单好学不适应窗口界面,维护困难大型工程计算,实时数据跟踪处理,各种自动化控制系统,以及系统软件实现等领域面向对象的方法功能强大,易于维护不易掌握互联网络时代,完全由用户交互控制程序执行过程的应用软件和系统软件的开发面向数据的方法通俗易懂不适应窗口界面以关系数据库管理系统为支撑环境的信息系统建设形式化方法准确、严谨难于上手和应用对安全性要求极高,不容许出错的软件系统,如军事、医药、交通等领域1.4软件工程的五个面向理论综合这三种开发方法的优势,特别提出“五个面向”的实施理论:1.面向流程分析2.面向数据设计3.面向对象实现4.面向功能测试5.面向过程管理面向流程分析面向流程分析,就是面向流程需求分析。面向业务流、资金流、信息流进行分析。面向数据设计面向数据设计,就是面向元数据进行概要设计。在系统设计时,系统设计师要采用面向数据的方法进行概要设计。面向数据就是面向“元数据”(Metadata)。面向对象实现面向对象实现,就是面向对象进行详细设计和编程实现。在两层结构(C/S)的客户层上,在三层结构(B/A/S)的表示层和业务逻辑层上,进行详细设计和编程实现时,要采用面向对象的方法。当然,在数据服务层上的设计和编程实现,仍然要采用面向数据的方法,因为主要是设计和编写存储过程,它们是面向数据的,不是面向对象的。面向对象实现详细设计和编程实现,实质上是用构件加上程序来实现系统的业务模型和功能模型。只有对三个模型思想(业务模型、功能模型、数据模型)吃透了,才能设计和编写出合格的程序。面向对象实现,实质上是面向类实现,因为实例化的类称为对象。面向功能测试面向功能测试,就是面向功能进行单元测试、集成测试、Alpha测试和Beta测试。在进行测试时,测试人员要采用面向功能的方法。这里讲的功能,包括系统的功能、性能和接口三部分内容。面向功能测试的方法就是黑盒子测试方法,今后采用白盒子测试方法(面向程序执行路径测试)的人,只有从事软件构件生产和核心代码编程的极少数人员。面向过程管理面向过程管理,就是面向过程对软件生命周期各个阶段进行管理和控制。因为软件产品质量的提高与改进,完全取决于软件企业生产过程的改善。无论是CMM/CMMI、ISO9000、微软企业文化,都是站在软件生命周期过程的观念上去提高软件企业的素质。1.5软件的支持过程软件工程中的过程,是指软件生命周期(LifeCycle)中的时间序列。过程作为一个时间序列,它自然有起始点和终止点。例如,可以将一个软件的生命周期划分为市场调研、立项、需求分析、策划、概要设计、详细设计、编程、单体测试、集成测试、运行、维护这几个过程。过程与阶段(Phase)相对应,阶段与里程碑(Milestone)相对应。某些重要的里程碑上的文档,又对应基线(baseline)。软件的支持过程软件工程的支持过程,由支持软件生存周期各个阶段的生产工具所组成。生产工具如需求分析工具、设计工具、实现工具、测试工具、维护工具、配置工具,开发环境。软件开发环境又称CASE工具,如北大青鸟系统,SanFrancisco,Rose,面向行业领域开发的业务基础平台(包括软件企业内部使用的各种J2EE平台和.Net平台)。1.6软件的管理过程“外行关注结果,内行关注过程”。管理过程和支持过程又称为“软件过程工程”。1974年,美国人始认识到“软件需要管理”。1984年,美国人认识到“软件管理是过程管理”。软件的管理过程软件中的过程,分为“基本过程、支持过程、组织过程”三种.基本过程是需求、设计、实现、测试、验收过程;支持过程是支持过程开发和过程管理的各种CASE工具;组织过程是建立的有关小组,如软件工程组、质量保证组、测试组、文档组。软件的管理过程软件工程中主要存在3类过程管理模型:(1).ISO9000质量管理和质量保证
本文标题:第1章《软件工程》
链接地址:https://www.777doc.com/doc-203047 .html