陕西国防工业职业技术学院
课 名:软件工程教学方式:授课+考试 + 大作业设计授课教师:陈巧丽联系方式:E_mail:[email protected]
陕西国防工业职业技术学院
一、课程的性质、任务: “软件工程”是高职高专院校计算机应用与软件技术
专业教学计划中一门核心基础课程,它是研究软件开发和软件管理的一门工程科学。
它的主要任务是掌握支持软件开发和管理的理论、方法、技术、标准以及计算机辅助软件工程的工具( Visio 或 Rose)环境等知识;使学生具有软件开发能力(包括熟练进行程序设计语言的结构化编码与可视化设计能力 ;UML的阅读和建模能力;培养用软件工程化及项目化的思想处理
解决问题的能力等)。
陕西国防工业职业技术学院
概括说:软件开发能力最关键的步骤有三步:
陕西国防工业职业技术学院
二、通过学习应能达到如下目标:1 .接受一种思想。掌握软件工程的基本原理、概念与方法 ----主要包括软件系统的可行性研究、需求分析、概要设计、详细设计、编码、测试、维护、面向对象、项目管理等方面的基本知识与方法。2 .掌握软件工程中的一些基本技术方法,如数据流图、数据字典、结构分析方法(如 Jackson方法等),面向对象分析方法、集成测试方法、项目管理的基本方法等。3 .结合模拟案例,要求学生从实际中掌握从面向过程到面向对象思想理论的基本方法和技巧。掌握软件开发文档的组织编写等。 4. 掌握一种工具。学期末能用 Visio 或 Rose软件完成大作业的设计(画各种软件工程图)(指定或自找题目)5. 把目前或以后要学的程序设计知识( C 、 Java 、 VB、 VC++、 VB.NET等)提高到一定理论高度认识:编程能否用?
学会思想比掌握一种工具更为重要。 小提示:
陕西国防工业职业技术学院
三、几点建议:“学知识,最重要的是融会贯通!”人类解决复杂问题时普遍采用的一个策
略就是“各个击破”,也就是对问题进行“分解,分解,再分解,然后再分别解决各个子问题!”
陕西国防工业职业技术学院
“现在大家都已认识到,如果有哪个项目不遵循软件工程原则必定会受到实践的惩罚。”
“软件工程课是我们参加工作以后最能直接应用的一门专业课。”
——一位刚毕业参加工作的计算机专业学生
陕西国防工业职业技术学院
什么是软件 软件的特点 软件的发展 软件生存期 什么是软件工程 软件工程的目的和要求
第一章 绪论
陕西国防工业职业技术学院
先接受 2 个正确观点:1 、“开发软件不等于编写程序”
— 开发软件应该完成的工作远远多于编写程序应该完成的工作。 设计算法(即完成指定功能的步骤),然后用程序设计语言(例如: C
语言)表达该算法。 而开发软件并非就是编写程序,事实上编写程序仅仅是开发软件所应完
成的工作的一部分,而且只占一小部分。 为了开发出一个符合用户需要、质量合格的软件,软件工程师必须首先弄清楚用户面临的问题是什么,也就是要明确软件的“主攻”方向;
接下来应该进行可行性研究方案,分析用户面临的问题是否有行得通的解决方案。为避免浪费资源,仅在该软件的开发是可行的前提下,才进行实质性的开发工作;
1.1 软件工程简述
陕西国防工业职业技术学院
然后应该进行需求分析工作,通过与用户的反复交流,搞清楚用户对该软件的具体需求,这些需求是进行软件设计的依据;在编写程序之前需要先进行设计。
通常,大型软件的设计工作又分成两个阶段进行,先进行总体设计(又称为概要设计),再进行详细设计;
编写程序实质上是把设计结果翻译成用某种程序设计语言书写的程序; 程序编写出来之后,还需要经过严格的测试过程(需要的工作量通常占软件开发全部工作量的 40% ~ 50%) ,软件确实符合用户需求而且质量合格,才能交付给用户使用。
陕西国防工业职业技术学院
2 、“错误做法会导致软件危机”。 开发软件不等于编写程序。但是,迄今为止,仍然有不少人错误地认为开
发软件就是编写程序,或者认为开发软件主要就是编写程序。人们之所以有错误的认识并在开发软件时采用了错误的做法,主要可归因于在计算机系统发展的早期阶段“开发软件”的个体化特点。
所谓软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。(软件危机的具体表现在后面介绍)
陕西国防工业职业技术学院
1.1 软件工程简述 软件是计算机系统中与硬件相互依存的另一部分,
它是包括程序,数据及其相关文档的完整集合。 程序是按事先设计的功能和性能要求执行的指令序列。计算机程序包括源程序和目标程序。
数据是使程序能正常操纵信息的数据结构(即数据的组织形式)。
文档是与程序开发,维护和使用有关的图文材料。
陕西国防工业职业技术学院
1.1 软件工程简述软件的特点 软件是一种逻辑实体,而不是具体的物理实体。因此,它具有抽象性。
软件的生产与硬件不同,没有明显的制造过程。对软件的质量控制,必须立足于软件开发方面。
在软件的运行和使用期间,没有像硬件那样的磨损、老化问题。
软件的开发和运行往往受到计算机系统的限制,对计算机系统有不同程度的依赖性。
陕西国防工业职业技术学院
1.1 软件工程简述 面向过程的程序 = 算法 + 数据结构 面向对象的程序 = 对象 + 消息 面向构件的程序 = 构件 + 构架 软件 = 程序 + 数据 + 文档
陕西国防工业职业技术学院
陕西国防工业职业技术学院
1.1 软件工程简述
软件的特点(续) 迄今为止,软件的开发尚未完全摆脱手工艺的
方式。 软件本身是复杂的。 软件的成本相当昂贵。 ( 见下页图示 ) 相当多的软件工作涉及到社会因素。
陕西国防工业职业技术学院
1.1 软件工程简述
软件的分类 按软件的功能划分:系统软件、支撑软件、应
用软件 按软件的规模划分:微型、小型、中型、大型、
超大型 按软件的工作方式划分:实时、分时、交互、
批处理 按软件服务对象的范围划分:项目软件、产品
软件
陕西国防工业职业技术学院
1.1 软件工程简述
一、计算机软件发展的各个时期1. 第一代( 60 年代中期之前)程序设计阶段
硬件通用,软件专用;程序规模小,编写者和使用者为同一人(同组人)。
2. 第二代( 60 年代中期 -70 年代中期)程序系统阶段 出现“软件作坊”、产品软件;“个体化”开发方法。
3. 第三代( 70 年代中期之后)软件工程阶段软件开发成为一门新兴的工程学科——软件工程。
4. 第四代( 90 年代后)现代软件工程阶段。
陕西国防工业职业技术学院
计算机软件发展的三个时期及特点
程序设计 程序系统 软件工程 现代软件工程
软 件 的范畴
程序 程序及说明书 产品软件(项目软件)
项目工程
主 要 程序 设 计语言
汇编及机器语言
高级语言 高级语言系统、程序设计语言
面向对象可视化设计语言
软 件 工作范围
程序编写 包括设计和测试
软件生存期 整个软件生存期
需求者 程序设计者本人
少数用户 市场用户 面向所有用户
陕西国防工业职业技术学院
计算机软件发展的三个时期及特点
陕西国防工业职业技术学院
1.1 软件工程简述
二、什么是软件危机 软件危机是指在计算机软件的开发和维护过程中所
遇到的一系列严重问题。主要是两个问题。1. 如何开发软件,怎样满足对软件的日益增长的需
求。2. 如何维护数量不断膨胀的已有软件
陕西国防工业职业技术学院
1.1 软件工程简述三、软件危机的主要表现
1. 对软件开发成本和进度的估计不准确2. 用户不满意3. 软件质量不高、可靠性差4. 软件常常不可维护、错误难以改正。5. 缺乏适当的文档资料6. 软件成本占系统总成本的比例逐年上升7. 软件开发速度跟不上计算机发展速度
陕西国防工业职业技术学院
1.1 软件工程简述四、产生软件危机的原因
1. 与软件本身的特点有关 软件不同于硬件,它是计算机系统的逻辑部件而不是物理
部件。在写出程序代码并在计算机运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价。因此,管理和控制软件开发过程相当困难。
2. 软件不易于维护( 1 )软件维护通常意味着改正或修改原来的设计,客观上
使软件较难维护。
陕西国防工业职业技术学院
1.1 软件工程简述
( 2 )软件不同于一般程序,它的规模大,不易于维护。3. 在软件开发过程中,或多或少地采用了错误的方法
和技术。4. 对用户需求没有完整准确的认识,就匆忙着手编写
程序。
陕西国防工业职业技术学院
1.1 软件工程简述五、解决软件危机的途径
1. 技术措施使用更好的软件开发方法和开发工具
2. 组织管理措施 软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。
陕西国防工业职业技术学院
1.1 软件工程简述一、什么是软件工程
软件工程是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
软件工程是一门涉及软件计划、需求分析、设计、编码、测试和维护的原理、方法及工具的研究和应用的学科。
陕西国防工业职业技术学院
1.1 软件工程简述
二、软件工程的基本原理 1968年 , 北大西洋公约组织 (NATO), 召开的有关
计算机软件会议上正式提出“软件工程”术语。 目前有 100 多条关于软件工程的准则,其中最出名
的是著名软件工程专家 B.W.Boehm 在 1983 年提出的 7 条基本原理。
陕西国防工业职业技术学院
1.1 软件工程简述
1. 用分阶段的生命周期计划严格管理 经统计表明,不成功的软件项目中有一半左右是由
于计划不周造成的。 Boehm 认为,在软件的整个生命周期中应制定并
严格执行六类计划:项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划、运行维护计划。
陕西国防工业职业技术学院
1.1 软件工程简述2. 坚持进行阶段评审
大部分错误是在编码之前造成的 因此,在每个阶段都进行严格的评审,以便尽早
发现在软件开发过程的错误
陕西国防工业职业技术学院
1.1 软件工程简述3. 实行严格的产品控制
在软件开发过程中不要随意改变需求,因为改变某项需求往往需要付出较高的代价,但在实践中用户往往会提出需求变更,因此需要采取科学的产品控制技术。
目前主要实行基准配置管理:基准配置是指经过阶段评审后的软件配置成分,如各个阶段产生的文档或程序代码。
对涉及基准配置的修改,必须经过严格的评审,通过后才能实施修改。
陕西国防工业职业技术学院
1.1 软件工程简述
4. 采用现代程序设计技术 实践表明:采用先进的技术既可提高软件开发的效
率,又可提高软件维护的效率。 80 年代及之前:结构化分析、设计技术 90 年代:面向对象分析、设计技术
陕西国防工业职业技术学院
1.1 软件工程简述
5. 结果应能清楚地审查 软件产品是看不见、摸不着的逻辑产品,开发过程难以评价和管理。
根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,使所得的结果能够清楚地审查
陕西国防工业职业技术学院
1.1 软件工程简述
6. 开发小组的人员应该少而精 开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。
开发小组人员数目的增加,使相互交流复杂、费用增加。
陕西国防工业职业技术学院
1.1 软件工程简述
7. 承认不断改进软件工程实践的必要性 遵循前 6 条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产,但不能保证赶上时代前进的步伐。
积极主动采纳新的软件技术,且不断总结经验。
陕西国防工业职业技术学院
1.1 软件工程简述三、软件工程的目标及框架、原则 ⑴ 软件工程的目标可概括为“生产具有正确性、可用性以及
开销合宜的产品”; ⑵ 软件工程的活动是“生产一个最终满足需求且达到工程目
标的软件产品所需要的步骤”; ⑶ 软件工程实施过程中的四条基本原则:
① 选取适宜的开发模型; ② 采用合适的设计方法;③ 提供高质量的工程支持;④ 重视开发过程的管理。
陕西国防工业职业技术学院
1.2 软件的生存周期及其开发模型1. “ 生命周期法”的起源。 软件工程采用的“生命周期法”,就是从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后再逐步完成每个阶段的任务 .
软件生存周期包括问题定义、可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等活动,可以将这些活动以适当方式分配到不同阶段去完成。
陕西国防工业职业技术学院
1.2 软件的生存周期及其开发模型
2. 生命周期划分的原则 任务的性质尽可能相同,从而降低每个阶段任务的复杂性,
简化不同阶段之间的联系,有利于软件开发过程的组织管理。
3. 生命周期的划分 软件生命周期一般分为:软件定义(问题定义、可行性研究、
需求分析)、软件开发(总体设计、详细设计、编码和单元测试、综合测试)、软件使用与维护等三个时期。
陕西国防工业职业技术学院
1.2 软件的生命周期及其开发模型
软件定义 问题定义 可行性分析 需求分析
软件开发 系统设计 编码 测试
软件与维护
陕西国防工业职业技术学院
1.2 软件的生命周期及其开发模型软件生命周期的各个阶段:
( 1 )问题定义( 2 )可行性分析( 3 )需求分析 分析软件需求,编写软件需求规格说明( 4 )概要设计和详细设计 确定软件体系结构,设计软件模块( 5 )程序编写( 6 )软件测试( 7 )运行和维护
陕西国防工业职业技术学院
1.2 软件的生存周期及其开发模型一、瀑布模型 瀑布模型的优点: 通过设置里程碑,明确每阶段的任务与目标。 可为每阶段制定开发计划,进行成本预算,组织开发力量。 通过阶段评审,将开发过程纳入正确轨道。 严格的计划性保证软件产品的按时交付。 瀑布模型的缺点: 缺乏灵活性,不能适应用户需求的改变。 开始阶段的小错误被逐级放大,可能导致软件产品报废。 返回上一级的开发需要十分高昂的代价。 随着软件规模和复杂性的增加,软件产品成功的机率大幅下降。 瀑布模型的适应范围: 它主要适应于小规模的软件开发。
陕西国防工业职业技术学院
问题定义
需求分析
概要设计
详细设计
编码
测试
定义阶段
开发阶段
可行性分析
维护阶段
运行维护
陕西国防工业职业技术学院
2.2 软件开发过程模型二、原型模型
1. 基本思想 在获取一组基本的需求定义后,利用高级软件工具的可开发环境,快速地建立一个目标系统的最初版本,并把它交给用户试用、补充和修改,再进行新的版本开发。反复进行这个过程,直到得出系统的“精确解”,即用户满意为止。经过这样一个反复补充和修改的过程,应用系统的“最初版本”就逐步演变为系统的“最终版本”。
陕西国防工业职业技术学院
1.2 软件的生存周期及其开发模型 原型:一个具体的可执行模型,它实现了系统的若干功能。
原型法:不断地运行系统“原型”来进行启发、揭示和判断的系统开发方法。
陕西国防工业职业技术学院
1.2 软件的生存周期及其开发模型 原型法的主要思路: 根据用户的需求迅速构造一个低成本的用于演示及
评价的试验系统 ( 原型 ) 由用户对原型进行评价 在用户评价的基础上对原型进行修改或重构 。
陕西国防工业职业技术学院
1.2 软件的生存周期及其开发模型 有了满意的系统原型,同时也积累了使用原型的经验,用户常会提出新目标,从而进一步重新构造原型周期。新目标的范围要比修改或补充不满意的原型大。
(1)渐增型 (2)用于验证软件需求的原型 (3)用于验证设计方案
陕西国防工业职业技术学院
1.2 软件的生存周期及其开发模型
3. 软件原型是软件的最初版本,以最少的费用、最短的时间开发出的、以反映最后软件的主要特征的系统。它具有以下特征: (1) 它是一个可实际运行的系统。
陕西国防工业职业技术学院
1.2 软件的生存周期及其开发模型 (2) 它没有固定的生存期。一种极端是扔掉原型(以最简便方式大量借用已有软件,做出最后产品的模型,证实产品设想是成功的,但产品中并不使用);
另一种极端是最终产品的一部分即增量原型(先做出最终产品的核心部分,逐步增加补充模块),演进原型居于其中(每一版本扔掉一点,增加一点,逐步完善至最终产品)。
陕西国防工业职业技术学院
1.2 软件的生存周期及其开发模型 (3) 从需求分析到最终产品都可作原型,即可为不同目标作原型。
(4) 它必须快速、廉价。 (5) 它是迭代过程的集成部分,即每次经用户评价后修改、运行,不断重复双方认可。
陕西国防工业职业技术学院
快速原型法的特点: 有直观的系统开发过程 用户参与系统开发的全过程 可以逐步明确用户需求 用户直接掌握系统的开发进度 用户接受程度高
1.2 软件的生存周期及其开发模型
陕西国防工业职业技术学院
1.2 软件的生存周期及其开发模型 快速原型法的不足: 不适用于拥有大量计算或控制功能的系统 不适用于大型或复杂的系统 容易掩盖需求、分析、设计等方面的问题 结果不确定——随原型构造评价过程而定 整体考虑较少 快速原型法主要适应于: 适用于解决有不确定因素的问题 适用于对用户界面要求高的系统 适用于决策支持方面的应用 适用于中型系统
陕西国防工业职业技术学院
1.2 软件的生存周期及其开发模型
三、螺旋模型 在原型基础上,进行多次原型反复并增加风险评估,形成螺旋模型。
陕西国防工业职业技术学院
1.2 软件的生存周期及其开发模型
陕西国防工业职业技术学院
1.2 软件的生存周期及其开发模型
陕西国防工业职业技术学院
1.2 软件的生存周期及其开发模型螺旋模型分析 在螺旋模型结构中,维护只是螺旋模型的另一个周期,在
维护和开发之间本质上并没有区别,从而解决了做太多测试或未作足够测试所带来的风险。
适用条件 内部的大规模软件的开发,不太适合合同软件。 一般只适用于大规模软件的开发
陕西国防工业职业技术学院
小结 1 、理解:程序、软件、软件工程的概念,软件生存期各
阶段的特点和内容,软件危机产生的原因。 2 、应用:软件生存周期模型,快速原型法,螺旋模型,
构件组装模型。 3 、了解:软件发展的 4 个阶段及特点,软件危机的产生及其表现形式。
4 、关注:软件工程的开发方法。
陕西国防工业职业技术学院
作业 1. 说明“软件生命周期”的概念 2. 软件生命期为什么要划分成阶段?怎样划分?各阶段有何特点?
陕西国防工业职业技术学院
谢谢使用谢谢使用本课件本课件 !!