the big picture of software development glenn blank professor of computer science lehigh university

14
The Big Picture The Big Picture of Software of Software Development Development Glenn Blank Glenn Blank Professor of Computer Professor of Computer Science Science Lehigh University Lehigh University

Upload: moris-maxwell

Post on 16-Jan-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: The Big Picture of Software Development Glenn Blank Professor of Computer Science Lehigh University

The Big PictureThe Big Pictureof Software of Software

DevelopmentDevelopmentGlenn BlankGlenn Blank

Professor of Computer Professor of Computer ScienceScience

Lehigh UniversityLehigh University

Page 2: The Big Picture of Software Development Glenn Blank Professor of Computer Science Lehigh University
Page 3: The Big Picture of Software Development Glenn Blank Professor of Computer Science Lehigh University
Page 4: The Big Picture of Software Development Glenn Blank Professor of Computer Science Lehigh University

National TrendsNational Trends The pipeline for women and minorities entering The pipeline for women and minorities entering

computer science (CS) and information technology computer science (CS) and information technology (IT) is shrinking, at a time when the projected (IT) is shrinking, at a time when the projected demand demand for IT professionals is growingfor IT professionals is growing Camp, 1997, 1999, Cohoon, 2002Camp, 1997, 1999, Cohoon, 2002

““We must take direct action to attract and retain We must take direct action to attract and retain more women to computing at all points in the more women to computing at all points in the pipeline (i.e., K-12, undergraduate, graduate, faculty pipeline (i.e., K-12, undergraduate, graduate, faculty and industry)…”and industry)…” Camp 1999Camp 1999

Do you agree? What does this situation mean for Do you agree? What does this situation mean for youyou?? That’s why there’s Launch-IT!That’s why there’s Launch-IT!

Page 5: The Big Picture of Software Development Glenn Blank Professor of Computer Science Lehigh University

Creating Software is like Creating Software is like Building a HouseBuilding a House

When building a house, the first thing you do When building a house, the first thing you do is:is:

1.1. Buy some lumber and nails to frame itBuy some lumber and nails to frame it

2.2. Dig a hole for the foundationDig a hole for the foundation

3.3. Get a loan from a bank to pay for itGet a loan from a bank to pay for it

4.4. None of the aboveNone of the above First, contractor figures out what the First, contractor figures out what the

customer wants!customer wants! Next, architect designs a blueprintNext, architect designs a blueprint Next… well, why don’t you figure it out?Next… well, why don’t you figure it out?

Page 6: The Big Picture of Software Development Glenn Blank Professor of Computer Science Lehigh University

How is creating software How is creating software like building a house?like building a house?

Figure out what customer wants: Figure out what customer wants: Requirements Requirements

Sketch a plan: Conceptual designSketch a plan: Conceptual design Blueprint: Architectural designBlueprint: Architectural design Get a loan: Cost analysis/risk assessmentGet a loan: Cost analysis/risk assessment Subcontractors: Team with specialists; Subcontractors: Team with specialists;

outsourceoutsource Build it: ImplementationBuild it: Implementation Inspect and fix problems: TestingInspect and fix problems: Testing Maintenance and remodeling: MaintenanceMaintenance and remodeling: Maintenance

(new releases and versions)(new releases and versions)

Page 7: The Big Picture of Software Development Glenn Blank Professor of Computer Science Lehigh University

Multimedia about Multimedia about software engineeringsoftware engineering

Page 8: The Big Picture of Software Development Glenn Blank Professor of Computer Science Lehigh University

Objects Software objects model real-world Software objects model real-world

objectsobjects For example, trees, cars, ATMsFor example, trees, cars, ATMs

Objects are “natural”Objects are “natural” We interact with them all the time We interact with them all the time

(vs. lines of code or functions)(vs. lines of code or functions)

Page 9: The Big Picture of Software Development Glenn Blank Professor of Computer Science Lehigh University

Objects and Classes Objects are categorized by their type, Objects are categorized by their type,

or or classclass An object is an An object is an instanceinstance of a class of a class A software object has a current A software object has a current statestate

and a set of possible and a set of possible behaviorsbehaviors AttributesAttributes describe properties of a class describe properties of a class

of objects of objects A car has an make, model, color, etc.A car has an make, model, color, etc.

MethodsMethods perform behaviors of a class of perform behaviors of a class of objectsobjects

A car can start, accelerate, reverse, park, etc.A car can start, accelerate, reverse, park, etc.

Page 10: The Big Picture of Software Development Glenn Blank Professor of Computer Science Lehigh University

Objects and Classes Objects and Classes exampleexample

Object: Sue (Class: person)Object: Sue (Class: person) Attributes: height (5’), hairColor (blond), eyeColor (blue)Attributes: height (5’), hairColor (blond), eyeColor (blue) Methods: getHeight, getHairColor, getEyeColor, Methods: getHeight, getHairColor, getEyeColor,

setHeight, setHairColor, setEyeColor setHeight, setHairColor, setEyeColor Object: Mike (Class: person)Object: Mike (Class: person)

Attributes: height (6’), hairColor (black), eyeColor (hazel)Attributes: height (6’), hairColor (black), eyeColor (hazel) Methods: getHeight, getHairColor, getEyeColor, Methods: getHeight, getHairColor, getEyeColor,

setHeight, setHairColor, setEyeColor setHeight, setHairColor, setEyeColor What do object instances have in common? What do object instances have in common? How are objects instances different?How are objects instances different?

Page 11: The Big Picture of Software Development Glenn Blank Professor of Computer Science Lehigh University

Multimedia about Multimedia about Classes and objectsClasses and objects

Everyone gets a CIMEL Everyone gets a CIMEL loginlogin

CIMEL means CIMEL means Constructive Inquiry-Based Multimedia Constructive Inquiry-Based Multimedia

E-LearningE-Learning

Page 12: The Big Picture of Software Development Glenn Blank Professor of Computer Science Lehigh University

JVMJVM Java programming language Java programming language compilercompiler

(javac)(javac) A program that translates Java language A program that translates Java language

source code into the Java Virtual Machine source code into the Java Virtual Machine (JVM) byte codes(JVM) byte codes

JVM – Java Virtual Machine JVM – Java Virtual Machine A program that interprets and executes A program that interprets and executes

byte codes byte codes Can interpret and execute Java byte codes Can interpret and execute Java byte codes

on any computer platform (PC, Mac, Unix)on any computer platform (PC, Mac, Unix)

Page 13: The Big Picture of Software Development Glenn Blank Professor of Computer Science Lehigh University

Integrated Development Integrated Development EnvironmentEnvironment

IDEIDE An environment where An environment where

programmers develop software programmers develop software Eclipse is an industrial strength Eclipse is an industrial strength

IDEIDE DrJava is a novice-oriented IDEDrJava is a novice-oriented IDE

Page 14: The Big Picture of Software Development Glenn Blank Professor of Computer Science Lehigh University

Object Oriented Software Design

Design a system as a set of classesDesign a system as a set of classes Expresses as a class diagramExpresses as a class diagram Unified Modeling Language (UML) is a standardUnified Modeling Language (UML) is a standard

OO software encourages software OO software encourages software reusereuse For example, reuse input/output, graphics classesFor example, reuse input/output, graphics classes Java comes with a large library of reusable classesJava comes with a large library of reusable classes

Why is reuse a good idea?Why is reuse a good idea? Avoid re-inventing the wheel—cuts costsAvoid re-inventing the wheel—cuts costs Lets developers focus on new thingsLets developers focus on new things Reliability: reusable software gets tested moreReliability: reusable software gets tested more