第一章 绪论

第一章 绪论

1.软件是什么?

软件是在通用计算机硬件之上面向特定应用目标实现的解决方案

软件包括程序、相关数据及说明文档

2.软件的特征(与硬件区别在哪里)

软件在开发、生产和维护方面与硬件不同。

  • 软件开发不同于硬件设计

    与硬件设计相比,软件更依赖于开发人员的业务素质、智力,以及人员的组织、合作和管理。同时对硬件而言,设计成本往往只占整个产品成本的一小部分,而软件开发占整个产品成本的大部分

  • 软件生产不同于硬件制造

    硬件设计完成后就投入批量制造,制造也是一个复杂的过程,其间仍可能引入质量问题;而软件成为产品之后,其制造只是简单的拷贝而已。软件的仓储和运输也非常简单

  • 软件维护不同于硬件维修

    硬件在运行初期有较高的故障率,在缺陷修正后的一段时间中,故障率会降到一个较低和稳定的水平上。随着时间的改变,故障率将再次升高,这是因为硬件会受到摩损等损害,达到一定程度后就只能报废软件是逻辑的而不是物理的,虽然不会磨损和老化,但在使用过程中的维护却比硬件复杂得多。如果软件内部的逻辑关系比较复杂,在维护过程中还可能产生新的错误

在这里插入图片描述
在这里插入图片描述

3.软件危机是什么

软件危机是在开发和维护过程中产生的一系列问题。

表现为:

  1. 进度经常延迟(进度)
  2. 质量无法保证(质量)
  3. 成本超出预算(成本)
  4. 软件维护困难(维护)
  5. 失败风险很大(风险)

根源为(产生原因):

  1. 对软件这样一类复杂和特殊系统的认识不清
  2. 没有找到支持软件系统开发的有效方法
  3. 缺乏成功软件开发实践以及相应的开发经验
4.工程和工程过程

工程是对技术(或社会)实体的分析、设计、建造、验证和管理。
工程是一种组织良好、管理严密、各类人员协同配合、共同完成工作的学科。
它具有这些特性:以价值为目标、高度的组织管理性、多种学科的综合、高度的实践性。

一个工程过程包括以下四个核心步骤:

  1. 理解问题(软件需求分析
  2. 设计方案(软件设计
  3. 实施方案(软件编码
  4. 监控方案的效能(软件测试和质量保障)
5.软件工程的定义

NATO:软件工程就是为了经济地获得可靠的能在实际机器上高效运行的软件而建立和使用的工程原理。

IEEE:软件工程是将系统的规范的可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件

CMU/SEI-90TR-003:软件工程就是应用计算机科学和数学的原理经济有效地解决软件问题的一种工程。

6.SWEBOK V4的18个知识域(了解)
  • 软件工程专业知识域
    • 软件需求、软件架构、软件设计、软件构造
    • 软件测试、软件运营、软件维护、软件配置管理
    • 软件工程管理、软件工程过程
    • 软件工程模型与方法、软件质量、软件安全
    • 软件工程经济、软件工程职业实践
  • 软件工程通用知识域
    • 工程经济基础、计算基础
    • 数学和工程基础
7.软件工程的金三角(了解)

指支撑软件开发的三大核心要素:人员(人的参与)、技术(技术方法)和管理(软件工程管理)

  1. 人:完成软件开发的主体
  2. 技术:提供了建造软件在技术上需要如何做的方法、
  3. 管理:提供了质量管理、成本管理、时间管理和范围管理等知识和技能
  4. 过程:将人、技术和管理结合在一起的凝聚力。
8.软件过程(软件工程技术)

在这里插入图片描述

  1. 需求(Request)重点在What
    • 任务:调研和定义软件的需求
    • 成果:《需求规约》(经用户和软件人员双方共同认可) FURPS+
  2. 设计(Design)重点在How
    • 任务:软件人员依据软件需求,建立软件的设计蓝图, 是需求到代码的桥梁。
    • 成果:《软件架构》文档,设计模型
  3. 编程(Coding):依据设计文档为每个模块编写程序
  4. 测试(Testing):发现并排除软件中的缺陷
  5. 部署(Deployment):交付、支持和反馈
  6. 软件运营(Operation):在目标环境中部署和配置软件,以及在软件运行时(直到停用)对其进行监控和管理的过程
  7. 软件维护(Maintenance):软件系统交付运营后,为了改正错误或满足新的需要而修改软件的过程。
    • 举例:一个中等规模的软件,如果开发过程要一年时间,它投入使用后,其运行时间可能持续五年,这段时间是维护阶段。
    • 与开发相比,维护阶段的工作量和成本要大得多
    • 人们对软件维护的认识远不如软件开发,因为开发具有主动性和创造性,易被人们所重视。
    • 维护类型:
      • 纠错性维护:为修复所发现的问题而进行的反应式维护
      • 预防性维护:在软件产品中的潜在错误成为实际错误前所进行的预防性修复,例如设计重构和代码优化等
      • 适应性维护:为适应环境的变化而修改软件的维护
      • 补充性维护:添加新功能或新特性以增强产品使用的维护
      • 完善性维护:为用户提供功能增强、程序文档改进、软件性能和可维护性等质量属性的提升而做的维护。和补充性维护不同的是,它并不增加新功能和新特性,所做的修改较小
      • 紧急维护:计划外的应急修改,以暂时保持系统运行,等待后续纠错性维护
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等你涅槃重生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值