Vous êtes sur la page 1sur 26

MCS 270 Spring 2014

Object-Oriented Software Development


MCS 270 Object-Oriented Software Development

Todays schedule

Course information
Web Site: www.gac.edu/~hvidsten/courses/MCS270
Overview
Chapters 1 and 2 in Textbook

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Course Info

Web Site: www.gac.edu/~hvidsten/courses/MCS270


Class Syllabus
Class Schedule
Class Development Environment/Tools

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Course Topics What we will cover:

Object-Oriented Programming -- Java

Object-Oriented Design and Modeling

UML (Unified Modeling Language)

Version Control (GIT)

TDD (Test Driven Design) -- Unit Testing (JUint)

Team Project

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Course Goals What will you learn?

Programming Skills:

Fundamentals of object-oriented programming: encapsulation,


polymorphism, and inheritance

Understand the relationships between objects, classes, and


interfaces

Build complex systems having many interacting classes

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Course Goals What will you learn?

Software Modeling and Design Skills:

Use good practices of design to develop robust, maintainable


object-oriented software :
Modeling and Design Principles using UML

Agile Techniques

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Course Goals What will you learn?

General Skills:

Version Control

Testing

Professional Development tools (Eclipse, GIT, Google App)

Team Programming

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Textbook

Object-Oriented Modeling

and Design with UML, 2nd ed.

by Michael Blaha and

James Rumbaugh

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Challenges of Software Development

Complexity of software systems


Longevity and evolution of software systems
High user expectations

User needs change over time

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Historical Perspective on Software Engineering

1940s: computers invented


1950s: assembly language, Fortran, Lisp
1960s: COBOL, ALGOL, PL/1, Basic
1969: First conference on Software Engineering
1970s: multi-user, databases, UNIX, Procedural
Programming (C), First OO (Simula, Smalltalk), First
Logic (Prolog), First DB (SQL), Pascal, Scheme

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Historical Perspective on Software Engineering

1980s: Networking, PCs, Embedded


systems, Parallel computing, C++, ADA, Obj C
1990s: Internet, Distributed systems, Java
RAD -- Scripting Languages: Javascript, Python, Perl,
PHP, Ruby (OO in widespread use)
2000s: Web Commerce, Virtual reality, Voice
recognition, Video, C#, XML

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Historical Perspective on Software Engineering

2010s: Mobile Computing, HTML5, Ubiquitous


Computing, Agile Software Development, Cloud
Computing, Social Computing

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

The Cost of Developing Software

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Why is Software so Expensive?

Size of programs continues to grow:


Tiny: < 1 month, 1 programmer, < 500 LOC,
CS I, II assignments
Very small: 4 months, 3-4 programmers, 2000 LOC
MCS 270 Course project
Small: 2 years, 3-10 programmers, 50K LOC
Nuclear power plant, pacemaker

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Why is Software so Expensive?

Medium: 3 years, 10s of programmers, 100K LOC


Optimizing compiler (gcc), Geometry Explorer
Large: 5 years, 100s of programmers, 1M LOC
MS Word, Excel
Very large: 10 years, 1Ks of programmers, 10M LOC
Air traffic control, Telecommunications, space shuttle
Very2 Large: 15+ years, 10Ks programmers, 35M LOC
Y2K
GUSTAVUS ADOLPHUS COLLEGE gustavus.edu
MCS 270 Object-Oriented Software Development

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Challenges of Software Development

H/W advances, Feature explosion, Security needs


Maintenance - Aging Software
Costs and schedules hard to estimate
Failures: Arianne Missile,
Therac (Radiation Treatment), ACA?

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Hardware Lifecycle

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Software Lifecycle

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Robust Software Development based on:

Rigorous theories addressing the modeling and design


of complex systems
Testing of Systems both in development and after
Communication with customers (iterative design)
Reduction of Complexity (we can only cope with about 7
ideas at once)

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Chapters 1 and 2 Overview of Modeling

Object-orientation as a base for modeling


Problem modeled as set of objects that interact
Easy to understand and maintain
Directly related to reality -- no "semantic gap

Data-oriented model Object-oriented model

Real world Software system Real world Software system

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

3 basic OO concepts

Encapsulation - separate external (public) aspects from


internal (private) aspects
Inheritance- subclasses share attributes of parents
Polymorphism- same operation may perform different on
different classes

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Encapsulation

Problem Domain Class Diagram


switch
Switch
1 W Battery Resistor
5V
5V

Light
light

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Inheritance
Class Structure

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu


MCS 270 Object-Oriented Software Development

Polymorphism
2DShape
Class Circle extends 2DShape area
public double area()
{
return Math.PI*getRadius()*getRadius(); Circle
}
Class Ellipse extends 2DShape
public double area()
{
double a = getMajorLength()/2.0;
Ellipse
double b = getMinorLength()/2.0;
return Math.PI*a*b
}
GUSTAVUS ADOLPHUS COLLEGE gustavus.edu
MCS 270 Object-Oriented Software Development

Assignments

Tuesday - First Lab: Meet in Olin 326


Thursday Read Chapters 1,2 and 3.1-3.4 in text.

GUSTAVUS ADOLPHUS COLLEGE gustavus.edu

Vous aimerez peut-être aussi