Sei sulla pagina 1di 34

Software Development

Introduction
Koen Pelsmaekers
Team Informatie & ICT@groept (GT 03.14.05)
examombuds/studytrack counselor (GT 01.4/02.1)
email: koen.pelsmaekers@kuleuven.be

Software Development
KP

2016-2017
-1-

Who am I?

@Groep T: 1986
40% ict/examombuds/study track counselor

my.groupt.be: exam schedule, ...


EPOS: big project for Groep T's former Education College

60% programming courses

Long, long ago.... Pascal, C, C++


Java (first Java course in 1997)

35+ database tables, 500+ src-files, heavily used

Software Development
Lab OOP (sometimes)

Master EA/ICT: Web Apps (partial)/Distributed


Applications

Room GT 03.14.05 (or GT 01.4.02/1)

Software Development
KP

2016-2017
-2-

Language information

Multilangual course?

lectures

course is given in Dutch and in English

(2nd term only in English or Dutch)

slides in English (if problems... ask!)

excercises/labs

Dutch and English in same group: be polite!


primary language: English
in case of emergency: I don't understand it at all
--> Dutch

Prof. Lewi (KU Leuven, 1984): "English is a programming language..."


Software Development
KP

2016-2017
-3-

Goal

Principles of Software Engineering

Advanced object-oriented programming

Process, Notation
Polymorphism (interface) and dynamic or polymorphic
binding
Data structures/streams/lambdas
Refactoring and Design patterns
Parallellism (multithreading), Recursion, ...

Implementation in Java (7 or 8)

Good OO programming language (better than C, C++)


Many, many packages with useful classes
Used in many different domains

Software Development
KP

2016-2017
-4-

Content

Software development process


UML
OO support in Java (Java SE* == "desktop Java")
Design patterns
Frameworks (f.i. Collections, ), Streams/Lambdas
Refactoring
Iterative design
Recursion, parallel programming
Programming exercises

Language features of Java


Programming in the larger

(bigger programs than in your second bachelor)

Software Development
KP

2016-2017
-5-

*SE = Standard Edition

Prerequisite knowledge

Object Oriented Programming in Java


or
Other OO-language (C#, C++, Objective-C, )
or
Self learning

Software Development
KP

Chapter 1: A Crash Course in Java (next slide)


or
Book: Objects First with Java (2nd stage)

2016-2017
-6-

Documentation and software

Lectures

Slides (in pdf) on toledo (jit)


Book:
Object-Oriented Design & Patterns
2nd ed., Cay Hortsmann
ISBN 978-0-471-74487-0,
John Wiley & Sons, 2006.

Available in pdf

Lab

Software Development
KP

On-line documentation (and assignments)


Software: NetBeans, Eclipse, JDK 8, BlueJ, Android
Studio, ...
2016-2017
-7-

Interesting Books

Design Patterns, Elements of Reusable Object-Oriented Software,


Software
Erich Gamma et al., 0-201-63361-2, Addison-Wesley, 1994. [GoF]
Thinking in Java (3rd ed.), Bruce Eckel, 0-13-100287-2, Prentice Hall,
2003.
pdf (free!) see http://www.mindviewinc.com (3rd ed./not 4th
ed.)
Thinking in C++, Thinking in Patterns, ...
Java the UML Way, Integrating Object-Oriented Design and
Programming, Else Lervik and Vegard B. Havdal, 0-470-84386, Wiley,
2002.
... in a Nutshell, O'Reilly (JFC, Java, ...)
JDJ (Java Developers Journal)
(http://www.javadevelopersjournal.com)
... (> 1000 books on Java Technology!)

Software Development
KP

2016-2017
-8-

Two special books....


Object-Oriented Software Development Using Java;
Principles, Patterns, and Frameworks, 2nd ed., Xiaoping
Jia, ISBN 0-201-73733-7, Addison-Wesley, 2003.
(Some examples in lectures)

Clean Code: A Handbook of Agile Software


Craftsmanship, Robert C. Martin, ISBN-10:
0132350882, ISBN-13: 9780132350884, Prentice
Hall, 2009.
(One of the programmer's bibles)

Software Development
KP

2016-2017
-9-

On-line documentation

Unified Process

http://en.wikipedia.org/wiki/Unified_Process
http://en.wikipedia.org/wiki/Rational_Unified_Process
http://www-128.ibm.com/developerworks/rational
http://www.augustana.ab.ca/~mohrj/courses/2000.winter/csc22
0/papers/rup_best_practices/rup_bestpractices.html
Open Unified Process (OpenUp)

http://www.eclipse.org/epf

...

UML

Software Development
KP

http://en.wikipedia.org/wiki/Unified_Modeling_Language
http://www.uml.org/
http://www-306.ibm.com/software/rational/uml/
...
2016-2017
- 10 -

On-line documentation (cont.)

Java

Stackoverflow: highly active forum


Devoxx (The Java community conference, 2nd biggest Java
conference in the world; held in Belgium!) (from BeJUG)

Voxxed (www.voxxed.com)

www.devoxx.com
Voxxed is a place for developers to share news, tutorials, spotlight
projects, or just throw out ideas. Got something to say? Then get
clicking. We want to hear from you!

Java (and other) talks

www.parleys.com
TheServerSide (enterprise Java)

Software Development
KP

www.theserverside.com
2016-2017
- 11 -

Organisation of the course

5 credits
== > 1/12th or 138-150 hours of your s tudy-e ffort this ac ade mic ye ar

Lectures

24 hours (12 x 2 hours/week)


exam (open book/with computer usb-stick with docs, no
internet)

Lab

Jonas Geuens, Karsten Gielis, Jeroen Van Aken, Jeroen


Wauters, Koen Pelsmaekers
Evaluation: continuous assessment and (small) project
Use of development tools

Eclipse, NetBeans, JUnit, UML, Java 8, Android Studio ...

Organisation

Software Development
KP

36 hours (12 x 3 hours/week)


2016-2017
- 12 -

Course info@Groep T

Site

Toledo course

Content

all practical information (timings, lab sessions, ...)


downloadable slides
exercises
discussion board
...

Lab session Tuesday 29 September 2016


9u00-12u00 for Jeroen Van Aken/Koen Pelsmaekers??
Software Development
KP

2016-2017
- 13 -

Object-oriented Software
development
is
The key to modern
Software engineering...
(cfr. 2nd pase)

Software Development
KP

2016-2017
- 14 -

Structured Programming

'70: Good Programming == Structured Programming


+ language support (Pascal, C, ...)
Real world

Semantic gap

Software == procedural

Software Development
KP

2016-2017
- 15 -

xxxxxxxxx
xxxxxx
xxxxxxxxxxxxxxxxxxxxxx
xxxxxx
xxxxxx
xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx
xxxxxx
xxxxxxxxx
xxxxxxxxxxxxxxxxxxx
xxxxxx
xxxxx
xxxxxxxxxxxxx
xxxxxxxxxxxx
xxxxxx
xxxxxxxxxxxxxxxxxxx
xxxxx
xxxxxxxxxxxx

Problems with software

On January 15, 1990, the AT&T long-distance telephone network broke


down, interrupting nationwide long-distance telephone services in the United
States for more than 8 hours. An ill-placed break statement in the switching
software, written in the C language, was to blame for the breakdown.
On June 4, 1996, the maiden flight of the new and improved Ariane5
communication satellite launcher developed by the European Space Agency
exploded 37 seconds after liftoff. An incorrectly handled software exception
resulting from converting a 64-bit floating point to a 16-bit signed integer
caused the disaster.
On June 8, 2001, a software problem in the new trading software installed
overnight for the New York Stock Exchange caused failures in trading on
half of the floor of the exchange and forced the NYSE to shut down the
entire trading floor for more than an hour.
In september 2010 the new Corona software to register student-enrollments
did not finish within schedule; all students had to wait and wait and wait
until appr. September 24th to enroll again.

Software Development
KP

2016-2017
- 16 -

Problems with software (cont.)

Software crisis:

Projects running over-budget.


Projects running over-time.
Software was/is of low quality.
Software often did not meet requirements.
Projects were unmanageable and code difficult to maintain
and reuse
Changes in user requirements 42%

Semantic gap

Development: 30% of budget


Maintenance: 70% of budget

Changes in data format


Changes for emergency
Debugging
Documentation
Others

Analysis vs. Design/Implementation

Solution

Software engineering based on object-oriented paradigm


Software Development
KP

2016-2017
- 17 -

17%
12%
9%
6%
7%

Object-oriented Programming
'90: Good Programming == Object-oriented Programming
+ language support (Smalltalk,
C++, Java, ...)
Real world
Software == OO
Pol
drives
Car

House

Software Development
KP

2016-2017
- 18 -

lives in

Benefits of OO

Better modelling of the real (complex!) world


Requirements == Analysis == Implementation

Less and easier maintenance

Higher level of abstraction

less sensitive to changes


locality of change

Quality control for software


Reusable code (long term)
Writing generic code is difficult

Delay of implementation details


Objects can be changed easily

Fast release cycle

Software Development
KP

2016-2017
- 19 -

Software Development
KP

2016-2017
- 20 -

Software Development
Or
Software engineering

Software Development
KP

2016-2017
- 21 -

Software engineering

What?

SW engineering is the discipline whose aim is the


production of defect-free software, delivered on time and
within budget, that satisfies the clients needs

Software engineering involves

the entire life cycle of SW development:

requirements, analysis, design, implementation, testing,


deployment, maintenance, product version control, ...

both management and technical aspects of software


development

Software Development
KP

project team management, project planning, resource


management, ...
2016-2017
- 22 -

Software engineering (cont.)

Software engineering is a "natural" thing to do

Software Development
KP

2016-2017
- 23 -

Software engineering (cont.)

Motivation

Where is a specification of the system?


Is the specification accurate and does it correspond to the
customer's needs?

Where is the architecture of the system? Who is doing what


(most projects are complex and require a multi-person team)?

Where is the test-plan? How do you prove your system works


correctly? How do you track error reports?

How do you track changes in the customer's need?

How do you manage your code (versioning system)?

Where is your project plan? When is the product ready to ship to


the customer? Does your organisation have the resources to
build the system? Are they available at the right time?

How about the deployment, support, ...?

How about maintenance?

Software Development
KP

2016-2017
- 24 -

Software engineering (cont.)

Need for:

Engineering process

Unified Process (no consensus)

Rational Unified Process (RUP)


Extreme Programming (XP)
Agile Unified Process (AUP)
Enterprise Unified Process (EUP)
Microsoft Solutions Framework (MSF)
Open Unified Process (OpenUP)

Way to communicate

Unified Modeling Language (UML)

Software Development
KP

with customer
with teammembers
way to document, to communicate about the system being built
"the" standard notation
2016-2017
- 25 -

Simple process model

In the simplest cases, code is written direct from some


statement of requirements

Software Development
KP

2016-2017
- 26 -

A More Complex Process

On larger projects, intermediate pieces of


documentation are produced

Software Development
KP

2016-2017
- 27 -

Waterfall model

Development modelled as a series of stages

Software Development
KP

stages take place in sequence


each activity is completed before the next stage starts

2016-2017
- 28 -

Problems with waterfall

Software development is unpredictable

Only testing can validate success of system

The waterfall model postpones testing until the end of the


lifecycle
This creates high risk:

we don't find out that the system is failing until the bulk of
the development has been carried out

Software Development
KP

2016-2017
- 29 -

Waterfall and requirements

Requirements always change

complexity of many software systems

systems fit into complex environments

requirement change following installation

flexibility of software makes change seem easy

Waterfall model fixes requirements at start

Inflexible: likely to fail if requirements change

Software Development
KP

2016-2017
- 30 -

Evolutionary process models

Iterative

Incremental

various development activities


get carried out repeatedly
during development
don't plan to carry out all
project in one go, but spread
over a number of increments

Example:
Spiral Model
System evolves toward
final form

changes inspired by user feedback


on prototypes

Software Development
KP

2016-2017
- 31 -

Best of both worlds?

Waterfall model

Identification of the different activities involved in software


development
Artefacts produced after every step

Evolutionary model

Incremental
Iterative
Early production of code

=> Overall model of software engineering

(Ag ile * proc e s s e s )

Unified Process

*agile: lenig, behendig


Software Development
KP

2016-2017
- 32 -

Manifesto for Agile Software Development

We are uncovering better ways of developing


software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
[www.agilemanifesto.org]
Software Development
KP

2016-2017
- 33 -

Object-oriented Software
development
is
The key to modern
Software engineering...
(cfr. 2nd phase)

Software Development
KP

2016-2017
- 34 -

Potrebbero piacerti anche