SlideShare uma empresa Scribd logo
1 de 63
Baixar para ler offline
Ivano Malavolta
Software systems engineering
PRINCIPLES
Hello
Software Architecture & Model-Driven Engineering
applied to
Autonomous drones
Mobile applications
Web technologies
If you think good architecture is expensive,
try bad architecture.
... Brian Foote and JosephYoder
Course website
http://lore.com/SSS2016
BF9M2X
Course overview
Module name #hours Instructor
Introduction to the course 2 Inverardi
Software engineering principles and research 4 Malavolta
Software development process 2 Malavolta
Eclipse IDE 2 Iovino
Collaborative software development 1 Malavolta
Model-based design and development 8 Iovino
Software architecture 6 Malavolta
LAB 2 Iovino, Malavolta
Modern development paradigms 2 Malavolta
Principles of software testing and dependability 2 Bertolino
Homework 1
Christmas break
Homework 2
Homework 1
Tasks
• create an AADL specification describing the architecture of a chosen system
• write an Acceleo program or an ATL transformation that takes as input the
AADL model and produces some report or other artifact
• write a report describing the performed activities
Goals
• to understand what are the advantages of SE principles like abstraction and
separation of concerns
• to concretely understand what architectural modeling means
• to be exposed to concerns and issues related to dependability
• to understand how to use MDE techniques like model transformations and
code generators
Tentative deadline
20/12/2015
Homework 2
Tasks
• pick a set of articles related to a chosen research theme
• carefully read them and explore the state of the art about the research
theme
• write a report about your findings
• make a brief presentation to the classroom
Goals
• to have the chance to study a specific area of software engineering that
may be of interest to each student
• to be exposed to a specific problem in software engineering
• to start being trained in reading and writing scientific papers
Tentative deadline
15/01/2016
Research themes will
be available soon
Roadmap
Introduction
Software qualities
Principles
Software today
Where is software today?
Software today
How “big” is software today?
http://www.informationisbeautiful.net/visualizations/million-lines-of-code/
http://hbr.org/2010/06/why-dinosaurs-will-keep-ruling-the-auto-industry/ar/1
Needs
To DESIGN software
– software development has to be a systematic activity
QUALITY assurance
– we have to verify and validate our SW in order to make it
something people can rely on
– we have to do it as soon as possible
ABSTRACTION
– the principal instrument for managing complexity
The application of engineering to software
Field of computer science dealing with software systems
that are:
– large and complex
– built by teams
– exist in many versions
– last many years
– undergo changes
Programming skills are not enough
“Physicist example”
Software engineering
Programmer:
complete program
Software engineer:
software component
What is part of software
engineering?
http://wonderfulengineering.com/what-is-software-engineering/
Software engineering vs computer
science
Computer Science
– Computability, algorithms and complexity, programming
languages, data structures, databases, artificialintelligence,
etc.
Software Engineering
– The APPLICATION of computer science, mathematics,
project management to build high quality software
Roadmap
Introduction
Software qualities
Principles
Representative SW qualities
Correctness
Reliability
Robustness
Performance
Usability
Maintainability
Reusability
Portability
Understandability
Interoperability
Repairability
Evolvability
Correctness
Software is correct if it satisfies the functional
requirements specifications
– assuming that specification exists!
If specifications are formal, since programs are formal
objects, correctness can be defined formally
– It can be proven as a theorem or disproved by
counterexamples (testing)
Improved by:
• Appropriate tools
• Standard algorithms and libraries
• An established development process
The limits of correctness
It is an absolute (yes/no) quality
– there is no concept of “degree of correctness”
– there is no concept of severity of deviation
What if specifications are wrong?
– (e.g., they derive from incorrect requirements or errors in
domain knowledge)
Reliability
Informal definition:
software is reliable if the user can depend on it
can be defined mathematically as “probability of absence of
failures for a certain time period”
Improved by:
• Fault avoidance (e.g., careful design)
• Fault tolerance (e.g., redundancy)
• Fault detection (e.g., testing)
Reliability
Hardware reliability
Software reliability?
http://users.ece.cmu.edu/~koopman/des_s99/sw_reliability/
Reliability metrics
http://users.ece.cmu.edu/~koopman/des_s99/sw_reliability/
Software behaves “reasonably” even in unforeseen
circumstances (e.g., incorrect input, hardware failure)
Robustness
Robustness vs correctness vs reliability?
Improved by:
• Software monitoring
• Defensive programming
Example: the MAPE-K loop
http://www.cs.kent.ac.uk/people/rpg/cb492/saaf/concept.html
Performance
Efficient use of resources
– memory, processing time, communication
Can be evaluated:
– algorithms complexity
– measurement of the implemented system
– analysis of a model (e.g., using queuing theory)
– simulation
Performance can affect scalability
– e.g., a solution that works on a small local network
may not work on a large intranet
Improved by:
• Considering it during design
• Small-scale code optimization
Usability
Expected users find the system easy to use
– otherterm: user-friendliness
Rather subjective, difficult to evaluate
Affected mostly by user interface
• e.g., visual vs. textual
Can the user interface impact reliability?
(Performance and correctness) vs usability?
Improved by:
• User-centred design process
• Adaptable user interfaces
Maintainability
Maintainability: ease of maintenance
àMaintenance: changes after release
Maintenance costs exceed 60% of total cost of software
Three main categories of maintenance
– corrective: removing residual errors (20%)
– adaptive: adjusting to environment changes (20%)
– perfective: quality improvements (>50%)
See it as software evolution
Improved by:
• Modular design
• Well-defined interfaces
• Good documentation
Maintainability
Can be decomposed as
– Repairability
• ability to correct defects in reasonable time
– Evolvability
• ability to adapt SW to environment changes and to improve it
in reasonable time
Repairability vs modularity?
Ever heared about software product lines?
Reusability
Existing product (or components) used (with minor
modifications) to build another product
– e.g., software libraries, jQuery plugins
Also applies to process
Reuse of standard parts measure of maturity of the field
Improved by:
• Modular design
• Well-defined interfaces
• Parameterization
• Good documentation
Portability
Software can run on different HW platforms or SW
environments
Remains relevant as new platforms and environments
are introduced (e.g. digital assistants)
Relevant when downloading software in a
heterogeneous network environment
Improved by:
• Isolation of dependencies
on environment
• Layered architectures
• Virtual machines
Understandability
Ease of understanding software
Maintainability vs understandability?
Is it internal or external?
Improved by:
• Modular design
• Well-defined models
• Good documentation
Understandability
RichardWettel, Michele Lanza: CodeCity: 3D visualization of large-scale software. ICSE
Companion 2008: 921-922
Interoperability
Ability of a system to coexist and cooperate with other
systems
– e.g., OSX + iOS
– OSGI
Can be achieved via standardization of interfaces
Examples?
• Browser plug-ins
• The whole open data movement!
Improved by:
• Well-documented interfaces
• Standard interface formats
e.g., XML,JSON objects
Exercise
Show graphically the interdependence of the SW qualities
Correctness
Reliability
Robustness
Performance
Usability
Maintainability
Reusability
Portability
Understandability
Interoperability
Repairability
Evolvability
Question-time
Is this “software engineering”?
Roadmap
Introduction
Software qualities
Principles
Application of principles
Principles apply to process and product
Principles become practice through methods and
techniques
– often methods and techniques are packaged in a methodology
– methodologies can be enforced by tools
Principles
Methodologies
Principles
Methods
and techniques
Methodologies
Tools
Application of principles
Principles
Methodologies
Principles
Methods
and techniques
Methodologies
Tools
Principles:
General and abstract descriptions
of desirable properties of
products and processes
Methods:
General guidelines
that govern activities
Techniques:
More technical and
mechanic than methods
Methodologies:
Preselected
methods
and techniques
Tools:
Software for applying
methodologies
Key principles
• Rigor and formality
• SEPARATION OF CONCERNS
• MODULARITY
• ABSTRACTION
• Anticipation of change
• Generality
• Incrementality
Rigor and formality
Software engineering is a creative design activity, BUT
it must be practiced systematically
Rigor is necessary to:
– repeatedlyproduce reliable products
– control their costs
Formality is rigor at the highest degree
– software process driven and evaluated by mathematical laws
– opens to automation
Examples
• Mathematical (formal) analysis of program
correctness
• Systematic (rigorous) test data derivation
• Rigorous documentation of development steps helps
project management and assessment of timeliness
More on formality
No need to be always formal during design
The engineer must know how and when to be formal
Requirements
Analysis
System design
Detailed Design
Implementation
Validation
Requirements
Analysis
System design
Detailed Design
Implementation
Validation
GSSI website GSSI automatic doors
Separation of concerns
Edsger Dijkstra; On the role of scientific thought; EWD447; 30th August 1974
Why separation of concerns?
Helps you focus
– easier to pay attention to one thing at a time
– put some complexities aside
– separate out critical functions
Encourages decoupling
– disentangle aspects that seemed intertwined
Supports parallelization of efforts and separation of
responsibilities
Dimensions of separation of concerns
Complexity
Time
(waterfall model)
Size
(modularization)
Qualities
(correctness, and
performance later)
Views
(data flow,
control flow)
Example: concerns in a mobile app
Information	
Architect
UI
Designer
App
Developer
Back-end	
Developer
Experience Security Performance
Upgradability
Schedule
Cost
Content
Management
Product	
Strategy
Example: compiler
Correctness is primary concern
Other concerns:
– Efficiency of compiler and of generated code
– User friendliness (helpfulwarnings, etc.)
Example of interdependencies:
runtime diagnostics vs. efficient code
– Diagnostics simplifytesting, but create overhead
– Typical solution: option to disable checks
Modularity
A complex system may be divided into simpler pieces
called modules
A system that is composed of modules is called modular
Supports application of separation of concerns
– when dealing with a module we can ignore details of other
modules
Modularity is the basis for understandabilityà software evolution
Modularity VS reusability?
Cohesion and coupling
Each module should be highly cohesive
– module understandable as a meaningful unit
– components of a module are closely related to one another
Modules should exhibit low coupling
– modules have low interactions with others
– understandable separately
imagebyPeterMüller
Example: web reputation dashboard
quindi$inclusi$in$una$dashboard.!!
!
In$ Figura$ che$ segue$ è$ riportata$ l’architettura$ software$ dello$ strumento$ proposto,$ dove,$ con$ linee$
spesse,$ è$ indicato$ il$ flusso$ dei$ dati$ mentre,$ con$ linee$ sottili,$ sono$ mostrate$ le$ interazioni$ tra$
componenti$software$o$tra$componenti$e$sorgenti$dati.$$Ad$interrompere$il$flusso$di$elaborazione$è$
riportato$ un$ database,$ che$ è$ popolato$ con$ informazioni$ relative$ ai$ contenuti$ testuali$ di$ interesse$ e$
arricchito$con$i$valori$relativi$alle$stime$di$polarità$e$topics.$$$
!
!
!
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$DB$
FB$connector$
Data$
Aggregator$
TP$connector$
Sentiment$
analyzer$
Topic$extractor$$
Dashboard$
I
D$
ID$ ID$ ID$ ID$ ID$
$$$$id$ $$$$testo$$$$$$$$$prov$ $$timestamp$$$$$polarity$$$$$$$$$$topics$
$$$$$$$$tw/fb$ $$$$$$$$$$T1/+1$$$$$$$$$T1/+1$
TW$connector$
connector$
Facebook$
$
Twitter$
$
Telpress$
$
Abstraction
Given a difficult problem/system, extract a simpler view
of it, avoiding unneeded details
Abstraction in software engineering:
– Models of the realworld (omit irrelevant details)
– Subtyping and inheritance (factor out commonalities)
– Interfaces and information hiding (hide implementation
details)
– Structured programming (loops, methods)
– Layered systems (hide deeper layers in the stack)
Abstraction
Engineers abstract away from a number of details that can
be ignored SAFELY
Example:
– equations describing complex circuit (e.g., amplifier allows
designer to reason about signal amplification)
– equations may approximate description, ignoring details that yield
negligible effects (e.g., connectors assumed to be ideal)
Example: mobile app navigation
Anticipation of change
It is very rare in reality that requirements are fully
understood and freezed since the beginning of the project
Ability to support software evolution à anticipating potential
future changes
It is the basis for software EVOLVABILITY and REUSABILITY
How does it relate to modularity?
Example: sorting algorithm
http://en.wikibooks.org/wiki/Algorithm_Implementation/Sorting/Quicksort#JavaScript
Generality
While solving a problem, try to discover if it is an instance of
a MORE GENERAL PROBLEM
– Sometimes a generalproblem is easier to solve than a
special case
– A solution to a more generalproblem may be already
provided by off-the-shelf packages
– A solution to a more generalproblem can be reused in
other cases
Carefully balance generality against performance and cost
Incrementality
Process proceeds in a stepwise fashion (increments)
Examples (process)
– deliver subsets of a system early to get early feedback from
expected users, then add newfeatures incrementally
– deal first with functionality, then turn to performance
• this may be risky
– deliver a first prototype and then incrementally add effort to
turn prototype into product
Ever eared about user-centered design?
Analysis&
Planning
Launch
http://paznow.s3.amazonaws.com/User-Centred-Design.pdf
User-centred design
Case study
Mirco Franzago, Henry Muccini,Ivano Malavolta:Towards a collaborative framework for the design and development of data-
intensive mobile applications.MOBILESoft 2014
Key principles
•  Rigor and formality
•  SEPARATION OF CONCERNS
•  MODULARITY
•  ABSTRACTION
•  Anticipation of change
•  Generality
•  Incrementality
Case study
Key principles
•  Rigor and formality
•  SEPARATION OF CONCERNS
•  MODULARITY
•  ABSTRACTION
•  Anticipation of change
•  Generality
•  Incrementality
Mirco Franzago, Henry Muccini,Ivano Malavolta:Towards a collaborative framework for the design and development of data-
intensive mobile applications.MOBILESoft 2014
Case study
Key principles
•  Rigor and formality
•  SEPARATION OF CONCERNS
•  MODULARITY
•  ABSTRACTION
•  Anticipation of change
•  Generality
•  Incrementality
Mirco Franzago, Henry Muccini,Ivano Malavolta:Towards a collaborative framework for the design and development of data-
intensive mobile applications.MOBILESoft 2014
Suggested readings
1. M. E. Joorabchi, A. Mesbah, and P. Kruchten. Real challenges in
mobile app development. In Empirical Software Engineering and
Measurement,2013, pages 15–24, 2013.
2. Mirco Franzago, Henry Muccini, and Ivano Malavolta. Towards a
collaborative framework for the design and development of data-
intensive mobile applications. In Proceedings of the 1st International
Conference on Mobile Software Engineering and Systems, pages
58–61. ACM, 2014.
1. SWEBOK V.3.0 – Guide to the software engineering body of
knowledge. Pierre Bourke, Richard E. Fairley. IEEE Computer Society,
2014.
References
Chapters 1, 2, 3
Contact
Ivano Malavolta |
Post-doc researcher
Gran Sasso Science Institute
iivanoo
ivano.malavolta@gssi.infn.it
www.ivanomalavolta.com

Mais conteúdo relacionado

Mais procurados

Software engineering lecture notes
Software engineering   lecture notesSoftware engineering   lecture notes
Software engineering lecture notesAmmar Shafiq
 
Software Engineering Process Models
Software Engineering Process Models Software Engineering Process Models
Software Engineering Process Models Satya P. Joshi
 
Software Engineering - Basics
Software Engineering - BasicsSoftware Engineering - Basics
Software Engineering - BasicsPurvik Rana
 
Pressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-modelsPressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-modelsNoor Ul Hudda Memon
 
Software Engineering Unit 1
Software Engineering Unit 1Software Engineering Unit 1
Software Engineering Unit 1Abhimanyu Mishra
 
Selenium - A Trending Automation Testing Tool
Selenium - A Trending Automation Testing ToolSelenium - A Trending Automation Testing Tool
Selenium - A Trending Automation Testing Toolijtsrd
 
PRESCRIPTIVE PROCESS MODEL(SOFTWARE ENGINEERING)
PRESCRIPTIVE PROCESS MODEL(SOFTWARE ENGINEERING)PRESCRIPTIVE PROCESS MODEL(SOFTWARE ENGINEERING)
PRESCRIPTIVE PROCESS MODEL(SOFTWARE ENGINEERING)IrtazaAfzal3
 
Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and AnswersBala Ganesh
 
Pressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-modelsPressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-modelszeal123123
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineeringHitesh Mohapatra
 
Software Process Models
Software Process ModelsSoftware Process Models
Software Process ModelsAhmed Alageed
 
Cs504 handouts 1_45
Cs504 handouts 1_45Cs504 handouts 1_45
Cs504 handouts 1_45Ahsan Younis
 
Notes of Software engineering and Project Management
Notes of Software engineering and Project ManagementNotes of Software engineering and Project Management
Notes of Software engineering and Project ManagementNANDINI SHARMA
 
Object oriented-systems-development-life-cycle ppt
Object oriented-systems-development-life-cycle pptObject oriented-systems-development-life-cycle ppt
Object oriented-systems-development-life-cycle pptKunal Kishor Nirala
 
Unit iii-Architecture in the lifecycle
Unit iii-Architecture in the lifecycleUnit iii-Architecture in the lifecycle
Unit iii-Architecture in the lifecycleDhivyaa C.R
 

Mais procurados (20)

Software engineering lecture notes
Software engineering   lecture notesSoftware engineering   lecture notes
Software engineering lecture notes
 
Software Engineering Process Models
Software Engineering Process Models Software Engineering Process Models
Software Engineering Process Models
 
Software engineering unit 1
Software engineering unit 1Software engineering unit 1
Software engineering unit 1
 
Ch03 prescriptive process models
Ch03 prescriptive process modelsCh03 prescriptive process models
Ch03 prescriptive process models
 
Software Engineering - Basics
Software Engineering - BasicsSoftware Engineering - Basics
Software Engineering - Basics
 
Pressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-modelsPressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-models
 
Software Engineering Unit 1
Software Engineering Unit 1Software Engineering Unit 1
Software Engineering Unit 1
 
Selenium - A Trending Automation Testing Tool
Selenium - A Trending Automation Testing ToolSelenium - A Trending Automation Testing Tool
Selenium - A Trending Automation Testing Tool
 
Sda 1
Sda   1Sda   1
Sda 1
 
SOFTWARE ENGINEERING
SOFTWARE ENGINEERINGSOFTWARE ENGINEERING
SOFTWARE ENGINEERING
 
PRESCRIPTIVE PROCESS MODEL(SOFTWARE ENGINEERING)
PRESCRIPTIVE PROCESS MODEL(SOFTWARE ENGINEERING)PRESCRIPTIVE PROCESS MODEL(SOFTWARE ENGINEERING)
PRESCRIPTIVE PROCESS MODEL(SOFTWARE ENGINEERING)
 
Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and Answers
 
Pressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-modelsPressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-models
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineering
 
Slides chapter 3
Slides chapter 3Slides chapter 3
Slides chapter 3
 
Software Process Models
Software Process ModelsSoftware Process Models
Software Process Models
 
Cs504 handouts 1_45
Cs504 handouts 1_45Cs504 handouts 1_45
Cs504 handouts 1_45
 
Notes of Software engineering and Project Management
Notes of Software engineering and Project ManagementNotes of Software engineering and Project Management
Notes of Software engineering and Project Management
 
Object oriented-systems-development-life-cycle ppt
Object oriented-systems-development-life-cycle pptObject oriented-systems-development-life-cycle ppt
Object oriented-systems-development-life-cycle ppt
 
Unit iii-Architecture in the lifecycle
Unit iii-Architecture in the lifecycleUnit iii-Architecture in the lifecycle
Unit iii-Architecture in the lifecycle
 

Destaque

Systems Engineering Principles in Problem Solving
Systems Engineering Principles in Problem SolvingSystems Engineering Principles in Problem Solving
Systems Engineering Principles in Problem SolvingAkhmad Hidayatno
 
Is95 System Engineering
Is95 System EngineeringIs95 System Engineering
Is95 System EngineeringPengpeng Song
 
SKA Systems Engineering: from PDR to Construction
SKA Systems Engineering: from PDR to ConstructionSKA Systems Engineering: from PDR to Construction
SKA Systems Engineering: from PDR to ConstructionJoint ALMA Observatory
 
The road ahead for architectural languages [ACVI 2016]
The road ahead for architectural languages [ACVI 2016]The road ahead for architectural languages [ACVI 2016]
The road ahead for architectural languages [ACVI 2016]Ivano Malavolta
 
[2015/2016] Local data storage for web-based mobile apps
[2015/2016] Local data storage for web-based mobile apps[2015/2016] Local data storage for web-based mobile apps
[2015/2016] Local data storage for web-based mobile appsIvano Malavolta
 
[2015/2016] Modern development paradigms
[2015/2016] Modern development paradigms[2015/2016] Modern development paradigms
[2015/2016] Modern development paradigmsIvano Malavolta
 
System engineering
System engineeringSystem engineering
System engineeringLisa Elisa
 
[2015/2016] Introduction to software architecture
[2015/2016] Introduction to software architecture[2015/2016] Introduction to software architecture
[2015/2016] Introduction to software architectureIvano Malavolta
 
[2015/2016] AADL (Architecture Analysis and Design Language)
[2015/2016] AADL (Architecture Analysis and Design Language)[2015/2016] AADL (Architecture Analysis and Design Language)
[2015/2016] AADL (Architecture Analysis and Design Language)Ivano Malavolta
 
[2015/2016] Mobile thinking
[2015/2016] Mobile thinking[2015/2016] Mobile thinking
[2015/2016] Mobile thinkingIvano Malavolta
 
[2015/2016] The REST architectural style
[2015/2016] The REST architectural style[2015/2016] The REST architectural style
[2015/2016] The REST architectural styleIvano Malavolta
 
[2015/2016] Apache Cordova APIs
[2015/2016] Apache Cordova APIs[2015/2016] Apache Cordova APIs
[2015/2016] Apache Cordova APIsIvano Malavolta
 
[2015/2016] Require JS and Handlebars JS
[2015/2016] Require JS and Handlebars JS[2015/2016] Require JS and Handlebars JS
[2015/2016] Require JS and Handlebars JSIvano Malavolta
 
Design patterns for mobile apps
Design patterns for mobile appsDesign patterns for mobile apps
Design patterns for mobile appsIvano Malavolta
 
[2015/2016] Geolocation and mapping
[2015/2016] Geolocation and mapping[2015/2016] Geolocation and mapping
[2015/2016] Geolocation and mappingIvano Malavolta
 
[2015/2016] User-centred design
[2015/2016] User-centred design[2015/2016] User-centred design
[2015/2016] User-centred designIvano Malavolta
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache CordovaIvano Malavolta
 
System engineering
System engineeringSystem engineering
System engineeringSlideshare
 

Destaque (20)

Systems Engineering Principles in Problem Solving
Systems Engineering Principles in Problem SolvingSystems Engineering Principles in Problem Solving
Systems Engineering Principles in Problem Solving
 
Is95 System Engineering
Is95 System EngineeringIs95 System Engineering
Is95 System Engineering
 
SKA Systems Engineering: from PDR to Construction
SKA Systems Engineering: from PDR to ConstructionSKA Systems Engineering: from PDR to Construction
SKA Systems Engineering: from PDR to Construction
 
[2015/2016] JavaScript
[2015/2016] JavaScript[2015/2016] JavaScript
[2015/2016] JavaScript
 
The road ahead for architectural languages [ACVI 2016]
The road ahead for architectural languages [ACVI 2016]The road ahead for architectural languages [ACVI 2016]
The road ahead for architectural languages [ACVI 2016]
 
[2015/2016] Local data storage for web-based mobile apps
[2015/2016] Local data storage for web-based mobile apps[2015/2016] Local data storage for web-based mobile apps
[2015/2016] Local data storage for web-based mobile apps
 
[2015/2016] Modern development paradigms
[2015/2016] Modern development paradigms[2015/2016] Modern development paradigms
[2015/2016] Modern development paradigms
 
System engineering
System engineeringSystem engineering
System engineering
 
[2015/2016] Introduction to software architecture
[2015/2016] Introduction to software architecture[2015/2016] Introduction to software architecture
[2015/2016] Introduction to software architecture
 
[2015/2016] AADL (Architecture Analysis and Design Language)
[2015/2016] AADL (Architecture Analysis and Design Language)[2015/2016] AADL (Architecture Analysis and Design Language)
[2015/2016] AADL (Architecture Analysis and Design Language)
 
[2015/2016] Mobile thinking
[2015/2016] Mobile thinking[2015/2016] Mobile thinking
[2015/2016] Mobile thinking
 
[2015/2016] The REST architectural style
[2015/2016] The REST architectural style[2015/2016] The REST architectural style
[2015/2016] The REST architectural style
 
[2015/2016] Apache Cordova APIs
[2015/2016] Apache Cordova APIs[2015/2016] Apache Cordova APIs
[2015/2016] Apache Cordova APIs
 
[2015/2016] Require JS and Handlebars JS
[2015/2016] Require JS and Handlebars JS[2015/2016] Require JS and Handlebars JS
[2015/2016] Require JS and Handlebars JS
 
[2015/2016] Backbone JS
[2015/2016] Backbone JS[2015/2016] Backbone JS
[2015/2016] Backbone JS
 
Design patterns for mobile apps
Design patterns for mobile appsDesign patterns for mobile apps
Design patterns for mobile apps
 
[2015/2016] Geolocation and mapping
[2015/2016] Geolocation and mapping[2015/2016] Geolocation and mapping
[2015/2016] Geolocation and mapping
 
[2015/2016] User-centred design
[2015/2016] User-centred design[2015/2016] User-centred design
[2015/2016] User-centred design
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
 
System engineering
System engineeringSystem engineering
System engineering
 

Semelhante a [2015/2016] Software systems engineering PRINCIPLES

Semelhante a [2015/2016] Software systems engineering PRINCIPLES (20)

Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Chapter 01
Chapter 01Chapter 01
Chapter 01
 
Chapter 01
Chapter 01Chapter 01
Chapter 01
 
Chapter 01
Chapter 01Chapter 01
Chapter 01
 
Oose unit 1 ppt
Oose unit 1 pptOose unit 1 ppt
Oose unit 1 ppt
 
L02 Architecture
L02 ArchitectureL02 Architecture
L02 Architecture
 
OOSE Unit 1 PPT.ppt
OOSE Unit 1 PPT.pptOOSE Unit 1 PPT.ppt
OOSE Unit 1 PPT.ppt
 
Software Engineering PPT Unit I.pptx
Software Engineering PPT Unit I.pptxSoftware Engineering PPT Unit I.pptx
Software Engineering PPT Unit I.pptx
 
Scope of software engineering
Scope of software engineeringScope of software engineering
Scope of software engineering
 
Kelis king - introduction to s.e.
Kelis king -  introduction to s.e.Kelis king -  introduction to s.e.
Kelis king - introduction to s.e.
 
Lecture 01 Introduction to Software Engineering
Lecture 01 Introduction to Software EngineeringLecture 01 Introduction to Software Engineering
Lecture 01 Introduction to Software Engineering
 
SE notes 2.pdf
SE notes 2.pdfSE notes 2.pdf
SE notes 2.pdf
 
Week1.pptx
Week1.pptxWeek1.pptx
Week1.pptx
 
software engineering
software engineeringsoftware engineering
software engineering
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
SE Lecture 1.ppt
SE Lecture 1.pptSE Lecture 1.ppt
SE Lecture 1.ppt
 
SE Lecture 1.ppt
SE Lecture 1.pptSE Lecture 1.ppt
SE Lecture 1.ppt
 
unit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbshunit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbsh
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introduction
 
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
 

Mais de Ivano Malavolta

Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...Ivano Malavolta
 
The Green Lab - Research cocktail @Vrije Universiteit Amsterdam (October 2020)
The Green Lab - Research cocktail  @Vrije Universiteit Amsterdam (October 2020)The Green Lab - Research cocktail  @Vrije Universiteit Amsterdam (October 2020)
The Green Lab - Research cocktail @Vrije Universiteit Amsterdam (October 2020)Ivano Malavolta
 
Software sustainability and Green IT
Software sustainability and Green ITSoftware sustainability and Green IT
Software sustainability and Green ITIvano Malavolta
 
Navigation-aware and Personalized Prefetching of Network Requests in Android ...
Navigation-aware and Personalized Prefetching of Network Requests in Android ...Navigation-aware and Personalized Prefetching of Network Requests in Android ...
Navigation-aware and Personalized Prefetching of Network Requests in Android ...Ivano Malavolta
 
How Maintainability Issues of Android Apps Evolve [ICSME 2018]
How Maintainability Issues of Android Apps Evolve [ICSME 2018]How Maintainability Issues of Android Apps Evolve [ICSME 2018]
How Maintainability Issues of Android Apps Evolve [ICSME 2018]Ivano Malavolta
 
Collaborative Model-Driven Software Engineering: a Classification Framework a...
Collaborative Model-Driven Software Engineering: a Classification Framework a...Collaborative Model-Driven Software Engineering: a Classification Framework a...
Collaborative Model-Driven Software Engineering: a Classification Framework a...Ivano Malavolta
 
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...Ivano Malavolta
 
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...Ivano Malavolta
 
Modeling behaviour via UML state machines [Software Design] [Computer Science...
Modeling behaviour via UML state machines [Software Design] [Computer Science...Modeling behaviour via UML state machines [Software Design] [Computer Science...
Modeling behaviour via UML state machines [Software Design] [Computer Science...Ivano Malavolta
 
Object-oriented design patterns in UML [Software Design] [Computer Science] [...
Object-oriented design patterns in UML [Software Design] [Computer Science] [...Object-oriented design patterns in UML [Software Design] [Computer Science] [...
Object-oriented design patterns in UML [Software Design] [Computer Science] [...Ivano Malavolta
 
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...Ivano Malavolta
 
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...Ivano Malavolta
 
Modeling and abstraction, software development process [Software Design] [Com...
Modeling and abstraction, software development process [Software Design] [Com...Modeling and abstraction, software development process [Software Design] [Com...
Modeling and abstraction, software development process [Software Design] [Com...Ivano Malavolta
 
[2017/2018] Agile development
[2017/2018] Agile development[2017/2018] Agile development
[2017/2018] Agile developmentIvano Malavolta
 
Reconstructing microservice-based architectures
Reconstructing microservice-based architecturesReconstructing microservice-based architectures
Reconstructing microservice-based architecturesIvano Malavolta
 
[2017/2018] AADL - Architecture Analysis and Design Language
[2017/2018] AADL - Architecture Analysis and Design Language[2017/2018] AADL - Architecture Analysis and Design Language
[2017/2018] AADL - Architecture Analysis and Design LanguageIvano Malavolta
 
[2017/2018] Architectural languages
[2017/2018] Architectural languages[2017/2018] Architectural languages
[2017/2018] Architectural languagesIvano Malavolta
 
[2017/2018] Introduction to Software Architecture
[2017/2018] Introduction to Software Architecture[2017/2018] Introduction to Software Architecture
[2017/2018] Introduction to Software ArchitectureIvano Malavolta
 
[2017/2018] RESEARCH in software engineering
[2017/2018] RESEARCH in software engineering[2017/2018] RESEARCH in software engineering
[2017/2018] RESEARCH in software engineeringIvano Malavolta
 

Mais de Ivano Malavolta (20)

Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
 
The H2020 experience
The H2020 experienceThe H2020 experience
The H2020 experience
 
The Green Lab - Research cocktail @Vrije Universiteit Amsterdam (October 2020)
The Green Lab - Research cocktail  @Vrije Universiteit Amsterdam (October 2020)The Green Lab - Research cocktail  @Vrije Universiteit Amsterdam (October 2020)
The Green Lab - Research cocktail @Vrije Universiteit Amsterdam (October 2020)
 
Software sustainability and Green IT
Software sustainability and Green ITSoftware sustainability and Green IT
Software sustainability and Green IT
 
Navigation-aware and Personalized Prefetching of Network Requests in Android ...
Navigation-aware and Personalized Prefetching of Network Requests in Android ...Navigation-aware and Personalized Prefetching of Network Requests in Android ...
Navigation-aware and Personalized Prefetching of Network Requests in Android ...
 
How Maintainability Issues of Android Apps Evolve [ICSME 2018]
How Maintainability Issues of Android Apps Evolve [ICSME 2018]How Maintainability Issues of Android Apps Evolve [ICSME 2018]
How Maintainability Issues of Android Apps Evolve [ICSME 2018]
 
Collaborative Model-Driven Software Engineering: a Classification Framework a...
Collaborative Model-Driven Software Engineering: a Classification Framework a...Collaborative Model-Driven Software Engineering: a Classification Framework a...
Collaborative Model-Driven Software Engineering: a Classification Framework a...
 
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
 
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
 
Modeling behaviour via UML state machines [Software Design] [Computer Science...
Modeling behaviour via UML state machines [Software Design] [Computer Science...Modeling behaviour via UML state machines [Software Design] [Computer Science...
Modeling behaviour via UML state machines [Software Design] [Computer Science...
 
Object-oriented design patterns in UML [Software Design] [Computer Science] [...
Object-oriented design patterns in UML [Software Design] [Computer Science] [...Object-oriented design patterns in UML [Software Design] [Computer Science] [...
Object-oriented design patterns in UML [Software Design] [Computer Science] [...
 
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
 
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
 
Modeling and abstraction, software development process [Software Design] [Com...
Modeling and abstraction, software development process [Software Design] [Com...Modeling and abstraction, software development process [Software Design] [Com...
Modeling and abstraction, software development process [Software Design] [Com...
 
[2017/2018] Agile development
[2017/2018] Agile development[2017/2018] Agile development
[2017/2018] Agile development
 
Reconstructing microservice-based architectures
Reconstructing microservice-based architecturesReconstructing microservice-based architectures
Reconstructing microservice-based architectures
 
[2017/2018] AADL - Architecture Analysis and Design Language
[2017/2018] AADL - Architecture Analysis and Design Language[2017/2018] AADL - Architecture Analysis and Design Language
[2017/2018] AADL - Architecture Analysis and Design Language
 
[2017/2018] Architectural languages
[2017/2018] Architectural languages[2017/2018] Architectural languages
[2017/2018] Architectural languages
 
[2017/2018] Introduction to Software Architecture
[2017/2018] Introduction to Software Architecture[2017/2018] Introduction to Software Architecture
[2017/2018] Introduction to Software Architecture
 
[2017/2018] RESEARCH in software engineering
[2017/2018] RESEARCH in software engineering[2017/2018] RESEARCH in software engineering
[2017/2018] RESEARCH in software engineering
 

Último

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 

Último (20)

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 

[2015/2016] Software systems engineering PRINCIPLES

  • 1. Ivano Malavolta Software systems engineering PRINCIPLES
  • 2.
  • 3. Hello Software Architecture & Model-Driven Engineering applied to Autonomous drones Mobile applications Web technologies If you think good architecture is expensive, try bad architecture. ... Brian Foote and JosephYoder
  • 5. Course overview Module name #hours Instructor Introduction to the course 2 Inverardi Software engineering principles and research 4 Malavolta Software development process 2 Malavolta Eclipse IDE 2 Iovino Collaborative software development 1 Malavolta Model-based design and development 8 Iovino Software architecture 6 Malavolta LAB 2 Iovino, Malavolta Modern development paradigms 2 Malavolta Principles of software testing and dependability 2 Bertolino Homework 1 Christmas break Homework 2
  • 6. Homework 1 Tasks • create an AADL specification describing the architecture of a chosen system • write an Acceleo program or an ATL transformation that takes as input the AADL model and produces some report or other artifact • write a report describing the performed activities Goals • to understand what are the advantages of SE principles like abstraction and separation of concerns • to concretely understand what architectural modeling means • to be exposed to concerns and issues related to dependability • to understand how to use MDE techniques like model transformations and code generators Tentative deadline 20/12/2015
  • 7. Homework 2 Tasks • pick a set of articles related to a chosen research theme • carefully read them and explore the state of the art about the research theme • write a report about your findings • make a brief presentation to the classroom Goals • to have the chance to study a specific area of software engineering that may be of interest to each student • to be exposed to a specific problem in software engineering • to start being trained in reading and writing scientific papers Tentative deadline 15/01/2016 Research themes will be available soon
  • 9. Software today Where is software today?
  • 10. Software today How “big” is software today? http://www.informationisbeautiful.net/visualizations/million-lines-of-code/ http://hbr.org/2010/06/why-dinosaurs-will-keep-ruling-the-auto-industry/ar/1
  • 11. Needs To DESIGN software – software development has to be a systematic activity QUALITY assurance – we have to verify and validate our SW in order to make it something people can rely on – we have to do it as soon as possible ABSTRACTION – the principal instrument for managing complexity
  • 12. The application of engineering to software Field of computer science dealing with software systems that are: – large and complex – built by teams – exist in many versions – last many years – undergo changes Programming skills are not enough “Physicist example” Software engineering Programmer: complete program Software engineer: software component
  • 13. What is part of software engineering? http://wonderfulengineering.com/what-is-software-engineering/
  • 14. Software engineering vs computer science Computer Science – Computability, algorithms and complexity, programming languages, data structures, databases, artificialintelligence, etc. Software Engineering – The APPLICATION of computer science, mathematics, project management to build high quality software
  • 17. Correctness Software is correct if it satisfies the functional requirements specifications – assuming that specification exists! If specifications are formal, since programs are formal objects, correctness can be defined formally – It can be proven as a theorem or disproved by counterexamples (testing) Improved by: • Appropriate tools • Standard algorithms and libraries • An established development process
  • 18. The limits of correctness It is an absolute (yes/no) quality – there is no concept of “degree of correctness” – there is no concept of severity of deviation What if specifications are wrong? – (e.g., they derive from incorrect requirements or errors in domain knowledge)
  • 19. Reliability Informal definition: software is reliable if the user can depend on it can be defined mathematically as “probability of absence of failures for a certain time period” Improved by: • Fault avoidance (e.g., careful design) • Fault tolerance (e.g., redundancy) • Fault detection (e.g., testing)
  • 22. Software behaves “reasonably” even in unforeseen circumstances (e.g., incorrect input, hardware failure) Robustness Robustness vs correctness vs reliability? Improved by: • Software monitoring • Defensive programming
  • 23. Example: the MAPE-K loop http://www.cs.kent.ac.uk/people/rpg/cb492/saaf/concept.html
  • 24. Performance Efficient use of resources – memory, processing time, communication Can be evaluated: – algorithms complexity – measurement of the implemented system – analysis of a model (e.g., using queuing theory) – simulation Performance can affect scalability – e.g., a solution that works on a small local network may not work on a large intranet Improved by: • Considering it during design • Small-scale code optimization
  • 25. Usability Expected users find the system easy to use – otherterm: user-friendliness Rather subjective, difficult to evaluate Affected mostly by user interface • e.g., visual vs. textual Can the user interface impact reliability? (Performance and correctness) vs usability? Improved by: • User-centred design process • Adaptable user interfaces
  • 26. Maintainability Maintainability: ease of maintenance àMaintenance: changes after release Maintenance costs exceed 60% of total cost of software Three main categories of maintenance – corrective: removing residual errors (20%) – adaptive: adjusting to environment changes (20%) – perfective: quality improvements (>50%) See it as software evolution Improved by: • Modular design • Well-defined interfaces • Good documentation
  • 27. Maintainability Can be decomposed as – Repairability • ability to correct defects in reasonable time – Evolvability • ability to adapt SW to environment changes and to improve it in reasonable time Repairability vs modularity? Ever heared about software product lines?
  • 28. Reusability Existing product (or components) used (with minor modifications) to build another product – e.g., software libraries, jQuery plugins Also applies to process Reuse of standard parts measure of maturity of the field Improved by: • Modular design • Well-defined interfaces • Parameterization • Good documentation
  • 29. Portability Software can run on different HW platforms or SW environments Remains relevant as new platforms and environments are introduced (e.g. digital assistants) Relevant when downloading software in a heterogeneous network environment Improved by: • Isolation of dependencies on environment • Layered architectures • Virtual machines
  • 30. Understandability Ease of understanding software Maintainability vs understandability? Is it internal or external? Improved by: • Modular design • Well-defined models • Good documentation
  • 31. Understandability RichardWettel, Michele Lanza: CodeCity: 3D visualization of large-scale software. ICSE Companion 2008: 921-922
  • 32. Interoperability Ability of a system to coexist and cooperate with other systems – e.g., OSX + iOS – OSGI Can be achieved via standardization of interfaces Examples? • Browser plug-ins • The whole open data movement! Improved by: • Well-documented interfaces • Standard interface formats e.g., XML,JSON objects
  • 33. Exercise Show graphically the interdependence of the SW qualities Correctness Reliability Robustness Performance Usability Maintainability Reusability Portability Understandability Interoperability Repairability Evolvability
  • 36. Application of principles Principles apply to process and product Principles become practice through methods and techniques – often methods and techniques are packaged in a methodology – methodologies can be enforced by tools Principles Methodologies Principles Methods and techniques Methodologies Tools
  • 37. Application of principles Principles Methodologies Principles Methods and techniques Methodologies Tools Principles: General and abstract descriptions of desirable properties of products and processes Methods: General guidelines that govern activities Techniques: More technical and mechanic than methods Methodologies: Preselected methods and techniques Tools: Software for applying methodologies
  • 38. Key principles • Rigor and formality • SEPARATION OF CONCERNS • MODULARITY • ABSTRACTION • Anticipation of change • Generality • Incrementality
  • 39. Rigor and formality Software engineering is a creative design activity, BUT it must be practiced systematically Rigor is necessary to: – repeatedlyproduce reliable products – control their costs Formality is rigor at the highest degree – software process driven and evaluated by mathematical laws – opens to automation
  • 40. Examples • Mathematical (formal) analysis of program correctness • Systematic (rigorous) test data derivation • Rigorous documentation of development steps helps project management and assessment of timeliness
  • 41. More on formality No need to be always formal during design The engineer must know how and when to be formal Requirements Analysis System design Detailed Design Implementation Validation Requirements Analysis System design Detailed Design Implementation Validation GSSI website GSSI automatic doors
  • 42. Separation of concerns Edsger Dijkstra; On the role of scientific thought; EWD447; 30th August 1974
  • 43. Why separation of concerns? Helps you focus – easier to pay attention to one thing at a time – put some complexities aside – separate out critical functions Encourages decoupling – disentangle aspects that seemed intertwined Supports parallelization of efforts and separation of responsibilities
  • 44. Dimensions of separation of concerns Complexity Time (waterfall model) Size (modularization) Qualities (correctness, and performance later) Views (data flow, control flow)
  • 45. Example: concerns in a mobile app Information Architect UI Designer App Developer Back-end Developer Experience Security Performance Upgradability Schedule Cost Content Management Product Strategy
  • 46. Example: compiler Correctness is primary concern Other concerns: – Efficiency of compiler and of generated code – User friendliness (helpfulwarnings, etc.) Example of interdependencies: runtime diagnostics vs. efficient code – Diagnostics simplifytesting, but create overhead – Typical solution: option to disable checks
  • 47. Modularity A complex system may be divided into simpler pieces called modules A system that is composed of modules is called modular Supports application of separation of concerns – when dealing with a module we can ignore details of other modules Modularity is the basis for understandabilityà software evolution Modularity VS reusability?
  • 48. Cohesion and coupling Each module should be highly cohesive – module understandable as a meaningful unit – components of a module are closely related to one another Modules should exhibit low coupling – modules have low interactions with others – understandable separately imagebyPeterMüller
  • 49. Example: web reputation dashboard quindi$inclusi$in$una$dashboard.!! ! In$ Figura$ che$ segue$ è$ riportata$ l’architettura$ software$ dello$ strumento$ proposto,$ dove,$ con$ linee$ spesse,$ è$ indicato$ il$ flusso$ dei$ dati$ mentre,$ con$ linee$ sottili,$ sono$ mostrate$ le$ interazioni$ tra$ componenti$software$o$tra$componenti$e$sorgenti$dati.$$Ad$interrompere$il$flusso$di$elaborazione$è$ riportato$ un$ database,$ che$ è$ popolato$ con$ informazioni$ relative$ ai$ contenuti$ testuali$ di$ interesse$ e$ arricchito$con$i$valori$relativi$alle$stime$di$polarità$e$topics.$$$ ! ! ! $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $DB$ FB$connector$ Data$ Aggregator$ TP$connector$ Sentiment$ analyzer$ Topic$extractor$$ Dashboard$ I D$ ID$ ID$ ID$ ID$ ID$ $$$$id$ $$$$testo$$$$$$$$$prov$ $$timestamp$$$$$polarity$$$$$$$$$$topics$ $$$$$$$$tw/fb$ $$$$$$$$$$T1/+1$$$$$$$$$T1/+1$ TW$connector$ connector$ Facebook$ $ Twitter$ $ Telpress$ $
  • 50. Abstraction Given a difficult problem/system, extract a simpler view of it, avoiding unneeded details Abstraction in software engineering: – Models of the realworld (omit irrelevant details) – Subtyping and inheritance (factor out commonalities) – Interfaces and information hiding (hide implementation details) – Structured programming (loops, methods) – Layered systems (hide deeper layers in the stack)
  • 51. Abstraction Engineers abstract away from a number of details that can be ignored SAFELY Example: – equations describing complex circuit (e.g., amplifier allows designer to reason about signal amplification) – equations may approximate description, ignoring details that yield negligible effects (e.g., connectors assumed to be ideal)
  • 52. Example: mobile app navigation
  • 53. Anticipation of change It is very rare in reality that requirements are fully understood and freezed since the beginning of the project Ability to support software evolution à anticipating potential future changes It is the basis for software EVOLVABILITY and REUSABILITY How does it relate to modularity?
  • 55. Generality While solving a problem, try to discover if it is an instance of a MORE GENERAL PROBLEM – Sometimes a generalproblem is easier to solve than a special case – A solution to a more generalproblem may be already provided by off-the-shelf packages – A solution to a more generalproblem can be reused in other cases Carefully balance generality against performance and cost
  • 56. Incrementality Process proceeds in a stepwise fashion (increments) Examples (process) – deliver subsets of a system early to get early feedback from expected users, then add newfeatures incrementally – deal first with functionality, then turn to performance • this may be risky – deliver a first prototype and then incrementally add effort to turn prototype into product Ever eared about user-centered design?
  • 58. Case study Mirco Franzago, Henry Muccini,Ivano Malavolta:Towards a collaborative framework for the design and development of data- intensive mobile applications.MOBILESoft 2014 Key principles •  Rigor and formality •  SEPARATION OF CONCERNS •  MODULARITY •  ABSTRACTION •  Anticipation of change •  Generality •  Incrementality
  • 59. Case study Key principles •  Rigor and formality •  SEPARATION OF CONCERNS •  MODULARITY •  ABSTRACTION •  Anticipation of change •  Generality •  Incrementality Mirco Franzago, Henry Muccini,Ivano Malavolta:Towards a collaborative framework for the design and development of data- intensive mobile applications.MOBILESoft 2014
  • 60. Case study Key principles •  Rigor and formality •  SEPARATION OF CONCERNS •  MODULARITY •  ABSTRACTION •  Anticipation of change •  Generality •  Incrementality Mirco Franzago, Henry Muccini,Ivano Malavolta:Towards a collaborative framework for the design and development of data- intensive mobile applications.MOBILESoft 2014
  • 61. Suggested readings 1. M. E. Joorabchi, A. Mesbah, and P. Kruchten. Real challenges in mobile app development. In Empirical Software Engineering and Measurement,2013, pages 15–24, 2013. 2. Mirco Franzago, Henry Muccini, and Ivano Malavolta. Towards a collaborative framework for the design and development of data- intensive mobile applications. In Proceedings of the 1st International Conference on Mobile Software Engineering and Systems, pages 58–61. ACM, 2014. 1. SWEBOK V.3.0 – Guide to the software engineering body of knowledge. Pierre Bourke, Richard E. Fairley. IEEE Computer Society, 2014.
  • 63. Contact Ivano Malavolta | Post-doc researcher Gran Sasso Science Institute iivanoo ivano.malavolta@gssi.infn.it www.ivanomalavolta.com