ABSTRACT

This chapter introduces software engineering (SE) with the underlying basis of object orientation (OO). It starts with a discussion on how to learn and adopt SE. The chapter argues for the importance of modeling in good software design. Component-based software development assembles large chunks of reusable software and services rather than handcrafting individual classes. Agility provides immense value in software projects by drawing upon the "right-brained" traits of software developers. Software engineering comprised nothing but programming. Software architectural practices ensure that the detailed solution design fits with the enterprise environment before it is implemented. Understanding the object-oriented fundamentals is at the crux of becoming a good software engineer. The six fundamentals of OO discussed are classification, abstraction, inheritance, association, encapsulation, and polymorphism. The chapter concludes with a discussion on contemporary UML usage.