拒绝啰里八嗦的废话,坑爹不是时间,是青春.
1. 软件工程定义:
软件工程是1968年北大西洋公约组织的工作会议上首先提出“软件工程”的概念,要用工程化的思想来开发软件.用科学知识和技术原理来定义、开发、维护软件的一 门科学
1.1软件工程的性质:
软件工程是一门综合性的交叉学科,涉及计算机科学、工程科学、管理科学、数学等领域
计算机科学中的研究成果均可用于软件工程,但计算机科学着重于原理和理论,而软件工程着重于如何建造一个软件系统
软件工程要用工程科学中的观点来进行费用估算、制定进度、制定计划和方案
软件工程要用管理科学的方法和原理进行软件的生产和管理
软禁工程要用数学的方法建立软件开发中各个种模型和各种算法
1.2软件工程目标:
目的是成功的建造一个大型软件系统
所谓成功,是要达到
付出较低的开发成本
达到要求的软件功能
取得较好的软件性能
开发的软件易于移植
需要较低的维护费用
能按时完成开发任务,及时交付使用
开发的软件可靠性高
1.3软件工程内容
主要是软件开发技术和软件管理两个方面
软件开发技术中主要研究软件开发方法、软件开发过程、软件开发工具和环境
软件开发管理中主要研究软件管理学、软件经济学、软件心理学
关于软件生存周期模型、方法和工具.
2: 软件生存周期各种模型
描述软件开发过程中各种活动如何执行的模型
1. 瀑布模型
将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型
包括所有的软件生存周期环节,规定了由前至后、相互衔接的固定次序
缺点:
理想的线性开发模式,缺乏灵活性
开发过程中用户看不到软件是什么样子,造成开发方向错误
2. 增量模型
一种非整体开发的模型,软件在该模型中是“逐渐”开发出来的,开发一部分展示一部分,可以及早发现问题。或者开发一个“原型”软件,完成部分主要功能再逐步完善
具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目
缺点:
对于复杂的大型软件,开发一个原型往往达不到要求
3. 螺旋模型
将瀑布模型与增量模型结合起来,加入了两种模型均忽略了的风险分析
开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合
每个周期内分四个工作不:制定计划、风险分析、开发实施、用户评估
适合于大型软件的开发
缺点:
需要有相当丰富的风险评估经验和专门知识,使得应用受到一定限制
4. 喷泉模型
一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法
克服了瀑布模型不支持软件重用和多想开发活动集成的局限性
是开发过程具有迭代性和无间隙性
5. 基于知识的模型
又称只能模型,它把瀑布模型和专家系统结合在一起
还处于研究实验阶段,还未达到实用阶段
6. 变换模型
适合于形式化开发的模型
3: 软件开发方法
使用早已定义好的技术集和符号表示习惯来组织软件生产的过程
1. 结构化方法
由结构化分析,结构化设计、结构化程序设计构成,是一种面向数据流的开发方法。简单实用,应用较广,技术成熟
2. Jackson方法
面向数据结构的开发方法
3. 维也纳开发方法(VDM)
一种形式化的开发方法,软件需求用严格的形式语言描述,然后把描述模型逐步变换成目标系统
4. 面向对象的开发方法
90年代主流
基本出发点是尽可能按照人类认识世界的方法和思维方式来分析和解决问题
包括面向对象分析、面向对象设计、面向对象实现
1997年推出统一建模语言UML,是面向对象的标准建模语言
4: 软件开发工具
1. 软件工具的重要性
为了支持软件人员开发和维护活动而使用的软件
项目估算工具、需求分析工具、编码工具、测试工具、维护工具等
2. 工具箱
将各种软件工具简单组合起来就构成工具箱
工具箱的工具界面不同意,工具内部无联系,工具切换由人工操作
3. 软件开发环境
工具系统的整体化及集成化,使之形成完整的软件开发环境
使软件工具支持整个生存周期
4. 计算机辅助软件工程
新的软件工具目的是实现软件生存周期各个环节的自动化,主要用于软件的分析和设计,使用这些工具开发人员可以以对话的方式建立各种软件系统
计算机辅助软件工程可以简单的定义为软件开发的自动化,CASE结构化方法可以用于瀑布模型、增量模型、螺旋模型进行开发.Jackson方法可以用于瀑布模型、增量模型 维也纳方法只能用于变换模型进行开发.