计算机与技术

软件工程

设计、构建、测试和维护大型软件系统,将编程技能与工程原理相结合,开发可靠、可扩展的应用程序。

专业概述

软件工程是将工程原理系统地应用于软件系统的设计、开发、测试、部署和维护的学科。虽然计算机科学侧重于计算的理论基础(算法、数据结构和计算复杂性),但软件工程强调构建在大规模环境下可靠运行的实际软件所面临的实践挑战,需要按时、按预算完成。

课程涵盖软件设计模式、系统架构、软件测试与质量保证、敏捷与DevOps方法论、项目管理、版本控制、数据库设计、Web和移动开发以及软件安全。学生在团队中广泛参与真实项目,学习管理代码库、进行代码审查、编写文档,并使用行业标准工具进行协作。许多课程包含与行业合作伙伴的毕业设计项目。

毕业生担任软件工程师、全栈开发人员、DevOps工程师、站点可靠性工程师和技术负责人。该学位提供了通往技术行业最常见和高薪职位的直接路径。对算法、AI研究或理论计算机科学更感兴趣的学生,请参见计算机科学。

全球多所大学为软件工程作为一门严谨独立学科的教育树立了标杆。卡内基梅隆大学可以说是现代软件工程教育的发源地,其校内的软件工程研究所(SEI)是联邦资助的研究中心,开创了能力成熟度模型(CMM)和网络安全事件响应CERT等基础性框架,本科生的课程设计受益于数十年大规模系统研究的积累。加拿大滑铁卢大学提供的软件工程合作教育项目被广泛认为是全球首屈一指的,学生在学术学期和带薪行业实习之间交替进行,合作企业包括Google、Apple和Bloomberg等,毕业时已积累近两年的专业工作经验。慕尼黑工业大学的项目深植于德国工程传统,在汽车软件、嵌入式系统和形式化方法方面实力突出,为学生进入欧洲领先的科技和制造业做好准备。谢菲尔德大学的软件工程项目强调安全关键和可靠系统,体现了英国在航空航天、国防和医疗软件领域的优势。墨尔本大学提供澳大利亚最成熟的软件工程项目之一,将设计思维和敏捷实践融入研究密集型的教学环境中。对于明确想要构建真实世界软件系统而非从事理论研究的学生,这些项目提供了理想的基础。

全球多所大学为软件工程作为一门严谨独立学科的教育树立了标杆。卡内基梅隆大学可以说是现代软件工程教育的发源地,其校内的软件工程研究所(SEI)是联邦资助的研究中心,开创了能力成熟度模型(CMM)和网络安全事件响应CERT等基础性框架,本科生的课程设计受益于数十年大规模系统研究的积累。加拿大滑铁卢大学提供的软件工程合作教育项目被广泛认为是全球首屈一指的,学生在学术学期和带薪行业实习之间交替进行,合作企业包括Google、Apple和Bloomberg等,毕业时已积累近两年的专业工作经验。慕尼黑工业大学的项目深植于德国工程传统,在汽车软件、嵌入式系统和形式化方法方面实力突出,为学生进入欧洲领先的科技和制造业做好准备。谢菲尔德大学的软件工程项目强调安全关键和可靠系统,体现了英国在航空航天、国防和医疗软件领域的优势。墨尔本大学提供澳大利亚最成熟的软件工程项目之一,将设计思维和敏捷实践融入研究密集型的教学环境中。对于明确想要构建真实世界软件系统而非从事理论研究的学生,这些项目提供了理想的基础。

新加坡

软件工程师是全球需求最大的专业人才之一,新加坡的科技生态系统(汇聚了谷歌、Meta、字节跳动、Grab和Shopee的区域办公室)提供了丰富的职业机会。

职业前景与薪资

我能从事什么工作,收入如何?

入门阶段0–2年

美国 $75,000–$130,000 / 英国 £32,000–£55,000 / 澳洲 A$65,000–$95,000

软件工程师全栈开发后端工程师前端开发DevOps工程师
热门雇主
GoogleMicrosoftAmazonAppleMetaStripeShopify各类初创公司
职业中期3–8年

美国 $140,000–$260,000 / 英国 £65,000–£125,000 / 澳洲 A$110,000–$190,000

高级软件工程师技术主管工程经理资深工程师站点可靠性工程师
资深阶段10年以上

美国 $220,000–$500,000+(含大型科技公司股权)

首席工程师工程副总裁首席技术官(CTO)杰出工程师创始人
行业
科技金融与金融科技医疗与生物技术电子商务汽车游戏咨询政府/国防
需求前景

需求非常强劲。软件工程师仍是全球最抢手的专业人才之一。美国劳工统计局预计软件开发人员到2031年将增长25%。每个行业都在变成软件行业,AI扩展了(而非收缩了)工程师构建的范围。

你将学到什么

这个学位涵盖的核心课题与技能

软件设计与架构
全栈Web与移动开发
软件测试与质量保证
敏捷与DevOps方法论
数据库设计与管理
版本控制与CI/CD
软件项目管理
软件安全与可靠性

这个专业适合我吗?

帮你做出判断的真实自我评估

学业强度较重,课外每周预计15至25小时用于编程项目、实验和团队作业。工作量持续较高,有定期项目里程碑而非几次大考。
数学强度中等偏高。需要离散数学、线性代数和部分微积分。SE涉及的纯数学比AI或理论CS少,但比很多学生预期的多。
创造力平衡。软件架构和设计模式提供结构,但在如何设计系统、解决问题和构建用户体验方面有巨大的创造空间。最优秀的工程师是在工程约束下的创造性问题解决者。
团队合作以团队为主。SE课程强调协作开发、敏捷方法论、代码审查和团队项目。这反映行业实践,是课程的核心部分。

如果你有以下特点...

  • 你热爱构建能够运行的东西,编写解决真实问题的代码并看到人们使用它有一种独特的满足感
  • 你享受编写干净、可维护代码的工艺,并以结构良好的系统为傲
  • 你在协作环境中表现出色,代码审查、结对编程和团队问题解决让你充满活力
  • 你能接受持续学习,新的框架、工具和最佳实践不断涌现
  • 你喜欢从工作中看到切实的成果,软件工程产出具体的、可使用的产品

可能不太适合你,如果...

  • 长时间的调试让你沮丧而非接受挑战,发现和修复bug是工作的重要组成部分
  • 你更喜欢理论或研究导向的工作而非实际应用,SE高度应用化
  • 在别人的代码库上工作听起来没吸引力,在行业中你花在阅读和修改现有代码上的时间比写新代码多
  • 你想大部分时间独立工作,现代SE高度协作,每天有代码审查、站会和团队决策
  • 你主要对计算理论(算法、复杂性、证明)感兴趣,而非构建实用系统
学业强度较重,课外每周预计15至25小时用于编程项目、实验和团队作业。工作量持续较高,有定期项目里程碑而非几次大考。
数学强度中等偏高。需要离散数学、线性代数和部分微积分。SE涉及的纯数学比AI或理论CS少,但比很多学生预期的多。
创造力与结构化平衡。软件架构和设计模式提供结构,但在如何设计系统、解决问题和构建用户体验方面有巨大的创造空间。最优秀的工程师是在工程约束下的创造性问题解决者。
团队与独立以团队为主。SE课程强调协作开发、敏捷方法论、代码审查和团队项目。这反映行业实践,是课程的核心部分。

大学生活的一天

一周的真实日常

软件工程大二典型的一周高度实践且以项目驱动。周一上午是软件架构课,学习设计模式(观察者、策略、工厂),以及何时应用它们。教授展示一个开源项目的真实代码库,演示五年前糟糕的架构决策如今如何造成痛苦。午饭后是测试与质量保证实验课,编写单元测试、集成测试,学习测试驱动开发(TDD),先写测试再写代码一开始感觉反直觉,但你开始明白为什么它能更早发现bug。

周二是Web系统工程课,用React、Node.js和PostgreSQL构建全栈应用。这周的作业是实现JWT令牌用户认证和基于角色的访问控制,你发现安全比看上去难得多,第一次尝试的代码容易被令牌重放攻击利用。周三是毕业项目日:五人团队用敏捷方法为大学某部门构建排课平台。你主持冲刺计划会议,更新看板,审查队友的Pull Request(委婉地指出一个潜在的竞态条件),并结对编程完成最复杂的功能。

周四有DevOps与部署课讲CI/CD管线、Docker容器和AWS云部署。你搭建了一个GitHub Actions工作流,每当有人向主分支推送代码时自动运行测试并部署到暂存环境。下午的移动开发选修课用Flutter构建App。周五专门做项目:修复问题追踪器上的三个bug,为团队构建的API写文档,参加回顾会议讨论这个冲刺哪些做得好、下个冲刺哪些需要改进。周末用来补读微服务架构的材料,以及解决一个阻碍团队下一个功能的数据库迁移问题。

高中阶段准备

大学前应该学什么、做什么

推荐
HL 数学:分析与方法(AA)HL 计算机科学HL 物理
有帮助的
SL 高等数学(如开设)HL 设计技术

技能培养

  • 学会构建完整的应用而非仅仅写脚本,通过freeCodeCamp或The Odin Project的教程创建一个有前端、后端和数据库的Web应用
  • 尽早掌握Git和GitHub,版本控制是软件工程师的日常工具,许多学生到大学才学习
  • 练习协作编程,在GitHub上为开源项目做贡献,即使只是修复文档或小bug
  • 学习编写干净、可读的代码,阅读编码风格指南并练习重构自己的项目

课外活动

  • 构建并部署人们可以使用的真实应用(个人网站、学校工具、为当地组织做的移动应用)
  • 参加黑客松,与开发者、设计师和商科学生组队合作
  • 在GitHub上为开源项目做贡献,展示协作能力和真实编程水平
  • 参加编程竞赛(USACO、Google Code Jam)以磨练算法思维
  • 在学校发起一个技术项目,自动化一个流程、构建一个有用的工具或开发一个解决真实问题的应用

与相似专业的对比

与相关专业逐一比较

录取指南

这个专业竞争多激烈,如何脱颖而出

竞争程度: 较高

SE课程竞争激烈,与CS相当。在将SE设为独立专业的大学(滑铁卢、UNSW、阿德莱德大学、慕尼黑工业大学),录取通常要求优秀的数学和编程能力证明。A-Level学生通常需要A*AA且包含数学,IB学生需要38分以上且HL数学6或7分。滑铁卢的SE课程竞争尤为激烈,录取平均分超过95%。

什么能增强你的申请

  1. 1优秀的数学成绩和有据可查的编程能力
  2. 2GitHub上已完成软件项目的作品集,不只是代码片段,而是端到端可运行的应用
  3. 3协作开发的证据,如开源贡献、黑客松团队项目或小组编程工作
  4. 4理解软件开发生命周期(测试、版本控制、部署),而非仅仅是写代码
  5. 5个人陈述展示对通过软件构建东西和解决实际问题的热情

常见错误

  • 只关注竞赛编程而不展示构建完整应用的能力
  • 未展示协作能力,软件工程从根本上是一个团队学科
  • 混淆软件工程和计算机科学,要展示你了解SE强调的是工程实践而非仅仅是理论

面试与入学考试

滑铁卢和部分英国课程可能会询问你的开发经验和项目。准备好介绍你构建的一个项目,解释设计决策,讨论你会如何改进。

通用准备

以下建议涵盖新加坡各大学的通用准备要求。各具体课程的要求可能不同,详细的课程特定要求即将推出。

IB Diploma

  • 数学AA HL(必修)
  • 计算机科学HL(强烈推荐)
  • 物理HL(有帮助)

A-Level

  • H2数学(必修)
  • H2计算(强烈推荐)
  • H2物理(有帮助)

AP

  • AP计算机科学A(必修)
  • AP微积分BC
  • AP统计学(有帮助)

IGCSE

  • 计算机科学(必修)
  • 附加数学(必修)
  • 物理(推荐)

技能与能力

编程流利系统思维与设计团队协作注重代码质量

新大入学要求:新大招生需求

新加坡大学选择

SMU

计算与信息系统学院

软件工程理学学士详情

相关专业

准备好为软件工程做准备了吗?

我们的老师可以帮助你提升英语和学术能力,为你的目标专业做好准备。