Unit 10 Study Guide and Review: Putting It Together: A Case Study

10a. Demonstrate the principles of software modeling through the use of UML

  1. How does software modeling provide consistent and systematic concepts for guiding the development of a software system?
  2. How does UML provide common, consistent, diagrams for representing requirements, designs, and software in a systematic, unified manner?

Software engineering builds and maintains software systems to solve problems and perform useful tasks. As problems and tasks became larger, more complex, more diverse, and more critical, software engineering methodologies evolved to systematically guide predictable development and maintenance of software systems to address them. Early methodologies used for software development emphasized data- or process-orientedness. Later approaches integrated the two perspectives together via object-orientation. With experience, the concepts and techniques of these methodologies were refined and adapted to better match application characteristics and types that more effectively modeled the development process. Modeling begins with the requirements model that defines initial structures. The design model elaborates those initial structures with 'essential' or service elements that correspond to programming language constructs. UML was developed to provide industry-standard diagrams for describing object-oriented models for requirements, design, and code in a consistent manner. The course case studies provide opportunities to demonstrate the use of UML diagrams for software modeling for development.

10b. Demonstrate an understanding of software requirements analysis using the object-oriented methodology by creating OO analysis artifacts

  1. Explain software requirements analysis in terms of modeling.
  2. How do models help us understand and communicate what the problem or task is (that is, the requirements)?

Software specifies how a problem will be solved or how a task will be performed. The execution of the software on the hardware solves the problem or performs the task. However, the problem or task must first be specified and analyzed to obtain representations that are correct, complete, consistent, clear, verifiable, modifiable, and traceable. Object-oriented modeling supports these characteristics and is applicable to many real-world problems and tasks that confront us daily. Object-oriented requirements analysis specifies the requirements as use cases and scenarios, and refines them to determine details to define problem space objects and classes. The Case Studies in unit 10 provide the opportunity to model requirements by using UML diagrams, including use cases and scenarios, to identify problem space objects and classes. To review, watch "What is UML?" and "Introduction to UML".

10c. Demonstrate an understanding of software design using object-oriented methodology by creating OO design artifacts

  1. Describe object-oriented software design in terms of modeling.
  2. How do models help create and communicate how the problem or task will be solved or performed (that is, the design)?

An object-oriented requirements model represents a problem or task as use case diagrams, scenarios, and problem space objects and classes. Software design continues the analysis by refining and adding details to build a design model of solution space objects, classes, messages, and their interactions. UML diagrams (class, sequence, activity, and statechart) serve as the OO design artifacts of the OO design model. How do these UML help in specifying a software design?

The transformation from the OO requirements model to the OO design model involves many decisions. It is aided by OO methodologies, catalogues of OO design patterns, and OO code libraries. The Case Studies of Unit 10 provide an opportunity to transform a requirements model into a design model of solution space objects, classes, messages, and their interactions, and to represent them with UML diagrams.

The design model consists of elements that correspond to the constructs of an object-oriented language. Thus, the transformation from the design model to the implementation model of object-oriented code is straightforward and, if the design model has sufficient detail, much of the code can be generated. To review, read pages 524-542 of The New Software Engineering.

10d. Demonstrate an understanding of the three levels of software testing by creating a comprehensive test plan

  1. Describe software testing in terms of modeling.
  2. How do models help us implement a software system and demonstrate that it satisfies the requirements?
  3. Does testing depend on the methodology used to develop the software?

Software testing is verification of software by executing it. Created input is used to produce results that demonstrate whether or not the specifications and/or the requirements are satisfied. Testing is either "black box" or "white box". In the case of black box testing, tests depend on inputs and compare the final result to the expected result. In white box testing, tests depend on how the logic of the code selects inputs to execute variations of processing, and comparing all intermediate and final results to the expected results. These kinds of testing are largely independent of methodology. However, the amount of test scaffolding needed and test coverage may vary by programming language.

Software is analyzed on three levels to produce three corresponding models: requirements, design, and code (or implementation). Similarly, software is synthesized and tested on three levels: unit, subsystem/system integration, and system. A test model is essentially a data model that consists of test cases and test procedures. A test case consists of input and output data, relationships between input data and the expected intermediate and final results, and relationships between input data to the decisions or conditions that determine execution of various paths. Test procedures consist of the supporting human operations and test software needed to deliver test case data to the part of the system being tested. The following table relates test level to model tested and the model used to determine the tests.

Test Level

Model Tested

Model and Model Element used to Determine Test Cases and Test Procedures of the Test Model for the Level

Unit

Code Model

Design model; detailed design specifications

Subsystem and System Integration

Code Model

Design model; design specifications, module interactions, interface specifications

System

Code Model

Requirements model; requirements

To review, read chapter 17 of The New Software Engineering.

Unit 10 Vocabulary

This vocabulary list includes terms that might help you with the review items above and some terms you should be familiar with to be successful in completing the final exam for the course.

Try to think of the reason why each term is included.

  • Industry standard
  • UML diagrams
  • Model
  • Model transition and translation
  • Requirements model
  • What?
  • Design model
  • How?
  • Code model
  • Data model
  • Test model
  • White box
  • Black box
  • Test level
  • Scaffold software
Last modified: Thursday, January 11, 2018, 1:37 PM