第1章 软件工程概述(3h)_第1页
第1章 软件工程概述(3h)_第2页
第1章 软件工程概述(3h)_第3页
第1章 软件工程概述(3h)_第4页
第1章 软件工程概述(3h)_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

课程简介为什么要学这门课程?这门课程学什么?怎么学这门课程?原因一:

软件工程是你职业生涯必不要可少的知识。为什么要学习这门课为什么要学习这门课软件工程师(JSE)职位描述:参与需求分析与系统设计,负责软件开发和测试。任职要求:大学本科及以上学历,计算机相关专业;2.精通Java编程,熟悉spring等开源框架。做过至少2个以上J2EE相关技术的项目;3.熟悉主流应用服务器(Weblogic,Websphere)和数据库系统(Oracle,DB2),熟悉Unix或Linux操作系统;4.熟悉常用设计模式,熟练使用RationalRose,Visio等设计工具;5.易于沟通、具有强烈的团队意识。

在该招聘启示,你们缺什么能力?为什么需要这些能力?了解常用设计模式和设计方法,让你知道开发软件的流程,提高开发效率,从而提高软件生产率。培养你的沟通能力和团队协作能力,保证多人开发的代码能正常运行为什么要学习这门课PHP高级工程师1、熟悉PHP编程语言,熟悉面向对象的软件设计方法,熟练掌握XHTML、CSS、DIV、Javascript等页面技术;2、熟悉Mysql数据库应用开发,具备数据库的设计及优化能力;3、熟悉Unix/Linux操作系统及常用命令,熟悉Shell脚本编程;4、具备良好的代码编程习惯及较强的文档编写能力;5、具备团队合作精神,有良好的沟通及协调能力;在该招聘启示,你们缺什么能力?为什么需要这些能力?培养你的编程习惯及编写文档的能力软件架构师1、理解和分析客户的业务需求,确定项目或产品的技术架构和技术路线;2、负责产品架构分析,提出软件架构整体设计,数据库存储设计方案,3、划分基本的软件功能模块,指导其他工程师的设计工作;4、参与项目在技术架构方面的立项评审;5、负责核心技术问题的攻关,系统优化;协助解决项目开发过程中的技术难题;6、制定开发规范,参与制定技术标准,编写相应的技术文档;7、配合项目的整体计划和安排,对技术人员进行技术培训和指导;在该招聘启示,你们缺什么能力?为什么需要这些能力?管理项目由此可以看出,你的软件工程知识掌握的越好,你就离该职位不远了。为什么要学习这门课原因二:

保证在有限的成本下,迅速开发一个高质量的软件。为什么要学习这门课为什么要开发软件?对于软件公司来说:赚钱对于单位(用户)来说:辅助人进行工作。如果你是软件公司的员工,那你的任务就是给老板赚钱怎样才能赚钱呀?就是让你开发的软件花最少的成本,成为让用户满意的软件怎么让用户满意呢?一、迅速二、符合用户的习惯如果你是用户,那你的任务就是想办法让软件以最快的速度和最低的花费开发成功,提高你的工作效率,得到领导的嘉奖,为升职创造条件。怎样才能做到呢?有效地与软件开发人员进行沟通怎样才能保证沟通有效呀?1、要与开发人员有共同语言2、懂计算机相关知识最终目标:在一定的成本下,迅速开发一个让用户满意的软件为什么要学这门课?综上所述,学好此课程的理由:职业的需要保证在有限的成本下,迅速开发一个高质量的软件是否要把这门课学好呀?想尽办法一定要把它学好。这门课程学什么?常用的开发方法文档的编写软件设计和开发工具团队的管理项目的管理大家看了这些内容,有什么感觉?这门课学什么?介绍软件工程的基本术语,文档的编写、在软件工程中用到的原理、方法和管理技术。怎样学好这门课呢?一定要结合自己以前的编程经验多看书,结合现实中例子来进行理解从总体上去把握,关键要理解总的来说:理论联系实际软件工程第1章软件工程概述第1章软件工程概述1.1软件1.2软件工程的概念1.3软件生命周期1.4软件生命周期模型1.5软件开发方法和工具本章学习目标:1、理解与软件工程相关的一些基本的概念和知识,其中包括软件与软件的特点、软件工程的概念等。2、掌握软件生命周期的基本概念,熟悉一些典型的软件生命周期模型。3、了解有关软件开发方法和开发工具的知识。第1章软件工程概述1.1软件1.1.1软件与软件的特点1.1.2软件危机1.1.1软件与软件的特点一、软件定义:

软件=程序+数据+文档程序:完成特定功能和满足性能要求的指令序列数据:程序运行的基础和操作的对象文档:与程序开发、维护和使用有关的图文材料独唱-->小合唱-->合唱-->万人大合唱 |||简单程序较复杂程序软件

1.1.1软件与软件的特点二、软件的特点 1、计算机软件是一种抽象的逻辑产品。 2、软件的生产与硬件不同。 3、软件产品不会用坏,不存在硬件产品那样的机械磨损、老化等问题。

图1-1软硬件失效率曲线1.1.1软件与软件的特点4、软件产品的生产主要是脑力劳动。5、软件费用不断增加,软件成本相当昂贵。6、软件工作涉及到各种社会因素。硬件年份软件50年70年85年20608010040成本计算机系统软、硬件成本比例的变化情况软件的分类按软件的功能进行划分:系统软件操作系统数据库管理系统设备驱动程序通信处理程序等支撑软件文本编辑程序文件格式化程序磁盘向磁带向数据传输的程序程序库系统支持需求分析、设计、实现、测试和支持管理的软件软件的分类应用软件商业数据处理软件工程与科学计算软件计算机辅助设计/制造软件系统仿真软件智能产品嵌入软件医疗、制药软件事务管理、办公自动化软件计算机辅助教学软件软件的分类按软件规模进行划分:类别参加人员数 研制期限源程序行数

微型

1 1~4周0.5k小型

1 1~6月1k~2k中型

2~5 1~2年5k~50k大型

5~20 2~3年50k~100k甚大型

100~10004~5年

1M(=1000k)极大型

2000~50005~10年1M~10M

软件的分类按软件工作方式划分:实时处理软件分时软件交互式软件批处理软件软件的分类1.1.2软件危机定义: 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机包含下述两方面的问题:如何开发软件,以满足对软件的日益增长的需求;如何维护数量不断膨胀的软件。软件危机典型表现:对软件开发成本和进度的估算很不准确用户很不满意质量很不可靠软件常常是不可维护的没有完整的文档软件成本比重上升,特别是软件维护成本迅速增加,已经占据软硬件总成本的40%~75%供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势1.1.2软件危机硬件软件开发软件维护1955年1970年1985年100%80%60%40%20%软件、硬件成本变化趋势1、1993年距伦敦90英里的塞兹韦尔核电站正式投入运行,但是,工作人员很快发现核电站的反应堆内温度控制失灵。事后查明,在反应堆的主要保护系统中,有个10万行代码的控制软件几乎有一半未能通过测试。几个典型的由软件质量问题引发的事故2、80年代中期,加拿大一家原子能公司生产的、由微处理机控制的癌症治疗仪,在美国和加拿大的多家医院使用,致使6个病人因超剂量辐射而受到严重伤害甚至死亡。几个典型的由软件质量问题引发的事故3、海湾战争中,一个软件故障打乱了“爱国者”导弹雷达跟踪系统,使导弹发射后未能迎击对方的“飞毛腿”导弹,反而轰击了自己的军营,造成了28名士兵丧生,98人受伤。几个典型的由软件质量问题引发的事故4、1996年欧洲航天局发射的阿丽亚娜5型火箭,在发射40秒后爆炸,发射场上2名法国士兵当场死亡。这个耗资10亿美元、历时9年的航天计划严重受挫,引起了国际宇航界的震惊。事故发生后,专家组的调查分析报告指明,爆炸的原因在于惯性导航系统软件中技术要求和设计错误。几个典型的由软件质量问题引发的事故5、德国曾由于电话计费系统的软件问题而发生用户需多交付不合理电话费的事件,引起了公众的抗议。几个典型的由软件质量问题引发的事故1.1.2软件危机造成软件危机的原因:

1、软件的规模越来越大,结构越来越复杂。

2、软件开发管理困难。现代软件一般规模大,结构复杂,需要组织众多开发人员共同完成。

3、软件开发技术落后。

4、软件产品生产方式落后。

5、软件开发工具落后。

6、用户对软件需求的描述不精确,软件开发人员对用户需求的理解有偏差。

1.2软件工程的概念1.2.1软件工程的定义1.2.2软件工程的基本目标1.2.3软件工程的基本原理

为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术方面研究如何更好地开发和维护计算机软件的学科。软件工程的有多种定义:FritzBauer(弗里茨鲍尔)给出的软件工程的定义是:软件工程是为了经济地获得可靠的能在实际机器上高效运行的软件而确立和使用的一系列完善的工程原理(方法)。1.2.1软件工程的定义1.2.1软件工程的定义Boehm(布恩)对软件工程的定义为:软件工程是现代科学技术知识在设计和构造计算机程序中的实际应用,其中包括管理在开发、运行和维护这些程序的过程中所必需的相关文档资料。1983年IEEE(国际电气与电子工程师协会)在其《IEEE软件工程标准术语》中对软件工程下的定义为:软件工程是开发、运行、维护和修复软件的系统方法。其中的“软件”是指计算机程序、方法、规则、相关的文档资料和程序运行所必需的数据。1993年,IEEE给出了一个更加综合的定义:①将系统的、规范的、可度量的工程化方法应用于软件的开发、运行和维护的全过程。②研究①中所提到的方法。1.2.1软件工程的定义软件工程的定义虽多,但其主要思想都是在强调软件开发中应用工程化原则的重要性。这种工程化的思想一直贯穿需求分析、设计、实现和维护整个软件生命过程。软件工程研究的主要内容包括:软件工程管理软件开发技术软件工程管理主要是研究:软件管理学软件经济学软件心理学软件开发技术主要研究:软件开发方法学软件开发过程软件开发工具和环境1.2.1软件工程的定义软件工程三要素1.2.2软件工程的基本目标软件项目的成功主要是要达到以下几个目标:

1、付出较低的软件开发成本;

2、达到用户所要求的软件功能;

3、取得较好的软件性能;

4、所开发的软件易于移植、可重用性好;

5、需要较低的软件维护费用;

6、能按时完成开发任务,及时交付使用。1.2.2软件工程的基本目标图1-2软件工程目标之间的关系1.2.3软件工程的基本原理软件工程的7条原理:1、用分阶段的生命周期计划严格管理2、坚持进行阶段评审3、实行严格的产品控制(需求变更)4、采用现代程序设计技术5、结果应该能清楚地审查(产品标准)6、开发小组的人员应该少而精

7、承认不断改进软件工程实践的必要性1.3软件生命周期软件生命周期:指软件产品从形成概念开始,经过定义、开发、使用和维护,直到最后退役的全过程。一般来说,软件生命周期包括:

软件定义

软件开发

软件的使用、维护和退役1.3.1软件定义软件定义的基本任务:弄清待开发的软件系统要做什么,即软件开发工程必须完成的总目标。

1、问题定义。

2、可行性研究。

3、需求分析。1.3.2软件开发软件开发过程:即软件的设计和实现。软件开发过程主要分为以下几个阶段:概要设计详细设计实现(编码)测试1.3.3软件的使用、维护和退役软件的维护:为了延长软件的寿命而对软件产品进行修改或对软件需求变化做出响应的过程。软件的维护是软件生命周期中时间最长的阶段,软件维护的工作量可能占了软件生命周期全部工作量的70%以上。软件的退役:即软件的停止使用。退役意味着软件生存周期的结束,表明软件系统已不再具有维护价值。1.4软件生命周期模型软件生存周期模型:又称为软件开发模型(SoftwareDevelopModel),软件过程模型(SoftwareProcessModel)等。软件生存周期模型是软件工程的一个重要的概念。它主要指的是反映整个软件生命期中系统的开发、运行、维护等实施活动的一种结构框架。瀑布模型原型模型螺旋模型增量模型基于构件的开发模型喷泉模型1.4.1瀑布模型瀑布模型的基本思想:严格按照软件生存周期各个阶段来进行开发,上一阶段的输出即是下一阶段的输入,并强调每一阶段的严格性。它规定了各阶段的任务和应提交的成果及文档,每一阶段的任务完成后,都必须对其阶段性产品(主要是文档)进行评审,通过后才能开始下一阶段的工作。因此,它是一种以文档作为驱动的模型。1.4.1瀑布模型图1-3瀑布模型1.4.1瀑布模型瀑布模型的主要特点:

各阶段之间具有顺序性和依赖性。它严格按照软件生存周期各个阶段来进行开发,前一阶段工作的结果输出是后一阶段工作的输入。瀑布模型的局限性:

1、软件开发的各个阶段特别是定义阶段的正确性和完整性很难保证。

2、模型的风险控制能力较弱。用户和项目负责人要经过设计、编码和测试等相当长的时间后才能得到软件的初始版本。

3、瀑布模型是一种理想的线性开发模式,缺乏灵活性。1.4.2原型模型(PrototypingModel)原型模型又称为快速原型模型。这种方法的核心思想是:在软件开发的早期软件开发人员根据用户提出的软件基本需求快速建立目标软件系统的原型,反复让用户对原型进行评估并提出修改意见,然后开发人员根据用户意见对原型进行修补和完善,直到用户对所开发的系统原型满意为止。1.4.2原型模型快速原型模型的开发过程如图1-4所示。图1-4原型模型1.4.2原型模型快速开发原型的途径通常有以下三种:

1、仅模拟软件系统的人机界面和人机交互方式。

2、开发一个工作原型,实现软件系统中部分重要的或容易产生误解的功能。

3、找来一个或几个正在运行的类似软件系统进行比较,向客户展示软件需求中的部分或全部功能。

实际应用中的原型使用可采取以下两种不同的策略:

废弃策略

追加策略

原型模型的适应场合:

1、原型模型比瀑布模型更符合人们认识事物的过程和规律,是一种较实用的开发框架。

2、它适合于那些不能预先确切定义需求的软件系统的开发。1.4.2原型模型1.4.3螺旋模型(SpiralModel)螺旋模型:综合了瀑布模型和原型模型的优点,即将两者结合,并加入了风险分析机制。螺旋模型的每一个周期包括:计划(需求定义)风险分析工程实现评审1.4.3螺旋模型图1-5螺旋模型螺旋模型的优点:

1、支持用户需求的动态变化。具有良好的可扩充性和可修改性。也支持软件系统的可维护性,每次维护过程只是沿螺旋模型继续多走一两个周期。

2、原型易于用户和开发人员共同理解需求,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便。

3、螺旋模型特别强调原型的可扩充性和可修改性,原型的进化贯穿整个软件生存周期,这将有助于目标软件的适应能力。

4、螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。1.4.3螺旋模型螺旋模型的缺点和适应场合缺点:①如果每次迭代的效率不高,致使迭代次数过多,将会增加成本并推迟提交时间;②使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高。适应场合:支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。1.4.3螺旋模型1.4.4增量模型 软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。 第一个增量往往是实现基本需求的核心产品。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。1.4.4增量模型增量模型的优点:增加客户对系统的信心;降低系统失败风险;提高系统可靠性;提高了系统的稳定性和可维护性;增量模型的缺点:增量粒度难以选择;确定所有的基本业务服务比较困难。1.4.5基于构件的开发模型基于构件的开发模型是面向对象和原型方法及重用技术的综合。图1-6基于面向对象的模型1.4.6喷泉模型(WaterFountainModel)喷泉模型是以面向对象的软件开发技术为基础,以用户需求为动力,以对象来驱动的模型。它克服了瀑布模型不支持软件重用和生存期中多项开发活动集成的局限性,使得软件开发过程具有迭代和无间隙的特性。1.4.6喷泉模型图1-7喷泉模型1.5软件开发方法和工具1.5.1软件开发方法

结构化方法面向对象方法

1.5.2软件工具与开发环境软件工具分类:软件开发工具软件维护工具软件管理和软件支持工具1.5.2软件工具与开发环境1、软件开发工具(1)需求分析工具 (2)设计工具(3)编码与排错工具(4)测试和验证工具2、软件维护工具(1)版本控制工具 (2)文档分析工具(3)开发信息库工具(4)逆向工程工具(5)再工程工具3、软件管理和软件支持工具 (1)项目管理工具

温馨提示

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

评论

0/150

提交评论