1.计算机系统的发展历程(一)软件危机介绍(组图)

软件工程的研究领域包括软件开发方法、软件周期和软件工程实践。

软件危机与软件工程的起源1.计算机系统的发展

1960 年代中期之前,是计算机系统的早期:

该软件是专门为每个特定应用编写的。

软件本质上是一个小程序,易于编写,没有系统的方法,也没有任何软件开发管理。

作者和用户是同一(或同一组)人。

软件设计是一个晦涩难懂的过程,除了程序列表之外没有任何文档。

从 1960 年代中期到 1970 年代中期,是计算机发展的第二代:

硬件开发:多程序、多用户系统引入了人机交互的新概念,使硬件和软件的协作达到了一个新的水平。实时系统可以收集、分析和转换来自多个信息源的数据,使过程控制能够在几毫秒而不是几分钟内进行。在线存储技术的进步催生了第一代数据库管理系统。

软件开发:软件的个体特征。软件数量极其庞大。必须更正程序运行时发生的错误。当用户有新的需求时,必须对程序进行相应的修改。当硬件或操作系统更新时,通常需要修改程序以适应新环境。软件维护以惊人的比例占用大量资源,而且许多程序的个体性质使它们最终无法维护。

2.软件

定义:软件包含一个完整的配置:

程序:执行预定功能和执行指令序列的可执行文件。

数据:使程序能够适当地处理信息的数据结构。

文档:是开发、使用和维护程序所需的图形材料。

1983 年 IEEE 对软件的定义:计算机程序、方法、规则、相关文档和运行程序所需的数据。

特点:

1) 软件是一个逻辑实体,而不是一个特定的物理实体。

2) 软件的生产方式不同于硬件。软件开发过程中没有明显的制造过程。

3)软件在运行和使用过程中,没有像硬件一样出现机械磨损和老化问题。

4) 软件成本相当高。

3.软件危机简介

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

软件危机包括两个方面:如何开发软件以满足日益增长的软件需求;以及如何维护不断扩大的现有软件数量。

软件危机的典型表现:对软件开发成本和进度的估计通常非常不准确。用户对“竣工”软件系统的不满经常发生。软件产品的质量通常是不可靠的。软件通常是不可维护的。软件通常没有正确记录。软件成本在计算机系统总成本中的比重逐年上升。软件开发生产力提高的速度跟不上硬件的发展速度,也跟不上计算机应用快速普及和深入的趋势。

4.软件危机的原因

1)目标:软件本身的特点

逻辑组件:由于缺乏“可见性”,软件质量难以评价,因此软件开发过程的管控难度很大。

大规模:软件规模大,软件复杂度会随着程序规模的增加呈指数级增长。

2)主观:开发方法不正确

忽略需求分析:在没有完整准确地理解用户需求的情况下匆忙编写程序是许多软件开发项目失败的主要原因之一。 (软件生命周期:一个软件从定义、开发、使用、维护到最终被废弃,要经历一个漫长的过程。)

软件是程序:程序只是完整软件产品的一个组成部分。软件配置主要包括程序、文档、数据等组件。

鄙视软件维护:在软件开发的不同阶段进行更改的成本是非常不同的。前期:涉及面少,成本低。中期:软件配置的很多组件已经完成,引入变更需要对所有已完成的配置组件进行相应的修改,不仅工作量大,而且逻辑上也比较复杂,因为支付成本增加戏剧性地。完成阶段:在完成阶段引入变更,当然需要更高的价格。

5. 消除软件危机的方法

组织管理:工程项目管理方法

技术措施:软件开发技术与方法、软件工具

软件工程1.什么是软件工程

定义:软件工程是一门指导计算机软件开发和维护的工程学科。使用工程概念、原理、技术和方法来开发和维护软件,将经过时间考验的正确管理技术与当前最好的技术方法相结合,经济地开发高质量的软件并有效地维护它。

IEEE(IEEE83)定义:软件工程是一种开发、操作、维护和修复软件的系统方法。

IEEE(IEEE93)Definition) : 将系统的、规范的、可衡量的方法应用到软件开发、运行和维护的过程中,即把工程应用于软件。

Fairly 的定义:软件工程是在成本限制内按时开发和修改软件产品所需的系统化生产和维护技术和管理科学。

Fritz Bauer 的定义:软件工程是为了经济地获取可靠且实用的机器软件,该软件可以有效运行,同时建立和使用合理的工程原则。

2.软件工程的 7 个基本原则

1) 有分 段的生命周期计划被严格管理

项目总结计划、里程碑计划、项目控制计划、产品端口控制计划、验证计划、运维计划。

2) Persistence Conduct 阶段审查

软件的质量保证不能等到编码阶段结束。原因:大多数错误是在编码之前引起的,设计错误占软件错误的63%,编码错误仅占37%。越晚发现和纠正错误,它们的成本就会越高。

3) 实施严格的产品控制

不应在软件开发过程中随意修改需求,当需求发生变化时,为了保持软件各个配置组件的一致性,必须实施严格的产品控制,其中包括基线的实施配置管理。基线配置也称为基线配置软件危机是指,是经过阶段审查的。软件配置组件(在各个阶段产生的文档或程序代码)。

基线配置管理也称为变更控制:对软件的所有修改提案,尤其是涉及严格程序的提案进行审核,修改通过后才能实施。

4)使用现代编程技术

使用先进的技术不仅可以提高软件开发和维护的效率,而且可以提高软件产品的质量。

5)结果要明确审核

软件是一种无形无形的逻辑产品。为了提高软件开发过程的质量可见性和更好的管理,应根据软件开发项目的总体目标和期限,定义开发组织的职责和产品标准,以便获得的结果能够被清晰地评审。

6)开发组人员要少而精

开发团队人员的素质和数量是影响软件产品质量和开发效率的重要因素。

7) 承认软件工程实践持续改进的必要性

3.软件工程的三要素

1)方法:“怎么做”

2)工具:做什么

3)进程:按什么顺序

4. 软件工程的本质特征

1)软件工程侧重于大程序的构建

2)软件工程的中心议题是控制复杂性

3)软件变化频繁

4)开发软件的效率很重要

5)和谐合作是软件开发的关键

p>

6)软件必须有效地支持其用户

7) 在软件工程中,具有一种文化的人取代具有另一种文化的人 有背景的人创造产品

5. 软件工程框架

软件工程领域

1. 软件要求)

软件需求涉及软件需求的获取、分析、规范和验证。

2.软件设计

软件设计是定义体系结构、组件、接口和系统或组件的其他特征的过程以及此过程的结果。

3.软件构建

软件构建是对工作和有意义的软件的详细创建。

4.软件测试

软件测试是一项评估、改进产品质量以及识别产品缺陷和问题的活动。

5.软件维护

软件维护是指由于出现问题或需要改进而对代码和相关文档进行修改,从而修改现有软件产品并保持其完整性。

6.软件配置管理

软件配置管理是一种支持性的软件生命周期过程,用于系统地控制配置更改软件危机是指,是在软件系统的整个生命周期内维护配置完整性和可追溯性,同时在不同时间点识别系统配置的学科。

7.软件工程管理

软件工程管理活动基于组织和内部基础设施管理、项目管理、计划和控制三个层次。

8.软件工程过程

软件工程过程是软件生命周期过程本身的定义、实施、评估、管理、变更和改进。

9.软件工程模型和方法

软件工程模型特指软件生产、使用、退役等各个过程中引用的模型的总称,如需求开发模型、架构设计模型等,属于软件工程模型的范畴;软件开发方法主要讨论软件开发的各种方法及其工作模型。

10.软件质量

软件质量的特性涉及很多方面,保证软件产品的质量是软件工作的重要目标。

11.软件工程专业实践

软件工程专业实践涉及软件工程师应该履行自己的实际承诺,利用软件需求分析、规格说明、设计、开发、测试和维护成为一个有回报和受人尊敬的职业;还包括团队合作和沟通技巧。

12.软件工程经济学

软件工程经济学是研究软件工程项目实现特定功能需求的技术解决方案。 、生产(开发)过程、产品或服务等方面的经济服务和论证、计算和比较的系统方法学学科。

13.计算基础

计算基础涉及解决问题的技术、抽象、编程基础、编程语言基础、调试工具和技术、数据结构和表示、算法和复杂性、系统的基本概念、计算机的组织结构、编译基础、操作系统基础、数据库基础和数据管理、网络通信基础、并行和分布式计算、基本用户人为因素、基本开发人员人为因素以及安全软件开发和维护。

14.数学基础

数据基础涉及集合、关系和函数、基本逻辑、证明技术、计算基础、图形和树、离散概率、有限状态机、语法、数值精度、准确性和误差、数论和代数结构。

15.工程基础

工程基础涉及实验方法和技术、统计分析、测量、工程设计、建模、仿真和原型设计、标准和影响因素分析。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论