CS302 Study Guide

Unit 3: Software Modeling

3a. Explain object-oriented concepts such as abstraction, encapsulation, and inheritance

  • How are object-oriented concepts applied in the SDLC?
  • What are the commonly used UML artifacts?
  • Why is UML useful?

Software engineering is building models to develop software that solves useful problems. Software engineers build models for each phase of the SDLC. In 1945, George Polya wrote a general theory of problem-solving, "How to Solve It", which is well-known in mathematics but less known in software engineering. It presents a general model for solving problems in any application, not just mathematics, and illustrates important concepts of abstraction, encapsulation, and inheritance. It serves as an example of abstraction for software engineering. When we add domain-specific information, it serves as a requirements model. Adding successive detailed information to an SDLC phase model provides a model for the next sequential phase. Thus, each phase model is an abstraction of the following phase model(s) and encapsulates or hides information about the following phase(s). On the other hand, each phase model inherits essential information from the preceding phase. 

Imagine writing a report that describes a house and comparing that report to a picture or blueprint of the house. Unified Modeling Language (UML) is a "blueprint" model that describes software artifacts at an appropriate level of abstraction. A picture and diagram convey a description of a house more efficiently and effectively than a written report. In contrast, a report has the advantage of communicating more information and more details. However, if we are only interested in a house's architectural style and specific properties, a picture and a relevant diagram represent what we need; they are at an appropriate level of abstraction and hide the details of the less abstract written report.

Unified Modeling Language (UML) is a widely used set of diagrams for documenting and communicating requirements, architecture, and object-oriented software design. UML has several diagram types that describe structure and behavior. These UML diagrams are used to depict structure and behavior.

UML is useful because selected UML diagrams can represent the information we need to develop and communicate for the software life-cycle. It includes information for the development and maintenance phases. Further, we represent object-oriented concepts by corresponding UML diagrams:

  • Class structure – class diagrams
  • Objects – object diagrams
  • Methods – activity diagrams
  • Sequence diagrams
  • Interaction diagrams
  • State diagrams
  • Interface – interaction diagrams

To review, see:


3b. Interpret the context appropriate for main UML diagrams, including but not limited to structure diagrams, class diagrams, and component diagrams

  • How can an object-oriented methodology use UML?
  • What are the essential object-oriented modeling concepts?

UML is a generally relatively rich language for modeling software solutions to real-world problems, and it applies not just to object-oriented methodologies but to other software development methodologies. Object-oriented methodologies use objects, classes, and methods to build problem domains, designs, and software models. You use UML diagrams to describe these models and see which parts of UML are "essential" for modeling object-oriented development and object-oriented systems. 

The UML diagrams discussed reflect the four principles of Object-orientations (information hiding or encapsulation, abstraction, polymorphism, and inheritance): use case diagram, state diagram, class diagram, activity diagram, and interaction diagram. 

To review, see:


3c. Apply different levels of abstraction at essential object-oriented modeling concepts to enable reusability and flexibility

  • What levels of abstraction in object-oriented modeling enable reusability and flexibility?

Object-oriented modeling uses classes, objects, and class relationships (hierarchy, composition) and supports encapsulation, information hiding, polymorphism, and interfaces. All of these promote reuse and flexibility. 

To review, see Object-Oriented Programming and UML as a Modeling Tool.


Unit 3 Vocabulary

This vocabulary list includes terms you must know to complete the final exam successfully.

  • object-oriented modeling
  • UML diagrams
  • Unified Modeling Language (UML)