软件工程是一门关注计算机软件开发和维护的学科,旨在通过系统化、规范化的流程和工具来解决软件开发中的挑战,即所谓的“软件危机”。软件危机指的是在软件开发过程中普遍遇到的问题,如高成本、进度延迟、低质量和难以维护。卢苇教授在2008年的课程中详细阐述了这一主题。
软件被定义为计算机系统中包含的程序、数据以及相关文档的整体。程序是用特定编程语言编写的指令序列,用于处理数据;数据则是程序处理信息所需的数据结构;文档则涵盖软件开发、使用和维护的所有相关信息,对提高开发效率和软件质量至关重要。
软件具有独特的特点,它是个体化的逻辑产品,而非物理产品,其规模庞大,维护复杂,并且具有长期性。软件的种类繁多,包括系统软件、实时软件、嵌入式软件、科学计算软件、事务处理软件、人工智能软件、个人计算机软件以及电子商务软件等。
软件的发展历程可以分为几个阶段,从早期的面向批处理系统到多用户系统,再到分布式系统和强大的桌面系统,以及后来的实时、嵌入式和面向对象技术的出现。近年来,随着互联网和云计算的发展,软件工程领域进一步扩展到软件产品的工业化生产,以及针对消费者需求的定制化服务。
软件危机主要表现为对成本和进度的误判、用户满意度低、质量问题、难以维护以及文档不足。这些问题源于用户需求的不确定性、开发人员理解偏差、管理不善、个人依赖过重以及缺乏有效的方法和技术支持。为应对这些挑战,人们提出了软件工程的概念,强调组织管理与技术并重,采用更好的方法、工具和环境来支持软件开发的全过程,从而提高软件质量和可维护性。
软件工程的定义涵盖了软件开发的生命周期,包括需求分析、设计、实现、测试、维护等多个阶段,每个阶段都有相应的文档支持,如可行性研究报告、需求规格说明书、设计文档和用户手册等。此外,软件工程还涉及质量管理、项目管理、软件度量和持续集成等实践,确保软件产品的可靠性和适应性。
软件工程专业导论课程旨在帮助学生理解软件开发的本质,掌握解决软件危机的有效方法,培养出能够适应不断变化的技术环境和市场需求的精英型软件人才。学习这门课程,学生将了解到软件工程的重要原则和最佳实践,为未来在软件开发领域的职业生涯打下坚实的基础。