软件工程课件第一章牛倩.ppt
《软件工程课件第一章牛倩.ppt》由会员分享,可在线阅读,更多相关《软件工程课件第一章牛倩.ppt(59页珍藏版)》请在三一办公上搜索。
1、1,软件工程导论,牛倩,软件工程 牛倩,牛倩考查课平 时:30%(作业+出勤)考 试:70%,2,3,我感兴趣的,大规模并行计算与存储云计算、大数据NOSQL数据库,CAP定律1-Consistency2-Availability3-Partition Tolerance说的是在一个分布式计算机系统中,一致性,可用性和分区容错性这三种保证无法同时得到满足,最多满足两个。该定律作为猜想在2000年提出,2002年被证实。其中,一致性说的是分布式系统中,所有节点在同一时刻看到同一个值。可用性说的是每个请求都会收到一个应答,无论该应答是成功还是失败。分区容错性指的是无论任何消息丢失,系统都可用。Pa
2、rtition Tolerance的意思是,在网络中断,消息丢失的情况下,系统照样能够工作。,4,教学目标了解软件危机的产生以及解决办法软件工程的重要性了解软件生命周期以及常用软件开发模型。教学重点软件生命周期以及常用软件开发模型。教学难点软件过程中各种模型的特点、使用范围的了解。,第一章软件工程学概述,5,1.1 软件危机1.2 软件工程1.3 软件生命周期1.4 软件过程,第一章软件工程学概述,6,1.1 软件危机,什么是软件危机?通常把软件的开发与维护过程中所遇到的一系列严重问题笼统地成为软件危机。为什么会出现软件危机?由于软件的规模越来越大,复杂度不断增加,软件需求量增大。而软件开发过
3、程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费大量人力财力,而在开发过程中就夭折。1.软件本身:与软件的特点有关复杂、逻辑实体2.人为因素:软件开发与维护的方法不正确有关错误的认识和作法主要表现为忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护等。,7,1.1 软件危机,软件危机的主要表现是什么?对软件开发成本和进度的估计常常很不准确;用户对“已完成的”软件系统不满意的现象经常发生;软件产品的质量往往靠不住;软件常常是不可维护的;软件通常没有适当的文档资料;软件成本在计算机系统总成本中所占的比例逐年上
4、升;软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。,8,1.1 软件危机,如何避免软件危机呢?消除“软件就是程序”的错误观念。1983年IEEE为软件下的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。程序+数据+文档提出软件工程从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。,9,1.2 软件工程,什么是软件工程?它是指导计算机软件开发和维护的一门工程学科,采用工程的概念、原理、技术、和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,目的是生产出能按期交付的、在预算范围
5、内、满足用户需求的、质量合格的软件产品。,10,1.2 软件工程,软件工程的本质特征:1.软件工程关注于大型程序的构造2.软件工程的中心课题是控制复杂性3.软件经常变化4.开发软件的效率非常重要5.和谐地合作是开发软件的关键6.软件必须有效地支持它的用户7.在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人开发产品,11,1.2 软件工程,软件工程的7个基本原理:用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程的必要性,经统计发现,在不成功的软件项目中,有一半左右时由于计划不周造成的
6、。应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后按照计划对软件的开发与维护工作进行管理。,12,1.2 软件工程,软件工程的7个基本原理:用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程的必要性,大部分错误实在编码之前造成的软件缺陷改正的越晚,成本越高。,13,1.2 软件工程,软件工程的7个基本原理:用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程的必要性,需求是不断变化的软
7、件开发过程中不应随意改变需求,14,1.2 软件工程,软件工程的7个基本原理:用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程的必要性,提高软件开发和维护的效率提高软件质量,15,1.2 软件工程,软件工程的7个基本原理:用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程的必要性,软件开发小组的组成人员的素质应该好,而且人数不宜过多。开发小组的素质和数量是影响软件产品质量和卡法效率的重要因素。,16,1
8、.2 软件工程,软件工程方法学软件工程是技术与管理紧密结合所形成的工程学科。管理:13章项目管理将有介绍,即通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。技术:在软件生命周期全过程中使用的一整套技术,称谓方法学方法学(methodology),也称为范型(paradigm)。软件工程方法学包括3个要素:方法:技术方法工具:软件工程支撑环境过程:一系列任务框架,以保证质量。当前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。,17,1.2 软件工程,传统方法学也称为生命周期方法学或结构化范型。它采用结构化技术(结构化分析、结构化设计和结构化实现
9、)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。问题简单化、便于阶段性审查、有一定应用、便于区别面相对象方法学。,18,1.2 软件工程,面向对象方法学当软件规模庞大,或者对软件的需求是模糊的或会随时间而变化的时候,使用传统方法学开发软件往往不成功,此外,使用传统方法学开发出的软件,维护起来仍然很困难,原因是这种技术要么面向行为(即对数据的操作),要么面向数据,还没有既面向数据又面向行为的结构化技术。面向对象方法把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据
10、的操作紧密地结合起来的方法。,19,1.3 软件生命周期,软件生命周期包括:软件定义、软件开发和软件维护期。,20,1.3 软件生命周期,软件定义的主要目的:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。,21,1.3 软件生命周期,22,1.3 软件生命周期,软件维护期:使软件持久地满足用户的需要。当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应及时改进,满足用户新需要。,23,1.3 软件生命周期,24,1.3 软件生命周期,1
11、.问题定义 问题定义阶段必须回答的关键问题是:“要解决的问题是什么?”尽管确切地定义问题的必要性是十分明显的,但是在实践中它却可能是最容易被忽视的一个步骤。通过对客户的访问调查,系统分析员扼要地写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。,25,1.3 软件生命周期,2.可行性研究 这个阶段要回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决办法吗?”系统分析员需要进行一次大大压缩和简化了的系统分析和设计过程,也就是在较抽象的高层次上进行的分析和设计过程。可行性研究不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,
12、是否有可行的解决办法。可行性研究的结果是用户部门负责人作出是否继续进行这项工程的决定的重要依据。可行性研究以后的各个阶段,将需要投入多少相应的人力物力。及时终止不值得投资的工程项目,可以避免更大的浪费。,26,1.3 软件生命周期,3.需求分析 这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。用户通常不能完整准确地表达出他们的要求,更不知道怎样利用计算机解决他们的问题;软件开发人员对特定用户的具体要求并不完全清楚。系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。完成系统
13、的需求规格说明书。,27,1.3 软件生命周期,4.总体设计 这个阶段必须回答的关键问题是:“概括地说,应该怎样实现目标系统?”总体设计又称为概要设计。设计出实现目标系统的几种可能的方案。通常至少应该设计出低成本、中等成本和高成本等3种方案。软件工程师分析每种方案的优缺点,并在充分权衡各种方案的利弊的基础上,推荐一个最佳方案。此外,还应该制定出实现最佳方案的详细计划。,28,1.3 软件生命周期,4.总体设计 软件设计的一条基本原理就是,程序应该模块化,即一个程序应该由若干个规模适中的模块按合理的层次结构组织而成。因此,总体设计的另一项主要任务就是设计程序的体系结构,也就是确定程序由哪些模块组
14、成以及模块间的关系。,29,1.3 软件生命周期,4.详细设计 它任务就是把解法具体化,也就是回答下面这个关键问题:“应该怎样具体地实现这个系统呢?”。主要任务是设计出程序的详细规格说明。类似于其他工程领域中工程师经常使用的工程蓝图,它们应该包含必要的细节,程序员可以根据它们写出实际的程序代码。详细设计也称为模块设计,在这个阶段将详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。,30,1.3 软件生命周期,5.编码和单元测试 这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。程序员应该根据目标系统的性质和实际环境,选取一种适当的高级程序设计语言(必要时用汇编语言),把详细
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 课件 第一章

链接地址:https://www.31ppt.com/p-6434253.html