SlideShare a Scribd company logo
1 of 63
Software Architecture 
School of Computer Science University of Oviedo 
University of Oviedo 
Software Architecture 
Part II. Software architecture taxonomies 
2: Allocation and Building 
2014 Jose Emilio Labra Gayo
Software Architecture 
School of Computer Science University of Oviedo 
Allocation & Building 
Relationship between software and its environment 
Building, development and distribution
Software Architecture 
School of Computer Science University of Oviedo 
Contents 
Building 
Building styles and methodologies 
Traditional, iterative, agile 
Configuration Management 
Version control 
Dependency management 
Deployment 
Continuous integration 
Distribución 
Canales de distribución
Software Architecture 
School of Computer Science University of Oviedo 
Note: This is just a selection. A more extended list can be found at: 
http://en.wikipedia.org/wiki/List_of_software_development_philosophies
Software Architecture 
School of Computer Science University of Oviedo 
Incremental piecemeal 
Development by need 
Codification without following the architecture 
Throw-away software 
Budget constraints
Software Architecture 
School of Computer Science University of Oviedo 
Waterfall 
Proposed in 70s 
Requirements 
Design 
Implementation 
Verification 
Maintenance
Software Architecture 
School of Computer Science University of Oviedo 
Big Design Up Front 
Antipattern of traditional models 
Too much documentation that nobody reads 
Documentation different from developed system 
Architecture degradation 
Software artifacts implemented but unused
Software Architecture 
School of Computer Science University of Oviedo 
V Model 
Requirements 
Analysis 
Design 
Object 
Design 
Integration 
Testing 
Unit 
Testing 
System 
Testing 
Aceptance 
Testing 
Time 
Detail 
Level 
Low 
Project 
Definition 
High Implementation 
Project 
Test and 
Integration
Software Architecture 
School of Computer Science University of Oviedo 
Iterative Models 
Based on Prototypes 
Risk assessment after each iteration 
Initial 
Planning 
Requirements Analysis & 
Planning 
Design 
Implementation 
Deployment 
Testing 
Evaluation
Software Architecture 
School of Computer Science University of Oviedo 
RUP (Rational Unified Process) 
Fuente: Wikipedia. 
http://es.wikipedia.org/wiki/Archivo:Rup_espanol.gif 
Very popular 
Iterative process 
Inception Elaboration Construction Process Transition 
Workflow 
Requirements 
Analysis 
Design 
Implementation 
Test 
Deployment 
I1 I2 E1 E2 C1 C2 C3 C4 T1 T2 
Iterations 
Support Inception Elaboration Construction Transition 
workflow 
Configuration 
Management 
Project 
Management 
Environment
Software Architecture 
School of Computer Science University of Oviedo 
Agile methodologies 
Lots of variants 
RAD (www.dsdm.org, 95) 
SCRUM (Sutherland & Schwaber, 95) 
XP - eXtreme Programming (Beck, 99) 
Feature driven development (DeLuca, 99) 
Adaptive software development (Highsmith, 00) 
Lean Development (Poppendieck, 03) 
Crystal Clear (Cockburn, 04) 
Agile Unified Process (Ambler, 05) 
. . .
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
Agile Manifesto (www.agilemanifesto.org) 
Individuals and 
interactions 
over Process and Tools 
Working 
Software 
Comprehensive 
Documentation 
over 
Customer 
Collaboration 
over Contract 
Negotiation 
Responding 
to change 
over Following a 
Plan
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
Feedback 
Changes of code are ok during development 
Minimize risk 
Software in short intervals 
Iterations of days 
Each iteration takes all the development cycle
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
Some practices (eXtreme Programming) 
1. Short-time planifications 
2. Testing 
3. Pair programming (revisiones de código) 
4. Refactoring 
5. Simple design 
6. Collective code ownership 
7. Continuous integration 
8. On-site customer 
9. Small releases 
10. Sustainable pace 
11. Coding standards
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
1. Short time planification 
After each iteration, update planification 
Requirements through user stories 
Short descriptions (size of a card) 
Goals ordered by usnig according to priority 
Risk and resources estimated by developers 
User stories = acceptance testing 
Adopt change 
Original plan 
Current plan
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
2.- Testing: types of testing 
Automated Manual 
Functional Acceptance 
Testing 
Showcases 
Usability testing 
Exploratory testing 
Nonfunctional 
Acceptance testing 
(capacity, security,…) 
Unit testing 
Integration testing 
System testing 
Automated Manual/ Automated 
Support programming 
Critique project 
Business facing 
Technology facing 
Source: Continuous delivery, J Humble, D. Farley, 2010
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
2. Testing 
Test driven development 
Write a test before coding 
Initially, code will fail 
Goal: pass the test 
Result: 
Automated set of tests 
Easier refactoring
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
2. Testing: Acceptance testing 
Behaviour-driven development (BDD) 
Tests come from user stories 
They can be written collaboratively with the client 
Tools: Cucumber, JBehave, Specs2,... 
Tests act as contracts 
Can also be used to measure progress
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
2. Testing: FIRST principles 
F - Fast 
Execution of (subsets of) tests must be quick 
I - Independent: 
No tests depend on others 
R - Repeatable: 
If tests are run N times, the result is the same 
S - Self-checking 
Test can automatically detect if passed 
T - Timely 
Tests are written at the same time (or before) code
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
2. Testing: test doubles 
Dummy objects: objects that are passed but not used 
Fake objects: Contain a partial implementation. 
Can be: 
Stubs: contain specific answers to some requests 
Spies: stubs that record information for debugging 
Mocks: mimic the behaviour of the real object 
Mocks may contain assertions about the order/number of 
times methods are called
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
3. Pair programming 
2 software engineers work together 
Driver manages keyboard and creates implementation 
Observador identifies failures and gives ideas 
Roles are exchanged after some time
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
4. Simple design 
Reaction to Big Design Up Front 
Obtain the simpler design that works 
Automated documentation 
JavaDoc and similar tools 
CRC cards
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
5. Refactoring 
Improve design without changing functionality 
Simplify code (eliminate redundant code) 
Search new opportunities for abstraction 
Regression testing 
Based on the set of tests
Software Architecture 
School of Computer Science University of Oviedo 
Agile Methods 
6. Collective ownership of code 
Code belongs to the project, not to some engineer 
Engineers must be able to browse and modify any 
part of the code 
Even if they didn't wrote it 
Avoid code fragments that only one person can modify
Software Architecture 
School of Computer Science University of Oviedo 
Agile Methods 
7. Continuous integration 
Develop test cases and work to pass them 
Pass 100% test cases 
Integrate 
That process can be repeated 1 or 2 times/day 
Goal: avoid integration hell
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
8. On-place customer 
Customer available to clarify user stories and help 
taking critical business decisions 
Advantages 
Developers don't do guesses 
Developers don't have to wait for decisions 
Improves communication
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
9. Small releases 
Small enough while offering value to the user 
Releases are not, for example, implement DB 
Obtain feedback soon from client 
Plan next release after each iteration 
Try to release something every week
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
10. Sustainable pace 
40h/week = 40h/week 
Avoid extra-work loads 
Tired programmers write bad code 
It will slow the development at long time
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
11. Clean code 
Facilitate code refactoring by other people 
Use good practices 
Code styles and guidelines 
Avoid code smells 
software craftmanship manifest 
Clean Code (Robert C. Martin) 
Fuente: Clean Code. Robert Martin
Software Architecture 
School of Computer Science University of Oviedo 
Agile methods 
Variants 
Scrum 
Project/people managment 
Divide work in sprints 
15' daily meetings 
Product Backlog 
Kanban 
Lean model 
Just in Time Development 
Limit workloads
Software Architecture 
School of Computer Science University of Oviedo
Software Architecture 
School of Computer Science University of Oviedo 
Configuration Management 
Different software versions 
New or different functionalities 
Issues and bugs management 
New execution environments 
Configuration management = Manage evolution of 
software 
System changes = team activities 
Necessary cost and effort
Software Architecture 
School of Computer Science University of Oviedo 
Version control 
Systems that manage different code versions 
Be able to Access all the system versions 
Easy to rollback 
Differences between versions 
Collaborative development 
Branch management 
Metadata 
Author of a versión, update date, who to blame, etc.
Software Architecture 
School of Computer Science University of Oviedo 
Baseline 
Baselines (Reference line): Software that is subject 
to configuration management 
Version 
1.0 
Windows 
Version 
2.0 
Windows 
Version 
1.5 
Linux 
Version 
1.5 
Sun 
Version 
2.5 Desktop 
Linux 
Version 
2.5 Desktop 
Server
Software Architecture 
School of Computer Science University of Oviedo 
Releases and versions 
Version: instance of a system which has a different 
functionality to other instances 
Release (deliverable): instance of a system which 
is distributed to external people outside to 
development team. 
It could be considered a final product at some point 
of time
Software Architecture 
School of Computer Science University of Oviedo 
Version naming - some conventions 
Pre-alfa 
Before testing 
Alfa 
During testing 
Beta (or prototype) 
Testing made by some users 
Beta-tester: user that does the testing 
Release-candidate 
Beta versión that could become final product
Software Architecture 
School of Computer Science University of Oviedo 
Other schema namings 
Simple numbering 
1.1, 1.1-alpha 
Using attributes 
Date, creator, language, client, state,... 
Recognizable Names 
Ganimede, Galileo, Helios, Indigo, Juno,... 
Precise Pangolin, Quantal Quetzal,...
Software Architecture 
School of Computer Science University of Oviedo 
Deliverables publication 
A release implies functionality changes 
Planning 
Publishing a release has costs 
Usually, current users don't want new releases 
External factors: 
Marketing, clients, hardware, ... 
Agile model: frequent releases 
Continuous integration minimizes risk
Software Architecture 
School of Computer Science University of Oviedo 
Deliverables publication 
A release is more than just software 
Configuration files 
Some needed data files 
Installation programs 
Documentation 
Publicity and packaging 
Distribution channels: 
Physical (CDs, DVDs), Web (download), stores
Software Architecture 
School of Computer Science University of Oviedo 
Version control 
Definitions 
Repository: where changes are 
stored 
Baseline: Initial version 
Delta: changes from one version 
to other 
Trunk (master): Main branch in a 
system 
Branch: deviation from main 
branch 
Tag: Marks a line of versions 
Baseline 
1 
4 
Trunk 
2 
3 
Branchs 
5 
6 
9 
7 
T1 
T2 
8 
10 
Tags merge
Software Architecture 
School of Computer Science University of Oviedo 
Version control 
Definitions 
Checkout: Working Local copy from a 
given branch 
Commit: Introduce current changes in 
the control version system. 
Merge: Combine two sets of changes 
Branching styles: by feature, by team, 
by version 
Baseline 
1 
4 
Trunk 
2 
3 
Branchs 
5 
6 
9 
7 
T1 
T2 
8 
10 
Tags 
merge
Software Architecture 
School of Computer Science University of Oviedo 
Version control 
2 types 
Centralized 
Centralized repository for all the code 
Centralized administration 
CVS, Subversion, ... 
Distributed 
Each user has its own repository 
Git, Mercurial
Software Architecture 
School of Computer Science University of Oviedo 
Git 
Designed by Linus Torvalds (Linux), 2005 
Goals: 
Applications with large number of source code files 
Efficiency 
Distributed work 
Ecach development has its own repository 
Local copy of all the changes history 
It is posible to do commits even without internet connection 
Support for non-lineal development (branching)
Software Architecture 
School of Computer Science University of Oviedo 
Local components 
3 local components: 
Local working directory 
Index (stage area). Also called cache 
Project history: Stores versions or commits 
HEAD (most recent version) 
commit 
Project 
History 
Commits 
add 
rm 
HEAD 
Local 
working 
directory 
Index 
stage 
area
Software Architecture 
School of Computer Science University of Oviedo 
Branches 
feature-2 feature-1 develop hotfix-1 master 
Git facilitates branch management 
master = initial branch 
Operations: 
Create branches (branch) 
Change branch (checkout) 
Combine (merge) 
Tag branches (tag) 
Multiple branching styles 
tags 
0.1 
0.2 
1.0 
Branches
Software Architecture 
School of Computer Science University of Oviedo 
Remote repositories 
Connect with remote repositories 
origin = initial 
Local 
working 
directory 
History 
Commits 
Index 
stage 
area 
Remote 
repository 
origin 
push 
clone 
fetch 
pull 
commit 
add 
rm 
Local 
Machine 
HEAD
Software Architecture 
School of Computer Science University of Oviedo 
Git - usual commands 
init: inicialize repository 
clone: clone a repository 
add: add contents to index 
commit: record changes 
status: check state of repository 
pull: get changes from an external repository 
push: put changes in an external repository 
branch: manage branches (list, create, delete) 
merge: combine two branches 
checkout: recover a given branch 
rm: delete files 
mv: move files 
.gitignore file indicates which files are not going 
to be tacked by version control system
Software Architecture 
School of Computer Science University of Oviedo 
Git typical workflow 
Local workstation 
Development 
Build 
Central 
repository 
Build 
pull 
push 
Build 
Done!
Software Architecture 
School of Computer Science University of Oviedo 
Dependency management 
Library: Collection of functionalities used by the 
system that is being developed 
System depends on that library 
Library can depend on other libraries 
Library can evolve 
Incompatible versions appear 
Dependency graph 
Mozilla Firefox dependency graph 
Source: The purely functional deployment model. E. Dolstra (PhdThesis, 2006)
Software Architecture 
School of Computer Science University of Oviedo 
Dependency management 
Different models 
Local installation: libraries are installed for all the system 
Example: Ruby Gems 
Embed external libraries in the system (version control) 
Ensures a correct version 
External link 
External repository that contains the libraries 
Depends on Internet and on library evolution
Software Architecture 
School of Computer Science University of Oviedo 
Automated building 
Tools to automate building and deployment 
Organize different tasks 
Dependencies between tasks 
They have to ensure that: 
Execute all prerequisites 
Execute them only once Inicialize 
Prepare 
testing 
data 
Compile 
source 
code 
Compile 
testing 
code 
Run 
testing
Software Architecture 
School of Computer Science University of Oviedo 
Automate building 
make: Included in Unix 
Product oriented 
Declarative language based on rules 
When the Project is complex, configuration 
files can be difficult to manage/debug 
Several versions: BSD, GNU, Microsoft 
Very popular in C, C++, etc.
Software Architecture 
School of Computer Science University of Oviedo 
Automate building 
ant: Java Platform 
Task oriented 
XML syntax (build.xml)
Software Architecture 
School of Computer Science University of Oviedo 
Automate building 
maven: Java Platform 
Convention over configuration 
Manage Project lifecycle 
Dependency management 
XML syntax (pom.xml)
Software Architecture 
School of Computer Science University of Oviedo 
Automate building 
Embedded languages 
Domain specific languages embedded in higher level ones 
Great versatility 
Examples: 
gradle (Groovy) 
sbt (Scala) 
rake (Ruby) 
Buildr (Ruby) 
…
Software Architecture 
School of Computer Science University of Oviedo 
Execution environtments 
A staging environment is also used 
Development 
environment 
Testing 
Environments 
Production 
Environment 
Testing 
Server 
Integration 
Server 
Version 
Control 
Production 
Server 
Server farm
Software Architecture 
School of Computer Science University of Oviedo 
Continuous integration 
Continuous integration tools 
Hudson, Jenkins, Travis, Bamboo 
Continuous 
Integration 
Web 
Interface 
Reports 
checkout/commit 
Central Code 
repository 
Development 
Team
Software Architecture 
School of Computer Science University of Oviedo 
Social coding 
Public repositories of source code 
Different policies 
Examples: 
Sourceforge 
Google projects 
Bitbucket 
Github
Software Architecture 
School of Computer Science University of Oviedo 
Tools in the cloud 
Several tools to help development in the cloud 
Examples: 
IaaS: Infrastructure 
Amazon ECS 
PaaS: Platform 
Google AppEngine, Heroku 
SaaS: Software 
GMail, GDocs, etc.
Software Architecture 
School of Computer Science University of Oviedo 
Product lines 
Distribution channels
Software Architecture 
School of Computer Science University of Oviedo 
Product lines 
Product line: products that share a set of 
functionalities to satisfy some given market 
segment 
Goal: 
Reduce development effort 
Improve productivity 
Evolve from a single product to a product line
Software Architecture 
School of Computer Science University of Oviedo 
Product lines 
Requirements 
Identify generic solutions to common problems 
Component based development 
Generic Platforms 
Software reuse 
Automatic system generation
Software Architecture 
School of Computer Science University of Oviedo 
Distribution channels 
Traditional distribution 
CDs, DVDs, ... 
Web based 
Downloads, FTP, ... 
Application markets 
Linux packages 
App stores: 
AppStore, 
Google Play, 
Windows Store

More Related Content

What's hot

Upcoming Challenges in E-Learning & Online Learning Environments
Upcoming Challenges in E-Learning & Online Learning EnvironmentsUpcoming Challenges in E-Learning & Online Learning Environments
Upcoming Challenges in E-Learning & Online Learning EnvironmentsMohamed Tawfik
 
[2015/2016] Modern development paradigms
[2015/2016] Modern development paradigms[2015/2016] Modern development paradigms
[2015/2016] Modern development paradigmsIvano Malavolta
 
[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
 
[2016/2017] Modern development paradigms
[2016/2017] Modern development paradigms [2016/2017] Modern development paradigms
[2016/2017] Modern development paradigms Ivano 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
 
Web technologies: Model Driven Engineering
Web technologies: Model Driven EngineeringWeb technologies: Model Driven Engineering
Web technologies: Model Driven EngineeringPiero Fraternali
 
Educating in MDE
Educating in MDE Educating in MDE
Educating in MDE Jordi Cabot
 
COCOMO methods for software size estimation
COCOMO methods for software size estimationCOCOMO methods for software size estimation
COCOMO methods for software size estimationPramod Parajuli
 
National%20 online%20examination%20system%20an%20architectural%20perspective
National%20 online%20examination%20system%20an%20architectural%20perspectiveNational%20 online%20examination%20system%20an%20architectural%20perspective
National%20 online%20examination%20system%20an%20architectural%20perspectivekalimullahmohd89
 
Software Engineering: What is That?
Software Engineering: What is That?Software Engineering: What is That?
Software Engineering: What is That?Henry Muccini
 
[2016/2017] Introduction to Software Architecture
[2016/2017] Introduction to Software Architecture[2016/2017] Introduction to Software Architecture
[2016/2017] Introduction to Software ArchitectureIvano Malavolta
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design Arslan Anwar
 
Rhapsody Systems Software
Rhapsody Systems SoftwareRhapsody Systems Software
Rhapsody Systems SoftwareBill Duncan
 
On the Use of Component-Based Principles and Practices for Architecting Cyber...
On the Use of Component-Based Principles and Practices for Architecting Cyber...On the Use of Component-Based Principles and Practices for Architecting Cyber...
On the Use of Component-Based Principles and Practices for Architecting Cyber...University of l'aquila
 

What's hot (20)

Upcoming Challenges in E-Learning & Online Learning Environments
Upcoming Challenges in E-Learning & Online Learning EnvironmentsUpcoming Challenges in E-Learning & Online Learning Environments
Upcoming Challenges in E-Learning & Online Learning Environments
 
26 standards
26 standards26 standards
26 standards
 
Arch java
Arch javaArch java
Arch java
 
[2015/2016] Modern development paradigms
[2015/2016] Modern development paradigms[2015/2016] Modern development paradigms
[2015/2016] Modern development paradigms
 
[2015/2016] Introduction to software architecture
[2015/2016] Introduction to software architecture[2015/2016] Introduction to software architecture
[2015/2016] Introduction to software architecture
 
[2016/2017] Modern development paradigms
[2016/2017] Modern development paradigms [2016/2017] Modern development paradigms
[2016/2017] Modern development paradigms
 
[2017/2018] Introduction to Software Architecture
[2017/2018] Introduction to Software Architecture[2017/2018] Introduction to Software Architecture
[2017/2018] Introduction to Software Architecture
 
6
66
6
 
Web technologies: Model Driven Engineering
Web technologies: Model Driven EngineeringWeb technologies: Model Driven Engineering
Web technologies: Model Driven Engineering
 
Educating in MDE
Educating in MDE Educating in MDE
Educating in MDE
 
SE notes by k. adisesha
SE notes by k. adiseshaSE notes by k. adisesha
SE notes by k. adisesha
 
AlekyaNyalakonda_Resume
AlekyaNyalakonda_ResumeAlekyaNyalakonda_Resume
AlekyaNyalakonda_Resume
 
COCOMO methods for software size estimation
COCOMO methods for software size estimationCOCOMO methods for software size estimation
COCOMO methods for software size estimation
 
National%20 online%20examination%20system%20an%20architectural%20perspective
National%20 online%20examination%20system%20an%20architectural%20perspectiveNational%20 online%20examination%20system%20an%20architectural%20perspective
National%20 online%20examination%20system%20an%20architectural%20perspective
 
Software Engineering: What is That?
Software Engineering: What is That?Software Engineering: What is That?
Software Engineering: What is That?
 
CV_Sonali Sengupta
CV_Sonali SenguptaCV_Sonali Sengupta
CV_Sonali Sengupta
 
[2016/2017] Introduction to Software Architecture
[2016/2017] Introduction to Software Architecture[2016/2017] Introduction to Software Architecture
[2016/2017] Introduction to Software Architecture
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design
 
Rhapsody Systems Software
Rhapsody Systems SoftwareRhapsody Systems Software
Rhapsody Systems Software
 
On the Use of Component-Based Principles and Practices for Architecting Cyber...
On the Use of Component-Based Principles and Practices for Architecting Cyber...On the Use of Component-Based Principles and Practices for Architecting Cyber...
On the Use of Component-Based Principles and Practices for Architecting Cyber...
 

Similar to Software Building & Distribution Styles

SCA in an Agile World | June 2010
SCA in an Agile World | June 2010SCA in an Agile World | June 2010
SCA in an Agile World | June 2010Klocwork
 
Soft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptxSoft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptxKalpna Saharan
 
Writting Better Software
Writting Better SoftwareWritting Better Software
Writting Better Softwaresvilen.ivanov
 
An Application-Oriented Approach for Computer Security Education
An Application-Oriented Approach for Computer Security EducationAn Application-Oriented Approach for Computer Security Education
An Application-Oriented Approach for Computer Security EducationXiao Qin
 
Cost Effective Web Application Testing
Cost Effective Web Application TestingCost Effective Web Application Testing
Cost Effective Web Application TestingHari Pudipeddi
 
Cost effective web application testing
Cost effective web application testingCost effective web application testing
Cost effective web application testingHarinath Pudipeddi
 
Cost effective web application testing
Cost effective web application testingCost effective web application testing
Cost effective web application testingHarinath Pudipeddi
 
[2015/2016] Software development process
[2015/2016] Software development process[2015/2016] Software development process
[2015/2016] Software development processIvano Malavolta
 
1.4 Prototyping model.pptx
1.4 Prototyping model.pptx1.4 Prototyping model.pptx
1.4 Prototyping model.pptxJAYAPRIYAR7
 
Internal assessment marking system
Internal assessment marking systemInternal assessment marking system
Internal assessment marking systemShreshth Saxena
 
Large scale agile development practices
Large scale agile development practicesLarge scale agile development practices
Large scale agile development practicesSkills Matter
 

Similar to Software Building & Distribution Styles (20)

Cnpm bkdn
Cnpm bkdnCnpm bkdn
Cnpm bkdn
 
Waterfall model
Waterfall modelWaterfall model
Waterfall model
 
Shaloo Verma
Shaloo VermaShaloo Verma
Shaloo Verma
 
Unit 1 OOSE
Unit 1 OOSEUnit 1 OOSE
Unit 1 OOSE
 
Unit 1.ppt
Unit 1.pptUnit 1.ppt
Unit 1.ppt
 
SCA in an Agile World | June 2010
SCA in an Agile World | June 2010SCA in an Agile World | June 2010
SCA in an Agile World | June 2010
 
Day1
Day1Day1
Day1
 
Soft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptxSoft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptx
 
expBSIT (1) (1)
expBSIT (1) (1)expBSIT (1) (1)
expBSIT (1) (1)
 
Writting Better Software
Writting Better SoftwareWritting Better Software
Writting Better Software
 
An Application-Oriented Approach for Computer Security Education
An Application-Oriented Approach for Computer Security EducationAn Application-Oriented Approach for Computer Security Education
An Application-Oriented Approach for Computer Security Education
 
Cost Effective Web Application Testing
Cost Effective Web Application TestingCost Effective Web Application Testing
Cost Effective Web Application Testing
 
Cost effective web application testing
Cost effective web application testingCost effective web application testing
Cost effective web application testing
 
Cost effective web application testing
Cost effective web application testingCost effective web application testing
Cost effective web application testing
 
[2015/2016] Software development process
[2015/2016] Software development process[2015/2016] Software development process
[2015/2016] Software development process
 
1.4 Prototyping model.pptx
1.4 Prototyping model.pptx1.4 Prototyping model.pptx
1.4 Prototyping model.pptx
 
Internal assessment marking system
Internal assessment marking systemInternal assessment marking system
Internal assessment marking system
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Large scale agile development practices
Large scale agile development practicesLarge scale agile development practices
Large scale agile development practices
 
Test-Driven Code Review: An Empirical Study
Test-Driven Code Review: An Empirical StudyTest-Driven Code Review: An Empirical Study
Test-Driven Code Review: An Empirical Study
 

More from Jose Emilio Labra Gayo

Introducción a la investigación/doctorado
Introducción a la investigación/doctoradoIntroducción a la investigación/doctorado
Introducción a la investigación/doctoradoJose Emilio Labra Gayo
 
Challenges and applications of RDF shapes
Challenges and applications of RDF shapesChallenges and applications of RDF shapes
Challenges and applications of RDF shapesJose Emilio Labra Gayo
 
Legislative data portals and linked data quality
Legislative data portals and linked data qualityLegislative data portals and linked data quality
Legislative data portals and linked data qualityJose Emilio Labra Gayo
 
Validating RDF data: Challenges and perspectives
Validating RDF data: Challenges and perspectivesValidating RDF data: Challenges and perspectives
Validating RDF data: Challenges and perspectivesJose Emilio Labra Gayo
 
Legislative document content extraction based on Semantic Web technologies
Legislative document content extraction based on Semantic Web technologiesLegislative document content extraction based on Semantic Web technologies
Legislative document content extraction based on Semantic Web technologiesJose Emilio Labra Gayo
 
Como publicar datos: hacia los datos abiertos enlazados
Como publicar datos: hacia los datos abiertos enlazadosComo publicar datos: hacia los datos abiertos enlazados
Como publicar datos: hacia los datos abiertos enlazadosJose Emilio Labra Gayo
 
Arquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el ServidorArquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el ServidorJose Emilio Labra Gayo
 

More from Jose Emilio Labra Gayo (20)

Publicaciones de investigación
Publicaciones de investigaciónPublicaciones de investigación
Publicaciones de investigación
 
Introducción a la investigación/doctorado
Introducción a la investigación/doctoradoIntroducción a la investigación/doctorado
Introducción a la investigación/doctorado
 
Challenges and applications of RDF shapes
Challenges and applications of RDF shapesChallenges and applications of RDF shapes
Challenges and applications of RDF shapes
 
Legislative data portals and linked data quality
Legislative data portals and linked data qualityLegislative data portals and linked data quality
Legislative data portals and linked data quality
 
Validating RDF data: Challenges and perspectives
Validating RDF data: Challenges and perspectivesValidating RDF data: Challenges and perspectives
Validating RDF data: Challenges and perspectives
 
Wikidata
WikidataWikidata
Wikidata
 
Legislative document content extraction based on Semantic Web technologies
Legislative document content extraction based on Semantic Web technologiesLegislative document content extraction based on Semantic Web technologies
Legislative document content extraction based on Semantic Web technologies
 
ShEx by Example
ShEx by ExampleShEx by Example
ShEx by Example
 
Introduction to SPARQL
Introduction to SPARQLIntroduction to SPARQL
Introduction to SPARQL
 
Introducción a la Web Semántica
Introducción a la Web SemánticaIntroducción a la Web Semántica
Introducción a la Web Semántica
 
RDF Data Model
RDF Data ModelRDF Data Model
RDF Data Model
 
2017 Tendencias en informática
2017 Tendencias en informática2017 Tendencias en informática
2017 Tendencias en informática
 
RDF, linked data and semantic web
RDF, linked data and semantic webRDF, linked data and semantic web
RDF, linked data and semantic web
 
Introduction to SPARQL
Introduction to SPARQLIntroduction to SPARQL
Introduction to SPARQL
 
19 javascript servidor
19 javascript servidor19 javascript servidor
19 javascript servidor
 
Como publicar datos: hacia los datos abiertos enlazados
Como publicar datos: hacia los datos abiertos enlazadosComo publicar datos: hacia los datos abiertos enlazados
Como publicar datos: hacia los datos abiertos enlazados
 
16 Alternativas XML
16 Alternativas XML16 Alternativas XML
16 Alternativas XML
 
XSLT
XSLTXSLT
XSLT
 
XPath
XPathXPath
XPath
 
Arquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el ServidorArquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el Servidor
 

Recently uploaded

Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Christo Ananth
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxupamatechverse
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxupamatechverse
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...Soham Mondal
 
Analog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAnalog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAbhinavSharma374939
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxwendy cai
 
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVRajaP95
 
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...ranjana rawat
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Dr.Costas Sachpazis
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxupamatechverse
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Dr.Costas Sachpazis
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxJoão Esperancinha
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxAsutosh Ranjan
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130Suhani Kapoor
 

Recently uploaded (20)

Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptx
 
Roadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and RoutesRoadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and Routes
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptx
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
 
Analog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAnalog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog Converter
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptx
 
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
 
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
 
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptx
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptx
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
 

Software Building & Distribution Styles

  • 1. Software Architecture School of Computer Science University of Oviedo University of Oviedo Software Architecture Part II. Software architecture taxonomies 2: Allocation and Building 2014 Jose Emilio Labra Gayo
  • 2. Software Architecture School of Computer Science University of Oviedo Allocation & Building Relationship between software and its environment Building, development and distribution
  • 3. Software Architecture School of Computer Science University of Oviedo Contents Building Building styles and methodologies Traditional, iterative, agile Configuration Management Version control Dependency management Deployment Continuous integration Distribución Canales de distribución
  • 4. Software Architecture School of Computer Science University of Oviedo Note: This is just a selection. A more extended list can be found at: http://en.wikipedia.org/wiki/List_of_software_development_philosophies
  • 5. Software Architecture School of Computer Science University of Oviedo Incremental piecemeal Development by need Codification without following the architecture Throw-away software Budget constraints
  • 6. Software Architecture School of Computer Science University of Oviedo Waterfall Proposed in 70s Requirements Design Implementation Verification Maintenance
  • 7. Software Architecture School of Computer Science University of Oviedo Big Design Up Front Antipattern of traditional models Too much documentation that nobody reads Documentation different from developed system Architecture degradation Software artifacts implemented but unused
  • 8. Software Architecture School of Computer Science University of Oviedo V Model Requirements Analysis Design Object Design Integration Testing Unit Testing System Testing Aceptance Testing Time Detail Level Low Project Definition High Implementation Project Test and Integration
  • 9. Software Architecture School of Computer Science University of Oviedo Iterative Models Based on Prototypes Risk assessment after each iteration Initial Planning Requirements Analysis & Planning Design Implementation Deployment Testing Evaluation
  • 10. Software Architecture School of Computer Science University of Oviedo RUP (Rational Unified Process) Fuente: Wikipedia. http://es.wikipedia.org/wiki/Archivo:Rup_espanol.gif Very popular Iterative process Inception Elaboration Construction Process Transition Workflow Requirements Analysis Design Implementation Test Deployment I1 I2 E1 E2 C1 C2 C3 C4 T1 T2 Iterations Support Inception Elaboration Construction Transition workflow Configuration Management Project Management Environment
  • 11. Software Architecture School of Computer Science University of Oviedo Agile methodologies Lots of variants RAD (www.dsdm.org, 95) SCRUM (Sutherland & Schwaber, 95) XP - eXtreme Programming (Beck, 99) Feature driven development (DeLuca, 99) Adaptive software development (Highsmith, 00) Lean Development (Poppendieck, 03) Crystal Clear (Cockburn, 04) Agile Unified Process (Ambler, 05) . . .
  • 12. Software Architecture School of Computer Science University of Oviedo Agile methods Agile Manifesto (www.agilemanifesto.org) Individuals and interactions over Process and Tools Working Software Comprehensive Documentation over Customer Collaboration over Contract Negotiation Responding to change over Following a Plan
  • 13. Software Architecture School of Computer Science University of Oviedo Agile methods Feedback Changes of code are ok during development Minimize risk Software in short intervals Iterations of days Each iteration takes all the development cycle
  • 14. Software Architecture School of Computer Science University of Oviedo Agile methods Some practices (eXtreme Programming) 1. Short-time planifications 2. Testing 3. Pair programming (revisiones de código) 4. Refactoring 5. Simple design 6. Collective code ownership 7. Continuous integration 8. On-site customer 9. Small releases 10. Sustainable pace 11. Coding standards
  • 15. Software Architecture School of Computer Science University of Oviedo Agile methods 1. Short time planification After each iteration, update planification Requirements through user stories Short descriptions (size of a card) Goals ordered by usnig according to priority Risk and resources estimated by developers User stories = acceptance testing Adopt change Original plan Current plan
  • 16. Software Architecture School of Computer Science University of Oviedo Agile methods 2.- Testing: types of testing Automated Manual Functional Acceptance Testing Showcases Usability testing Exploratory testing Nonfunctional Acceptance testing (capacity, security,…) Unit testing Integration testing System testing Automated Manual/ Automated Support programming Critique project Business facing Technology facing Source: Continuous delivery, J Humble, D. Farley, 2010
  • 17. Software Architecture School of Computer Science University of Oviedo Agile methods 2. Testing Test driven development Write a test before coding Initially, code will fail Goal: pass the test Result: Automated set of tests Easier refactoring
  • 18. Software Architecture School of Computer Science University of Oviedo Agile methods 2. Testing: Acceptance testing Behaviour-driven development (BDD) Tests come from user stories They can be written collaboratively with the client Tools: Cucumber, JBehave, Specs2,... Tests act as contracts Can also be used to measure progress
  • 19. Software Architecture School of Computer Science University of Oviedo Agile methods 2. Testing: FIRST principles F - Fast Execution of (subsets of) tests must be quick I - Independent: No tests depend on others R - Repeatable: If tests are run N times, the result is the same S - Self-checking Test can automatically detect if passed T - Timely Tests are written at the same time (or before) code
  • 20. Software Architecture School of Computer Science University of Oviedo Agile methods 2. Testing: test doubles Dummy objects: objects that are passed but not used Fake objects: Contain a partial implementation. Can be: Stubs: contain specific answers to some requests Spies: stubs that record information for debugging Mocks: mimic the behaviour of the real object Mocks may contain assertions about the order/number of times methods are called
  • 21. Software Architecture School of Computer Science University of Oviedo Agile methods 3. Pair programming 2 software engineers work together Driver manages keyboard and creates implementation Observador identifies failures and gives ideas Roles are exchanged after some time
  • 22. Software Architecture School of Computer Science University of Oviedo Agile methods 4. Simple design Reaction to Big Design Up Front Obtain the simpler design that works Automated documentation JavaDoc and similar tools CRC cards
  • 23. Software Architecture School of Computer Science University of Oviedo Agile methods 5. Refactoring Improve design without changing functionality Simplify code (eliminate redundant code) Search new opportunities for abstraction Regression testing Based on the set of tests
  • 24. Software Architecture School of Computer Science University of Oviedo Agile Methods 6. Collective ownership of code Code belongs to the project, not to some engineer Engineers must be able to browse and modify any part of the code Even if they didn't wrote it Avoid code fragments that only one person can modify
  • 25. Software Architecture School of Computer Science University of Oviedo Agile Methods 7. Continuous integration Develop test cases and work to pass them Pass 100% test cases Integrate That process can be repeated 1 or 2 times/day Goal: avoid integration hell
  • 26. Software Architecture School of Computer Science University of Oviedo Agile methods 8. On-place customer Customer available to clarify user stories and help taking critical business decisions Advantages Developers don't do guesses Developers don't have to wait for decisions Improves communication
  • 27. Software Architecture School of Computer Science University of Oviedo Agile methods 9. Small releases Small enough while offering value to the user Releases are not, for example, implement DB Obtain feedback soon from client Plan next release after each iteration Try to release something every week
  • 28. Software Architecture School of Computer Science University of Oviedo Agile methods 10. Sustainable pace 40h/week = 40h/week Avoid extra-work loads Tired programmers write bad code It will slow the development at long time
  • 29. Software Architecture School of Computer Science University of Oviedo Agile methods 11. Clean code Facilitate code refactoring by other people Use good practices Code styles and guidelines Avoid code smells software craftmanship manifest Clean Code (Robert C. Martin) Fuente: Clean Code. Robert Martin
  • 30. Software Architecture School of Computer Science University of Oviedo Agile methods Variants Scrum Project/people managment Divide work in sprints 15' daily meetings Product Backlog Kanban Lean model Just in Time Development Limit workloads
  • 31. Software Architecture School of Computer Science University of Oviedo
  • 32. Software Architecture School of Computer Science University of Oviedo Configuration Management Different software versions New or different functionalities Issues and bugs management New execution environments Configuration management = Manage evolution of software System changes = team activities Necessary cost and effort
  • 33. Software Architecture School of Computer Science University of Oviedo Version control Systems that manage different code versions Be able to Access all the system versions Easy to rollback Differences between versions Collaborative development Branch management Metadata Author of a versión, update date, who to blame, etc.
  • 34. Software Architecture School of Computer Science University of Oviedo Baseline Baselines (Reference line): Software that is subject to configuration management Version 1.0 Windows Version 2.0 Windows Version 1.5 Linux Version 1.5 Sun Version 2.5 Desktop Linux Version 2.5 Desktop Server
  • 35. Software Architecture School of Computer Science University of Oviedo Releases and versions Version: instance of a system which has a different functionality to other instances Release (deliverable): instance of a system which is distributed to external people outside to development team. It could be considered a final product at some point of time
  • 36. Software Architecture School of Computer Science University of Oviedo Version naming - some conventions Pre-alfa Before testing Alfa During testing Beta (or prototype) Testing made by some users Beta-tester: user that does the testing Release-candidate Beta versión that could become final product
  • 37. Software Architecture School of Computer Science University of Oviedo Other schema namings Simple numbering 1.1, 1.1-alpha Using attributes Date, creator, language, client, state,... Recognizable Names Ganimede, Galileo, Helios, Indigo, Juno,... Precise Pangolin, Quantal Quetzal,...
  • 38. Software Architecture School of Computer Science University of Oviedo Deliverables publication A release implies functionality changes Planning Publishing a release has costs Usually, current users don't want new releases External factors: Marketing, clients, hardware, ... Agile model: frequent releases Continuous integration minimizes risk
  • 39. Software Architecture School of Computer Science University of Oviedo Deliverables publication A release is more than just software Configuration files Some needed data files Installation programs Documentation Publicity and packaging Distribution channels: Physical (CDs, DVDs), Web (download), stores
  • 40. Software Architecture School of Computer Science University of Oviedo Version control Definitions Repository: where changes are stored Baseline: Initial version Delta: changes from one version to other Trunk (master): Main branch in a system Branch: deviation from main branch Tag: Marks a line of versions Baseline 1 4 Trunk 2 3 Branchs 5 6 9 7 T1 T2 8 10 Tags merge
  • 41. Software Architecture School of Computer Science University of Oviedo Version control Definitions Checkout: Working Local copy from a given branch Commit: Introduce current changes in the control version system. Merge: Combine two sets of changes Branching styles: by feature, by team, by version Baseline 1 4 Trunk 2 3 Branchs 5 6 9 7 T1 T2 8 10 Tags merge
  • 42. Software Architecture School of Computer Science University of Oviedo Version control 2 types Centralized Centralized repository for all the code Centralized administration CVS, Subversion, ... Distributed Each user has its own repository Git, Mercurial
  • 43. Software Architecture School of Computer Science University of Oviedo Git Designed by Linus Torvalds (Linux), 2005 Goals: Applications with large number of source code files Efficiency Distributed work Ecach development has its own repository Local copy of all the changes history It is posible to do commits even without internet connection Support for non-lineal development (branching)
  • 44. Software Architecture School of Computer Science University of Oviedo Local components 3 local components: Local working directory Index (stage area). Also called cache Project history: Stores versions or commits HEAD (most recent version) commit Project History Commits add rm HEAD Local working directory Index stage area
  • 45. Software Architecture School of Computer Science University of Oviedo Branches feature-2 feature-1 develop hotfix-1 master Git facilitates branch management master = initial branch Operations: Create branches (branch) Change branch (checkout) Combine (merge) Tag branches (tag) Multiple branching styles tags 0.1 0.2 1.0 Branches
  • 46. Software Architecture School of Computer Science University of Oviedo Remote repositories Connect with remote repositories origin = initial Local working directory History Commits Index stage area Remote repository origin push clone fetch pull commit add rm Local Machine HEAD
  • 47. Software Architecture School of Computer Science University of Oviedo Git - usual commands init: inicialize repository clone: clone a repository add: add contents to index commit: record changes status: check state of repository pull: get changes from an external repository push: put changes in an external repository branch: manage branches (list, create, delete) merge: combine two branches checkout: recover a given branch rm: delete files mv: move files .gitignore file indicates which files are not going to be tacked by version control system
  • 48. Software Architecture School of Computer Science University of Oviedo Git typical workflow Local workstation Development Build Central repository Build pull push Build Done!
  • 49. Software Architecture School of Computer Science University of Oviedo Dependency management Library: Collection of functionalities used by the system that is being developed System depends on that library Library can depend on other libraries Library can evolve Incompatible versions appear Dependency graph Mozilla Firefox dependency graph Source: The purely functional deployment model. E. Dolstra (PhdThesis, 2006)
  • 50. Software Architecture School of Computer Science University of Oviedo Dependency management Different models Local installation: libraries are installed for all the system Example: Ruby Gems Embed external libraries in the system (version control) Ensures a correct version External link External repository that contains the libraries Depends on Internet and on library evolution
  • 51. Software Architecture School of Computer Science University of Oviedo Automated building Tools to automate building and deployment Organize different tasks Dependencies between tasks They have to ensure that: Execute all prerequisites Execute them only once Inicialize Prepare testing data Compile source code Compile testing code Run testing
  • 52. Software Architecture School of Computer Science University of Oviedo Automate building make: Included in Unix Product oriented Declarative language based on rules When the Project is complex, configuration files can be difficult to manage/debug Several versions: BSD, GNU, Microsoft Very popular in C, C++, etc.
  • 53. Software Architecture School of Computer Science University of Oviedo Automate building ant: Java Platform Task oriented XML syntax (build.xml)
  • 54. Software Architecture School of Computer Science University of Oviedo Automate building maven: Java Platform Convention over configuration Manage Project lifecycle Dependency management XML syntax (pom.xml)
  • 55. Software Architecture School of Computer Science University of Oviedo Automate building Embedded languages Domain specific languages embedded in higher level ones Great versatility Examples: gradle (Groovy) sbt (Scala) rake (Ruby) Buildr (Ruby) …
  • 56. Software Architecture School of Computer Science University of Oviedo Execution environtments A staging environment is also used Development environment Testing Environments Production Environment Testing Server Integration Server Version Control Production Server Server farm
  • 57. Software Architecture School of Computer Science University of Oviedo Continuous integration Continuous integration tools Hudson, Jenkins, Travis, Bamboo Continuous Integration Web Interface Reports checkout/commit Central Code repository Development Team
  • 58. Software Architecture School of Computer Science University of Oviedo Social coding Public repositories of source code Different policies Examples: Sourceforge Google projects Bitbucket Github
  • 59. Software Architecture School of Computer Science University of Oviedo Tools in the cloud Several tools to help development in the cloud Examples: IaaS: Infrastructure Amazon ECS PaaS: Platform Google AppEngine, Heroku SaaS: Software GMail, GDocs, etc.
  • 60. Software Architecture School of Computer Science University of Oviedo Product lines Distribution channels
  • 61. Software Architecture School of Computer Science University of Oviedo Product lines Product line: products that share a set of functionalities to satisfy some given market segment Goal: Reduce development effort Improve productivity Evolve from a single product to a product line
  • 62. Software Architecture School of Computer Science University of Oviedo Product lines Requirements Identify generic solutions to common problems Component based development Generic Platforms Software reuse Automatic system generation
  • 63. Software Architecture School of Computer Science University of Oviedo Distribution channels Traditional distribution CDs, DVDs, ... Web based Downloads, FTP, ... Application markets Linux packages App stores: AppStore, Google Play, Windows Store