构建之法——现代软件工程

来源:IT168  责任编辑:鲁倩  

软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。软件工程师是对应用软件创造软件的人们的统称,软件工程师按照所处的领域不同可以分为系统分析员,软件设计师,系统架构师,程序员,测试员等等。人们也常常用程序员来泛指各种软件工程师。软件工程(SoftWare Engineering)的框架可概括为:目标、过程和原则。(1)软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。(2)软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。(3)软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。一、软件工程概述概念:应需而生软件工程是一类工程。工程是将理论和知识应用于实践的科学。就软件工程而言,它借鉴了传统工程的原则和方法,以求高效地开发高质量软件。其中应用了计算机科学、数学和管理科学。计算机科学和数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量和成本的管理。软件工程这一概念,主要是针对20世纪60年代“软件危机”而提出的。它首次出现在1968年NATO(北大西洋公约组织)会议上。自这一概念提出以来,围绕软件项目,开展了有关开发模型、方法以及支持工具的研究。其主要成果有:提出了瀑布模型,开发了一些结构化程序设计语言(例如PASCAL语言,Ada语言)、结构化方法等。并且围绕项目管理提出了费用估算、文档复审等方法和工具。综观60年代末至80年代初,其主要特征是,前期着重研究系统实现技术,后期开始强调开发管理和软件质量。70年代初,自“软件工厂”这一概念提出以来,主要围绕软件过程以及软件复用,开展了有关软件生产技术和软件生产管理的研究与实践。其主要成果有:提出了应用广泛的面向对象语言以及相关的面向对象方法,大力开展了计算机辅助软件工程的研究与实践。尤其是近几年来,针对软件复用及软件生产,软件构件技术以及软件质量控制技术、质量保证技术得到了广泛的应用。目前各个软件企业都十分重视资质认证,并想通过这些工作进行企业管理和技术的提升。软件工程所涉及的要素可概括如下:根据这一框架,可以看出:软件工程涉及了软件工程的目标、软件工程原则和软件工程活动。目标:我的眼里只有“产品”软件工程的主要目标是:生产具有正确性、可用性以及开销合宜的产品。正确性意指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜性是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多问题有待解决,它们形成了对过程、过程模型及工程方法选取的约束。软件工程活动是“生产一个最终满足需求且达到工程目标的软件产品所需要的步骤”。主要包括需求、设计、实现、确认以及支持等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件体系结构,包括子系统、模块以及相关层次的说明、每一模块接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。支持活动包括修改和完善。伴随以上活动,还有管理过程、支持过程、培训过程等。框架:四项基本原则是基石软件工程围绕工程设计、工程支持以及工程管理,提出了以下四项基本原则:第一,选取适宜开发范型。该原则与系统设计有关。在系统设计中,软件需求、硬件需求以及其他因素之间是相互制约、相互影响的,经常需要权衡。因此,必须认识需求定义的易变性,采用适宜的开发范型予以控制,以保证软件产品满足用户的要求。第二,采用合适的设计方法。在软件设计中,通常要考虑软件的模块化、抽象与信息隐蔽、局部化、一致性以及适应性等特征。合适的设计方法有助于这些特征的实现,以达到软件工程的目标。第三,提供高质量的工程支持。“工欲善其事,必先利其器”。在软件工程中,软件工具与环境对软件过程的支持颇为重要。软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。第四,重视开发过程的管理。软件工程的管理,直接影响可用资源的有效利用,生产满足目标的软件产品,提高软件组织的生产能力等问题。因此,仅当软件过程得以有效管理时,才能实现有效的软件工程。这一软件工程框架告诉我们,软件工程的目标是可用性、正确性和合算性;实施一个软件工程要选取适宜的开发范型,要采用合适的设计方法,要提供高质量的工程支撑,要实行开发过程的有效管理;软件工程活动主要包括需求、设计、实现、确认和支持等活动,每一活动可根据特定的软件工程,采用合适的开发范型、设计方法、支持过程以及过程管理。根据软件工程这一框架,软件工程学科的研究内容主要包括:软件开发范型、软件开发方法、软件过程、软件工具、软件开发环境、计算机辅助软件工程(CASE)及软件经济学等。作用:高效开发高质量软件自从软件工程概念提出以来,经过30多年的研究与实践,虽然“软件危机”没得到彻底解决,但在软件开发方法和技术方面已经有了很大的进步。尤其应该指出的是,自80年代中期,美国工业界和政府部门开始认识到,在软件开发中,最关键的问题是软件开发组织不能很好地定义和管理其软件过程,从而使一些好的开发方法和技术都起不到所期望的作用。也就是说,在没有很好定义和管理软件过程的软件开发中,开发组织不可能在好的软件方法和工具中获益。根据调查,中国的现状几乎和美国10多年前的情况一样,软件开发过程没有明确规定,文档不完整,也不规范,软件项目的成功往往归功于软件开发组的一些杰出个人或小组的努力。这种依赖于个别人员上的成功并不能为全组织的软件生产率和质量的提高奠定有效的基础,只有通过建立全组织的过程改善,采用严格的软件工程方法和管理,并且坚持不懈地付诸实践,才能取得全组织的软件过程能力的不断提高。这一事实告诉我们,只有坚持软件工程的四条基本原则,既重视软件技术的应用,又重视软件工程的支持和管理,并在实践中贯彻实施,才能高效地开发出高质量的软件。二、软件工程的七条基本原理自从1968年提出“软件工程”这一术语以来,研究软件工程的专家学者们陆续 提出了100多条关于软件工程的准则或信条。美国著名的软件工程专家 Boehm 综合这些专家的意见,并总结了TRW公司多年的开发软件的经验,于1983年提出了软件工程的七条基本原理。Boehm 认为,着七条原理是确保软件产品质量和开发效率的原理的最小集合。它们是相互独立的,是缺一不可的最小集合;同时,它们又是相当完备的。人们当然不能用数学方法严格证明它们是一个完备的集合,但是可以证明,在此之前已经提出的100多条软件工程准则都可以有这七条原理的任意组合蕴含或派生。下面简要介绍软件工程的七条原理:1 用分阶段的生命周期计划严格管理这一条是吸取前人的教训而提出来的。统计表明,50%以上的失败项目是由于计划不周而造成的。在软件开发与维护的漫长生命周期中,需要完成许多性质各异的工作。这条原理意味着,应该把软件生命周期分成若干阶段,并相应制定出切实可行的计划,然后严格按照计划对软件的开发和维护进行管理。Boehm 认为,在整个软件生命周期中应指定并严格执行6类计划:项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划、运行维护计划。2 坚持进行阶段评审统计结果显示:大部分错误是在编码之前造成的,大约占63%;错误发现的越晚,改正它要付出的代价就越大,要差2到3个数量级。因此,软件的质量保证工作不能等到编码结束之后再进行,应坚持进行严格的阶段评审,以便尽早发现错误。3 实行严格的产品控制开发人员最痛恨的事情之一就是改动需求。但是实践告诉我们,需求的改动往往是不可避免的。这就要求我们要采用科学的产品控制技术来顺应这种要求。也就是要采用变动控制,又叫基准配置管理。当需求变动时,其它各个阶段的文档或代码随之相应变动,以保证软件的一致性。4 采纳现代程序设计技术从六、七时年代的结构化软件开发技术,到最近的面向对象技术,从第一、第二代语言,到第四代语言,人们已经充分认识到:方法大似气力。采用先进的技术即可以提高软件开发的效率,又可以减少软件维护的成本。5 ..www.zgxue.com防采集请勿采集本网。

计算机工程,计算机科学,软件工程有什么区别

软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代

简单来说,计算机科学比喻成一般的科学,而软件工程就是科学就相当于科学中的数学,而计算机工程就是更具体的物理学。其实最早是有计算机科学,后来写程序越来越大越来越复杂,衍生出很多 特别的...

1、计算机工程:培养掌握现代电子、自动控制、电力工程以及计算机技术的基础理论及技术,能从事现代电子系统的开发设计、工艺控制、智能设备的软硬件开发以及电力电子系统设计的高级应用型技术人才。

关于软件工程专业的介绍

做工程实质讲就是为了盈利,所以工程管理(项目经理工作)围绕这个实质大概包括: 施工协调:与甲方、监理、第三方(监检)等各方的关系协调沟通,最大程度为施工提供方便 施工人员:了解整个工程,合理

软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代...

一、LINUX Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32

请问一下软考软件设计师的软件工程这一课可以零起点吗?

软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。在现代社会中,软件应用于多个...

网络工程是什么?内容是?

网络工程只是一个概括还有相应的细节,如果网络综合布线,网络运维工作,测试调配等等如果要在一个建筑或者一个空间中不知网络结构,需要实地的考察,工程建筑的施工结构,才好设计网络架构。

计算机科学、计算机工程、软件工程三者的详细区别?(选研究方向) 去国外读研,分为这三个学科体系。

软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代...

一、LINUX Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32

计算机科学与计算机工程的区别是什么?

1、计算机工程:培养掌握现代电子、自动控制、电力工程以及计算机技术的基础理论及技术,能从事现代电子系统的开发设计、工艺控制、智能设备的软硬件开发以及电力电子系统设计的高级应用型技术人才。...

工程管理是干什么的啊

做工程实质讲就是为了盈利,所以工程管理(项目经理工作)围绕这个实质大概包括: 施工协调:与甲方、监理、第三方(监检)等各方的关系协调沟通,最大程度为施工提供方便 施工人员:了解整个工程,合理...

常见的系统软件都有哪些?

一、LINUX Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32...

软件工程 计算机科学 计算机工程区别

软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代...

一、LINUX Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32

各类专业介绍

哲学专业开设的课程主要有:伦理学、宗教学、美学、逻辑学、人类学、心理学、管理哲学、中国现代哲学、现代西方哲学、马克思主义哲学经典选读、中外哲学原著导读等。他们具有一定的哲学理论思维能力、创新...

简单来说,计算机科学比喻成一般的科学,而软件工程就是科学就相当于科学中的数学,而计算机工程就是更具体的物理学。其实最早是有计算机科学,后来写程序越来越大越来越复杂,衍生出很多 特别的编程方法,最后集合起来发现可以成立一个新的学科,然后就在计算机科学下面分了一个软件工程。而随着计算机技术的普及,准确来说是单片机和嵌入式系统的普及,现在什么东西都内嵌计算机,小到手表手机,大到医院设备,建筑设备,都靠计算机去完成一些单调而无聊的工作,这就弄出了一个计算机工程。软件工程其实就相当于数学,很多东西都是逻辑性的东西,非常抽象。都是一些思想的结晶,精华。比方说人脸识别,手写识别,人工智能,还有一些编程方法,三十二种开发模式,还是软件工程学,怎么将开发软件看成是一个建筑工程去弄,反正就是头脑风暴。而计算机科学对软件工程研究得不是太深入,关注点比较广泛些。对软件开发不会讲的太深入,更多的时间会关注硬件设计,怎么设计硬件才最高速,还有计算机能用在什么地方等等,还有关注一些新的计算机运用方法。而计算机工程关注点就是怎么利用计算机去方便日常的工作,特别是一些复杂而单调的工作,这个你可以在百度百科再深入看看,主要是注重应用吧内容来自www.zgxue.com请勿采集。


  • 疫情在家办公——SaaS应用起底大调查
  • 2019年中国BPM市场行业洞察报告
  • 技术盛宴|从实战浅析运营商云资源池网络—解析流量模型
  • 写字楼人工访客一体机证件授权系统
  • 技术盛宴|从实战浅析运营商云资源池网络—技术的抉择
  • 疯狂Java讲义(第2版)
  • 微信公众平台搭建与开发揭秘
  • iPadMini使用手册
  • HTML5移动Web开发指南
  • 微信公众平台应用开发实战
  • 计算机工程,计算机科学,软件工程有什么区别
  • 关于软件工程专业的介绍
  • 请问一下软考软件设计师的软件工程这一课可以零起点吗?
  • 网络工程是什么?内容是?
  • 计算机科学、计算机工程、软件工程三者的详细区别?(选研究方向) 去国外读研,分为这三个学科体系。
  • 计算机科学与计算机工程的区别是什么?
  • 工程管理是干什么的啊
  • 常见的系统软件都有哪些?
  • 软件工程 计算机科学 计算机工程区别
  • 各类专业介绍
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved