CS302 Study Guide

Unit 10: Design Modification and Quality Control

10a. Apply the principles of software modeling to create diagrams using UML

  • How does software modeling provide consistent and systematic concepts for guiding software system development?
  • How does UML provide standard, 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 the 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 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 guided the development and maintenance of software systems, and models evolved, enabled by formal representations to apply, support, and automate the methodologies. 

Modeling begins with the requirements model that defines initial structures. The design model elaborates those initial structures with "essential" or service elements corresponding 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. UML is an example of a language paradigm. The word "paradigm" is a time-dependent view of a body of knowledge. It is a collection of concepts and principles that guide us in thinking about a subject during a given period. One important paradigm for software engineering is that of "language". We specify processes and procedures in various languages, depending on the representation of "who" will perform the activity - man, software, or machine. 

At this time, in the context of the SDLC, for example, requirements are primarily represented using a natural language and UML. Natural language often contains ambiguities; UML brings clarity and consistency to the representation. Informal or formal diagrams represent design; formal programming languages primarily represent implementation; interface or scripting formal languages represent integration and testing. This is important because the representation of objects and associated activities by a language enables us to communicate, study, and understand them and, perhaps, if the language is formal and systematic enough, build tools that support or automate them. The course case studies provide opportunities to demonstrate the use of UML diagrams for software modeling for development.

To review, see Software Engineering Case Study.


10b. Create OO analysis artifacts using the object-oriented methodology to create software analysis and design artifacts

  • How is software requirements analysis used in modeling?
  • How do models help us understand and communicate what the problem or task is (that is, the requirements)?
  • How is object-oriented software design used in modeling?
  • How do models help create and communicate how the problem or task will be solved or performed (the design)?

The software specifies how to solve a problem or perform a task. Executing 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 correct, complete, consistent, clear, verifiable, modifiable, and traceable representations. Object-oriented modeling supports these characteristics and applies to many real-world problems and tasks that confront us daily. 

Object-oriented requirements analysis specifies the requirements as use cases and scenarios. OO design refines them using structure and behavior diagrams to determine details to define 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 interactions. UML diagrams (class, sequence, activity, and state chart) serve as the OO design artifacts of the OO design model.

The transformation from the OO requirements model to the OO design model involves many decisions. OO methodologies, catalogs of OO design patterns, and OO code libraries aid it. The design model consists of elements corresponding to an object-oriented language's constructs. Thus, the transformation from the design model to the implementation model of object-oriented code is straightforward. The system can generate much of the code if the design model has sufficient detail.

To review, see Software Engineering Case Study and Teaching Software Development.


10c. Create a comprehensive test plan that includes the main levels of software testing, such as acceptance testing, unit testing, integration testing, and system testing

  • How is software testing used in modeling?
  • How do models help us implement a software system and demonstrate that it satisfies the requirements?
  • Does testing depend on the methodology used to develop the software?

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 a data model consisting of test cases and 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 and the decisions or conditions determining the 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 under testing. 

Software testing is the verification of software by executing it. Created input is used to produce results demonstrating whether the specifications and the requirements are satisfied. Testing is either a black box test or a white box test. 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 compares all intermediate and final results to the expected results. 

This table relates the test level to the 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


These kinds of testing are mainly independent of methodology. However, the amount of test scaffolding needed and test coverage may vary by programming language.


To review, see Software Engineering Case Study and Design Modification and Quality Control Activity.


Unit 10 Vocabulary

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

  • language paradigm
  • test model