Title: Managing Complexity EEE321.01
1Managing Complexity EEE321.01
Royal Military College of Canada Electrical and
Computer Engineering
Refs Ambler Ch 1-2Booch Ch 1
- Maj JW Paul
- Jeff.Paul_at_rmc.ca
- 1-613-541-6000 x6656
Based on a series of Lectures by Dr Scott Knight
2There are 10 kinds of people in the world.Those
who understand binary,
and those who dont...
3Review
- What are three specific characteristics of
software? - It is engineered
- It is custom-built
- It doesnt wear out
- Why is software so complex?
- The problem domain
- The development process
- Flexibility (changeability) of software
- Behaviour of discrete systems
4Todays Class
- Three tools for coping with complexity
- Modeling
- UML
5How to manage the complexity?
or, how at least reduce it...
- Decomposition
- Hierarchy
- Abstraction
6Decomposition
- breaks the problem into understandable components
- allows elements of an organization to work on
small chunks of the system - can limit flexibility by producing well defined
(possibly reusable) building blocks - opens the possibility for separation of issues
allowing isolation of the state space - Coupling vs Cohesion
7Hierarchy
- allows understanding of relationships between
small numbers of components - different kinds of hierarchies allow insight into
different aspects of the complex system
8Abstraction
- probably the most important of the three tools
- the overlooking of unimportant detail
- concentration upon the essential features of an
idea
9Abstraction Examples
- business organization chart
- virtual machine
- character based I/O
- graphics objects
10A New Modularization
Decomposition Hierarchy Abstraction
- OO Languages
- based on abstract data types (classes)
- encapsulation (data hiding)
- abstraction (interface)
- design paradigm define types, provide operations
for types, exploit commonality
11An Object
- An instance of an abstract data type
- State
- Behaviour
- Identity
12Object-based/OO Languages
Sets of collaborating objects
13Potential Problems with OO
OO requires greater concentration on req,
analysis design
2
Developers must work closely with users
OO requires a complete change in mindset
OO requires a change in the development culture
OO is more than just programming
Many OO benefits are long term
7
OO demands up-front investment in training,
tools, education
OO does not guarantee you will build the right
system
OO necessitates increased testing
10
OO is only part of the solution
14Why do we model?
- Provide structure for problem solving
- Experiment to explore multiple solutions
- Furnish abstractions to manage complexity
- Reduce time-to-market for business problem
solutions - Decrease development costs
- Manage the risk of mistakes
from ftp//ftp.omg.org/pub/docs/omg/99-11-04.pdf
15UML
- The UML is a graphical language for
- specifying
- visualizing
- constructing
- documenting
- specifying the artifacts of software systems
16UML History
17Goals of UML
- Provide users with a ready-to-use, expressive
visual modeling language so they can develop and
exchange meaningful models. - Provide extensibility and specialization
mechanisms to extend the core concepts. - Be independent of particular programming
languages and development processes. - Provide a formal basis for understanding the
modeling language. - Encourage the growth of the OO tools market.
- Support higher-level development concepts such as
collaborations, frameworks, patterns and
components. - Integrate best practices.
18Many parts to UML
- Static Structure Diagram
- Use Case Diagram
- Sequence Diagram
- Collaboration Diagram
- Statechart Diagram
- Activity Diagram
- Implementation Diagram
- Other supporting tools
19Review
- Why is software so complex?
- The problem domain
- The development process
- Flexibility (changeability) of software
- Behaviour of discrete systems
- How do we manage complexity?
- Abstraction
- Decomposition
- Hierarchy
- Give an example of each
20Review
- Does OO solve the complexity problem?
- Your answer goes here.
- Why do we model?
- Provide structure for problem solving
- Experiment to explore multiple solutions
- Furnish abstractions to manage complexity
- Reduce time-to-market for business problem
solutions - Decrease development costs
- Manage the risk of mistakes
21Next Class
- Object Model
- Other points
- Coding standards
- Lab template