This chapter provides an introductory software architectural overview of ns-3, including use cases, architecture for reusable components, design for configuration, memory management policy, and strategy for integrating outside and legacy code.