software lifecycle management in asemantics
DESCRIPTION
An old presentation I gave in 2008 in the old company to explain why adopting some good practice while developing softwareTRANSCRIPT
![Page 1: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/1.jpg)
Software Lifecycle Development
inAsemantics
Simone TripodiFederico Zani
Michele Mostarda
1
![Page 2: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/2.jpg)
Reasons (1)• Building process is ALWAYS neglected;
• Building process is a core part of Software Engineering;
• We’ve learnt the lesson from past BAD experiences (Joost, Espresso);
• Artifacts, documentation, repositories... all of them MUST NOT be generated from “my laptop” - developers MUST develop (and TEST);
2
![Page 3: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/3.jpg)
Reasons (2)
• DRY (don’t repeat yourself) - building a new environment for every project is absolutely USELESS;
• New developers should be able to join the project quickly;
• And don’t forget: “we’re not combing the dolls!!!” ;)
3
![Page 4: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/4.jpg)
What we developed?
• Absolutely nothing!
• “Reusing” is a very old concept;
• All we need (Maven, Hudson, Apache, ...) is OSS;
• A lot of Companies and Open Source communities (Apache, Codehaus) are using the same approach.
4
![Page 5: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/5.jpg)
And what about the housing?
• Priceless!
• Geeno is an Asemantics’ machine previously bought;
• DynDns.org is a free internet service.
5
![Page 6: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/6.jpg)
... ok, and the sysadmin?
• Priceless!
• Federico, Michele and Simoneare Asemantics’ employee;
• We started-up this system for Matrix’ project, so Matrix is paying our time ;)
6
![Page 7: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/7.jpg)
so... how much?
• There are some things that money can’t buy, for the rest there is MasterCard!
7
![Page 8: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/8.jpg)
The story so far...
• Matrix OpenID Provider
8
![Page 9: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/9.jpg)
Developers’ team:easy situation
• Simone:
• Analyst;
• Developer;
• All knowledge in him’s hands;
• Pasquale’s enemy #1!
9
![Page 10: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/10.jpg)
10
![Page 11: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/11.jpg)
Involved people: a technical team!!!
• No more just 1 (one) person:
• Simone: OpenID Coordination;
• Federico: OpenID Provider Responsable;
• Michele: OpenID RP Responsable.
• Knowledge must be shared;
• Code must be shared - not just the source
11
![Page 12: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/12.jpg)
Before the team...
• coding;
• coding;
• unit testing;
• svn ci;
• coding;
• integration testing;
• svn ci;
12
![Page 13: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/13.jpg)
... but now• Everybody is coding;
• everybody is committing code;
• everybody is developing different parts;
• every part must be INTEGRATEDwith each other.
13
![Page 14: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/14.jpg)
DependenciesThe neverending story
• Direct dependencies
14
![Page 15: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/15.jpg)
• Transitive dependencies
DependenciesThe neverending story II
15
![Page 16: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/16.jpg)
Maven
• Maven is a software project management and comprehension tool. It can:
• manage a project's build;
• reporting;
• documentation.
• Dependency management is one of the features of Maven that is best known to users and is one of the areas where Maven excels!!!
16
![Page 17: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/17.jpg)
M2Repo• A repository in Maven is used to hold build artifacts and
dependencies of varying types.
• Local repository
• refers to a copy on your own installation that is a cache of the remote downloads;
• contains the temporary build artifacts that you have not yet released.
• Remote repository
• refers to any other type of repository, accessed by a variety of protocols such as file:// and http://
17
![Page 18: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/18.jpg)
Why not store Artifactsin SVN?
• It uses less storage - avoid to replicate same artifacts in different projects!!!
• It makes checking out a project quicker;
• No need for versioning.
18
![Page 19: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/19.jpg)
Continuous Integration• Continuous Integration is a software development practice where members of a team integrate their work
frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.
19
![Page 20: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/20.jpg)
CI Practices
• Commit code frequently;
• Don’t commit broken code;
• Fix broken builds immediately;
• Write automated developer tests;
• All tests and inspections must pass;
• Avoid getting broken code.
20
![Page 21: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/21.jpg)
Hudson• Hudson provides an easy-to-use so-called
continuous integration system, making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build.
21
![Page 22: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/22.jpg)
Hudson
22
![Page 23: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/23.jpg)
Development Lifecycle
Source Control (Subversion) CI Server (Hudson)
Simone
Federico
Michele
unit testingartifacts building
documentation generation
Artifacts/AssembliesRepository
Development/StagingDocumentation Sites
1) Simone commits his code
2) Hudson triggered if code is committed
2’) Hudson - using Maven - produces artifacts and
documentation
3) Artifacts will be published to a public repository
4) Documentation will be publishedto a public site
5) Federico does checkout of a subset of all code
6) Federico always uses last stable build of all dependencies
downloading them from the repository
5) Mike gets always updated doc and references
Typical use case
23
![Page 24: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/24.jpg)
Asemantics’ References
• Hudson: http://asemantics.dyndns.org/hudson/
• M2Repo: http://asemantics.dyndns.org/m2repo/
• M2Doc: http://asemantics.dyndns.org/m2doc/
• Everything is documented: https://front-1.asemantics.com/wiki/asemantics/index.php/Staff:Geeno
24
![Page 25: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/25.jpg)
Used Tools
• Maven (http://maven.apache.org/)
• Hudson (https://hudson.dev.java.net/)
• Apache (http://httpd.apache.org/)
25
![Page 26: Software Lifecycle Management in Asemantics](https://reader033.vdocument.in/reader033/viewer/2022042815/55816e0ad8b42ae15f8b4964/html5/thumbnails/26.jpg)
26