tools

21
Master on Free Software Development & coordination Tools Juan José Sánchez Penas

Upload: andres-maneiro

Post on 15-May-2015

1.024 views

Category:

Business


1 download

TRANSCRIPT

Page 1: Tools

Master on Free Software

Development & coordinationTools

Juan José Sánchez Penas

Page 2: Tools

Master on Free Software

Coordination tools

Page 3: Tools

Master on Free Software

Coordination tools (I)

● Goal: we group here the tools devoted to the work management of a hackers group

● There are multiple areas managed by these tools:● Work schedule● Documentation/information● Repositories● Tickets/bugs● Communications

Page 4: Tools

Master on Free Software

Coordination tools (II)● Some tools cover various areas (sourceforge

and forges)

● Usually they try to integrate multiple services or collaborate with other tools

● These tools do not depend on the platform and are commonly shared by the communities

● Communities and projects inside companies decide which ones are interesting for them

● Agile methods and practices are very common

Page 5: Tools

Master on Free Software

Coordination tools: work schedule

● Goal: organize and plan the work of the project

● Project organization using Agile methodologies and practices, very flexible (XP, SCRUM, DSDM, Lean software development, Post-agilism, etc.)

● Tools: wikis, agile tools, planning

● Examples: Twiki (XPTracker), Trac (Timing and Estimation, Burndown chart), planner, OpenProj, dotproject (web)

● Commercial: VersionOne and TargetProcess

Page 6: Tools

Master on Free Software

Coordination tools:

documentation/information

● Goal: organize, create and maintain project documentation and information

● This repositories allows the fast development, reorganization and sharing of the information and documentation.

● Tools: wikis, content management systems

● Examples: TWiki, Trac, Mediawiki● Commercial: confluence

Page 7: Tools

Master on Free Software

Coordination tools:

documentation/information

Page 8: Tools

Master on Free Software

Coordination tools: Repositories

● Goal: store and manage the modifications of the code and documentation

● Key role in the software development● Different types of repositories examples:

● Decentralized: GNU arch, bazaar, git, SVK● Centralized: CVS, SVN

● Commercial: BitKeeper

Page 9: Tools

Master on Free Software

Coordination tools: tickets/bugs● Goal: keep track of a pending tasks list or

bugs inside a project● Helps to the definition of list of tasks or

roadmaps (schedule tools)● It is important for the quality assurance of

the projects● Tools: bugtracker, issue tracker● Examples: bugzilla, request tracker,

CVSTrac

Page 10: Tools

Master on Free Software

Coordination tools: Communications● Goals: direct communication between the

hackers in a project● These tools are important because they

allow the hackers to discuss and coordinate in the daily work

● Tools: mailing lists (archives), chats, instant messaging

● Examples: mutt, evolution, xchat, pidgin

Page 11: Tools

Master on Free Software

Development tools

Page 12: Tools

Master on Free Software

Development tools (I)● Goal: help the hackers to write code,

compile it and debug/profile it● These tools could depend on the platform

and community that you are working● It is interesting if we can use the same

tool for multiple platform/environments● Project development integration (from

compilation to testing)

Page 13: Tools

Master on Free Software

Development tools (II)● We can classify the tools in the following

groups:

● Designing tools● Editors and environments (IDEs)● Building systems● Testing● Continuous integration (coordination)● Debugging● Profiling

Page 14: Tools

Master on Free Software

Development tools: design● Goal: draw the design of the software we

are developing● It is important to draw the designs in

order to communicate and think about the developments

● Mainly OO designs● Examples: Umbrello, Dia, ArgoUML, xfig,

graphviz, kivio

Page 15: Tools

Master on Free Software

Development tools: design● Goal: draw the design of the software we are

developing

● It is important to draw the designs in order to communicate and think about the developments

● Mainly OO designs● Examples: Umbrello, Dia, ArgoUML, xfig,

graphviz

Page 16: Tools

Master on Free Software

Development tools: editors (IDEs)● Goal: interfaces that help writing the code and

integrate other development tools

● Different depending on platform and community

● Some try to be a multiplatform solution (GNU/Emacs, Eclipse)

● Others are focused in one platform (NetBeans, Anjuta, Monodevelop, Kdevelop)

● Important in order to do an efficient work to know well the tool we are going to use

Page 17: Tools

Master on Free Software

Development tools:

building and testing● Goal: help with the construction of

software, mainly with not simple projects and development/execution of tests

● The main tools here are the GNU autotools (depends on the platform)

● Java community uses Ant● Unit and functional testings are usually

integrated with the building system

Page 18: Tools

Master on Free Software

Development tools:

building and testing

Page 19: Tools

Master on Free Software

Development tools:

continuous integration● Goal: manage the code automatically● One of the core pieces when working in a

agile group, allows the fast integration of the code

● The project must compile all the time ● It usually runs the tests ● Examples: buildbot, mozilla tinderbox● It can also integrate repository

information and profiling

Page 20: Tools

Master on Free Software

Development tools:

continuous integration

Page 21: Tools

Master on Free Software

Development tools:

debugging and profiling● Goal: find the bugs and problems of the

projects and solve them● Very important to use some basic tools

and its semantics to create good software● These tools depend on the platform and

the community, and can be integrated in the IDE

● Examples: gdb, valgrind, Electric Fence, kcachegrind, OProfile, Sysprof, gprof, exmap, iogrind