软件基本概念

  • 一、什么是产品
  • 二、软件的双重角色
  • 三、软件的涵义及特征
  • 四、软件应用
  • 五、软件危机
  • 六、软件神话

一、什么是产品

1、从用户的角度
产品实际上就是信息,以某种方式使得用户世界更加美好
2、从软件工程师的角度
产品实际上就是软件

二、软件的双重角色

1、产品
软件是一个信息变换器,用来获取、显示及管理信息等
2、产品交付使用的载体
软件是①操作系统的基础;②通信网络的基础;③其他软件工具和环境的基础

三、软件的涵义及特征

1、软件的涵义
软件Software = 程序Program + 数据Data + 文档Document,这些项的每一个均包含一个配置
2、软件的特征
1)软件是被开发或设计的,而不是传统意义上被制造的
2)软件不会“磨损”,但是会退化
注:需了解两种曲线:硬件故障率曲线(浴缸曲线);软件故障率曲线;具体形式图如下:


(3)虽然软件产业正在向基于构件的组装前进,大多数软件仍然是定制的
->构件:是可复用的组成部分,可被用于构造其他软件,比如一些被封装的对象类、功能模块及软件框架等

四、软件应用

1、系统软件
2、应用软件
3、工程/科学软件
4、Web应用软件
5、人工智能软件
6、……

五、软件危机

1、软件危机的表现
(1)对软件开发成本进度的估计常常不准确(开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见)
(2)用户对“已完成”系统不满意的现象经常发生
(3)软件产品的质量往往靠不住,bug一大堆
(4)软件的可维护程度非常之低
(5)软件通常没有适当的文档资料
(6)软件的成本不断提高
(7)软件开发生产率的提高赶不上硬件的发展和人们需求的增长
2、软件危机引发的思考
1)How do we ensure the quality of the software that we produce?
我们如何确保我们所产生软件的质量?
2)How do we meet growing demand and still maintain budget control?
我们如何满足日益增长的需求,同时又保持预算控制?
3)How do we upgrade an ageing “software plan”?
我们如何升级老化的“软件计划”?
4)How do we avoid disastrous time delays?
我们如何避免灾难性的时间延误?
(5)How do we successfully institute new software technologies?
我们如何成功的研究新的软件技术?
3、减轻软件危机的途径
1)对计算机软件有一个正确的认识(软件≠程序)。
2)必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目
3)推广使用在实践中总结出来的开发软件的成功技术和方法
4)开发和使用更好的软件工具

六、软件神话

1、三大软件神话
(1)管理者的神话
已有了关于开发软件的标准和规程的书籍,可提供所有的信息。
已有了很多很好的软件开发工具和最新的计算机。
如果已落后于计划,可以增加更多的程序员来赶上进度。
如果决定“外包”,就可以放松让承包公司去建造。
(2)客户神话
有了对目标的一般性描述,就可以开始写程序。
项目需求可以不断变更,因为软件是灵活的。
But…变更的代价是:

(3)实践者的神话
一旦写出程序并正常运行,工作就结束了。
在程序真正开始运行之前无法评估其质量。
一个成功的项目唯一应该提交的就是运行程序。
软件工程将使我们创建大量的、不必要的文档,并总是延缓进度。
2、软件开发过程中各单位分配比例
1)工作量分配比例

2)费用分配比例

如果这篇文章对你有帮助,记得留下star哦~

『软件工程1』详解软件是什么相关推荐

  1. 『软件工程6』详解软件项目管理之软件范围与估算

    软件项目管理--软件范围与估算 一.软件项目计划 1.目标 2.步骤 二.软件范围 1.软件范围定义 2.软件范围--引例 三.影响估算的因素 四.软件项目资源 1.软件项目资源构成 2.分析图 3. ...

  2. 『软件工程2』详解软件工程和软件过程模型

    文章目录 一.软件工程的定义 1.Fritz Bauer在NATO上给出的定义 2.Barry Boehm 3.IEEE在软件工程术语汇编中的定义 二.软件工程的层次 1.软件工程三个要素 2.软件工 ...

  3. 『矩阵论笔记』详解最小二乘法(矩阵形式求导)+Python实战

    详解最小二乘法(矩阵形式求导)+Python实战! 文章目录 一. 矩阵的迹 1.1. 转置矩阵 1.2. 迹的定义 1.3. 七大定理 二. 最小二乘法 2.1. 求解介绍 2.2. 另一角度 2. ...

  4. iOS 开发:『Runtime』详解(二)Method Swizzling

    本文用来介绍 iOS 开发中『Runtime』中的黑魔法Method Swizzling. 通过本文,您将了解到: Method Swizzling(动态方法交换)简介 Method Swizzlin ...

  5. 「软件项目管理」一文详解软件配置管理计划

    一文详解软件配置管理计划 前言 一.配置管理概述 1. 配置管理(SCM)定义 2. 软件配置项目(SCI) 3. 基线 4. 软件配置控制委员会(SCCB) 二.软件配置管理过程 1. 管理过程 2 ...

  6. 「软件项目管理」一文详解软件项目质量计划

    一文详解软件项目质量计划

  7. 「软件项目管理」一文详解软件项目管理概述

    一文详解软件项目管理概述

  8. 『软件工程9』结构化系统分析——解决软件“做什么”问题

    结构化系统分析--解决软件"做什么"问题 一.系统分析的任务和过程 1.系统分析的任务 2.系统分析的过程 (1)问题识别 (2)分析与综合 (3)编制文档 (4)系统分析评审 二 ...

  9. 『软件工程13』浅谈面向对象方法,统一建模语言UML

    浅谈面向对象方法UML 一.UML的含义 二.UML的主要内容 1.UML的概念模型 2.UML概念模型图例 三.UML的基本构造块 1.UML中的事物 (1)UML中的四种事物 (2)UML中各种事 ...

最新文章

  1. 求集合/字符串中的所有组合 (C语言)
  2. OpenCV图像分割Grabcut算法
  3. python实现简易工资管理系统(Salary Manage)源码
  4. 读ImageCropper源码
  5. csstd超出部分用...替换
  6. 【报告分享】2020中国电商直播粉丝价值研究报告.pdf(附下载链接)
  7. Deep Spatio-Temporal Residual Networks(深度时空残差神经网络)
  8. 放弃OneNote,拥抱 Obsidian
  9. 敌兵布阵 HDU - 1166
  10. 泛函分析之集合的映射和可数集与不可数集
  11. Python关于生日悖论分析
  12. Orkut 试用报告
  13. 基于kali的一次无线渗透测试
  14. 全世界199个国家首都经纬度
  15. 怎么清洁计算机主机内部,机箱怎么防尘 机箱清灰步骤【教程】
  16. html5details标签。
  17. linux系统下安装教程_手机安装linux系统安装教程
  18. ST-GCN源码运行完整版(含OpenPose编译安装)及常见问题
  19. html中ui的意思,WebUI是什么意思
  20. 牛新庄大侠的简历,我辈后生共勉

热门文章

  1. ArcGIS中国工具(ArcGISCTools)3.2 安装教程(附安装包下载)
  2. Android之在ubuntu上过滤多条关键字日志
  3. linux之用xargs删除这个目录下面后缀为txt的文件(包括子目录)
  4. Android之在window下面开发常用的adb命令(不断更新)
  5. 博古通今的孩子是怎么养成的?答案就在这本影响了无数中国人思想的奇书里……
  6. 两度破译“白宫密码”,让美国政府部门崩溃,却称自己是抱娃敲代码的普通妈妈
  7. 复工之后,如何让自己的时间更值钱
  8. 机器学习:怎样才能做到从入门到不放弃?
  9. sklearn线性回归详解
  10. 数据库 流量切分_互联网大厂有哪些分库分表的思路和技巧?