一,软件的分类
1.功能划分:
系统软件(操作系统,数据库管理系统等),支撑软件(文本编辑程序,文件格式化软件),应用软件(仿真软件,辅助教学软件)
2.按照软件规模:
3.按工作方式:
实时处理软件,分时软件,交互式软件,批处理软件
4.服务对象的范围划分:
项目软件,产品软件
5.使用的频度:
一次使用,频繁使用
6.软件失效的影响
高可靠性软件,一般可靠性软件
二,软件的发展阶段
程序设计阶段–50至60年代(个人开发)
程序系统阶段–60至70年代(作坊式开发)
软件工程阶段 –70年代以后(面向对象)
三,软件工程过程
软件规格说明(P)
软件开发(d)
软件确认(C)
软件的维护(A)
2.特性
易理解性,可见性,可支持性,可接受性,可靠性,健壮性,可维护性,速度
四,软件的生存周期
##1.制定计划:
确定要开发软件系统的总目标;
给出功能,性能,可靠性以及接口等要求;
完成该软件任务的可行性研究(可行性研究报告)
估计可利用的资源(硬件,软件,人力),成本,效益和开发进度
制定开发任务开发的实施计划
2.需求分析和定义:
对待开发软件提出的需求进行分析并给出详细的定义
编写软件的需求说明书
3.软件设计
概要设计
详细设计
编写设计说明书
4.程序编写
把软件设计转换成计算机可以接受的程序代码
要求写出的程序应该是结构良好,清晰易读的,设计一致
5.软件测试
单元测试(开发者进行)
集成测试(测试组)
有效性测试
6.运行维护
纠正性维护:发现软件问题进行的修改工作
适应性维护:适应软件的工作环境,而做出的适当的变更
完善性维护:增强软件的功能做出适当的变更
预防性维护:为未来的修改与改变调整奠定更好的基础而进行的工作
五,软件开发模型
1.瀑布模型
包含各项软件工程活动,规定自上而下,互相衔接的固定次序,如同瀑布。
思想:从制作时间上按照工序把问题化简,将功能实现与制作分开便于分工协作
(https://img-blog.csdn.net/20180722195342999?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RhbWlzaGlkYWkxNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
特点:每个阶段依赖性顺序性比较强,奠定了软件工程方法的基础,各个阶段比较严谨
缺点:缺乏灵活性,软件与用户见面晚,成功率低,一般为25%
适用范围:适用于系统要求明确的系统,各种应用软件的开发均可适用
上图为乙模型(多次循环),修改不能超过50%
演化模型
渐增模型
螺旋模型:四个象限
喷泉模型:演化,维护,确认,实现,设计,分析
2,快速原型模型
特点:用户和开发一起,
3,演化模型
渐增模型
优点:共同参与
适用范围:知识型软件系统的开发
4.变换型
5、系统开发的生命周期
分析阶段:理解商业需求
设计阶段:将计算机系统解决方案概念化
实现阶段:实现,测试并安装系统
两个附加阶段
(1)、项目计划阶段
(2)、系统支持
六,软件工程
1,定义:
IEEE:软件工程是开发,运行,维护和修复软件的系统方法(最少的投入,高质量)
2,软件工程的三要素:方法,工具,过程
方法:为软件开发提供了“如何做”的技术
过程定义了:方法的使用顺序,要求交付的文档资料,里程碑
项目的基本目标:较低的开发成本,达到软件功能,取得较好的软件性能,开的的软件易于移植,较低的维护费用,及时交付
3,软件定义:计算机系统通过运行程序来实现各种不同的应用把各种不同功能的程序,包括用户为自己的特定目的编写的应用程序,检查和诊断机器系统的程序,支持用户应用程序运行的系统程序,管理和控制机器系统资源的程序等通常称为软件
4,软件危机
产品不符合用户的实际需要
软件成品质量差
软件的可维护性差
价格昂贵
5,软件开发的原理
用分阶段的生存周期计划严格管理
坚持进行阶段评审
实行严格的产品控制
采用现代的程序设计技术
结果应能清楚的审查
合理安排软件开发小组的人
承认不断改进软件工程实践的必要性
6,软件工程的原则
分解
独立性
一致性
确定性