(一)软件工程学概述

(1) 什么是软件危机,具体表现,消除软件危机的途径(*)

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

答:“已完成”的软件不满足用户的需求;开发进度不能保障;软件开发成本和进度难以准确估算;软件产品的质量没有保证,软件常常是不可维护的。

  1. 开发成本和进度难以估算和控制,大大超过预期
  2. 用户对已完成的软件不满意,需求分析不够充分
  3. 软件产品的质量难保证
  4. 软件维护困难
  • 难以改正错误
  • 难以增加新功能
  1. 软件通常没有配套文档资料
  2. 软件成本占计算机系统总成本中比例逐年上升
  3. 软件开发生产率提升,落后于计算机普及速度。

产生软件危机原因

一是软件的特点

  二是软件开发与维护的方法不当

 

消除软件危机的途径

  1. 消除错误的“软件就是程序”观

    正确的软件概念是: 软件=程序+文档+数据

  1. 强调团队协作:软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目,个人英雄主义没有作为
  2. 使用实践中总结出来的成功的技术
  3. 发展更好的软件工程工具。

(2) 软件工程概念,定义,三要素(方法、工具、过程)(*)

软件=程序+文档+数据

软件工程是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理方法和先进软件开发技术结合起来,运用到软件开发和维护过程中,来解决软件危机。

   实际上 软件应该是程序、数据及相关文档的完整集合

其中程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护程序需要的图文资料。

  • 方法

    完成软件开发任务所遵循的技术原理(理论、思想),回答“怎样做”的问题;

  • 工具

    自动的或半自动的,践行方法的操作支撑环境(如CASE工具);

  • 过程

    为了获得高质量的软件,所需完成的一系列任务框架,它规定了完成各项任务的工作序列。

(3)
软件生命周期时期,阶段划分,(*)

指一个软件从提出开发要求开始到该软件报废为止的整个时期。

进一步可将软件的生命周期划分为可行性研究、需求分析、设计、编码、测试、集成、维护阶段。

5阶段划分:需求定义;设计;编码;测试;维护

(1) 软件工程方法学的概念,内涵,要素,主要的范型

  • 传统方法学

ü  采用结构化技术(SA、SD、SP)

ü  对软件生命周期划分阶段,按顺序完成各阶段任务

ü  每个阶段开始和结束都有严格标准,相邻的两个阶段,前一阶段的结束标准即为后一阶段的开始标准

ü  每阶段结束前都需要进行正式而严格的技术审查和管理复审

ü  强调自顶而下顺序地完成软件开发各阶段的任务

——基于瀑布模型

 

  • 面向对象方法学

ü  把对象(Object)作为融合了数据及对数据的操作行为的统一的软件构件。

ü  对象彼此间通过消息传递协同工作,共同完成系统的功能

ü  把相关对象分类(Class)

ü  借鉴自然界的遗传变异的特性,提炼出继承及多态机制,有效提高软件构件重用性及改善软件系统结构,从而提高了软件生产效率及可维护性。

ü  主动多次反复迭代的演化过程

——基于迭代模型

 

(2) 软件过程概念,各种软件过程模型和特点(瀑布,快速原型,螺旋)

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

软件生命周期模型——从软件项目需求定义之中软件经使用后废弃为止,跨越整个生存期的系统开发、运作和维护所实施的全部的过程、活动和任务的结构框架。


模型


优点


缺点


瀑布模型


文档驱动


系统可能不满足客户的需求


快速原型模型


关注满足客户需求


可能导致系统设计差、效率低,难于维护


增量模型


开发早期反馈及时,易于维护


需要开放式体系结构,可能会设计差、效率低


螺旋模型

喷泉模型


风险驱动

迭代 无缝 适合OO


风险分析人员需要有经验且经过充分训练

瀑布模型

特点

(1)阶段间具有顺序性和依赖性

(2)推迟实现的观点

(3)质量保证的观点

快速原型模型

特点

快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统让用户

在计算机上试用它通过实践来了解目标系统的概貌。

螺旋模型

特点

螺旋模型的基本思想是使用原型及其他方法来尽量降低风险。理解这种模型的一

个简便方法是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型

时间: 2024-10-14 09:12:06

(一)软件工程学概述的相关文章

软件工程学概述(一)

1.软件危机 a.软件工程关注于大型程序的构造 b.软件工程的中心课题是控制复杂性 c.软件经常变化 d.开发软件的效率非常重要 e.和谐的合作是开发软件的关键 f.软件必须有效地支持它的用户 g.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品 2.软件工程的基本原理 a.用分阶段的生命周期计划严格管理 b.坚持进行阶段评审 c.实行严格的产品控制 d.采用现代程序设计技术 e.结果应能清楚的审查 f.开发小组的人员应该少而精 g.承认不断改进软件工程实践的必要性 3

软件工程学概述(二)

软件工程:以开发工程的方法指导软件开发 方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也成为范型 软件工程方法学包含三个要素:方法.工具和过程 课外拓扑---- OS/360 1964年,IBM发布了S/360系统,对应的最早的主机操作系统为OS/360,命名360的意思是指一个圆的360度角,表示全方位的服务. OS/360支持多道程序,最多可同时运行15道程序.为了便于管理,OS/360把中央存储器划分为多个(最多15个)分区,每个程序在一个分区中运行. 发展历程

软件开发概述

                                                                                       (一)软件开发概述 1.1   软件,程序与计算机语言 软件是为完成某些特定功能而编写的一到多个程序文件的集合 计算机是由电子元件组成的. 1.2  程序语言的发展 1.2.1 机器语言 电子元件的特点是他们有两种很稳定的状态:导电或不导电.早期的计算机程序员用0表示计算机不通电的状态,用1表示计算机通电的状态,然后通过集成

软件工程学

看完软工视频,对其中的内容做下简单回顾.我们正式接触到软件工程,对这个概念还不是很清楚,也许只有当我们操作起来才能真正了解吧! 首先说明下软件工程的发展史,每一段发展史肯定是有不少错误的,也就是在这些错误中不断成长,才有了今天如此专业化的软件工程学.这些错误引起的就是所谓的"软件危机",针对软件危机就像金融危机一样,肯定是先分析原因,再找出解决方案,借鉴其他工程领域的管理技术,逐步使软件工程这门新科学发展和完善起来. 学习软件工程主要就是了解它的原理和方法.生命周期方法学把软件生命周期

第一章软件开发概述思维导图

第一章软件开发概述思维导图

团队博客:软件单元测试概述

1.几个相关的概念 白盒测试——把测试对象看作一个打开的盒子,程序内部的逻辑结构和其他信息对测试人员是公开的. 回归测试——软件或环境的修复或更正后的“再测试”,自动测试工具对这类测试尤其有用. 单元测试——是最小粒度的测试,以测试某个功能或代码块.一般由程序员来做,因为它需要知道内部程序设计和编码的细节. JUnit ——是一个开发源代码的Java测试框架,用于编写和运行可重复的测试.他是用于单元测试框架体系xUnit的一个实例(用于java语言).主要用于白盒测试,回归测试. 2.单元测试概

软件开发概述 编程语言概述

http://www.cnblogs.com/hellokitty1/p/4032990.html 程序语言的发展: 机器语言  汇编语言  高级语言    软件开发的基本步骤:分析问题,建立数学模型.  确定数据结构和算法.  编制程序 .  调制程序. 算法的特性:有穷性    确定性   有零个或多个输入   有一个或多个输出   有效性   流程图:其优点是形象直观,简单易懂,便于修改和交流.   结构化程序设计: 顺序结构   选择结构    循环结构   调试程序: 语法错误  逻辑

软件概论概述

软件遍布这个世界,对这个社会的经济和文化产生了深远的影响.如何以经济有效的方法开发高质量的软件是人们长期以来一直努力研究的问题.而软件工程就是为了解决开发成本效益和软件质量的问题产生的.软件是复杂的,不可见的,是不断变化的.没有任何变化的软件一定是没有用的.软件工程包括两个主要内容:.软件工程是工程概念在软件领域里的一个特定应用,.软件工程涉及软件产品的所有环节.1. 软件工程的三要素:过程.方法和工具2. 软件质量的最基本特征:可靠性,正确性,有效性.3.软件工程的方法:①传统的软件开发方法:

软件开发概述--敏捷模式

软件开发生命周期 SDLC--Software Development Life Cycle. 传统的软件开发生命周期有: 瀑布模型:顺序进行,只有完成上一个阶段才能开启下一个阶段,将软件生命周期分为:制定计划.需求分析.软件设计.编写程序.软件测试及运行维护六个基本活动.优点是为项目提供了按阶段划分的检查点及关注点,必须为其提供模板来使分析.设计.编码.测试.支持有一个共同的指导.缺点是各个阶段划分固定,其间产生大量文档,极大地增加了工作量,用户只有等到整个过程的末期才能看到开发成果,增加了开