发布时间:2021-12-08 文章来源: 至领留学 点击:1224次
伦敦大学学院软件系统工程硕士项目(MSc Software Systems Engineering)得到了计算机科学系软件工程研究组的支持,其研究成果受到包括谷歌、Facebook和亚马逊在内的全球领先公司所采纳,为博士研究提供了理想的基础。
在这个专业学习,你将接受大型复杂软件系统工程原理和技术的培训,掌握需求工程与软件架构、软件抽象与系统集成等专业知识,并在现实的小组项目环境中应用这些技术;你将分析软件系统工程中的最新实践,了解复杂软件系统中的重要趋势、问题和结果,并有机会与工业合作伙伴密切合作,参与集体工业项目。该专业毕业生通常会成为软件工程师或软件架构师。
这个专业共需要完成180学分,其中包括6门必修课(90学分),一个小组项目或研究项目(60学分),2门选修课(30学分)。
必修课
Requirements Engineering and Software Architecture 需求工程与软件架构
Software Abstractions and Systems Integration 软件抽象与系统集成
Validation and Verification 确认与验证
Tools and Environments 工具与环境
Professional Practice 专业实践
Research Methods in Software Engineering 软件工程研究方法
项目(二选一)
Group Project in Software Systems Engineering 软件系统工程小组项目
Research Project in Software Engineering 软件工程研究项目
选修课(选2门)
Networked Systems 网络系统
Computer Security I 计算机安全I
People and Security 人与安全
Malware 恶意软件
Financial Market Modelling and Analysis 金融市场建模与分析
Information Retrieval and Data Mining 信息检索与数据挖掘
Financial Institutions and Markets 金融机构与市场
Complex Networks and Web 复杂网络与网络
Multi-agent Artificial Intellgience 多智能体人工智能
Distributed Systems and Security 分布式系统与安全
Requirements Engineering and Software Architecture 需求工程与软件架构
这门课的核心是系统需求工程和软件架构的基本原理和最新技术。
课程内容涵盖:
系统需求工程:面向目标的需求工程、敏捷项目中的需求工程;
软件架构:架构建模、架构风格、质量需求。
需求工程,是指应用已证实有效的原理、方法,通过合适的工具和记号,系统地描述待开发系统及其行为特征和相关约束。
需求工程覆盖了体系结构设计之前的各项开发活动,主要包括分析客户要求、对未来系统的各项功性及非功能性需求进行规格说明。在系统开发中,需求工程往往与体系结构设计交替进行,直到分解的子问题可以单纯地由软件或硬件系统解决。需求工程的目标简单明了:确定客户需求,定义设想中系统的所有外部特征。
软件工程是目前计算机类应用最为广泛的工程项目,发展极为迅速。软件工程在不同领域的应用有着不一样的开发标准,在软件的架构搭建方面也存在诸多的差异。
成功完成这门课的学习后,你将能够:
了解如何发现、分析和沟通软件密集型系统的需求,以及如何设计、评估和沟通满足这些需求的软件架构;
具备相应建模技能,以及向业务利益相关者和软件开发人员清晰、准确地传达需求和架构的能力。
Software Abstractions and Systems Integration 软件抽象与系统集成
这门课旨在培养你设计、实现和集成来自异构组件和服务的大型软件系统的技能和知识。
课程将重点介绍系统集成项目的基本原则和实际问题。在这门课上你还将能够发展必要的研究技能,以便在整个职业生涯中保持软件开发的领先地位。
成功完成这门课的学习后,你将能够:
展示系统集成技术以及相关知识和关键意识;
将这些知识应用于开发团队开发实质性系统;
独立研究、评价系统集成的新技术;
在专业环境中与各种利益相关者沟通其评估。
● 抽象,是软件设计中的重要手段和方法,合理地使用抽象可以提升设计的简单性,改善软件开发的质量。通常在软件设计中使用到两种抽象方法,基于过程的抽象和基于数据的抽象。软件设计的每一个步骤都是对相应层次解决方案的抽象的逐步求精。
● 所谓系统集成,就是通过结构化的综合布线系统和计算机网络技术,采用技术整合、功能整合、数据整合、模式整合、业务整合等技术手段,将各个分离的设备、软件和信息数据等要素集成到相互关联的、统一和协调的系统之中,使系统整体的功能、性能符合使用要求,使资源达到充分共享,实现集中、高效、便利的管理。
Validation and Verification 确认与验证
这门课的核心是确认和验证软件系统的原理与技术,你将了解确认和验证实践的现状,以及确认和验证研究中最重要的趋势、问题和结果。
那么,究竟什么是确认与验证?
软件确认(Validation)和软件验证(Verification),是测试理论中包含的两个基本概念,经常缩写成“V&V”。
软件确认,是评估系统或软件部件在开发过程中或开发结束时是否满足特定要求;软件验证,是评估系统或部件在特定的开发阶段是否满足该阶段开始时人们对它提出的要求。
成功完成这门课的学习后,你将能够:
了解正确性、一致性、故障和失败、静态分析和测试;
理解逻辑作为系统规范的形式语言的使用;
理解符号执行的使用;
验证简单系统;
了解可应用于软件系统的测试方法;
同时进行黑盒和白盒(单元级)测试;
了解当前工具的局限性,并对正在进行的研究主题有深入的见解,以克服这些局限性。
Tools and Environments 工具与环境
这门课的核心是软件工具和环境的原理和应用。课程不仅包括软件专业人员所期望的基本实践,还将介绍关于分析软件和从软件存储库中提取信息的研究。课程基于数十年的经验,包括对软件开发过程和分析的最新思考。
课程内容涵盖:版本和配置管理、构建和集成工具、调试和分析工具、软件分析、代码审计、挖掘存储库。
成功完成这门课的学习后,你将能够:
了解可用于实现软件工程任务的软件工具和环境的性质和种类;
为手头的任务选择适当的工具和环境,并应用工具和环境来完成任务;
了解和欣赏当前分析软件和存储库的研究方向。
Professional Practice 专业实践
这门课旨在提高你的专业技能和意识(如项目管理、职业道德、团队合作、当代软件实践),使你在软件工程领域获得成功。
课程内容涵盖:
职业道德、监管和法律;
当代实践、包容和多样性的重要性;
什么是项目?我们如何衡量它们的成功?
项目经理和团队在影响项目结果方面的作用;
与利益相关方沟通;
商业案例,撰写有效的目标;
项目规划、监控和控制;
项目报告的结构;
敏捷项目管理;
权衡、优化和架构决策;
风险和机会管理;
创建、激励和领导项目团队;
回顾、过程改进和项目评审。
成功完成这门课的学习后,你将能够:
评估提出的解决方案的有效性,并以明智的方式提出问题;
综合解决和讨论一般性开放性和当代性的专业问题;
拥有合理的道德立场;
应用适当的项目管理技术;
在特定环境下评估特定项目管理技术的效用,并在合理的框架内开发新技术;
概述在小组项目等小规模活动中使用项目管理技术与在工业规模活动中使用项目管理技术的区别。
Research Methods in Software Engineering 软件工程研究方法
这门课旨在向你介绍软件工程领域的前沿研究方法,也就是教你如何进行软件工程的研究,重点是仔细阅读研究论文,并对研究思想进行批判性的、平衡的评估。
成功完成这门课的学习后,你将能够:
确定软件工程的研究领域,讨论其核心问题和解决方法;
批判性地审阅、讨论软件工程的研究论文,评估证据的强度;
了解论文在会议和期刊上是如何被评审和接受的;
解释软件工程中使用的各种研究方法,并确定在什么背景下选择合适的研究方法;
对软件系统工程研究的多个研究领域有良好的认识。
在世界范围内,对软件工程师的强烈需求,不仅包括软件开发和编程,还包括与需求工程、软件体系结构、系统集成和测试等相关领域。因此软件系统工程硕士专业的毕业生的就业前景还是很广阔的。
UCL的软件系统工程硕士专业的毕业生通常会被雇佣为软件工程师或软件架构师,有时会被他们在研究项目中接触过的公司所雇佣。也有很多学生选择进一步从事软件系统工程研究。
1、软件工程师
广义来说,软件工程师,Software Engineer,可以作为从事软件开发相关工作的人员的统称,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位,工作内容都与软件开发相关。
狭义来说,专业的软件工程师的技术要求很全面。除了最基础的编程语言(C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)等,还有诸多如JAVASCRIPT、AJAX、HIBERNATE、SPRING等前沿技术。此外,关于网络工程和软件测试的其他技术也要有所涉猎。
很多人把软件工程师理解成“程序员”、“码农”,实际上,软件工程师绝不仅仅是写代码的。软件工程师更多地需要能够根据客户需求设计软件实现方案和具体细则,使得程序员可以根据软件工程师所涉及和搭建的框架编写底层代码。
2、软件架构师
软件架构师,Software Architect,是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。
也就是说,软件架构师是主导系统全局分析设计与实施、负责软件架构和关键技术决策的人员。这个职位应该善于把握全局,能够在更高抽象级别上进行思考。
架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了解,并且需要有良好的组织管理能力。可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。
在实际的软件开发行业中,狭义的软件工程师和软件架构师的区分并不明显,而广义的软件工程师往往指的是程序员。
编辑:翁晓兰