01
  • 1.0 Introduction

    This module provides a detailed coverage of object-oriented analysis and design of software systems. It provides coverage of the Unified Modelling Language (UML) notation and the practical application of UML in the development of information systems using currently available software modelling tools. It will also provide coverage of the use of Analysis and Design Models

    Learning Outcomes

    On completion of this module, students should be able to:

    Understand and apply object oriented techniques to the analysis and design of software systems
    Develop object oriented specifications using the Unified Modelling Language (UML)
    Develop UML models using currently available software modelling tools
    Understand the integration between the design models and implementation

    Syllabus Overview

    Object Oriented Analysis And Design.

    An overview of the conceptual foundations of Object Oriented Analysis and Design.

    Class Diagrams

    Objects, classes, attributes, operations, inheritance, aggregation, association, and generalisation.
    The development of class diagrams.
    The role of 'class diagrams' in analysis and design models.

    Component Diagrams

    Components, component interfaces
    Modelling system components using component diagrams.

    Interaction Diagrams

    Modelling object interaction using interaction diagrams (sequence diagrams, communication diagrams, interaction overview diagrams and timing diagrams).

    Activity Diagrams

    Activities, actions, edges, decision nodes, merge nodes, partitions, fork nodes, join nodes, objects in activities
    The development of Activity Diagrams during business analysis to model workflow and business processes

    Dynamic Modelling

    States, transitions, actions and events

    Traceability

    from Requirements through to Implementation

    Useful books

    Schaum’s Outlines – UML; Bennett, Skelton & Lunn, McGraw-Hill (2005) second edition ISBN 0-07-710741-1
    Bennet, Skelton & Lunn (2005), Schaum's Outlines - UML, 2nd Ed, McGraw-Hill [ISBN 0-07-710741-1]
    Perdita Stevens (2006), Using UML: Software Engineering With Objects And Components, 2nd Ed, Addison Wesley [ISBN 0-321-26967-5]
    Martin Fowler (2006), UML Distilled: A Brief Guide To The Standard Object Modelling Language, 3rd Ed, Addison Wesley [ISBN 0-321-19368-7]
    Dennis, Wixom and Tegarden (2005), Systems Analysis And Design With UML Version 2.0 An Object-Oriented Approach, 2nd Ed, Addison Wesley [ISBN 90-471-65920-7]
  • 1.1 What is the Software Process?

    The software process is the cornerstone of successful software engineering. It is the Life Cycle that the software goes through from conception to retirement. The process can be thought of as a set of activities that covers the complete life span of a piece of software. Activities commence when the software is envisaged, and give structure to its development stage. However, they also continuing through its operational lifetime until the product is finally ‘retired’. Life cycle models links these activities.

    You should be familiar with the main life cycle models from the Fundamentals of Software Engineering course. We will use some of these slides during this lecture

    Some Life Cycle Models include the following …..

    The Waterfall Model

    The “traditional” approach to software development is to use the waterfall model. The expectation is to complete each step before proceeding to the next step in the process.

    The steps in this model are as follows:

    Waterfall Model Example

    Incremental Approach

    There are alternatives to the Waterfall model. These alternatives come under the name “Agile”. Agile approaches utilise a different “ordering” of the development steps.

    Incremental Approach Example

    Agile Development

    The fundamental characteristics of agile development are:
    Specification, Design and implementation are interleaved
    The system being built is developed in a series of versions
    An interactive approach is used to develop the User Interface
    The key then is to develop the system in increments
    Ideally increments should be made available to customers every 2 or 3 weeks involving customers in the development process.
  • 1.2 Main life cycle activities

    Even, though these life cycle models were different - they still included the following core activities that are at the heart of the software process:

    Analysis
    Design
    Coding
    Testing
    Maintenance

    Systems analysis :

    Understand what the system must do.

    Systems design:

    Specify how the components are configured to provide the solution.

    Systems Analysis

    Systems Analysis consists of those activities that enable a person to UNDERSTAND and SPECIFY what the new system should accomplish. Systems Analysis is much more than simply a brief statement of the problem, it describes in detail the “what” that a system must do to satisfy the need or to solve the problem.

    Systems Design

    Systems Design consists of those activities that enable a person to describe in detail the system that SOLVES the need. In other words, systems design describes “how” the system will work and it specifies in detail all the components of the solution

    Scenarios

    Scenario 1.

    urrent System is a ‘manual’ Paper-based System (e.g. Library using files/forms) which requires a new ‘computerised’ software system.

    Scenario 2.

    Customer would like a new software system as there is no existing system.

    Scenario 3.

    Customer would like a new software system based on an existing system.

    In ALL scenarios – MUST do Analysis
  • 1.3 Analysis

    Systems Analysis activities:
    Gather detailed information
    Define requirements
    Prioritize requirements
    Develop user-interface dialogues
    Evaluate requirements with users

    1. Gather Detailed Information

    Systems analysts obtain information from people who will be using the system, either by interviewing them or by watching them work. Analysts also study existing systems, including their documentation. They try to understand an existing system by identifying and understanding the activities of all users

    Information-Gathering Techniques

    Interviewing users and other stakeholders
    Distributing and collecting questionnaires
    Reviewing inputs, outputs, and documentation
    Observing and documenting business procedures
    Researching vendor solutions
    Collecting active user comments and suggestions

    2. Define Requirements

    The analyst uses information gathered from users and documents to define requirements for the new system.
    functional requirements
    the activities that the system must perform (i.e., the business uses to which the system will be applied).
    non- functional requirements
    related issues such as user interface formats and requirements for reliability, performance, and security

    Functional Requirements :
    Functions     Business rules and processes

    Non-functional Requirements :

    Usability               User interface, ease of use
    Reliability             Failure rate, recovery methods
    Performance        Response time, throughput
    Security                Access controls, encryption
    Implementation     Development tools, protocols
    Physical                Size, weight, power consumption.
                                 Installation and updates
    

    3. Prioritize Requirements

    Once the system requirements are well understood, it is important to establish which requirements are most crucial for the system. Sometimes, users suggest additional system functions that are desirable but not essential. However, users and analysts need to ask themselves which functions are truly important and which are fairly important but not absolutely required.

    4. Develop User-Interface Dialogues

    To most users, the user interface is all that matters. Thus, developing user-interface dialogs is a powerful method of eliciting and documenting requirements A user-interface prototype developed in an early iteration can be expanded in later iterations to become a fully functioning part of the system.

    5. Evaluate Requirements with Users

    Analysts usually use an iterative process in which they :
    obtain user input
    work alone to model requirements
    return to the user for additional input or validation,
    work alone to incorporate the new input and refine the models.

    Prototypes of user interfaces and other parts of the system may also be developed
  • 1.4 Why Build Models?

    System Modelling

    System Modelling

    This is the process of developing abstract models of the system that is being developed. This approach will involve some form of diagram …. UML Diagram. Models are used at different points in the development process.

    Models and Modelling

    UML@Classroom Chapter 1

    Natural Language is not a good choice as it is imprecise and ambiguous and consequently can lead to misunderstandings between technical (analyst/designers) and non-technical (users). Modelling is an important part of analysis and design. Analysts build models to describe system requirements and use those models to communicate with users and designers. By developing a model and reviewing it with a user, an analyst demonstrates an understanding of the user’s requirements. If the user spots errors or omissions, they can be updated into the model before it becomes the basis for subsequent design and implementation activities.
  • 1.5 The UML (Unified Modelling Language)

    Unified Modeling Language (UML) is a standardized general-purpose modelling language in the field of software engineering and is one of the most widespread graphical object-Oriented Modelling languages. UML includes a set of graphical notation techniques to create visual models of software-intensive systems. UML is used to specify, visualize, modify, construct and document the artifacts (e.g. use cases, class diagrams etc.) of an object-oriented software system under development.

    Brief History of UML
    Designed by G. Booch, J. Rumbaugh, I. Jacobson (3 amigos)
    Started in 1994, version 1.0 finished in 1997
    They put aside their own methods and notations to end the OO method wars
    Previously there was a lack of standardization : every method, tool, practice has their own set of symbols and terminology
    For several years UML maintained by OMG (Object Management Group) revision task force which produced versions 1.3, 1.4, and 1.5 from 2000 to 2003
    Official version of UML 2.0 adopted by OMG early 2005 (this is a major revision of UML1 and includes many additional features and many changes were made to previous constructs based on experience with the previous version).
    Current version is 2.4.1

    The 1st three steps (Analysis/Design/Coding) in the Software Process can be viewed as a Series of model transforms.

    UML Model Example

    For each of the models (boxes), the UML has its own models and diagrams. This Module will deal with the UML modelling of the Analysis (Requirements) Model and the Design Model. The order in which the module deals with these UML models will be the order that an analyst might when analysing and designing a system.

    UML diagrams represent two different views:
    Structural (Static) View
    emphasizes the static structure of the system using objects, attributes, operations and relationships.
    Behavioural (Dynamic) View
    emphasizes the dynamic behaviour of the system by showing collaborations among objects and changes to the internal states of objects.

    UML Structere Diagram

    In this module – we will only cover the following diagrams :
    Structural (Static) View
    Class Diagrams
    Object Diagrams
    Component Diagrams
    Behavioural (Dynamic) View
    Use Case Diagrams
    Activity Diagrams
    State Machine Diagrams.
    Sequence Diagrams
    Communication Diagrams
  • 1.6 Start of the Requirements Model

    Requirements Model

    Stages:
    Analyst finds out what the system must do (Functional Requirements (Use Cases))
    Analyst finds out who and what interact with the system – Actors
    Analyst models this with Use Case diagrams.

    Use Case Diagram

    The 1st UML model that we’ll look at, in the next lecture, is the Use Case model, which includes the Use Case diagram. The Use Case Diagram is very simple with little in the way of notation. It is an effective means of communicating with users, other stakeholders and developers what the system is supposed to do, and who uses it.
  • Lynda.com Videos - Object Oriented Design

    You should watch the following group of Videos :

    Introduction ( 5 Videos )
    📹 Welcome 1m 25s
    📹 Who this course is for 1m 15s
    📹 What to expect from this course 3m 6s
    📹 Exploring object-oriented analysis, design, and development 1m 41s
    📹 Reviewing software development methodologies 4m 8s
    1. Core Concepts ( do NOT view yet - will use later in module)
    2. Object-Oriented Analysis and Design ( 3 Videos)
    📹 Understanding the object-oriented analysis and design processes 4m 13s
    📹 Defining requirements 6m 9s
    📹 Introduction to the Unified Modeling Language (UML) 1m 54s

    Note that some of these videos mention Objects and Classes - we will cover these soon