Pages

Monday, April 23, 2012

Agile Software Development


Definition: 

Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.

Agile Manifesto:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan
The most important thing to know about Agile methods or processes is that there is no such thing. There are only Agile teams. The processes we describe as Agile are environments for a team to learn how to be Agile.

A group of people created the Manifesto for Agile Software Development that values individuals and interactions over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation, responding to change over following a plan, while explicitly acknowledging the value of the latter items.

Craftsmanship, Chief Programmers, and Individuals
Agile software development focuses on individual competency and on motivated individuals (‘Build projects around motivated individuals.’). This attitude is also described by the term craftsmanship [6], and manifests in pair programming, collective code ownership and mentoring in XP, or chief programmers in FDD.

Team Size
While successful agile projects of up to 250 people are cited [6], most authors see a size limit at about 15 to 20 persons due to the tightly coordinated teamwork necessary.

Self-Organizing Teams
Agile development stresses the importance of self-organizing teams that are able to rapidly adjust to changing requirements and new challenges (‘The best architectures, requirements, and designs emerge from self-organizing teams.’, ‘At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.’).

Team Co-location
Agile development aims at close, personal contact and collaboration within the development team (‘the most efficient and effective method of conveying information to and within a development team is face-to-face conversation.’).

Customer Interactions
In agile development, the continuos interaction and collaboration with the customers is paramount. A short feedback loop is necessary to be able to respond quickly to new information like changes in the requirements. These principles are embodied in practices like customer on site in XP.

Early Delivery of Working Code and Feedback
Agile development sees working code as the ‘primary measure of progress’. To use this measure in the collaboration with customers, and in order to ensure short feedback cycles, frequent releases of working software are intended (‘Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.’). These practices increase the motivation for all participants, allow for easier discussion of the current status and therefore increased chances to uncover necessary changes and efficient possibilities for incorporating them (‘Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.’).

Changing Requirements, Good Design, and Simplicity
Closely connected to frequent releases is the attitude of agile development towards change. As release and feedback cycles are short, changes in the requirements happening anyhow due to the turbulent environment can easily be uncovered, and can more easily be implemented than at the end of the development (‘Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.’). Incorporating these changes in addition needs an appropriate design (‘Continuous attention to technical excellence and good design enhances agility.’). Therefore agile development stresses the importance of having a simple design that allows for easy changes (‘Simplicity - the art of maximizing the amount of work not done - is essential.’) and refactoring.

References:

  • Agile Principles and Open Source Software Development: A Theoretical and Empirical DiscussionStefan Koch 
  • http://www.agile-process.org/
  • http://www.agilealliance.org/




Friday, April 20, 2012

Developing Nations With Technology


Allowing developing nations access to technology could be a key to lifting them out of poverty.

Agriculture is the sector that continues to sit in the driver's seat and will remain so for ever, not rid of stomachs therefore becomes quite important for any reform or revolution to tackle this area and in this race information technology has been the leading candidate. Information technology has taken the lead in the process of exchanging information between Agro scientists, engineers, farmers and students. Due to the central unit of information technology on the Internet may have restricted the scope of information, but the situation will not remain so for long.Now scientists from around the world collaborate via the Internet, to share information about research on soil fertility, hybridization of seeds, reducing human efforts and making the farming environment less demanding and more profitable.

Future Guidelines
In an edition of "The Economist", I found something that might trigger anxiety in any person when he says that "in 1974, Henry Kissinger, then secretary of state in the U.S., said the first world food conference in Rome that no child went to bed with hunger in a decade. A little more than 35 years later in the week for a food summit in Rome United Nations, 1 million people go to bed hungry. This failure, and terrible, which may soon get worse. None of the underlying problems that produced agricultural a rise in food prices in 2007-08 and increased the number of hungry people has gone away. Between now and 2050 the world population will increase by one third, but the demand for agricultural products will increase by 70%. "Business is usually better not to go to the estimates, as the panacea lies in the maximum contribution of information technology in agricultural research and transfer knowledge.

Agriculture sector has remained against time and managed to green, white, speed yellow, blue and cyber with time. Availability information and effective use of this information is crucial to successful economic development. Information on suggestions of experts, material inputs, financial support, technological innovations and changing market conditions have enormous impact on agriculture as also happens with any other sector. How agriculture and information technology involves itself play an important role in determining the future welfare of those who have directly dependent on agriculture for their livelihood, especially in developing countries like Nepal. In this context, it is more prudent to extend the benefits of IT for agriculture and not underestimate the huge potential growth to indulge in this sector.Kings of all countries should take initiatives designed to mobilize farmers, scientists, institutions and organizations to promote the participation of the Information Technology in Agriculture.

Welcome

You all are most welcome to my bolg.