37
CSC535 – Object Oriented Software Development Introduction

CSC535 – Object Oriented Software Development Introduction

Embed Size (px)

Citation preview

Page 1: CSC535 – Object Oriented Software Development Introduction

CSC535 – Object Oriented Software Development

Introduction

Page 2: CSC535 – Object Oriented Software Development Introduction

Ground Rules – Attendance • Attendance is imperative

– If you must miss a class, contact me ahead of time– If the miss is unplanned, contact me as soon as

you can after the class– If you must miss multiple classes, your grade will

suffer– As you probably know, some of my lecture

material comes from the book, much does not• Thus you need to attend lectures and read the book

Page 3: CSC535 – Object Oriented Software Development Introduction

Ground Rules – Participation • Participation in class discussions

enhances the learning experience– You all have software development (or

general project development) experiences to share

– Doing so will benefit everyone

Page 4: CSC535 – Object Oriented Software Development Introduction

Ground Rules – Activities• You will be working in groups on a term-long

project– Team work is one of the primary reasons the

object-oriented software development process was created

– I will give you time to meet as a team during class– Meeting outside of class is up to the team, you

should all have access codes to the computer science lab for this purpose

Page 5: CSC535 – Object Oriented Software Development Introduction

Ground Rules – Exams/Homework• As of now I am undecided whether we

will have an in class exam and final or not– But I am leaning towards having one– More on this later

• Similar comments regarding individual homework assignments

Page 6: CSC535 – Object Oriented Software Development Introduction

The book

• UML Distilled, Third Edition– Martin Fowler– Publisher: Addison-Wesley – ISBN-10: 0321193687 – ISBN-13: 978-0321193681

Page 7: CSC535 – Object Oriented Software Development Introduction

Chapter 1

Introduction

Page 8: CSC535 – Object Oriented Software Development Introduction

Programming Languages

• The hierarchy

Architecture Independent

Architecture Dependent

Architecture Dependent

High Level Language Statement

High Level Language Statement

Assembly Language Statement

Assembly Language Statement

Machine Code Statement

Machine Code Statement

Assembly Language Statement

Assembly Language Statement

Machine Code Statement

Machine Code Statement

Page 9: CSC535 – Object Oriented Software Development Introduction

Programming Languages

• Translation

Compiler

Assembler

Linker/Loader

High Level Language Statement

High Level Language Statement

Assembly Language Statement

Assembly Language Statement

Machine Code Statement

Machine Code Statement

Assembly Language Statement

Assembly Language Statement

Machine Code Statement

Machine Code Statement

Page 10: CSC535 – Object Oriented Software Development Introduction

Programming Languages

• Abstraction

Highly Abstract

Moderately Abstract

Not Abstract

High Level Language Statement

High Level Language Statement

Assembly Language Statement

Assembly Language Statement

Machine Code Statement

Machine Code Statement

Assembly Language Statement

Assembly Language Statement

Machine Code Statement

Machine Code Statement

Page 11: CSC535 – Object Oriented Software Development Introduction

Programming Languages

• All three are implementation languages– They are used directly to create programs that will

run on real computers– All of the languages convey information about

what the architecture will do (what will happen within the AND, OR, and NOT gates)

– None of the languages convey information about the design

• Although the design may be extracted from the code, but typically with great difficulty

Page 12: CSC535 – Object Oriented Software Development Introduction

Programming Languages

• What does this do?mov A, R1subb A, R5jnc eLTmov R2, #0x06sjmp endLTeLT:mov R2, #0x07

endLT:nop

if (R1 < R5) R2 = 6else R2 = 7

Page 13: CSC535 – Object Oriented Software Development Introduction

Programming Languages

• Programming languages are good for writing code

• Programming languages are not good for designing software systems

• They do not convey an level of abstraction that is easily understood by humans

Page 14: CSC535 – Object Oriented Software Development Introduction

Unified Modeling Language• UML is a design language, first and foremost

– Although it can be used to generate code (more later)

• UML is a graphical notation for describing and designing software systems– Although it can be used for designing non-

software systems

Page 15: CSC535 – Object Oriented Software Development Introduction

Unified Modeling Language• UML is not synonymous with object-

oriented design/programming– Although it’s introduction in 1997 was to

encourage the use of object-oriented design approaches

• UML is not used for drawing flowcharts

Page 16: CSC535 – Object Oriented Software Development Introduction

Use of UML

• UML can be used in three different modes (or styles)– Sketch– Blueprint– Programming language

• UML can be used in two different directions– Forward – used to design a new system– Reverse – used to document an existing system

Page 17: CSC535 – Object Oriented Software Development Introduction

Sketch Mode

• Goal: to communicate “some” aspects of a design

• Forward engineering: capture the main concepts of the design for the purpose of converting to code

• Reverse engineering: convert detailed code to a higher level of abstraction for the purpose of understanding

Page 18: CSC535 – Object Oriented Software Development Introduction

Sketch Mode

• Informal – you don’t have to follow any strict rules

• Dynamic – designs will change• Collaboration – facilitates multiple people

contributing to the design• Typical media – white board, sketch pads,

lots of scratch paper• Tools – no special tools required

Page 19: CSC535 – Object Oriented Software Development Introduction

Blueprint Mode

• Goal: to communicate a “complete” design to the programmers

• Forward engineering: code is written from the UML documents with no design alterations

• Reverse engineering: convert detailed code to a higher level of abstraction for the purpose of understanding

Page 20: CSC535 – Object Oriented Software Development Introduction

Blueprint Mode

• Formal – strict rules must be followed so that the programmers know exactly what the designers want done

• Semi-Dynamic – designs may change but change can be costly at this time

• Collaboration – ideally the programmers need not talk to the designers

• Typical media – printed documents• Tools

– Forward: drawing tools and meta-data repository

– Reverse: compiler with UML generator in place of the assembly code generator

Page 21: CSC535 – Object Oriented Software Development Introduction

Programming Language Mode• Goal: to generate executable code

• Forward engineering: the UML is the code

• Reverse engineering: not needed

Page 22: CSC535 – Object Oriented Software Development Introduction

Programming Language Mode• Formal – strict rules must be followed so that code

can be generated• Static – the UML is the code, to change the code you

change the UML• Collaboration – only at the module (or package) level

(same as conventional programming)• Typical media – printed documents• Tools – code generating UML tool (they exist but are

not great)

Page 23: CSC535 – Object Oriented Software Development Introduction

UML Modes

• Sketch mode is the most common usage

Page 24: CSC535 – Object Oriented Software Development Introduction

UML Perspectives

• Software– Some UML artifacts (we’ll define these

later) map directly to code

• Conceptual– Some UML artifacts map directly to

deployment (placement of software rather than design of the software)

Page 25: CSC535 – Object Oriented Software Development Introduction

So, What is UML?

• A graphical design notation– The diagrams (graphical notation)

themselves capture the “syntax” of the system being designed

• Meta-models– The concepts conveyed by the diagrams

capture the “semantics” of the system being designed

Page 26: CSC535 – Object Oriented Software Development Introduction

UML Diagrams

• UML 2.0 contains thirteen (13) diagram types– Each has it’s “typical” usage and elements

– There is no “strict” rules on when or how to use each diagram

– There is no “strict” rules as to what elements each diagram will contain

– Obviously, in programming language mode strict rules must be followed

• Basically, UML provides a set of design guidelines that will help you be successful in your design phase

Page 27: CSC535 – Object Oriented Software Development Introduction

UML Diagrams

• The diagrams are descriptive– They are used to convey ideas– You will hear “most people use them this

way…”

• The diagrams are not prescriptive– They do not tell you how and what to do– You won’t hear “you have to use them this

way…” (except in programming mode)

Page 28: CSC535 – Object Oriented Software Development Introduction

Class Structure

Page 29: CSC535 – Object Oriented Software Development Introduction

Project Based

• You will be the design team– 3-5 members

• I will be– The customer

– The technical advisor

• I will not be– A system designer

– A programmer

– An arbiter

Page 30: CSC535 – Object Oriented Software Development Introduction

Project Based

• Your team will– Manage itself– Produce a design (all aspects – more later)– Produce an implementation (code)– Produce system documentation– Perform design reviews– Perform product demonstrations– Use UML in a forward-engineered, sketch/blueprint

mode (closer to blueprint than sketch)

Page 31: CSC535 – Object Oriented Software Development Introduction

Project Based

• Team management– Create the system design– Create the system documentation– Maintain a schedule– Maintain a repository (backup, librarian)– Write, test, debug code– etc. etc. etc.

Page 32: CSC535 – Object Oriented Software Development Introduction

Project Based

• Management – I will not tell you how to run your team– I will not tell you how to divide work amongst your

team members

• But– All team members will be responsible for all

aspects of the project– All team members must understand all aspects of

the project

Page 33: CSC535 – Object Oriented Software Development Introduction

Startup

• Form teams

• Choose a team name and a logo

• Create document letter head – Presentation material (suggest PowerPoint

or Keynote)– Documentation (suggest Word and Visio)

• Review the project specification

Page 34: CSC535 – Object Oriented Software Development Introduction

Deliverables

• You will be given deliverables and dates throughout the term

• First deliverable – due June 3, 2010– Team name– Team logo– Team member names and email addresses– A set of items (questions) that you believe require

clarification from the customer before you can proceed with the design

– Bibliography of resources used

Page 35: CSC535 – Object Oriented Software Development Introduction

Deliverables

• All “written” submissions should be on team letterhead– Source code and UML diagrams will be

addressed as they are introduced into the list of deliverables

Page 36: CSC535 – Object Oriented Software Development Introduction

Evaluation Criteria

• Grading will be based on:– Following instructions.

– Meeting deadlines.

– Working as a team.

– Quality of workmanship.• How closely the design matches the code.

• How well the design documents are written.

• How well the code is written.– Usage of OO constructs.– Coding standards.– Comments.

– Does the program meet the specification and work properly?

– Quality of presentations.

Page 37: CSC535 – Object Oriented Software Development Introduction

Evaluation Criteria

• An actual grading scale based on the above items will be provided. For the time being, assume that they are all equally important and thus, equally weighted.