Advanced Computing Tools
for Applied Research
Chapter 1. Introduction to
software engineering
Jaime Boal Martín-Larrauri
Rafael Palacios Hielscher
Academic year 2014/2015
1
Introduction
Chapter 1. Introduction to software engineering Escuela Técnica Superior de Ingeniería (ICAI)
Advanced Computing Tools for Applied Research | MRE Universidad Pontificia Comillas 2
Types of software developers
Many people write programs
• Amateur
Business people Spreadsheets
Scientists and engineers Simulation and data analysis tools
Hobbyists…
• Professional
Application suites (productivity software, graphic design, IDEs…)
Mobile and web app developers
Video game developers…
What are the fundamental differences
between amateur and professional software?
Chapter 1. Introduction to software engineering Escuela Técnica Superior de Ingeniería (ICAI)
Advanced Computing Tools for Applied Research | MRE Universidad Pontificia Comillas 3
Amateur vs. professional software development
Amateur software Professional software
Number of Single (or a very
Team
developers reduced group)
Number of Many
Very limited
end-users (potentially millions)
Optional
Documentation Essential
(though recommended)
Software is more than code
• Program design documentation, user guides…
Software engineering intends to support professional software
development
What kind of software should
you be developing? Why?
Chapter 1. Introduction to software engineering Escuela Técnica Superior de Ingeniería (ICAI)
Advanced Computing Tools for Applied Research | MRE Universidad Pontificia Comillas 4
What makes good software?
Chapter 1. Introduction to software engineering Escuela Técnica Superior de Ingeniería (ICAI)
Advanced Computing Tools for Applied Research | MRE Universidad Pontificia Comillas 5
Types of applied research applications
Industrial
• Embedded, real-time, safety-critical
• E.g. Data collection and control systems
Interactive transaction-based
• Databases, distributed access, communications, HMI
• E.g. Web applications
Scientific and technical
• Simulation, optimization, planning
• E.g. Modeling tools
You typically need to combine elements from all of them
Chapter 1. Introduction to software engineering Escuela Técnica Superior de Ingeniería (ICAI)
Advanced Computing Tools for Applied Research | MRE Universidad Pontificia Comillas 6
Spiral software development
1. Specification &
2. Implementation
Design
Releases
(Alpha, Beta, RC, RTM)
4. Analysis & 3. Testing &
Evolution Validation
Chapter 1. Introduction to software engineering Escuela Técnica Superior de Ingeniería (ICAI)
Advanced Computing Tools for Applied Research | MRE Universidad Pontificia Comillas 7
2
System modeling
Chapter 1. Introduction to software engineering Escuela Técnica Superior de Ingeniería (ICAI)
Advanced Computing Tools for Applied Research | MRE Universidad Pontificia Comillas 8
Unified Modeling Language (UML)
Start coding right away is a bad idea
• In the long run you need to rewrite most of it
DESIGN BEFORE CODING!
UML is a set of universally standard diagram types to model
software systems from different perspectives
These diagrams are used throughout the development process
• Facilitate discussion during requirements elicitation
• A detailed description makes implementation easier
• Technical documentation when the project is over
They need to be kept up-to-date!
Chapter 1. Introduction to software engineering Escuela Técnica Superior de Ingeniería (ICAI)
Advanced Computing Tools for Applied Research | MRE Universidad Pontificia Comillas 9
UML diagrams
Structure diagrams Behavior diagrams
Use case diagram
Class diagram
Object diagram Activity diagram
Package diagram State machine diagram
Composite structure diagram Interaction diagram
Component diagram Sequence diagram
Communication diagram
Deployment diagram
Timing diagram
Profile diagram Interaction overview diagram
Check http://www.uml-diagrams.org for details
Chapter 1. Introduction to software engineering Escuela Técnica Superior de Ingeniería (ICAI)
Advanced Computing Tools for Applied Research | MRE Universidad Pontificia Comillas 10
Structure diagrams | Class diagram
Chapter 1. Introduction to software engineering Escuela Técnica Superior de Ingeniería (ICAI)
Advanced Computing Tools for Applied Research | MRE Universidad Pontificia Comillas 11
Behavior diagrams | Use case diagram
Chapter 1. Introduction to software engineering Escuela Técnica Superior de Ingeniería (ICAI)
Advanced Computing Tools for Applied Research | MRE Universidad Pontificia Comillas 12
Behavior diagrams | Activity diagram
Chapter 1. Introduction to software engineering Escuela Técnica Superior de Ingeniería (ICAI)
Advanced Computing Tools for Applied Research | MRE Universidad Pontificia Comillas 13
Behavior diagrams | State machine diagram
Chapter 1. Introduction to software engineering Escuela Técnica Superior de Ingeniería (ICAI)
Advanced Computing Tools for Applied Research | MRE Universidad Pontificia Comillas 14
Behavior diagrams | Sequence diagram
Chapter 1. Introduction to software engineering Escuela Técnica Superior de Ingeniería (ICAI)
Advanced Computing Tools for Applied Research | MRE Universidad Pontificia Comillas 15
Some UML tools
Browser
Desktop
Chapter 1. Introduction to software engineering Escuela Técnica Superior de Ingeniería (ICAI)
Advanced Computing Tools for Applied Research | MRE Universidad Pontificia Comillas 16
Takeaways
Software is much more than code
• Remember what makes good software
Software development should be incremental
Not all applications are the same
• Always bear in mind your particular requirements
Modeling your tool before you start coding is worth the effort
• Prevents misunderstandings of the specification
• Improves communication within the development team
Chapter 1. Introduction to software engineering Escuela Técnica Superior de Ingeniería (ICAI)
Advanced Computing Tools for Applied Research | MRE Universidad Pontificia Comillas 17