什么是软件?*
计算机系统中的程序、数据、以及相关文档的总称
软件发展的主要阶段*
1.程序设计阶段:汇编语言和机器语言、用户主要是程序员本身
2.程序系统阶段:高级语言,包含了设计和测试
3.软件工程阶段:高级语言系统、程序设计语言,软件生存周期
在程序系统阶段,软件的发展不能满足需要,出现了软件危机
什么是软件危机?*
落后的软件生产方式无法满足迅速增长的软件需求,导致开发和维护过程中出现了一系列问题
软件危机主要表现在哪些方面?
1.软件的开发进度难以预测
2.软件开发成本难以控制
3.用户对产品功能难以满足:不了解需求,沟通出现问题
4.软件产品的质量无法保证:缺少标准来衡量
5.软件产品难以维护
软件危机的原因
1.用户需求不明确
2.缺乏正确的理论指导
3.软件开发的规模越来越大
4.软件开发的复杂度越来越高
如何解决软件危机?
出现了软件工程来研究客观规律性问题、采用一写辅助性的工具,辅助生产、人工智能与软件工程结合
什么是软件工程?*
他是一种好的工程原则,为了减少软件开发的经济成本,提高软件的开发的效率,系统高效开发维护软件,使软件在开发过程可以度量
软件的特点:*
1.是一种逻辑实体,不是有形的系统元件
2.软件被开发被设计,具有明显的生产的过程,难以维护
3.没有硬件的机械老化和磨损问题
4.软件成本高
软件的分类:*
1.系统软件:最靠近硬件的一层
2.支持软件:支持软件的开发和维护
3.应用软件:特定领域专用软件
那么软件由什么语言来描述呢?软件语言有什么?*
1.需求定义语言:定义所需要的需求包括功能需求和非功能需求
2.功能性语言
3.设计性语言
4.程序设计语言
5.文档语言
软件工程过程*
软件工程过程指在定义、开发、使用和维护软件时,要实施的过程、活动和任务
软件生存周期*
软件从定义开始,经过开发、使用和维护,直到最终退役的全过程称为软件生存周期。
软件生存周期模型*
软件开发模型(又称为软件生存周期模型)是指软件项目开发和维护的总体过程思路的框架。
一个软件产生之后,会存在生存周期,生存周期就是从软件产生到报废的生命周期,孕育,诞生,成长,成熟和衰亡的过程,在这个过程会存在哪些过程*
计算机系统工程、需求工程、设计、编码、测试、运行、维护
软件生存周期过程:
5个基本过程、9个支持过程、7个组织过程
为了评价软件过程能力成熟度产生了成熟度模型CMM
主要目的:提供一种评价软件承接能力的方法,为大型软件项目的招标活动提供一种去全面客观的评价依据,同时用于组织改善软件。
软件成熟度的等级:*
1.初始级:软件过程的特点是无秩序的,混乱的,几乎没有什么过程经过妥善定义,成功依赖个人或小组的努力
2.可重复级:建立基本的项目管理过程来跟踪成本、进度、和功能特性,能重复早先类似的应用项目取得的成功。
3.已定义级:将管理和工程活动两方面软件过程文档化、标准化,所有项目均使用经批准、裁剪的标准软件过程来开发和维护软件。
4.已管理级:收集对软件过程和产品质量的详细度量值,对软件过程和产品都有定量的理解和控制。
5.优化级:整个组织关注软件过程改进的持续性、预见及增强自身,防止缺陷及问题的发生。过程的量化及反馈和先进的新思想、新技术促使过程不断改进。
软件过程模型:*
1.瀑布模型:又是也称软件生存周期模型,呈线性发展,前部分完成之后进行后一部分
不足:客户常常难以清晰的描述所有的需求,出现问题,瀑布回溯,查找上一阶段出现的问题
2.演化模型:获得某一项需求,分析,快速开发一个初始版本,客户边用边提出意见,需求缺少的情况下采用这种方式
1.增量模型:分成若干个日程时间交错的线性序列,每个线性序列产生一个可发布的增量版本
2.快速原型模型:
原型:在预期系统的一个可执行版本,反映了系统性质的选定子集
3.螺旋模型:增加风险分析,在四个象限采用四个任务
4.喷泉模型:支持面向对象开发的过程模型
3.基于构件的开发模型:包括领域工程、应用系统工程两部分
瀑布模型、快速原型、螺旋模型(比较三者的优缺点)瀑布模型:优点是可强迫开发人员采用规范的方法,严格地规定了每个阶段必须提交的文档,要求每个阶段交出的所有产品都必须经过质量保证小组的仔细检查;缺点是由文档驱动。快速原型:优点是有助于保证用户的真实需要得到满足。螺旋模型:优点是对可选方案和约束条件的强调有利于已有软件的重用,减少了过多测试或测试不足所带来的风险,维护只是模型的另一个周期,在维护和开发之间并没有本质的区别;缺点是它靠风险驱动。面向对象软件开发采用的喷泉模型
瀑布模型适合于哪类软件系统的开发?答:瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。例如操作系统、编译系统、数据库管理系统等系统软件的开发。
瀑布模型的缺点主要有哪些?答:1)在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。2)在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。3)不支持产品的演化,缺乏灵活性,使软件产品难以维护。
实现快速原型的开发途径有哪三种? 1)仅模拟软件系统的人机界面和人机交互方式。2)开发一个工作模型,实现软件系统中重要的或容易产生误解的功能。3)利用一个或几个类似的正在运行的软件向用户展示软件需求中的部分或全部功能。
原型模型适于哪种情况的软件开发?答:原型模型适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。
case工具与环境:*
计算机辅助软件工程(computer aided software engineering):用来支持管理信息系统开发的,由各种计算机辅助软件和工具组成的大型综合性软件开发环境。
按支持的软件过程活动分类:*
开发过程:需求分析工具、设计工具、编码工具、测试工具
开发方法:结构化设计工作,面向对象分析工具
维护过程:版本控制工具、文档分析工具、逆向工具、再工程工具
管理过程:项目管理工具、配置管理工具、软件评测工具、应用类工具
集成型软件开发环境*
支持多种开发方法和过程模型的软件工具集成到一起的软件开发环境
环境集成机制包括:*
数据集成机制:提供数据接口规范
控制集成机制:各个工具之切换通信调度协同
界面集成机制:统一界面风格