----------------------------------------------------------------------------------------
Topics  -- Software Development, Software Models
                   (L) 1-5  (B)1-2, 7
 


Software includes all documentation necessary to:
UNIFIED MODELING LANGUAGE (UML)
  ----------------------------------------------------------------------------------------
What does UML contribute?  
Analysis Design 
What  How
Investigate the Problem Create a Solution 

Models -- Increase communication capability by including pictures, diagrams, graphs, etc.

    A Model is

A model can be used to:

Software Engineering Methodology
 
Common factors of software engineering (Ian Sommerville)

Software development methods depend on aspects of the Software Project
 
Small  Large 
Individual  Team 
Simple  Complex 
 


 
Software Development Life Cycle (SDLC)

         Software is developed in manageable stages
 

Stage  Activity
Requirements analysis and definition
  • Take steps to understand the problem 
  • The system's services, constraints and goals are identified by agreement with the system users and owners.
System and software design 
  • Partition requirements into hardware/software systems
Implementation
  • Program coding and unit testing
System testing
  • Test composite system
Operation and maintenance
  • Typically the longest part of the life cycle
 


Try to be correct at the beginning of the software development cycle:


The early stages of software development should:


Functional Model  -- Process oriented methodology



Structured analysis  


Potential pitfalls with structured analysis

 
 
 
 
 

Structured design  -- factor a program into a top-down hierarchy of independent modules (Structure chart)

 


Data Modeling is a data-centered methodology

Data modeling technique

 


Data modeled systems focus on


Data Modeling did not completely solve certain Problems:


An Object-Oriented System


Emphasis on Abstraction

 

Properties of a Good Abstraction
 
 

Three levels of modeling detail
 

 


Difference between Class and Object
 

Object-Oriented Concepts
 
 
Abstraction 
    Model relevant attributes and behavior of a given entity for a particular purpose
  • Focus on what an object "is" and "does."  Class defines both behavior and state. 
  • "Class" concept is more powerful that either "record" or "procedure." 
 
Encapsulation 
  
    Grouping of related ideas into one unit referred to by a single name 

    "Information hiding" Information is hidden about data and implementation so that clients only have to know the interface of the class

  • Class defines an interface and an implementation -- operations and attributes. Attributes and operations are accessible only through the interface.  De-couple content of information from its form of representation. 
  • Separate "what" an entity does from the "how" so less has to be known in order to use the class. 
  • The implementation can be changed without affecting a client's knowledge of the interface. 
  • Coding revisions to a class should have only a local effect and not cascade to other dependent objects.
  • Loose coupling enforced
Generalization - Specialization 
    Define the state and behavior properties once in a general super-class (Vehicle) then reuse them in a more specific sub-class (Car, Truck)
  • Use inheritance to reduce repetition for hierarchical relationships within designs and within programs 
  • Inheritance enables a class to receive all the attributes and operations of its parents
  • A specialized sub-class may also  add its own properties and override some inherited properties 
Object Identity 
    every object has its own identity (regardless of its class or attribute values).
  • Usually implemented with a pointer reference (object-handle)
  • The object-handle is unique for every object.
 
 
Composition  
    use components that interact to accomplish a task
Build complex "whole" systems by assembling simpler "parts" by association or aggregation
Type promotion 
    OO languages support substitution of a specialized object as a more general type.
  • Can refer to an Car instance as either a Vehicle or a Car. 
  • De-couples generic code from the existence of a particular specialization. 
 
Message Passing
 
    Objects communicate to other objects via message passing.
 
  • Very few objects can accomplish the necessary tasks by themselves.  They have to work with other objects.
  • Messages contain the object-handle, name of the operation that is to be performed and any additional arguments that should be used in the operation.
  • The message sender does not have to know the exact class of the receiver
Polymorphism 
    Each class may perform the same operation differently.
  • At execution time, objects respond based on what they are.  
  • Tell a vehicle to move and it will move like a car if it is a Car or a truck if it is a Truck. 
  • De-couples generic code from the existence of a particular specialization. 
 
Representation Continuity 
    Same types of diagrams are used in both analysis and design. 
  • Design elaborates the diagrams discovered during analysis. (Particularly true for Class diagrams, Use Case Diagrams and Interaction Diagrams) 


Properties of a good abstraction
 
Well Named The name accurately communicates the nature of the abstraction 
Coherent  The abstraction contains a related set of attributes and behavior that makes sense and is needed and expected in a given setting 
Accurate  The abstraction contains only attributes or behavior that are displayed by the entity being modeled 
Minimal The abstraction does not contain attributes or behavior extraneous to the purpose for which it is defined. 
Complete  The abstraction contains all the attributes and behavior necessary to accomplish its intended purpose.

 

Object oriented approach to analysis


OO compared to traditional software development (Rumbaugh OMT)


OO Analysis should emphasize

OO Analysis should not emphasize


Object-oriented development (Rumbaugh OMT)



Software Development Stages (Rumbaugh OMT)
 
 
Stage Activity 
Analysis 
    produce a document specifying what the system must do, not how to do it
  •  start with a problem statement
  • build a real-world models of application domain concepts
  • verify, iterate and refine the  models
 
System Design 
    high-level design of the architectural structure to solve the problem
  • strategy for allocating software/hardware resources to the problem
  • organize problem components into subsystems
  • consider performance and concurrency characteristics
Object Design 
    produce a design document using the same classes defined by analysis.
  • Avoid using any particular programming language 
  • Objects derived from analysis may require additional details before implementation. 

  •  

    Where necessary add: 

    • data structures
    • algorithms
    • computer domain concepts
 
Implementation 
    tranform classes into a particular 
    hardware and software code
  • programming language
  • database
  • hardware
 
 
 
 
 

Use Prototypes & Models to help clarify requirements



 What is "Design"?