软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
软件工程它是应用数学计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,其目的是提高软件生存率、提高软件质量、降低软件成本。
软件工程学科包含为完成软件需求、设计、构建、测试和维护所需的知识、方法和工具。软件工程不局限在理论之上,更重要在实践上,能够帮助软件组织协调团队、运用有限的资源,遵守已定义的软件工程规范,通过一系列可复用的、有效的方法,在规定的时间内达到预先设定的目标。针对软件工程的实施,无论是采用什么样的方法和工具,先进的软件工程思想始终是最重要的。只有在正确的工程思想指导下,才能制定正确的技术路线,才能正确地运用方法和工具达到软件工程或项目管理的既定目标。
总的说来就是我们将软件开发当成一项工程来看。以建楼房为例,建造楼房我们需要调查市场、指定计划、建筑蓝图、设计、施工、检测、维护。软件工程像一般的工程一样,有生存周期:可行性分析和项目开发计划、需求分析、设计、编码、测试、维护。每一个阶段都有不同的任务。
软件工程概念实际存在两层含义,从狭义概念看,软件工程着重体现在软件过程中所采用的工程方法和管理体系,例如,引入成本核算、质量管理和项目管理等,即将软件产品开发看作是一项工程项目所需要的系统工程学和管理学。从广义概念看,软件工程涵盖了软件生命周期中所有的工程方法、技术和工具,包括需求工程、设计、编程、测试和维护的全部内容,即完成一个软件产品所必备的思想、理论、方法、技术和工具。
这篇博客将从软件工程的开发方法和软件工程过程两方面来介绍他。
1 软件工程的开发方法
软件工程方法为软件开发提供了 “如何做” 的技术; 软件工具为软件工程方法提供了自动的或半自动的软件支撑环境; 过程是为了获得高质量的软件所需要完成的一系列任务框架,它规定了完成各项任务的工作步骤。软件工程方法是软件工程学科的核心内容,从60年代末以来,出现了许多软件工程方法,其中最具影响的是面向数据流的结构化方法、面向对象方法方法。
结构化方法也称为生命周期方法学或结构化范型。将软件生命周期的全过程依次划分为若干个阶段,采用结构化技术来完成每个阶段的任务。
特点:(1) 强调自顶向下顺序地完成软件开发的各阶段任务;
(2) 结构化方法要么面向行为,要么面向数据,缺乏使两者有机结合的机制。
面向对象方法是将数据和对数据的操作紧密地结合起来的方法。软件开发过程是多次反复迭代的演化过程。 面向对象方法在概念和表示方法上的一致性,保证了各项开发活动之间的平滑过渡。对于大型、复杂及交互性比较强的系统,使用面向对象方法更有优势。
软件的开发方法贯穿开发过程的始终,它是一个指导方针。我们经常接触到的结构化分析方法、结构化设计方法,都是对结构化方法的应用。
在软件开发的过程中我们可能会接触到各式各样的模型,比如瀑布模型、演化模型等等。这里的模型就是根据软件的生存周期的特点,结合开发方法而形成的一套切实可行的规范或标准。
2 软件工程过程
生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。
总结
软件工程将软件的开发视为一项工程,这样将开发的过程规范化、数字化。在开发的过程中有了规范和标准,能够使我们开发的软件更能满足用户需求,有更高的经济效益。