(个人)软件工程导论期末复习总结

  1. 软件工程概述

运用 工程化的思想进行软件开发:需求分析,软件设计,程序设计,软件维护

软件的定义:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。

程序:按事先设计的功能和性能要求设计执行的指令序列

数据:使程序能正常操作信息的数据结构

文档:与程序开发,维护和使用有关的图文材料

软件特征:开发复杂,成本高,风险大,维护困难

软件危机:

软件危机的表现:

  1. 软件成本高
  2. 软件质量得不到保证
  3. 进度难以控制
  4. 维护非常困难

产生软件危机的原因:

  • 软件本身特点有关(难于维护,逻辑复杂)
  • 与软件开发和维护的方法不正确有关

消除软件危机的途径

  • 对计算机软件有一个正确的认识(软件≠程序)
  • 充分意识到软件开发是一种有组织,有管理,需要各类人员配合完成的工程项目。而非个体劳动
  • 使用成功的技术方法
  • 开发和使用更好的软件工具

软件工程

定义:建立和使用一套合理的工程原理,从而经济地获得可靠的,可以在实际机器上高效运行的软件。

目的:提高质量,降低成本

软件过程模型(软件开发或软件生命周期模型):

软件生命周期     

  1. 软件定义
  • 问题定义
  • 可行性研究
  • 需求分析

      2.软件开发

      3.运行维护

过程模型 

1.瀑布模型(文档驱动型) 

  • 阶段间具有顺序性和依赖性。每个阶段的工作依次进行,后一阶段的输入文档即前一阶段的输出文档。
  • 推迟实现的观点  
  • 以经过评审确认的阶段工作产品(文档)驱动下一阶段的工作,保证了质量。
  • 整体开发模型,程序的物理实现集中在开发阶段的后期,用户在最后才能看到自己的产品。

优点:

  1. 可强迫开发人员采用规范的方法
  2. 严格地规定了每个阶段必须提交的文档
  3. 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证

缺点:

  1. 实际项目很少按照该模型给出的顺序进行   
  2. 用户常常难以清楚地给出所有需求
  3. 用户必须有耐心,等到系统开发完成

2.快速原型模型

快速建立起可以在计算机上运行的程序,所完成的功能往往是最终产品的一个子集。

工作过程:收集需求,快速设计出软件中对用户可见的部分,根据用户的反馈逐步调整原型。

存在问题:

  • 为了使原型尽快的工作,没有考虑软件的总体质量和长期的可维护性。
  • 为了演示,可能采用不合适的操作系统、编程语言、效率低的算法,这些不理想的选择成了系统的组成部分。
  • 开发过程不便于管理。

有效的使用: 建造原型仅是为了定义需求,之后就被抛弃(或被部分抛弃),实际的软件在充分考虑了质量和可维护性之后才被开发。

3.增量模型(分批交付)

先完成一个系统子集的开发,再按同样的开发步骤增加功能 (系统子集),如此递增下去直至满足全部系统需求。  系统的总体设计在初始子集设计阶段就应作出设想。

优点:分批交付,用户先看到部分功能产品,开发者逐步增加产品功能同时用户有时间适应学习新产品。

缺点:软件体系结构必须开放,需要考虑构件无法集成的风险

4.螺旋模型(风险分析)

瀑布模型和快速原型模型结合起来降低风险,且每个阶段前增加了风险分析。

优点:降低风险,提高质量

缺点:开发人员需要相当丰富的风险评估经验和专门知识,要求用户参与阶段评估,过多的迭代次数增加了开发成本,延迟了提交时间

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值