【软件工程概述】
软件工程是计算机科学的一个分支,专注于设计、构建、维护和管理软件的系统化方法。它结合了现代科学技术知识,旨在创建高效、可靠的计算机程序,并包含与其相关的文档和数据。软件工程的定义随着时间的发展而演变,强调了经济、规范和系统性的软件开发。例如,B.W.Boehm将软件工程定义为利用科学知识设计和构建程序及配套文件的过程,而Fritz Bauer则认为它是实现可靠软件的工程化原则体系。
软件工程包括三个核心要素:程序、文档和数据。软件的特性使其具有高度的复杂性、一致性、不可磨损性、易变性、移植性和高昂的成本。软件经历了从早期的手工编写阶段到现在的面向对象编程阶段的演变,期间经历了多次危机,如软件规模扩大、复杂度增加、需求增长、成本上升等,这被称为软件危机。
应对软件危机的关键在于采用工程化思想,包括明确需求、强化沟通、标准化方法和过程控制。软件工程化涵盖了软件开发技术和管理,如能力成熟模型(Capability Maturity Model,CMM),用于评估和改进组织的软件开发能力。
软件工程有两大范型:传统的结构化范型和面向对象范型。结构化范型基于行为或数据的结构化分析、设计、编程和维护,而面向对象范型则强调数据和行为的统一,通过对象来组织软件,便于维护和适应变化。
软件工程的基本原理包括分阶段的软件生命周期、阶段评审、严格的产品控制、现代编程技术、明确职责、精干的开发团队以及持续的过程改进,以确保软件的质量和效率。软件工程活动涉及开发、项目管理和过程改进,涵盖软件生命周期的各个阶段,如需求分析、设计、实现、测试和维护。
软件过程模型,如经典的瀑布模型,将软件生命周期划分为定义、开发和运行阶段,每个阶段都有明确的任务。此外,敏捷过程近年来受到广泛关注,强调灵活性、迭代开发和快速响应变更,如Scrum和Kanban等模型。
软件过程实践则涉及软件开发的最佳实践,包括质量管理、过程定义和改进,以确保软件过程的有效性和效率。通过软件过程框架,可以定义角色、职责、组织结构和技术工具,支持整个软件开发活动的顺利进行。
软件工程是一个系统化、工程化的学科,旨在克服软件开发中的挑战,通过规范的方法、工具和过程,实现高质量、高效能的软件产品。