Wednesday, February 13, 2008

Extreme Programming

What is Extreme Programming?

Extreme Programming (XP) is actually a deliberate and disciplined approach to software development. The methodology is designed to deliver the software your customer needs when it is needed. This methodology also emphasizes team work. Managers, customers, and developers are all part of a team dedicated to delivering quality software. XP improves a software project in four essential ways:

  • Communication
  • Simplicity
  • Feedback
  • Courage

XP programmers communicate with their customers and fellow programmers. They keep their design simple and clean. They get feedback by testing their software starting on day one. They deliver the system to the customers as early as possible and implement changes as suggested. With this foundation XP programmers are able to courageously respond to changing requirements and technology.

A Change in the Way We Program

A typical project will spend about twenty times as much on people as on hardware. That means a project spending 2 million dollars on programmers per year will spend about 100 thousand dollars on computer equipment each year. Let's say that we are smart programmers and we find a way to save 20% of the hardware costs by some very clever programming tricks. It will make the source code harder to understand and maintain, but we are saving 20% or 20 thousand dollars per year, a big savings. Now what if instead we wrote our programs such that they were easy to understand and extend. We could expect to save no less than 10% of our people costs. That would come to 200 thousand dollars, a much bigger savings.

Another important issue to customers is bugs. XP emphasizes not just testing, but testing well. Tests are automated and provide a safety net for programmers and customers alike. Tests are created before the code is written, while the code is written, and after the code is written. As bugs are found new tests are added. A safety net of tight mesh is created. Bugs don't get through twice.

Another thing your customers will notice is the attitude XP programmers have towards changing requirements. XP enables us to embrace change. Too often a customer will see a real opportunity for making a system useful after it has been delivered. XP short cuts this by getting customer feed back early while there is still time to change functionality or improve user acceptance.

When should Extreme Programming be used?

Extreme Programming (XP) was created in response to problem domains whose requirements change. Your customers may not have a firm idea of what the system should do. You may have a system whose functionality is expected to change every few months. In many software environments dynamically changing requirements is the only constant. This is when XP will succeed while other methodologies do not.

XP was also set up to address the problems of project risk. The XP practices are set up to mitigate the risk and increase the likelihood of success.

XP is set up for small groups of programmers. Team size between 2 and 12 is perfect, though larger projects of 30 have reported success. Your programmers can be ordinary to use XP. But you can not use XP on a project with a huge staff. We should note that on projects with dynamic requirements or high risk you may find that a small team of XP programmers will be more effective than a large team anyway.

XP requires an extended development team. The XP team includes not only the developers, but the managers and customers as well, all working together elbow to elbow. Asking questions, negotiating scope and schedules, and creating functional tests require more than just the developers be involved in producing the software.

Another requirement is testability. You must be able to create automated unit and functional tests. While some domains will be disqualified by this requirement, you may be surprised how many are not. You do need to apply a little testing ingenuity in some domains. You may need to change your system design to be easier to test.

The last thing on the list is productivity. XP projects unanimously report greater programmer productivity when compared to other projects within the same corporate environment. But this was never a goal of the XP methodology. The real goal has always been to deliver the software that is needed when it is needed.

[Courtesy Extreme Programming Website]

Wednesday, February 6, 2008

Recipe for XML and Web-Services - The Low Carb alternative for EDI

EDI since decades have been the standard for inter-Organizational Information Exchange. Electronic data interchange (EDI) is the transmission, in a standard syntax, of unambiguous information of business or strategic significance between computers of independent organizations. EDI users do not have to change their internal databases. EDI is the common "language" used to get information from one computer system to another. Users must translate this information to or from their own computer systems, but this translation software has to be prepared only once.

EDI has some serious limitations, few of them being:
  1. EDI is expensive, it uses a dedicated communication infrastructure.
  2. The definitions used are far from flexible. For instance, it defines a limited set of protocols and terms with respect to a certain set criterion for specific industries. It does allow business users to add their own custom defined tags.

Becuase of the initial popularity of EDI, most of the financial, logistics and retail businesses depend on it for almost all their information exchange. However, the scenario is slowly changing as the industry leaders, along with standard EDI exposure are also providing an alternative interchange mechanics using Web-Services and XML as the new frontier. XML makes communication easy. It's a great tool for transactions between businesses.


So what is XML?

  • XML is a meta-language. A meta-language is a language that's used to define other languages. You can useXML for instance, to define a language like Web Markup language (WML).
  • XML is a smaller version of Standard Generalized Markup Language(SGML).
  • It's easy to master and that's a major advantage compared to SGML which is a very complex meta-language.


XML: What can it do?

With XML you can :

  • Define data structures.
  • Make these structures platform independent.
  • Process XML defined data automatically.
  • Define your own tags.


However, with XML you cannot define how your data is shown. To show data, you need other techniques Like CSS or XSL along with your XML. XSL (eXtensible Stylesheet Language) is created for this purpose. But the presentation can also be defined with CSS (Cascading Style Sheets).


Now Coming down to Web Services, What are Web Services?

  • Web services are application components
  • Web services communicate using open protocols
  • Web services are self-contained and self-describing
  • Web services can be discovered using UDDI
  • Web services can be used by other applications
  • XML is the basis for Web services


Web Services can convert your applications into Web-applications. By using Web services, your application can publish its function or message to the rest of the world.

Web Services can be used by other applications. With Web services your accounting department's Win 2k servers can connect with your IT supplier's UNIX server.


The basic Web Services platform is XML + HTTP. Web services use XML to code and decode your data and SOAP to transport it.


The Future of Web services - Don't expect too much, too soon.
The Web Services platform is a simple, interoperable, messaging framework. It still misses many important features like security and routing. But, these pieces will come once SOAP becomes more advanced.


Hopefully, Web services can make it much easier for applications to communicate.