Skip to content

What is Software Engineering! 什么是软件工程?🖥️

欢迎观看《什么是软件工程》课程!🎉
在观看此视频后,您将能够:

  • 定义 软件工程 📝

  • 列出 软件工程师 的职责 👨‍💻

  • 比较和对比 软件开发人员软件工程师 🆚


🌍 软件工程的定义

软件工程 是将科学原理应用于软件的设计与创建。该领域采用系统化的方法来收集和分析 业务需求,从而设计、构建和测试软件应用程序,以满足这些业务需求。🔍


📜 软件工程的发展历程

早期阶段

  • 1950年代末期,计算机技术开始兴起,软件工程作为一个学科还没有明确的定义。

  • 随着时间推移,软件工程逐渐发展为一个现代化的工程领域。

1960年代

  • 软件工程 作为一个学科正式诞生,并随着新技术的不断发展,软件开发的方法变得更加科学化。

  • 软件工程的趋势从 临时编程 转向了 更正式和标准化的方法

1970-1980年代

  • 初期的 软件创建 并没有明确的开发流程。

  • 随着计算机的广泛应用,软件成为了生活中越来越重要的一部分,但软件开发的低效性使得开发过程难以跟上快速增长的需求,导致了 “软件危机”

    • 软件开发常常超预算、进度滞后,代码存在很多 bug,难以管理。

    • 更糟糕的是,当老旧的软件方案开发完成时,更新的技术和更强大的系统已经问世,迫使软件工程师重新构建代码或彻底重新设计系统。

软件危机 (Software Crisis)

  • 这一问题在1960年代中期至1980年代中期之间尤为严重。

  • 小型软件系统的开发方案无法扩展到大规模、复杂项目中。📉


⚙️ 解决方案与现代进展

虽然一些问题仍然存在,但通过持续应用 工程学原理,软件开发过程已得到了显著改善。💡

  • 计算资源 已经更加普及和标准化。

  • 标准化的软件开发方法 使得能够开发出 大规模且可扩展的复杂解决方案

  • 软件危机的解决 方案包括将杂乱的编程工作转变为一种有组织的 工程学学科

CASE工具的兴起

  • 1980年代中期计算机辅助软件工程 (CASE) 工具的增长,进一步缓解了软件危机。

  • CASE工具可分为六大类:

    1. 业务分析与建模

    2. 开发工具(如调试环境)

    3. 验证与确认工具

    4. 配置管理工具

    5. 度量与测量工具

    6. 项目管理工具


👨‍💻 软件工程师与软件开发人员的区别

虽然 “软件工程师”“软件开发人员” 常常被交替使用,但它们之间存在细微的差异。🔍

角色软件工程师软件开发人员
知识面软件工程师的知识面更广,采取系统化、大局观的方式思考软件开发。开发人员的知识面通常较窄,可能更多集中在实现某些功能。
任务目标软件工程师专注于设计、构建、维护完整的 软件系统开发人员专注于编写 特定功能的代码,实现功能需求。
工作规模通常参与 大规模项目,注重软件的整体架构与结构设计。通常负责具体的代码编写,解决特定的开发问题。

总结

  • 软件工程师 负责设计和构建整个系统,而 软件开发人员 专注于实现特定的功能。🛠️

mac_1735481873049.png


📝 软件工程师的职责

软件工程师的职责包括:

  • 设计构建维护 软件系统。

  • 编写和测试代码,确保软件质量。

  • 与利益相关者(如客户、第三方软件供应商、安全专家及其他团队成员)进行沟通与协作。🤝

通过采纳科学的、标准化的 软件开发方法,现代软件的设计与开发过程变得更加高效。🧑‍🔬


🔄 软件开发生命周期 (SDLC)

软件开发生命周期(SDLC)是现代软件开发的基础框架,它定义了开发高质量软件所需的步骤。在本模块的后续部分,我们将详细讨论 SDLC高质量软件的特性 以及 软件工程领域中的常见角色


🎯 视频学习总结

在本视频中,你了解到:

  • 软件工程 是一种系统化的设计与开发软件的方法。

  • 软件工程师的职责 包括设计、构建和维护软件系统,编写和测试代码,并与各方利益相关者沟通。

  • 软件工程师 构建的是 完整的系统,而 软件开发人员 实现的是系统中的特定功能。

通过学习软件工程,你将能够更好地理解如何应用工程学原理开发出高质量的软件。📈