Chapter 7: Design and Implementation

Objectives 
The objectives of this chapter are to introduce object-oriented software design using the UML and highlight important implementation concerns. 
When you have read this chapter, you will: 
■ understand the most important activities in a general, object-oriented design process; 
■ understand some of the different models that may be used to document an object-oriented design; 
■ know about the idea of design patterns and how these are a way of reusing design knowledge and experience; 
■ have been introduced to key issues that have to be considered when implementing software, including software reuse and open-source development. 

Contents 
7.1 Object-oriented design using the UML 
7.2 Design patterns 
7.3 Implementation issues 
7.4 Open-source development

Process of system development
(waterfall, Agile)
Requirements engineering
Modelling
Architecture

Ultimately, need to design
(Decide what you want system to do
BEFORE deciding implementation)

7 Design and Implementation
	Design of a system is a creative process
	Implementation is often closely linked
	UML works better for some languages and situations (Java and Python)
	Not needed for off the shelf components
	Build versus buy or adapt
	Software reuse, configuration management
	Open source
7.1 object-oriented design
	Context and external interactions
	Design architecture
	Identify objects
	(identify methods)
	Develop design models
	Specify interface
  Boundaries
	System context model
	Interactive model
	Use case
  Design
	Layered, client server, distributed, ….
  Objects
	Objects (noun)
	Method (verb)
	Use tangible objects
	Use scenarios to check
	Use knowledge of domain
  System needs:
Security
Validity
Reliability
Availability
….
  Design models
	Structural
	Dynamic
	(UML 13, types of modelling)
	Subsystem
	Sequence
	State
  Interface specification
	Interface is not really data 
	Interface is not really implementation
	Java allows interface to be defined separately from objects
7.2 design patterns
	Best practices
	Names as meaningful reference to pattern
	Description of area where patterns can be applied
	Template for parts of solutions, relationships
	Statement of tradeoffs
	Observer pattern
	High level concept reuse
7.3 implementation issues
	Re-use
	Configuration management
	(version control)
	Software might not be developed on target system
		Host target development

	Reuse
		Abstractions
		Objects
		Components
		System
Configuration management
	Change is essential
	Must coordinate
	Version control
	Problem tracking
	System integration
Release management

Host target development
	Use a virtual machine
	What hardware and software are required
	Availability requirements
	Component communication
	May need IDE Integrated Development Environment (Eclipse)
		Compiler, editing
		Debugging
		Graphics tools
		Testing tools
		Configuration management
	Distributed systems
		Requirements of components
		Availability
		Component communication
	Embedded systems/real time systems (chapter 21)
7.4 open source
	Linux, Apache, Java, Eclipse IDE, mySQL
	Free software foundation, GNU, Berkeley
	Free, but there may be licensing restrictions
	GPL, make source open
	LGPL only need to make source open if you change the open source code
	Acknowledge where you got the code from
	Vulnerability
	Available
	Cost
Benefit of volunteers
Core of programmers, helped by volunteers
Protection of customers if company goes out of business