软件工程概述
软件是计算机系统中与硬件相互依存的部分。它是包括计算机程序、数据以及软件文档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列。数据是使程序能够正确操纵信息的数据结构。文档是与程序开发、维护和使用有关的图文材料
软件的特点:
- 软件是一种抽象的逻辑实体,不是具体的物理实体。(软件没有具体的形态)
- 软件产品没有明显的制造过程,其生产过程主要是开发。
- 软件产品的维护比硬件复杂。(软件需要不断的变化——更新升级)
- 软件的开发和运行对计算机系统存在依赖性。
- 软件本身的复杂性。(问题域的复杂性)
软件发展阶段:
- 程序设计阶段
- 程序系统阶段
- 软件工程阶段
软件的特征:系统性,复用性,可靠性,一致性,抽象性,智能性
软件工程以关注软件质量为目标,由方法、工具、过程三个基本要素组成。
软件工程方法:即软件开发方法,提供如何开发软件的相关技术
软件工程工具:即软件开发工具,为软件开发提供各种辅助性的工具软件,以提高开发效率和软件质量
软件工程过程:规定了一系列的软件工程活动,以及活动的执行步骤和细节。规定了技术方法的采用、过程制品的产生,以及对质量保证和软件变更的管理等。
产生软件危机的原因:软件本身特点,软件开发与维护的方法不正确
软件生存周期:软件产品从最初定义开始,到交付用户使用,直至最终废弃淘汰为止所经历的全过程
软件生命周期组成:
1)软件定义;
A.问题定义 B.可行性研究 C.需求分析
2)软件开发;
D.总体设计 E.详细设计
F.编码和单元测试 G.综合测试
3)运行维护
软件过程模型
瀑布模型:是一种线性的软件开发过程。各项活动严格按照时间次序上的线性关系,一个接一个地向前推进。 特别侧重于软件文档的作用,每两个阶段之间靠软件文档来驱动。对软件用户来说,是一种**“黑盒”过程**。即整个开发过程中与用户没有任何交互,缺乏用户参与,用户只有等到整个过程末期才能见到开发成果。简单易用,效率高。但灵活性差,难以响应用户需求的变化。
适用于规模较小,软件需求定义非常稳定且无变化的软件项目。增量模型:每一个增量都提交一个可以运行的产品,需要软件具备开放式的体系结构。能够适应用户逐步细化需求的过程。适合进行已有产品升级或新版本开发,对完成期限严格要求,对所开发的领域较熟悉而且已有原型系统,在既定的商业要求期限之前不可能找到足够的开发人员,需要不断增加新需求的软件项目
原型模型:适用于软件需求不明确,设计方案有风险的软件项目
原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于( 需求不确定性高的 )系统。它从用户界面的开发入手,首先形成(系统界面原型 ),用户( 运行用户界面原型 ),并就( 同意什么和不同意什么 )提出意见,它是一种(自外向内 )型的设计过程。基于复用的过程模型:核心思想——软件复用:依赖现有的软件构件及其相应的集成框架,开发新的软件系统。
RAD模型:多个增量并行开发,形成多个瀑布模型的并行化。 每个增量都由一个独立的RAD团队完成,多个团队并行执行,提高开发效率。侧重于短开发周期的增量模型,但需要大量的人力资源创建多个RAD团队。
螺旋模型:将开发活动与风险管理相结合,引入风险分析,减小并控制软件风险
要求开发人员要擅长软件风险的识别。耗费时间长,投入成本高。适用于大型软件项目开发。