《软件工程发展概述》

合集下载

软件工程发展史

软件工程发展史

软件工程发展史软件工程是指将系统性的、规范的、可量化的方法应用于软件的开发、运行和维护的过程。

软件工程的发展历程可以追溯到20世纪50年代,随着信息技术的快速发展,软件工程也得到了广泛的应用和研究。

本文将从几个关键时期对软件工程发展史进行概述,并介绍其中的重要里程碑和进展。

1. 早期软件工程的起步(1950s-1960s)在计算机起步的年代,软件开发过程并没有得到足够的重视,程序员们主要采用自主、个体的方式编写代码。

然而,随着计算机应用的普及和软件规模的增长,人们开始意识到软件开发需要一种系统和规范的方法。

在此背景下,软件工程的概念开始形成,并开启了软件工程发展的序幕。

2. 结构化编程和软件工程方法(1970s-1980s)20世纪70年代,结构化编程方法的提出带来了软件开发中的重要突破。

结构化编程强调使用顺序、选择、和循环等基本的编程结构来组织代码,以实现模块化和可维护性。

同时,软件工程方法也开始出现,例如软件开发生命周期,需求分析,设计规范等,为软件开发提供了更加系统和规范的方法。

3. 面向对象编程和敏捷开发方法(1990s-2000s)20世纪90年代,面向对象编程(OOP)成为软件开发的主流方法。

OOP强调将现实世界的概念和对象映射到代码中,提高了软件的可重用性和可扩展性。

同时,敏捷开发方法也逐渐崭露头角,强调快速迭代和客户反馈,以更好地满足用户需求并加快软件交付速度。

这些新兴的方法和思想为软件工程发展注入了新的活力。

4. 软件工程的成熟和新兴技术(2010s-至今)进入21世纪,软件工程的发展趋势更加多元化。

随着云计算、大数据、机器学习和人工智能等技术的快速发展,软件工程也与更多的领域交叉融合。

软件开发的过程变得更加自动化和智能化,测试和部署工具的不断进步也大幅提高了开发效率和软件质量。

总结:软件工程的发展经历了多个阶段和重要的里程碑。

从早期的探索和实践,到结构化编程和软件工程方法的兴起,再到面向对象编程和敏捷开发方法的引入,软件工程在不断演进中不断提高了软件开发的质量和效率。

软件工程概述和发展趋势

软件工程概述和发展趋势

软件工程概述和发展趋势软件工程是一门涉及软件开发、维护和管理的学科,旨在提高软件开发的效率和质量,以满足不断增长的软件需求。

本文将从软件工程的定义、发展历程以及当前的发展趋势进行探讨。

一、软件工程的定义和概述软件工程是将工程原理、方法和工具应用于软件开发和维护的学科。

它与传统的工程学科一样,采用系统化和结构化的方法来解决软件开发中的问题。

软件工程主要包括需求分析、设计、编码、测试和维护等阶段,并且强调团队合作和质量控制。

软件工程的发展是为了解决软件危机而起,软件危机指的是在软件开发过程中出现的成本超支、进度延误、质量不达标等问题。

软件工程的目标是通过规范化的过程和工具来提高软件项目的管理和控制,从而降低软件开发的风险。

二、软件工程的发展历程1. 面向过程的软件开发方法早期的软件开发方法主要关注程序编写的技术和算法,忽略了软件开发中的其他环节。

这导致了开发进程的混乱和质量的不稳定。

2. 结构化软件开发方法20世纪70年代,随着软件需求的增长,人们开始寻求更系统化的开发方法。

结构化软件开发方法将软件开发分解为模块化的子任务,有助于降低复杂度并提高可维护性。

3. 面向对象的软件开发方法20世纪80年代,面向对象的软件开发方法逐渐兴起。

它将现实世界中的实体和行为映射到软件模型中,提供了更灵活和可扩展的开发方式。

4. 敏捷开发方法21世纪初,敏捷开发方法成为热点。

敏捷开发强调迭代和自组织团队的工作方式,注重用户反馈和快速响应变化的需求。

三、软件工程的发展趋势1. 人工智能和机器学习的应用人工智能和机器学习的快速发展将在软件工程领域带来新的机遇和挑战。

通过智能算法和模型训练,可以提高软件开发、测试和维护的效率。

2. 软件工程的自动化随着自动化技术的进步,软件工程领域也在寻求自动化解决方案。

例如,自动化测试和持续集成工具的广泛应用,可以降低测试成本并提高交付速度。

3. 云计算和大数据的发展云计算和大数据技术的发展为软件工程提供了更好的资源管理和数据处理能力。

软件工程的发展历程与趋势

软件工程的发展历程与趋势

软件工程的发展历程与趋势软件工程作为一门与计算机科学密切相关的学科,随着时代的发展和技术的进步,经历了数十年的演变和发展。

本文将追溯软件工程的历程,探讨了其发展的主要阶段,并展望了未来软件工程的趋势。

1. 软件工程的起源软件工程的概念最早出现在20世纪60年代。

当时,人们开始意识到开发和维护大型软件项目存在的问题,如进度延迟、软件质量难以保证等。

于是,学者们开始思考如何运用工程原理和方法来管理软件开发过程,这就是软件工程诞生的背景。

2. 阶段一:传统软件开发模型在软件工程的早期,传统的瀑布模型被广泛采用。

该模型将软件开发过程分为需求分析、设计、编码、测试和维护等阶段,每个阶段按序进行。

然而,这种线性的开发模型存在一些问题,如无法适应需求变化、测试和维护过程较为困难等。

3. 阶段二:敏捷开发方法为了应对传统模型的不足,敏捷开发方法兴起。

敏捷开发强调快速响应需求变化、紧密合作和持续交付。

它采用迭代和增量的方式来开发软件,将需求细化为用户故事,实现快速迭代和反馈。

由此,敏捷开发方法极大地提高了软件开发的灵活性和客户满意度。

4. 阶段三:软件工程工具和环境的发展随着计算机技术的快速发展,软件工程领域涌现出众多工具和环境,用于辅助软件开发过程。

比如,集成开发环境(IDE)为开发者提供了编码、调试和测试等功能;版本管理工具和自动构建工具提高了团队的协作效率;自动化测试工具和性能分析工具帮助开发者提高软件质量等。

这些工具和环境的出现,使软件工程取得了显著的进步。

5. 阶段四:云计算和大数据随着云计算和大数据技术的崛起,软件工程也面临全新的挑战和机遇。

云计算提供了弹性和可扩展的计算资源,使得软件开发能够更好地应对高并发和大规模的需求。

大数据技术则使软件工程能够处理和分析海量的数据,从中挖掘出有价值的信息。

因此,软件工程师需要适应这些新技术,并掌握相关的开发和管理方法。

6. 未来趋势:人工智能和物联网在未来,软件工程将继续朝着人工智能和物联网方向发展。

软件工程的发展历程

软件工程的发展历程

软件工程的发展历程随着计算机技术的发展,软件成为了人们生产和生活中不可或缺的一部分。

在软件的开发过程中,为了更好的利用技术手段提高软件开发的效率和质量,软件工程逐渐成为了人们关注的热点。

本文将从软件工程的定义、发展历程以及未来趋势等方面综述软件工程的发展历程。

软件工程的定义软件工程是应用系统工程原理、方法和过程,以经济和可靠的方式开发、操作、维护和测试软件。

它涵盖了软件开发、管理和维护的整个生命周期,包括需求分析、设计、编码、测试、发布、配置管理、项目管理等各个环节。

软件工程中的目标是在满足用户需求和控制成本的基础上,以达到预定的质量标准和计划的时间表完成软件项目。

软件开发的历史可以追溯到1950年代,在其发展的初期阶段,软件开发是由一群称为程序员的人手动编写程序的过程。

随着开发工具和技术的不断更新,1970年代后期,软件技术开始发展到一种工程领域,这时候“软件工程”这个术语开始得到广泛使用。

1968年,北大西洋公约组织成立了一个计算机学术讨论会(NATO),在这个会议上首次提出了“软件工程”的概念,强调了需求、设计、开发、测试和维护等方面的过程控制。

这个会议奠定了软件工程如何研究和开发软件的基础。

1970年代,软件工程发展为一个独立的学科,并开始出现细分领域,例如面向对象编程(OOP)、软件测试、软件配置管理等。

1980年代,软件工程的工具和技术日益丰富,例如集成开发环境(IDE)、面向过程编程(PSP)等。

同时,在这一时期,软件工程的标准化工作得到了广泛关注,ISO(国际标准化组织)于1987年发布了ISO-12207标准,该标准制定了软件生命周期的基本要求和指南。

1990年代,软件工程进一步得到推广和普及。

软件开发的过程变得更加重视质量和可重用性,同时引入了面向对象编程和敏捷开发的方法。

2000年代以来,随着计算机技术不断发展和应用场景的不断扩大,软件工程的重要性在逐渐加强。

大量的软件开发公司和团队,开始尝试运用人工智能和机器学习等技术去改进软件开发流程。

软件工程的发展

软件工程的发展

软件工程的发展The Development of Software Engineering一、软件工程发展的历史⒈软件工程的出现⑴现代计算机软件的出现20世纪50年代,软件伴随着第一台电子计算机的问世诞生了。

以写软件为职业的人也开始出现,他们多是经过训练的数学家和电子工程师。

1960年代美国大学里开始出现授予计算机专业的学位,教人们写软件。

在计算机系统发展的初期,硬件通常用来执行一个单一的程序,而这个程序又是为一个特定的目的而编制的。

早期当通用硬件成为平常事情的时候,软件的通用性却是很有限的。

大多数软件是由使用该软件的个人或机构研制的,软件往往带有强烈的个人色彩。

早期的软件开发也没有什么系统的方法可以遵循,软件设计是在某个人的头脑中完成的一个隐藏的过程。

而且,除了源代码往往没有软件说明书等文档。

⑵软件危机到了20世纪60年代 ,计算机的应用范围得到较大扩展 ,对软件系统的需求和软件自身的复杂度急剧上升,传统的开发方法无法适应用户在质量、效率等方面对软件的需求。

这就是所谓的“软件危机”。

为解决这个问题,1968年NATO会议上首次提出“软件工程”( Soft ware Engineering)的概念 ,提出把软件开发从“艺术”和“个体行为”向“工程”和“群体协同工作”转化。

其基本思想是应用计算机科学理论和技术以及工程管理原则和方法 ,按照预算和进度 ,实现满用户要求的软件产品的定义、开发、发布和维护的工程。

从此也诞生了一门新的学科——软件工程。

二、软件工程的发展过程随着软件技术的发展,软件工程的研究范围和内容也在不断变化和发展。

其发展经历了如下3个阶段:第一阶段,即传统软件工程阶段:20世纪70年代,为了解决软件项目失败率高、错误率高以及软件维护任务重等问题,人们提出软件开发工程化的思想,希望使软件开发走上正规化的道路,并努力克服软件危机。

形成了软件工程的概念、框架、方法和手段。

第二阶段,即过程软件工程阶段:80年代末逐步发展起来的面向对象的分析与设计方法,形成了完整的面向对象技术体系,使系统的生存周期更长,适应更大规模、更广泛的应用。

软件工程综述

软件工程综述

软件工程综述软件工程是指将工程原理、方法和工具应用于开发和维护软件的学科。

随着计算机技术的飞速发展,软件工程逐渐成为一门重要的学科和独立的职业领域。

本文将对软件工程的基本概念、发展历程、工作流程以及未来趋势进行综述。

一、软件工程的基本概念软件工程是一门关注构建高质量软件系统的学科。

它涉及到需求分析、设计、编码、测试、维护等多个方面。

与传统的工程学科相比,软件工程更加注重工程原则的应用和软件开发过程的管理。

二、软件工程的发展历程软件工程的发展可以追溯到20世纪50年代末的软件危机。

由于软件开发的复杂性和困难性,很多项目在实施过程中遇到了巨大的挑战和困扰。

为了解决这一问题,软件工程应运而生。

自此以后,软件工程逐渐成为一门独立的学科,并不断发展壮大。

三、软件工程的工作流程软件工程的工作流程一般包括需求分析、设计、编码、测试和维护等环节。

首先,需求分析阶段旨在确定用户需求和系统约束。

其次,设计阶段主要涉及到软件的整体架构和模块设计。

然后,编码阶段将根据设计来实现具体的功能。

接下来,测试阶段用于验证程序的正确性和稳定性。

最后,维护阶段负责修复bug和更新软件功能。

四、软件工程的重要性软件工程在现代社会中有着重要的地位和作用。

首先,它能提高软件的质量和可靠性,减少软件缺陷和错误。

其次,软件工程可以提高开发效率,缩短开发周期,降低开发成本。

此外,软件工程还有助于团队协作和项目管理,提高开发团队的整体效能。

五、软件工程的未来趋势随着人工智能、大数据和云计算等技术的不断发展,软件工程也将面临新的挑战和机遇。

未来,软件工程将更加注重智能化和自动化的发展,以提高软件开发的效率和质量。

同时,敏捷开发和DevOps等方法将成为软件工程的热点和趋势,以适应快速变化的市场需求。

总结起来,软件工程是一门关注构建高质量软件系统的学科,其发展历程丰富多样。

软件工程的工作流程包括需求分析、设计、编码、测试和维护等环节。

软件工程在现代社会中具有重要的地位和作用,并将继续发展壮大。

浅谈软件工程技术的发展历程

浅谈软件工程技术的发展历程

浅谈软件工程技术的发展历程随着信息技术的不断发展,软件工程技术也在逐步的演进与变革中。

从70年代的软件危机,到80年代的结构化编程,90年代的面向对象编程,再到21世纪的敏捷开发、DevOps、人工智能等,不断有新的技术涌现,提高了软件的质量和效率,也为软件工程师的工作带来了更多的挑战。

1. 软件危机的兴起20世纪60年代末期,计算机硬件性能的迅猛发展引发了软件开发的需求,软件开发大量启动。

但由于缺乏工程化的管理方式、无法客观评估软件开发流程以及研制周期不稳定等因素,软件项目的质量及开发进度完全无法保证,工程化的软件开发难以实现,这就是软件危机。

2. 结构化编程的发展在20世纪60年代末期和70年代初期,出现了一批率先推行软件工程的先驱团队,主张将目标集中于编写结构化程序。

结构化编程是一种遵循结构化原则的编程方法,它采用层次化、模块化的程序设计理念,使得程序模块更易于修改和维护。

3. 面向对象编程的兴起随着计算机系统的不断发展和硬件性能的提高,1970年代面向对象的编程模型开始兴起。

1990年代,面向对象编程逐渐成为主流的编程范式,它以类、对象、封装、继承和多态等技术为基础,提高了软件开发效率,使得软件设计更加模块化、更便于维护和升级。

4. 敏捷开发的出现敏捷开发是指在软件开发过程中采用迭代和增量的开发模式,强调团队协作、用户参与以及快速响应市场变化和用户需求。

它的出现,使得软件开发能够更加贴近用户需求,使软件系统更加稳定,实现了从瀑布模型的生命周期管理到敏捷开发的变革。

5. DevOps的兴起DevOps是指开发(Dev)和运营(Ops)的结合。

它致力于打破传统软件开发和运营之间的隔阂,通过自动化测试、持续集成和交付(CI/CD)、容器化等技术实现开发、测试和部署过程的协作,使得软件开发过程中,软件开发和运维更加紧密地结合在一起,提高了软件的质量和效率。

6. 人工智能的应用随着人工智能技术的发展和进步,越来越多的软件应用场景涌现。

软件工程的发展历程和趋势

软件工程的发展历程和趋势

软件工程的发展历程和趋势软件工程作为一门独立的学科和实践领域,已经经历了多年的发展,取得了丰硕的成果。

本文将从历史发展角度出发,介绍软件工程的发展历程,并展望未来的趋势。

1. 软件工程的起源软件工程这个概念最早在1968年的一次关于软件危机的北大西洋公约组织(NATO)会议上被首次提出。

在当时,由于软件的规模迅猛增长,软件项目往往无法按时交付、超出预算或者无法满足要求。

为了解决软件危机,软件工程学科应运而生。

2. 早期的软件开发方法在软件工程诞生的初期,一些早期的软件开发方法被提出。

其中最著名的是瀑布模型,该模型将软件开发划分为需求分析、设计、编码、测试和维护等阶段,各个阶段按顺序展开。

然而,瀑布模型存在严重的缺陷,例如不适应需求变更、阶段划分过于僵化等,引发了后续的迭代开发方法的提出。

3. 迭代和增量开发方法的兴起为了解决瀑布模型的问题,迭代和增量开发方法得到了广泛应用。

迭代开发将软件开发过程划分为多个迭代,每个迭代都包含需求分析、设计、编码和测试等活动。

每个迭代的交付物都是一个可工作的软件部分,可以在客户或用户的反馈基础上进行改进。

增量开发则是逐个增加软件功能模块,每个增量都是一个可以独立使用的系统版本。

这些方法使得软件开发更加灵活、高效,并提高了软件的质量。

4. 面向对象的软件开发方法1980年代,面向对象的软件开发方法逐渐兴起。

面向对象的方法将软件设计和实现以对象为中心,强调模块化、封装性和继承性等特点。

面向对象的方法更贴近现实世界的建模,使得软件开发更加可维护和扩展。

面向对象的语言和开发平台也得到了广泛应用,例如Java和C++等语言。

5. 敏捷开发方法的崛起21世纪初,敏捷开发方法成为软件工程领域的一股新潮流。

敏捷开发方法强调适应变化、个体与合作、工作软件和客户合作等原则。

敏捷方法包括极限编程(XP)、Scrum和精益开发等,通过强调迭代开发、用户参与和团队合作等方式,提高了软件开发的灵活性和效率。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件工程发展概述计算机工业发达国家在发展软件的过程中曾经走过不少弯路,受过许多的挫折,至今仍然经受着“软件危机”的困扰。

人们开发幼稚软件的能力大大落后于计算机硬件日新月异的进展和社会对计算机软件不断增长的需求,这种状况已经严重妨碍了计算机技术的进步。

为了摆脱软件危机,一门新的学科产生并发展起来—软件工程,几十年来软件工程的发展大致如下几个阶段。

第一阶段—软件危机。

20世纪中期,计算机刚被从军用领域转向民用领域使用,那时编写程序的工作被视同为艺术家的创作。

当时的计算机硬件非常昂贵,编程人员追求的是如何在有限的处理器能力和存储器空间约束下,编写出执行速度快、体积小的程序。

程序中充满了各种各样让人迷惑的技巧。

这时的软件生产非常依赖于开发人员的聪明才智。

到了20世纪60年代,计算机的应用范围得到较大扩展,对软件系统的需求和软件自身的复杂度急剧上升,传统的开发方法无法适应用户在质量、效率等方面对软件的需求。

这就是所谓的“软件危机”。

早期出现的软件危机主要表现在:①软件开发费用和进度失控。

费用超支、进度拖延的情况屡屡发生。

有时为了赶进度或压成本不得不采取一些权宜之计,这样又往往严重损害了软件产品的质量。

②软件的可靠性差。

尽管耗费了大量的人力物力,而系统的正确性却越来越难以保证,出错率大大增加,由于软件错误而造成的损失十分惊人。

③生产出来的软件难以维护。

很多程序缺乏相应的文档资料,程序中的错误难以定位,难以改正,有时改正了已有的错误又引入新的错误。

随着软件的社会拥有量越来越大,维护占用了大量人力、物力和财力。

进入80年代以来,尽管软件工程研究与实践取得了可喜的成就,软件技术水平有了长足的进展,但是软件生产水平依然远远落后于硬件生产水平的发展速度。

软件危机不仅没有消失,还有加剧之势。

主要表现在:①软件成本在计算机系统总成本中所占的比例居高不下,且逐年上升。

由于微电子学技术的进步和硬件生产自动化程度不断提高,硬件成本逐年下降,性能和产量迅速提高。

然而软件开发需要大量人力,软件成本随着软件规模和数量的剧增而持续上升。

从美、日两国的统计数字表明,1985年度软件成本大约占总成本的90%。

②软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的需要,软件产品供不应求的状况使得人类不能充分利用现代计算机硬件所能提供的巨大潜力。

从60年代中期到70 年代中期是计算机系统发展的第二个时期,在这一时期软件开始作为一种产品被广泛使用,出现了“软件作坊”专职应别人的需求写软件。

这一软件开发的方法基本上仍然沿用早期的个体化软件开发方式,但软件的数量急剧膨胀,软件需求日趋复杂,维护的难度越来越大,开发成本令人吃惊地高,而失败的软件开发项目却屡见不鲜。

“软件危机”就这样开始了!“软件危机”使得人们开始对软件及其特性进行更深一步的研究,人们改变了早期对软件的不正确看法。

早期那些被认为是优秀的程序常常很难被别人看懂,通篇充满了程序技巧。

现在人们普遍认为优秀的程序除了功能正确,性能优良之外,还应该容易看懂、容易使用、容易修改和扩充。

1968年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危机” (software crisis)这个名词。

概括来说,软件危机包含两方面问题:一、如何开发软件,以满足不断增长,日趋复杂的需求;二、如何维护数量不断膨胀的软件产品。

软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件;软件样品即是产品,试制过程也就是生产过程;软件不会因使用时间过长而“老化”或“用坏”;软件具有可运行的行为特性,在写出程序代码并在计算机上试运行之前,软件开发过程的进展情况较难衡量,软件质量也较难评价,因此管理和控制软件开发过程十分困难;软件质量不是根据大量制造的相同实体的质量来度量,而是与每一个组成部分的不同实体的质量紧密相关,因此,在运行时所出现的软件错误几乎都是在开发时期就存在而一直未被发现的,改正这类错误通常意味着改正或修改原来的设计,这就在客观上使得软件维护远比硬件维护困难;软件是一种信息产品,具有可延展性,属于柔性生产,与通用性强的硬件相比,软件更具有多样化的特点,更加接近人们的应用问题。

随着计算机应用领域的扩大,99%的软件应用需求已不再是定义良好的数值计算问题,而是难以精确描述且富于变化的非数值型应用问题。

因此,当人们的应用需求变化发展的时候,往往要求通过改变软件来使计算机系统满足新的需求,维护用户业务的延续性。

为解决这个问题,1968年NATO会议上首次提出“软件工程”(SotfwraeEngineeirng)的概念,提出把软件开发从“艺术”和“个体行为”向“工程”和“群体协同工作”转化。

其基本思想是应用计算机科学理论和技术以及工程管理原则和方法,按照预算和进度,实现满用户要求的软件产品的定义、开发、发布和维护的工程。

从此也诞生了一门新的学科——软件工程。

第二阶段—传统软件工程为迎接软件危机的挑战,人们进行了不懈的努力。

这些努力大致上是沿着两个方向同时进行的。

一是从管理的角度,希望实现软件开发过程的工程化。

这方面最为著名的成果就是提出了大家都很熟悉的“瀑布式”生命周期模型。

它是在60年代末“软件危机”后出现的第一个生命周期模型。

如下所示:分析→ 设计→ 编码→ 测试→ 维护后来,又有人针对该模型的不足,提出了快速原型法、螺旋模型、喷泉模型等对“瀑布式”生命周期模型进行补充。

现在,它们在软件开发的实践中被广泛采用。

这方面的努力,还使人们认识到了文档的标准以及开发者之间、开发者与用户之间的交流方式的重要性。

一些重要文档格式的标准被确定下来,包括变量、符号的命名规则以及原代码的规范式。

软件工程发展的第二个方向,侧重与对软件开发过程中分析、设计的方法的研究。

这方面的重要成果就是在70年代风靡一时的结构化开发方法,即PO(面向过程的开发或结构化方法)以及结构化的分析、设计和相应的测试方法。

传统软件工程原理如下:1.把质量放在第一位:必须对软件质量进行量化,并采取措施促进质量的保障常用的量化指标有缺陷泄露率,缺陷密度,可测试性,健壮性,性能,易用性和友好性,可维护性等多项内容应该制定不同的量化指标。

2.高质量的软件是可能的:评审,原型,客户参与,测试,迭代开发,雇用优秀人员已经证明可以很好提高软件质量3.尽早的向客户交付产品:无论在需求阶段理解客户的需求有多难,确定用户真正需求的最有效的方式就是尽可能早的交给他们一个产品让他们使用。

4.在编写需求前确定问题:当面对一个被认为是问题的问题时候,多数工程师都急于给出一个解决方案。

当试图解决一个问题的时候,要保证已经试验过了其它的选择,不要被轻而易举的解决方案所迷惑。

5.评价设计可选方案:当需求达成一致后,你必须验证多种架构和算法。

你肯定不想在需求说明书中使用了一个"构架"就真的使用这个构架。

6.使用合适的过程模型:项目必须要根据自己的项目特征来选择项目的过程模型,这些特征包括项目规模,周期,人员情况,需求可变性,文化,风险,应用领域等。

7.在不同的阶段使用不同的语言8.尽可能缩小理解上的差距:尽可能缩小理解上的差距,软件结构必须与现实世界的结构尽可能的接近。

这个原则一直是面向对象技术,基于构件开发以及可视化建模的动力。

9.技术比工具重要:没有受过训练的软件工程师使用工具会成为一个危险的,仍未经训练的工程师。

10.在快之前首先保证运行正确:要使一个可用的程序运行得更快些,远比让一个运行的快的程序可用容易的多。

在开始阶段的编码不要考虑优化的问题。

由于我们在前期很难发现系统隐藏的性能问题,我们要作的是尽快让程序可用,以去理解复杂的性能。

11.评审代码:评审详细设计和代码来查错,是一个比测试好得多的方法。

人们过分夸大了这种方法的价值。

当正确的使用并集中在一个已知的问题上时候,评审对于解决问题是十分有效的。

毫无方向的评审极少能够发现架构和全局的问题。

12.好的管理比好的技术更重要:最好的技术并不能够弥补差的管理,而一个好的经理人可以用贫乏的资源取的伟大的成就。

好的管理推动人们发挥自己最好的一面,但没有一种普遍正确的管理风格。

13.人员是成功的关键:具有适当经验,才能和培训的高技能的人员是关键。

即使没有足够的工具,语言和过程,人员配备正确也可以成功。

而错误的配备了人员,即使有合适的工具,语言和过程,项目也可能失败。

传统软件工程也这么强调人的因素,足见人对整个软件项目的重要性。

14.勇于承担责任:成功仅仅依靠好的方法,工具和构件是远远不够的。

成功需要好的人员,好的管理和有战斗力的团队。

在这种团队中,项目成员即使遇到不可避免的困难或挫折,也会专注于推动项目前进。

软件工程的目标是研制开发与生产出具有良好的软件质量和费用合算的产品。

费用合算是指软件开发运行的整个开销能满足用户要求的程度,软件质量是指该软件能满足明确的和隐含的需求能力有关特征和特性的总和。

软件质量可用六个特性来作评价,即功能性、可靠性、易使用性、效率、维护性、易移植性第三阶段—现代软件工程软件不是纯物化的东西,其中包含着人的因素,于是就有很多变动的东西,不可能像理想的物质生产过程,基于物理学等的原理来做。

早期的软件开发仅考虑人的因素,传统的软件工程强调物性的规律,现代软件工程最根本的就是人跟物的关系,就是人和机器(工具、自动化)在不同层次的不断循环发展的关系。

面向对象的分析、设计方法(OOA和OOD)的出现使传统的开发方法发生了翻天覆地的变化。

随之而来的是面向对象建模语言(以UML为代表)、软件复用、基于组件的软件开发等新的方法和领域。

与之相应的是从企业管理的角度提出的软件过程管理。

即关注于软件生存周期中所实施的一系列活动并通过过程度量、过程评价和过程改进等涉及对所建立的软件过程及其实例进行不断优化的活动使得软件过程循环往复、螺旋上升式地发展。

其中最著名的软件过程成熟度模型是美国卡内基梅隆大学软件工程研究所(SEI)建立的CMM(Capability Maturity Model),即能力成熟度模型。

此模型在建立和发展之初,主要目的是为大型软件项目的招投标活动提供一种全面而客观的评审依据,而发展到后来,又同时被应用于许多软件机构内部的过程改进活动中。

在软件开发过程中人们开始研制和使用软件工具,用以辅助进行软件项目管理与技术生产,人们还将软件生命周期各阶段使用的软件工具有机地集合成为一个整体,形成能够连续支持软件开发与维护全过程的集成化软件支援环境,以期从管理和技术两方面解决软件危机问题。

此外,人工智能与软件工程的结合成为80年代末期活跃的研究领域。

基于程序变换、自动生成和可重用软件等软件新技术研究也已取得一定的进展,把程序设计自动化的进程向前推进一步。

相关文档
最新文档