software lifecycle management in asemantics

26
Software Lifecycle Development in Asemantics Simone Tripodi Federico Zani Michele Mostarda 1

Upload: simonetripodi

Post on 17-Jun-2015

570 views

Category:

Technology


3 download

DESCRIPTION

An old presentation I gave in 2008 in the old company to explain why adopting some good practice while developing software

TRANSCRIPT

Page 1: Software Lifecycle Management in Asemantics

Software Lifecycle Development

inAsemantics

Simone TripodiFederico Zani

Michele Mostarda

1

Page 2: Software Lifecycle Management in Asemantics

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

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

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

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

... 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

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

The story so far...

• Matrix OpenID Provider

8

Page 9: Software Lifecycle Management in Asemantics

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

10

Page 11: Software Lifecycle Management in Asemantics

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

Before the team...

• coding;

• coding;

• unit testing;

• svn ci;

• coding;

• integration testing;

• svn ci;

12

Page 13: Software Lifecycle Management in Asemantics

... 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

DependenciesThe neverending story

• Direct dependencies

14

Page 15: Software Lifecycle Management in Asemantics

• Transitive dependencies

DependenciesThe neverending story II

15

Page 16: Software Lifecycle Management in Asemantics

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

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

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

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

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

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

Hudson

22

Page 23: Software Lifecycle Management in Asemantics

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 25: Software Lifecycle Management in Asemantics

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

26