1、软件是程序、数据以及各种相关文档的集合。
程序是对计算任务的处理规则的描述,数据是对计算任务的处理对象的描述,文档则是有关计算机程序功能、设计、编制与使用的文字图形资料。
软件等于程序加数据加相关文档,软硬件共通构成完整的计算机系统,相互依存,缺一不可。

2、软件产品不只包含软件代码,还应该包括帮助文件、用户手册、样本示例等帮助用户使用以及产品宣传的相关内容。是一个完整的产品,而不仅仅是一个代码的集合。

3、软件危机是指在计算机软件开发维护过程中所遇到的一些列严重问题

软件危机的几个典型表现:
①开发成本和开发进度估计很不准确
②用户对开发出的软件很难满意。
③产品的质量往往靠不住。
④软件常常是不可维护的,效率低,。
⑤软件通常没有适当的文档材料
⑥软件成本在计算机系统总成本中所占的比例逐年上升
⑦开发生产率提高得速度远远跟不上计算机应用迅速普及及深入的趋势

4、导致软件危机的原因
①与软件本身特点有关
②与软件开发与维护的方法不正确有关

5、消除软件危机的途径是按照工程化的原则和方法组织软件开发工作

6、软件工程的三要素:方法、工具、过程

7、软件工程方法学主要有:传统方法学(传统方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务)、面向对象方法学(它是一种以数据为主线,把数据和对数据的操作紧密地结合起来)、基于构件的方法学形式化方法学

8、软件的孕育、诞生、成长、成熟、衰亡的过程称为软件生命周期或者软件生存期,由软件定义、软件开发和运行维护三个时期组成,每个时期又可以划分为若干个阶段。

9、将生命周期进行划分,划分原则为:各个阶段的任务尽可能相对独立,同一阶段的各项任务尽可能相同。这样做有利于软件开发工程的组织和管理,降低了整个软件开发过程的困难程度,对每个阶段都可选用最优的管理方法,保证软件质量,提高生产效率

10、软件生命周期划分为三个时期(八个小时期):
①软件定义:确定软件系统的工程需求,包括问题的定义及可行性研究和需求分析两部分。具体划分为三个阶段,即问题定义、可行性研究和需求分析
②软件开发:根据需求说明的要求,逐步生成软件,包括软件设计、程序编码、软件测试三部分。通常划分为四个阶段,即总体设计、详细设计、编码和单元测试,其中前两个合称为系统设计,后两个合称系统实现。
③软件维护:在后续的软件的使用过程进行系统维护及版本更新,只有运行维护一个部分,但是占据整个生命周期成本的一大半。
各阶段关系如图:


顺序依次执行,一个阶段的结束是另一个阶段的开始。

11、软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤

12、声明周期通常有以下的几个模型:(重点掌握前四个)
①瀑布模型(线性模型)
被广泛采用的生命周期模型,应用最广泛的一种模型。按照传统的瀑布模型开发有几个特点:
a阶段间具有顺序性和依赖性(前一阶段工作结束才能开始下一个阶段的工作,前一阶段的输出文档就是下一阶段的输入文档)
b推迟实现(编码之前设置了系统分析和系统设计的各个阶段,先分析再编码)
c质量保证的观点(每个阶段都完成规定的文档,没交出文档等于没完成任务,每个阶段都要对文档进行评审,以便及时发现错误并修改)
但是在开发过程中传统的瀑布模型太理想化,如果按照传统的瀑布模型,一个阶段开发完成后如果没错就认为整个阶段不会再产生任何错误,即使后面错了也不会再回来修改,直到开发结束。
实际的瀑布模型是带有反馈环的。实际的瀑布模型 当在后面阶段发现前 面阶段的错误时,需要沿图中左侧的反馈线返回前面的阶段,修正前面阶段的产品之后再回来继续完成 后面阶段的任务(虚线表示维护过程的修改)。
除此之外,瀑布模型还有V模型这个变体。V模型描述了测试阶段的活动与开发阶段相关活动(包括需求建模、概要设计、详细设计、编码)之间的关系。

瀑布模型有许多优点:
a可强迫开发人员采用规范的方法
b严格地规定了每个阶段必须提交的文档
c要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证
但是由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。如果需求规格说明与用户需求之间有差异,就会发生这种情况。
瀑布模型只适用于项目开始时需求已确定的情况

②快速原型模型
快速原型模型需要迅速建造一个可以运行的软件原型 ,以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。原型是让用户提前看到产品,这个原型要实现的功能是最终完成功能的子集,让开发方更好的进行需求的分析。
优点在于开发是线性顺序的,但是准确的软件原型比较难设计
适用于对开发领域很熟悉或者已有现成原型(旧版本)的情况。

③增量模型
增量模型也称为渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。将核心功能交给用户使用,不断根据反馈维护前面版本并增加后续的功能。优点在于可以短时间内向用户提交可完成部分工作的软件,并且逐渐增加产品功能可以减小用户使用全新软件的冲击。但采用增量模型比采用瀑布模型和快速原型模型更需要精心的设计,不能破坏之前的设计,因此风险也更大,同时由于是不断向内部添加功能,需要软件体系结构是开放的
适用于已有产品的升级或者对完成期限要求很严格的开发。

快速原型模型和增量模型在某些角度很像,都会先产生一个最初版本,个人理解是快速原型模型得到的这个快速原型,是一个为了方便用户更好地理解功能的样本,拿这个样本去和客户更进一步地讨论下一步的开发,而增量模型是先做出一个可以公布的最初版本,每次向里面增加一个功能作为新版本的发布

④螺旋模型
螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。测试部分理论上会更简单,但风险分析本身也有风险,会增加支出和风险,导致开发时间变长
只适合大型的软件项目。

⑤喷泉模型
喷泉模型主要用于采用对象技术的软件开发项目。该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。软件的某个部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分。在某个开发阶段多次返工以求精。两个阶段直接无缝连接,在不断求精的过程中自然过渡到下一个阶段。适用于面向对象的开发过程

⑥Rational统一过程
由 Rational软件公司推出的一种完整而且完美的软件过程。
⑦敏捷过程与极限编程
极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。

⑧微软过程
微软过程的每一个生命周期发布一个递进的软件版本,各个生命周期持续、快速地迭代循环。

软件工程导论 01章软件工程学概述相关推荐

  1. 软件工程学导论第一章-软件工程学概述

    软件工程学概述 软件危机 软件危机的介绍 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题. 软件危机包含两方面的问题:如何开发软件,以满足对软件日益增长的需求.如何维护数量不断膨胀的 ...

  2. 软件工程——第1章软件工程学概述知识点整理

    本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明! 文章目录 1.为什么要有软件工程这门学科? 2.软件分为哪些阶段? 3.软件危机的定义? 4.软件危机包含的问题有哪些? ...

  3. 软件工程导论第六版 第一章 软件工程学概述知识点总结(上)

    目录 关于20世纪60年代 (选择题考点) 软件危机 软件危机的概念 (填空题考点) 软件危机的表现 (简答题考点) 软件危机产生的原因 (简答题考点) 软件工程的概念 软件工程的七条基本原理 软件生 ...

  4. 软件工程导论第六版 第一章 软件工程学概述知识点总结(下)

    目录 软件过程 瀑布模型 快速原型模型 增量模型 螺旋模型 喷泉模型 Rational 统一过程 敏捷过程和极限编程 面向对象方法学 简答题 本章练习 软件过程 顺口溜:布 原 增 螺 喷 统 瀑布模 ...

  5. 《软件工程导论》/ 第一章 软件工程学概述 / 1.4软件过程 / 1.4.1瀑布模型

    在20世纪80年代之前,瀑布模型一致是唯一被广泛采用的生命周期模型,现在它仍然是软件工程中应用得最广泛的过程模型.传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述. 一.按照传统的瀑布模型开发 ...

  6. 《软件工程导论第6版》--张海藩 牟永敏 课后答案及其详解 第1章 软件工程学概述

    文章目录 第1题 第2题 第3题 第4题 第5题 第6题 第7题 第8题 第9题 第10题 第11题 第12题 第1题 一.什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 答:软件危机是指在 ...

  7. 软件工程—软件工程学概述

    软件工程 第一章-软件工程学概述 文章目录 软件工程 第一章 软件工程学概述 1.1 软件危机 1.2 软件工程 1.2.1 软件工程方法学 1.3 软件生命周期 1.4 软件过程 1.4.1 瀑布模 ...

  8. 软件工程 | 第一章:软件工程学概述

    软件工程学概述 一.前言 二.软件危机 1.典型表现 2.产生原因 3.消除危机途径 三.软件工程 1.概述 2.软件本质特征 3.软件工程基本原理 4.软件工程方法学 1️⃣传统方法学 2️⃣面向对 ...

  9. 软件工程导论复试——一、软件工程学概述

    软件工程导论复试 本文用书 <软件工程导论>第六版张海藩.牟永敏 清华大学出版社 一.软件工程学概述 软件危机:计算机软件开发和维护时遇到的一系列严重问题 典型表现: (1) 对软件开发成 ...

最新文章

  1. 【转】MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
  2. FPGA之道(4)锁存器与寄存器
  3. 廖的python教程_廖雪峰的Python3.x教程.pdf
  4. OFDM同步算法之Park算法
  5. 不定字段数目的数据库表设计和数据结构
  6. LeetCode Algorithm 572. 另一棵树的子树
  7. Android 内存溢出解决方案(OOM)
  8. 为什么我不用ViewPager或RecyclerView来做上下滑切换
  9. 【bzoj】 1412: [ZJOI2009]狼和羊的故事
  10. html5游戏开发--动静结合(二)-用地图块拼成大地图 初探lufylegend
  11. Spring的Bean属性依赖注入
  12. 烂泥:学习ssh之ssh隧道应用
  13. MessageBox用法大全 [转]
  14. IDEA打包jar包及运行jar包命令
  15. 云服务器ECS/EC2_转载
  16. android 百度地图驾车导航,使用百度地图API实现驾车导航
  17. 使用激光可调湿蚀刻曲面实现无间隙微透镜阵列的通用
  18. 康耐视智能相机Insight全部函数介绍
  19. 计算机本科核心课程教学视频,绝对经典,有空温习温习~
  20. 拿到大厂前端offer的前端开发是怎么回答面试题的

热门文章

  1. (一)在Lingo中使用集合
  2. 委托函数《重构》----处理概括关系
  3. javascript操作listbox方法 【转】
  4. sql日期处理(出自邹建的book)
  5. 有100个GMAIL的邀请,需要的来信就可以啦。
  6. java证书已过期如何继续运行_过期证书上的Java trustmanager行为
  7. NOI.AC #31. MST
  8. autograd手动仿真手记
  9. Python基础【day03】:字典(一)
  10. stm32 GPIO