Ese 01eseintro
Ese 01eseintro
Mircea F. Lungu
Mircea F. Lungu
Lecturer
scg.unibe.ch/staff/mircea
Andrea Caracciolo
Assistants
Andrei Chiș, Bledar Aga
Engehaldenstrasse 8, 001,
Lectures
Wednesdays @ 13h15-15h00
Engehaldenstrasse 8, 001
Exercises
Wednesdays @ 15h00-16h00
WWW scg.unibe.ch/teaching/ese
2
Roadmap
3
Roadmap
4
Principle Texts
6
Lecture schedule
18 Sep Introduction
25 Sep Requirements Collection
2 Oct Guest Lecture: Processes & Scrum
9 Oct Usability and UI
16 Oct Architecture
23 Oct Good Software Design
30 Oct Validation and Testing
6 Nov Documenting Design with UML
13 Nov Software Quality
20 Nov Software Assessment Tutorial
27 Nov Software Evolution
4 Dec Empirical Software Engineering
11 Dec TBD
18 Dec Project showcase
7 Jan Final Exam 7
Project
8
Grading
Project =
0.1 * Cross-Project Code Review +
0.4 * Code/Design Quality & Documentation +
0.4 * Functionality & Usability (lack of bugs, richness of features) +
0.1 * Final Presentation
9
Roadmap
10
Why Software Engineering?
coding
Problem Specification " " Final Program
11
But ...
Where did the specification come from?
How do you know the specification corresponds to the user’s needs?
How did you decide how to structure your program?
How do you know the program actually meets the specification?
How do you know your program will always work correctly?
What do you do if the users’ needs change?
How do you divide tasks up if you have more than a one-person team?
What is Software Engineering?
12
13
Team-work
Scale issue (“program well” is not enough) + Communication Issue
15
This definition is mine, not of a famous person. But it is important to accentuate the fact that a successful system is a function of much more
than programming.
Every one of you should be able to implement Facebook by the end of your bachelor. The reason why there is only one Facebook is
everything else they did right besides programming. Plus luck.
Software Engineering and Computer Science
16
The relationship between software engineering and computer science is the same as that between mechanical engineering disciplines and
physics. One supports the other. Only that the difference between CS and SE is much smaller.
http://commons.wikimedia.org/wiki/File:Mechanical_engineer_G._C._van_Vlaanderen_making_some_adjustments_to_previous_model_of_cable_cars_in_1973.jpg
Roadmap
17
The Classical Software Lifecycle
The classical software lifecycle models the software development as a step-by-step “waterfall” between the various development phases.
Problems with the Waterfall Lifecycle
19
“Real projects rarely follow the sequential flow that the model proposes. Iteration always occurs and creates problems in the application of the
paradigm”
“It is often difficult for the customer to state all requirements explicitly. The classic life cycle requires this and has difficulty accommodating the
natural uncertainty that exists at the beginning of many projects.”
“The customer must have patience. A working version of the program(s) will not be available until late in the project timespan. A major blunder,
if undetected until the working program is reviewed, can be disastrous.”
— Pressman, SE, p. 26
Requirements must be frozen too early in the life-cycle and the implementation is validated too late
However, this depends on the type of the application. When one is implementing the Mars rover, things might be different.
Iterative Development
How do you plan the number of iterations?
How do you decide on completion?
20
You won’t get it right the first time, so integrate, validate and test as frequently as possible.
Show your prototype early to the user. Andrew Begel: “After the first minute of watching somebody use my tool, I know a lot of things I
have to fix”.
Incremental Development
Proposed by Millis in
1980.
21
22
Nowadays we do not have the same model as 50 years ago. We do not ship software in boxes. The current approach to deployment has
changed. Systems like GitHub and Facebook are notorious for continuously deploying new features.
How can you be sure that your small change will not interfere with other features?
- automatic testing
- testing with small groups of users then A/B testing
Roadmap
23
Requirements Collection
Requirements are
informal,
incomplete, and
ambiguous
24
Although requirements may be documented in written form, they may be incomplete, ambiguous, or even incorrect.
25
Validation is needed throughout the software lifecycle, not only when the “final system” is delivered!
build constant feedback into your project plan
plan for change
early prototyping [e.g., UI] can help clarify requirements
Requirements Analysis and Specification
a specification
26
Analysis is the process of specifying what a system will do. The intention is to provide a clear understanding of what the system is about and
what its underlying concepts are. A very good example of analysis is present in the Hyperloop documents leaked by Elon Musk. There one
can see that the problem has been studied in detail, and a solution has been outlined only in order to conduct further discussions.
Beware: what is not specified, remains at the attribution of the individual developer. And sometimes this is not what you want.
Specification is even more important when you develop software for yourself.
Prototyping
27
A prototype is a software program developed to test, explore or validate a hypothesis, i.e. to reduce risks.
An exploratory prototype, also known as a throwaway prototype, is intended to validate requirements or explore design choices.
UI prototype — validate user requirements
rapid prototype — validate functional requirements
experimental prototype — validate technical feasibility
Image: http://www.youtube.com/watch?v=TeS_U9qFg7Y
Object-Oriented Analysis and Design
28
Image: http://paulgestwicki.blogspot.ch/2013/02/spring-2013-game-studio-modeling-first.html
Implementation and Testing
29
Testing is the process of validating that the solution meets the requirements.
The result of implementation and testing is a fully documented and validated solution.
30
“Maintenance” entails:
- configuration and version management
- reengineering (redesigning and refactoring)
- updating all analysis, design and user documentation
Roadmap
31
Methods and Methodologies
Tools
Methodologies
Principle
32
Object-Oriented Methods: a brief history
34
Can you answer these questions?
35
Attribution-ShareAlike 3.0
You are free:
▪ to copy, distribute, display, and perform the work
▪ to make derivative works
▪ to make commercial use of the work
Attribution. You must attribute the work in the manner specified by the author or
licensor.
Share Alike. If you alter, transform, or build upon this work, you may distribute the
resulting work only under a license identical to this one.
▪ For any reuse or distribution, you must make clear to others the license terms of this work.
▪ Any of these conditions can be waived if you get permission from the copyright holder.
Your fair use and other rights are in no way affected by the above.
http://creativecommons.org/licenses/by-sa/3.0/
All images that are not otherwise attributed, are from wikipedia.