软件的分类
- 系统软件
系统软件负责管理计算机系统中各中独立的硬件,使得它们可以协调工作。
*服务性程序:诊断程序、排错程序、练习程序等
*语言程序:如汇编程序、编译程序、解释程序
*操作系统
*数据库管理系统 - 应用软件
应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如:一个图像浏览器等。
软件的生命周期
又称为软件的生存周期。它是按开发软件的规模和复杂程度,从时间上把软件开发整个过程(从计划开发开始到软件报废为止的整个历史阶段)进行分解,形成相对独立的几个阶段。
每个阶段又分解成几个具体任务,然后按规定顺序一次完成各阶段的任务并规定一套标准的文档作为各个阶段的开发成果,最后生产出高质量的软件。
软件的一生
软件开发模型
由于项目、需求的模式不同,所以在软件生命周期过程中选择的软件开发模型也会不同,历史上,软件开发模型经历了**“边做边改”、瀑布、原型、螺旋、敏捷等模式的**变更。
-
瀑布模型
特点:
1.软件开发的各项活动严格按照线性方式进行。
2.当前活动接受上一项活动的工作结果。
3.当前活动的工作结果需要进行验证。
缺点:
1.由于开发模型是线性的,增加了开发风险。
2.早期的错误可能要等到开发后期的阶段才能发现。 -
原型模型
客户与开发公司紧密联系,开发周期长。开发会受到需求变更的影响。
特点:
1.实现客户与系统的交互。
2.进一步细化待开发软件需求。
3.开发人员可以确定客户的真正需求是什么。 -
螺旋模型
特点:
1.螺旋模型是将瀑布模型与快速原型模型结合起来。
2.强调其他模型所忽略的风险分析。
3.每一次螺旋包括4个步骤:制定计划、风险分析、实施工程 、客户评估。
缺点:
1.强调风险分析,但要求许多客户接受并相信这种分析,是不容易的。 -
敏捷模型
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。
特点:
1.短周期开发。
2.增量开发。
3.由程序员和测试人员编写自动化来测试来监控开发进度。
4.通过口头沟通、测试和源代码来交流系统的结构和意图。
5.编写代码之前先写测试代码,也叫做测试先行。
缺点:
1.团队的组建较难,人员素质要求较高。
2.对测试人员要求完全掌握各种脚本语言编程,能执行单元测试、自动化测试。
软件开发文档