从今天起,我们将开始学习“软件构造(Software Construction)”这一门课程。
课程目标
- 实现从“完成任务”到“追求质量”的转变,具备编写高质量软件的能力
- 深化对于ADT以及OOP的学习
- 初步掌握面向关键质量目标(可理解性、可维护性、可复用性、健壮性、时空性能)的软件构造基本技术
- 了解软件代码重构和面向更复杂软件系统的高级构造技术
- 能够根据软件的不同要求以及关键质量目标选择相应的软件构造方案
换句话说,也就是:
- 从功能到质量
- 从具体到抽象(降低耦合性)
- 从编程到工程(包括团队合作、程序评价等在内的多方面能力)
- 从手工到工具(学会站在巨人的肩膀之上,比如利用一些优秀的现代软件构造工具)
亟需改正的编程习惯
写代码 → 测试 → 改代码 如此反复
这样的方式已经不再适合大型软件的编写了。试想,如果我们需要写一个十万行的程序,那么,先写好再一个个地Debug显然是不合适的。即使测试发现存在错误,也很难定位Bug的位置。一些Bug是在运行了好一段时间之后才出现的。此外,如果在测试方面不够拿手的话,也很难做到让测试数据覆盖所有的情况,尤其是一些很微妙的极限情况。
那么,我们需要一个新的编程的习惯:
设计 → 比较 → 选择最优方案 → 分模块编写程序,并及时打桩 → 整合为一个程序并作最后的测试
如此,我们便能更加有效地解决自身编程的问题,完成大型软件的构造。
课程目录
- 软件构造基础
- 软件构造过程
- ADT&OOP
- 面向可理解性的构造
- 面向可复用性的构造
- 面向课维护性的构造
- 面向健壮性的构造
- 面向性能的构造技术
- 代码重构
- 并行/分布式/GUI
学习资料
- MIT Course 6.031: Software Construction MIT Course
- CMU 15-214 Principles of Software Construction: Objects, Design, and Concurrency
- Java 编程思想(Thinking in Java)
- Effective Java
- 设计模式:可复用面向对象软件的基础(Elements of Reusable Object-Oriented Software)
- 代码大全(Code Complete)
- 代码整洁之道(Clean Code: A Handbook of Agile Software Craftsmanship)
- Java Performance Tuning
- 重构:改善既有代码的设计(Refactoring: Improving the Design of Existing Code)
- 软件工程——实践者的研究方法(Software Engineering: A Practitioner’s Approach, 7th edition)
- 软件调试修炼之道(Debug It: Find, Repair, and Prevent Bugs in Your Code)
- Java性能权威指南(Java Performance: The Definitive Guide)
- 深入理解软件构造系统:原理与最佳实践(Software Build Systems: Principles and Experiences)
- Java Concurrency in Practice
- 代码之美(Beautiful Code)