1) Scalability is an important requirement for modern software systems as hardware capabilities and user demands continue to grow rapidly. 2) There are various definitions of scalability relating to performance, complexity, and abstraction. It can be characterized as how resource consumption grows with problem size. 3) Techniques for achieving scalability include abstraction, execution analysis, coarse-grained analysis, distribution, and approximation, each with associated costs and tradeoffs. 4) True scalability engineering is needed to systematically apply scalability techniques, evaluate designs, and compare alternatives to build systems that can demonstrably scale from the start.