跳到主要内容

CMU 15-313 软件工程基础 ⭐️

课程名称: Foundations of Software Engineering
课程官网地址:CMU 15-313课程官网
先修课程: 15-214 软件构建原理:对象、设计和并发
重要程度: ※※※※
课程评点: 该课程是围绕NodeBB这个开源论坛软件来做协同开发、持续集成和部署、软件架构与机器学习评估、开源社区实践等

软件工程对国内大部分学生来说,是求职时非常重要的一门课,这门课会教你如何团队协作开发一个完整的软件项目。这是一门非常偏编程实战、偏团队以及偏企业需求前沿的课程,因此这些名校关于软件工程的课程都没有开放的视频可供学习。

不过这些课程对学生的技能要求以及一些参考资料有助于大家实际了解开发一个项目到底需要哪些流程,会用到什么软件,需要具备哪些能力,等等。而这些也只是知识性的参考,强烈推荐大家在学习时,找两三个同学一起组成团队,协作开发一个完整的项目。国内更推荐用Java/Node+Vue/React的组合。

课程说明

成功的软件项目需要的不仅仅是技术专长。弄清楚客户想要什么,在团队中协作,管理复杂性,降低风险,按时和按预算,以及在各种限制条件下确定产品何时足以交付,这些至少是同样重要的主题,通常有重要的人力成分。本课探讨了这些问题,同时广泛涵盖了现代软件工程的基础知识。

假设具备相当扎实的编程技能(包括单元测试和代码级设计),我们将探讨以下主题:

  • 软件开发的过程考虑:如何及早避免问题?何时设计,设计多少?何时测试,测试多少?何时以及如何让客户参与?敏捷方法...
  • 需求获取、文档和评估:如何弄清楚客户真正想要什么?还有谁感兴趣?我们如何客观地衡量成功?我们如何可靠地记录期望?...
  • 质量属性设计:我们如何设计一个能够扩展到数百万用户的系统?我们如何将安全性设计到系统中?...
  • 质量保证策略,包括测量、检查以及静态和动态分析:哪种质量保证策略最适合给定系统?我们可以自动化什么,什么时候应该让人工参与?应该进行多少测试和什么样的测试我们做什么?除了功能正确性之外,还有哪些品质对于确保重要?我们可以评估可用性、可扩展性、可靠性、性能吗?我们如何静态地保证不存在某些安全问题?...
  • 软件工程中的经验方法:我们如何衡量性能、安全性和可靠性等质量属性?我们如何衡量用户与系统的交互方式?我们如何知道差异是否重要?...
  • 时间和团队管理:如何估算项目的持续时间和成本?如何监控进度和风险以及早发现问题?如何协调团队中的开发人员?如何组建和发展团队?如何选择和激励团队成员?如何处理团队动态,例如社交游荡?...
  • 软件开发经济学:商业模式、外包、开源……

项目开发与辅导课

CMU关于项目的开发有着非常完善的项目说明以及辅导课要求,这些项目与要求非常符合当前企业招聘用人要求,非常推荐萌新可以学习参考。而且你还能看到CMU其他同学开发出的实际开源项目。

NodeBB项目:CMU 15-313 Projects

11个辅导课:CMU 15-313 Recitation

CMU团队项目名人堂:CMU学生优秀项目集

推荐教材