Thursday, February 18, 2010

Motorcycle Termo Suits

Agile Case Study: Using CakePHP at the National Institute of Educational Technology

Note: This is the English version of an article published in "The Bakery", site of the CakePHP user community. See article online at: http://bakery.cakephp.org/articles/view/success-story-using-cakephp-at-the-instituto-nacional-de-educacion-tecnologica

Background and objectives


project mid-2008 at the National Institute of Technological Education (INET, http://www.inet.edu.ar/ ) begin to evaluate the performance of management systems used by the Information Unit of the organism. The Information Unit is responsible, among other responsibilities, the maintenance of information the Federal Register of Professional Technical Education Institutions in accordance with Law No. 26,058. This is a list of approximately 3,500 institutions providing technical education throughout the country. The Register also contains basic information of each institution (features, location, address, telephone, data manager, etc.), Information on curricula, degrees and certificates granted, registration of students in each curriculum, etc. . That

time the information was maintained through two complementary applications: a Web application developed in Java that was used for updating information, and a desktop application developed in Visual Basic 5 for the retrieval (using a scheme client / server). For data management using Oracle 10g.

existing developments were limited by what was necessary to perform a series of modifications and upgrades to facilitate the work of the area and improve the quality and quantity of information available. The drawback was that the teams had developed applications and designed the original database is no longer played in the institution. On the other hand, in addition to heterogeneous from the point of view of the language used (Java, VB5), existing applications were developed without the application of design patterns, standards, or frameworks, all elements that have facilitated the maintenance and updating.

To solve the problems identified and improve the quality of systems in the short and medium term, developed a work plan that included:

1) Migrating systems to a new technology platform (Server Linux Ubuntu Server, Web Server Apache 2, Motor PostgreSQL database, PHP programming language, CakePHP Framework)

2) Redesign of the database (the existing data model had many limitations)

3) Development of a new application that integrates these developments, improve their performance, and also to enable the maintenance and continuous improvement.



Development Work began on the project in late 2008. Between October and December define new application architecture, we redesign the database and developing a design brief of what should be the new application, all tasks that paved the way for the development itself which was carried out during 2009.

In January 2009 added two people to the team: a DBA and manager of the new platform Tecnològic, and a developer. It is interesting to note that the developer had a good knowledge of PHP but had not used CakePHP so during January and February was trained in new technology. As of March began with the development of the new application. The total development cycle It has taken three months, from March to May. In June, the new application was put into production in the intranet of INET replacing the previous developments.

The development was very successful. Consequently, the authorities of the institution decided to strengthen the team to continue the ongoing improvement new application and the project to expand the computerization of systems to other areas of INET. Thus, in August, added two new programmers. As in the previous case the new developers had a good knowledge of PHP and programming in general but not CakePHP so they began studying the Framework. Again within a very short and less than expected (in just over a month) the new programmers are able to incorporate the development of the application into production smoothly. Contributed to this rapid integration the role of the most experienced developer who served as mentor and leader of the team.

2010 is to expand the development team, continue the maintenance and improvement of the developed application, and to address new developments for areas not yet computerized, but natural relationship with the Register of Institutions (the some cases the new programs will be integrated as modules into the current development in other cases it will be separate applications but will work with the same central database.)

The role of

CakePHP CakePHP was critical to the success of the project. We emphasize what we consider some of the main advantages of using the Framework.

provides lots of useful features ready to use. Cake prevents us to "invent the wheel" each time. For the common problems we must solve when we face a development of medium complexity Cake already has a solution available. In our case the most useful were: authentication (auth), session management, automatic data sanitization, data validation at the model. We also proved very useful in various Helpers: HTML, forms, pagination, AJAX, Javascript, etc. And actually this is a partial and incomplete list of available utilities. In addition, if the core did not find a solution can always review the plugins.

promotes the use of standards and design patterns. Using Cake greatly facilitates communication among developers by providing programming conventions and use patterns like MVC to organize the components of an application. This is invaluable in the medium term. When not in use standards or patterns every programmer codes how and where you think proper, in the medium term it causes many maintenance problems. We know, each programmer codes differently. With Cake know immediately and with great approach where we touch the code to modify something in a particular view or functionality.

has an active community. Cake is a great community and that is valuable when the team faces a difficult problem. Both mailing lists and online documentation and "the bakery" we have been very useful. At this point, Cake has a comparative advantage over other frameworks of development closed communities or less active.

As Cake use effects include:

Improves productivity. turned somewhat surprising development team productivity. While the development is of medium complexity, the speed with which it could put into production is striking in comparison with other projects of similar size that we have seen in our experience. The ease with which permits Cake implement basic functionality (common to any application) works a lot in this high productivity.

Simplifies addition of new programmers. Experience has shown that the incorporation of new programmers is facilitated by the use of Cake. The Framework of the learning period has been between one and two months. After this period, new members have managed to incorporate the development team smoothly. Conventions, standards and use of design patterns greatly facilitate team communication and provides a common technical language and significant. This facilitates the incorporation of new programmers by growth of the project, and also allows partially mitigate the effects of staff turnover, something that is very common nowadays in this segment of the labor market. It is almost impossible today to avoid the loss of a trained human resources because the competition is very strong. In this context the use of Cake would replace the resource lost without such a significant impact in other settings.

is attractive to developers. In our case, the programmers who joined the team did not have previous experience with Cake. After a brief period of training everyone is comfortable and adopted the Framework with interest, and several started it to use for their personal ambitions.

So here then are the advantages in using Cake. Certainly many of these advantages can be obtained using other frameworks and there are many currently available that are probably as good as Cake. But in these notes are not interested in making a comparison of frameworks, here we want to tell our experience as a development team that is "in the trenches", making applications that are used and evaluated daily by the staff of INET. In this context we can say that CakePHP has been very useful and fully satisfied expectations. We hope that our experience serves other programmers who are evaluating the use of Cake.


Project Management
last words to put into perspective the experience related. CakePHP is an important part of the solution but it is still a tool that makes sense in a broader context. It has also been crucial to the success of the project using agile methodologies for management. We used to do a combination of taking ideas from XP and Scrum, adapted to the particular institutional characteristics and resources of the INET. The details of these methodologies and their adaptations beyond the content of these letters but did not want to mention that a picture is not very simplistic a process as complex as developing a corporate application.

Team: Alejandro Vilar, Hernán Valle, Leanne Walker, Luciano Aguerre.