Arquivo para a categoria da “execução”

Ferramentas a ajudar controlar o desenvolvimento Offshore do software

-->

Em todo o projeto do software, o componente do trabalho do desenvolvimento do software representa somente 30% a 50% do custo total. Quanto para ao custo total, é removido pela gerência de projeto, a análise e o projeto, testar, e preparação subordinada das atividades, como, da gerência e do ambiente. Isto é porque as economias de custo em projetos offshore não são mais de 15% a 25% do custo total do projeto. Você nunca encontrará um retorno de 100% a 200% em tais projetos, a menos que o projeto bem estiver definido e especificado, e o projeto estiver preparado com detalhes. You will often find the desenvolvimento offshore do software a organização que reivindica tais retornos em projetos outsourced a eles. Não obstante, o saving de 25% em seu custo do projeto total pode ser completamente uma quantidade significativa.

Para conseguir o sucesso em projetos offshore do desenvolvimento do software, a parte a mais vital é a exigência de um sistema de comunicação failsafe. É muito importante que a comunicação está mantida viva entre você e seus sócios offshore, de modo que a informação possa ser trocada e as matérias relacionadas sejam classificadas para fora. Se este esforço sincronizado não for assegurado no início, o sucesso do projeto será duvidoso. Your communication strategy needs to be well defined, and such strategies should include communication tools, such as conference calls, video conferencing, wikis, bug tracking, and continuous integration build servers and a source control repository. Here we will have a brief look at some of these tools:

Conference calls/Video Conferencing - There should be a routine conference call set up between your team and the team from your offshore company. In here too a schedule needs to be set up, ensuring that conferences start and end at specified time. The issues discussed should be well documented to be referred to later.

If you have an access to a video conferencing system, it would become a highly desired facility in such scenarios. However, true video conferencing equipment would require high bandwidth, unlike the $100 web cams which are increasingly used for such conferencing. Setting up video conferencing and its operation is costly, and this conferencing could perhaps be scheduled once a week.

Wiki/Whiteboard/RSS - You would need collaborative development effort in any project outsourced offshore. Ideally the “white-board” solution is quite effective in solving different kinds of technical issues. This allows both the parties to work on a common document structure, hence following the same method of representing their status regarding the project.

Continuous Integration and Bug Tracking – You need to a way for all team members to immediately, at any time, know the status of the project from the code perspective.   Two ways this can be facilitated is through a continuous integration build server and the implementation and diligent maintenance of bug tracking/automated test results.

Source Control Repository - A document repository is a part of an important tool for providing communication between the onsite and offshore teams. This repository should be accessible by both the teams 24 hours, 7 days a week, remembering that your offshore team will be working when you will have nights. The repository should preferably have a secured access, with each identified members having their own username and password.

You probably noticed the exclusion of email and instant messenger (IM) as tools?  Of course, I do not suggest you remove these applications entirely.  But offshore software development teams tend to quickly rely on them too much.  When information is exchanged across email or IM, the knowledge contained in the communication is buried.  Using these tools appears to be a time saver on the surface.  However, in the longer term, in the exchange of emails/IM becomes a burden and time waster when attempting to reference previous communication dialog.


What is Agile Software Development?

Agile software development is a framework utilized software development projects. It was born out of frustration within traditional project management activities. According to Wikipedia:

The modern definition of agile software development evolved in the mid 1990s as part of a reaction against “heavyweight” methods, as typified by a heavily regulated, regimented, micro-managed use of the waterfall model of development. The processes originating from this use of the waterfall model were seen as bureaucratic, slow, demeaning, and inconsistent with the ways that software engineers actually perform effective work.

The objective when implementing an agile methodology is to minimize risks in software development. Within all agile software development methodologies, there are common principles. The Agile Alliance lists the following principles in the Agile Manifesto:

* Customer satisfaction by rapid, continuous delivery of useful software
* Working software is delivered frequently (weeks rather than months)
* Working software is the principal measure of progress
* Even late changes in requirements are welcomed
* Close, daily, cooperation between business people and developers
* Face-to-face conversation is the best form of communication
* Projects are built around motivated individuals, who should be trusted
* Continuous attention to technical excellence and good design
* Simplicity
* Self-organizing teams
* Regular adaptation to changing circumstances

There are many disciplines that fall within the agile software development umbrella. Some well known agile software development methodologies include Scrum, Crystal Clear, Lean, Extreme Programming (XP), Adaptive Software Development, Feature Driven Development, and DSDM.

Agile Software Development Status
Agile Software Development is often contrasted to the most prevalent software development model: Waterfall. According to a study from ACM:

“It is both surprising and disappointing, then, that in a survey of almost 200 practitioners, accounting for several thousands of projects over the past five years, the dominant process model reported was the Waterfall, with more than a third claiming its use.5 This result raises a question: Do practicing professionals know the Waterfall when they see it? Perhaps they are confusing it with other process models. This seems unlikely, but so does its dominance. It’s more likely that in many circumstances, doing the wrong thing is easier than doing the right thing—and this is not a recipe for success”

Where to Learn More

AgileAlliance
Using Agile in Offshore Development
Agile Software Development Articles

Recommended Books

Agile Software Development (Wikipedia)


Using an Agile Software Process with Offshore Development

If you have been implenting or considering Agile Software Development Process with Offshore Software Development Providers, this article from Martin Fowler, might be interesting to you.

An excerpt

For the last four years ThoughtWorks has operated a lab in Bangalore India to support our software development projects in North America and Europe. Traditional approaches to offshore development are based on plan-driven methodologies, but we are very firmly in the agile camp. Here I discuss our experiences and lessons learned in doing offshore agile development. So far we’ve discovered that we can make it work, although the benefits are still open to debate.

Agile Software Process with Offshore Development


Agile Software Development Ecosystem

What is an Agile ecosystem ?

Agile ecosystem is an extended methodology concept that has 3 characteristics: barely sufficient structure, collaborative values, and chaordic perspective. Since the name will not give any clue to you on what they really are..we will look at each of these characteristics in detail.

It is the wider coverage than normal methodology that make it an ecosystem. Methodology does not touch much on the human factor of the development such as the organization structure which is covered in “barely sufficient”, and collaboration and teamwork.

Barely sufficient methodology.

This characteristic is a reflection of the chaordic characteristic - in this case it refers to the organization structure, which is very streamline (just enough, barely sufficient) in order to be flexible to react to changes.In an Agile environment the control is more on how to make the different individuals to work together as a team, instead of making every one the same (through rigorous process documents) so that it will be automatically (or assumed) become a team.

In programmer language - the old method of team is an ARRAY - something that hold similar type of element, while Agile team on the other hand is a RECORD - where each element in the RECORD is different, and each one serves its own function the best, but still overall they work together to construct the RECORD.

Collaborative values.

In the old development method, the processes are defined on stone - every one must follow the same process irregardless of individual talent and skills. Agile on the other hand promote customization of the process in order to tap the best out of individual developer.

Agile also promote face to face teamwork interaction. In the old system, team communicate through documentation - that is why the documents have to be very detail and big, hence very hard to maintain in volatile environment.

Chaordic perspective.

The word chaordic is actually a combination of chaos and order.

Early part of an Agile projects are based on rigorous exploration of concepts and technologies. Even during the whole development cycle the concept of exploration is actually still going. In this type of development environment the normal standard concept such as CMMI wont stand a chance.

You can see from the previous characteristics (barely sufficient, and collaborative) how the chotic part is included into Agile characteristic.

The question is how do you manage such an environement and organization?

The answer is to employs adaptive management style- macromanagement (instead of micromanagement). The leaders have to leave large room for innovation and creativity in order to address keep changing environment. In the mean while still have the eye on the final goal and what is the current state of the project.

The organization can react very fast base on the current state of the project compare to the final goal.

Conclusion

There you have it - simple description on the three characteristics of an Agile ecosystem. As you see Agile ecosystem requires more to the project leader and the management team compare to the old just follow the book type of software development. So if you are selling the Agile idea, the first group that have to buy it is the management people.

Sa wahid is a veteran software development project lead. Before becoming a project lead he has involved in various area of software development in various type of industries including manufacturing, telecommunication and electronics. You can learn more from other articles that he has written on software development topics from his website - Free software development information site.Article Source: http://EzineArticles.com/?expert=Sa_Wahid

Editor’s Note: possibility of interest in Offshore Software Development - Evolution of Value Chain


Outsourcing Relationship Management Software

Outsourcing relationship management software may augment existing collaboration and communication tools and processes.  It does not need to entirely replace it.

I suggest taking a look at ServiceCycle Mgmt as a outsourcing relationship management software.

In a previous article, the concept was called outsource management software, but I have come to learn that this topic might be known as Outsourcing Relationship Management (ORM) as well.  Note: ORM is also used in object relational mapping and operational risk management