As we usually do at Igalia, this year we are present at CeBIT and, on this occasion, I will be the one representing the company and visiting Hanover (Germany).
This trade show is a great continuation of the IT conference route that we have been attending this early 2013: We started visiting CES (Las Vegas) on January, we continued attending FOSDEM with several lectures on February and we are going to the Mobile World Congress in two weeks’ time (just the week before my trip to CeBIT).
As you know – and if you do not know it is the right moment for finding it out 😉 – in Igalia we are experts in several free software technologies. Highlights:
We are the main company contributing to WebKit after the giants Apple and Google. It is great reading the name of your company in this recent stats published in Techcrunch.
We have experience in hardware virtualization in QEMU and developing drivers for industrial hardware.
We have a team of multimedia specialists in all layers of multimedia development (applications, middleware and hardware integration).
We have experience in interactive interfaces being the authors of Skeltrack (a free software library for skeleton tracking).
So, if you are attending CeBIT and you want to have a beer to know more about Igalia, about how we can help you or how we can collaborate, I will be really pleased to meet you up there. For that purpose,  just drop me an e-mail at jmoran@igalia.com
Rolling wave planning is a project planning technique that basically consists of elaborating progressively the project plan over time. It is common that on starting to plan a project the project manager does not have all the information needed to make an accurate and realistic planning. This usually happens with projects that have a significant duration.
Therefore, to plan the whole project with a high level of detail in a first stage maybe is not the best idea:
It is likely that as time passes the circumstances change because of intermediate results. For instance, it could happen that some activities, belonging to the first work packages to deliver, are delayed.
New requirements and priorities can be set once the project has already started and this can trigger the need of a new planning process.
With the rolling wave planning technique these inefficiencies and time penalties are avoided, the project manager can save time and, as a consequence, he can be focused on the activities that produce real value for the success of the projects. Actually, it can be seen that this practice is aligned with the principles advocated by project management agile methodologies, as Scrum.
How to make the most of rolling wave planning with LibrePlan
One option, on applying rolling wave planning, is not to plan the future beyond a certain point in time at all.
An interesting alternative approach is to make the decision to plan the future, but with a lower level of detail than the short term. This sounds really well but, however, you can think: and how can I do it regarding to task allocations? With my project management software I can allocate specific resources but I do not have a clue of how to do it with less detail!
Here is when LibrePlan comes to rescue and how LibrePlan makes it possible is what I want briefly present in this post.
In LibrePlan there are two types of resource allocations:Â specific allocations, which are the standard ones in which you choose the employee you want to do a task and, generic allocations, where you define a set of criteria that the eligible resources must have configured. With LibrePlan you can define the custom criteria useful for your organization and classify the workers according to them. Once done, the planning engine, on applying the generic allocations, looks for the free resources satisfying the required criteria for a task and assigns them. The global load of the different criteria can be analyzed and the project manager is able to know if he has enough free resources per criterion over time. He can also make corrective decisions according to it.
Â
So, as can be seen, you can do rolling wave planning with LibrePlan using the generic allocations. They allow you to know if you have enough resources in the future with the skills needed (or with other criteria). Besides, it is a light and course-grain way of allocating resources that makes possible to apply powerfully rolling wave planning without the penalties of having to spend time in detailed planning that you have to redo.
On Friday, November the 2nd, I have been invited to teach a workshop about LibrePlan covering all the aspects of the project that are interesting for future professionals in computer science.
The table of contents for the workshop will be the next one:
A LibrePlan introduction. I will start explaining briefly the type of application which is LibrePlan, its mains features and strong points.
A description of the LibrePlan architecture. I will explain the main architectural patterns used in the application, how they work and their rationale.
A route through all quality attributes used in the project. It will include a review of the different tests programmed for LibrePlan, the continuous integration practices set up in the project and the use of Sonar as quality platform to monitor the status of the project.
How the project is organized. Finally, I will review all the tools and procedures used by the LibrePlan team members to evolve and take care of the project and its community.
For the occasion I wrote some slides that I think that can useful for other people wanting to know more about the topics mentioned above. They are publicly available at SlideShare:
In Igalia, we support our LibrePlan users with training, among other services. We offer on-site and off-site courses and, in my opinion, these LibrePlan courses are very useful and have a good quality because, unlike other organizations or projects, they are directly taught by the people who are taking part in LibrePlan and evolving it daily.
So, on the occasion of teaching one of these courses, I will be in Berlin on September 20th and 21th, 2012.
I will be busy in the mornings, but, in the afternoons, I expect to be free. Moreover, in LibrePlan we participate of the free software culture of talking with people, of attending to conferences, of enjoying building a community … and, in this sense, visiting a new place is always an opportunity to meet people with interests in common.
Therefore, if you are reading this and it happens that you are in Berlin in those days and want to know more about LibrePlan, to share ideas, to join the LibrePlan community… I will be happy to have a beer with you 🙂
If you follow closely the LibrePlan project, you will know that we are working in the development of the features that will be included in the LibrePlan 1.3 version, that is estimated to be released next April (you can look into the roadmap here).
Among the things included in the roadmap, we regarded as very interesting to work in making the tool more intelligent by providing a set of indicators informing about the status of the project. At present, of course, you can also know the status of a project examining the planning and extracting the reports existing in LibrePlan. However, we thought that we could go one step further.
We realized that although monitoring and controlling the project plan can be done by the project manager quite fast and easy, there is a user role, different from the project manager, that is also very interested in the status of the company projects. This user can be defined as an employee with a chief position in the organization hierarchy. For instance, the CEO of a company can be a good prototype of this sort of profile.
This profile has some characteristics that make him different from the project manager role:
The CEO is a user with less project management knowledge than the project manager and, therefore, has more difficulties in analyzing the project Gantt, in interpreting correctly the progress measurements or in applying project management techniques like the EVM (Earned Value Management) and the Monte Carlo simulation implemented in LibrePlan.
The CEO is a user whose main duties are not related with project management and, because of this, he has less time available to follow the day a day of the projects opened in the company.
Although the CEO has both less project management knowledge and less time to devote to it, he is interested in knowing how well or bad is going a project to make executive decisions if required.
So, taking into account the above points, we assessed that for this kind of chief employee could be very useful a set of metrics, usually called KPI (Key Performance Indicators). Project management KPIsmeasure how well a project is performing according to its goals and objectives, i.e., to finish on time and with the expected cost.
KPIs are perfect for the CEO users because they have three properties that satisfy the needs and use pattern of these executive users:
They sum up information. They gather planning data and through calculations provide a panoramic view of the situation of a project according to the specific goal aspect they are are designed to measure.
They are easy to understand. They do not require a lot of project management background to be read. Besides, in LibrePlan they can be merged to provide a single verdict about a project.
They are fast. The user is not required to spend much time with the project plan to be able to get a view about the status of the project.
I would like also to highlight that, although they are very important for the chief employees, the KPIs are also very helpful for the project managers and all the people taking part in the planning because they save time and provide and a good picture of the status of the project at any moment.
The KPIs will be displayed in LibrePlan 1.3 in a screen of the project planning that will be calledthe dashboard. With this name we are drawing an analogy with physical dashboards present in complex machines like, for example, a plane where the pilots have a flying deck with a bunch of sensors monitoring any single aspect of the flight. In the same way, in the LibrePlan dashboard, the person in charge of the planning will be able to look at a set of numerical data and charts that will help him to bring the project to fruition.
We have been studying which KPIs to implement to launch the first version of the dashboard and the principles we have followed in the research have been two: to cover the relevant aspects of the status of a project and, second, to maximize the value added to the program.
Once concluded this investigation process, the result has been the identification of four dimensions and a set of KPIs per dimension. Besides, according to this four dimensions, we designed the layout of the dashboard divided in four areas, each one containing the KPIs belonging to it inside.
The dimensions and KPIs are the next ones:
Progress
This dimension measures which is the progress degree of the project, i.e, work already done versus work remaining to do to close the project. KPIs:
Global progress chart. It will sum up the current global progress of the project and will show the theoretical value the project progress should have if all things went as expected.
Task status chart. It will show the number of tasks finished, ready to start, blocked by a previous dependent task, etc..
Time
This area will show how well the project is performing in time according to deadlines and other time commitments. KPIs:
Task completion delay histogram. It will show an histogram chart with the number of days the tasks of the project are finishing ahead of time or after the planned end date.
Deadline violation KPI. Pie chart with the tasks which have not hit the deadline, the tasks which have hit it and the tasks without a configured one.
Margin with project deadline. Number of days the project finishes after or before the configured project deadline.
Resources
This dimension will do an analysis of the resources being allocated in the project. KPIs:
Estimation accuracy histogram. It will be an histogram with the deviation between the hours planned and the hours finally devoted by the company resources to the tasks of the project.
Overtime ratio. It will show how much overtime the resources allocated to the project are having.
Cost
This area will include some metrics belonging to the EVM technique. These metrics are function of time and in this area will be shown calculated at the current date. KPIs:
Cost Variance. It will be the difference between the BCWP (Budgeted Cost Work Performed) and the ACWP (Actual Cost Work Performed). It says how much we are losing or winning regarding to the estimated cost planned.
Cost Performance Index. It informs about the current rate of win/loss value per time unit.
Estimated as Completion (EAC). It is a projection that estimates which will be the final project cost at completion.
Varience at Completion. It is a projection of the estimated benefit or loss at completion time.
And finally, as a picture is worth a thousand words, although the dashboard is work in progress, I would like to include here a snapshot of some KPIs mentioned above that the LibrePlan team is implementing currently.
Besides, as we usually do, if you want to share with us your ideas or requests about what KPIs you miss or things that you regar as important for future, just let us know about it using the communication resources we have available in LibrePlan.
Igalia, the company I belong to and which supports my work in LibrePlan, takes part in a trade mission to Brazil between September 25th and October 2nd. The mission will be focused on the city of São Paulo, which is the most important financial center in the country and one of the biggest cities all over the world. It has a population of 11 million people and, including the metropolitan area, it reaches 20 million, numbers which are really amazing.
I will be the person representing my company in this trip and will let me be in the southern hemisphere for the first time in my life. There I plan to check by myself if it is a myth that water swirls counter-clockwise in the toilets and sinks, contrary to what happens in northern hemisphere.
Aside from satisfying my personal curiosity ;), my purpose during my time there will be to present and explain LibrePlan to everybody interested in the project . I would be really happy if some Brazilian free software firms and other software technology providers got involved in our community. We want LibrePlan to be the reference free software planning tool and to have as many companies and private individuals as possible using, installing, collaborating and taking care of the program.
During next week I will be preparing and closing the details of the timetable of meetings with interested contacts. So, regarding to this, if you are reading this post, your are in São Paulo or nearby and want to know more about LibrePlan, please, contact me sending an e-mail to jmoran {at} igalia {dot} com. We can meet up and talk.
One of the maxims we try to follow in NavalPlan (LibrePlan) is to create a project with good quality.
Quality in software refers to two different notions:
Functional quality. It is the degree in which a software satisfies the specifications. The better the software complies with them, the higher the quality a program is.
Structural quality. It is related to all the non-functional requirements which can be stated over a program. For instance, how good is the development cycle, how maintainable the source code is, what performance is achieved, etc.
Said that and taking into account this classification, I would like to introduce automated web tests and relate them to this taxonomy.
In the first place, I will define what they are for those of you not familiarized with them. In short, we can say that automated web tests are black box tests in which the interface of a web application is tested in an automatic way. In other words, they are a type of tests in which a program performs the role of a real user and interacts with web pages with the aid of a browser to assure that the behavior of a web application is the one expected.
In second place, as I told you, I would like to link them with quality. In general, we can say that they provide structural quality because, on the average, a web application with functional tests has a higher quality than one application without them. They help to detect failures and regressions and, therefore, in the end, the likelihood of having bugs is smaller.
Sahi Web Tests
In the NavalPlan team we have been looking for the best alternative to do automated web tests. Apart from the general cited reason of having higher quality, we try to address the jointly effect of having a large-featured application and a short-numbered testing team. When these two factors are combined the likelihood of regressions is big and the cost of a comprehensive manual test of the application high. Therefore, for sure, with a good set of web tests we would improve both in robustness and productivity allowing us to plan less testing time.
After looking for several alternatives, the technology that we chose is Sahi and the reasons which supported our decision are the next ones:
In NavalPlan we use the web interface framework ZK. This is a framework which generates dynamically the id attribute of the HTML entities which make up the web pages. This makes difficult to develop automated tests because the id is one of the easiest ways to locate HTML entities in the DOM and, some of the most common testing frameworks, like Selenium, relies basically on them. However, as they are dynamic in ZK, i.e., each time a page is rendered they are different, it is impossible to make the tests being repeatable with a technology based on the ids. Luckily, Sahi allows to overcome this situation because it has a powerful accessor API which helps to locate HTML elements using concepts like indexes, human DOM relationships as can be near or parent, CSS classes, etc.
Sahi is browser independent. This means that the automated tests can be executed in several browsers. This is great, because a RIA application like NavalPlan uses the latest HTML technologies and some of them might be not fully supported in a particular browser. We can run the tests in all of them and this is a big advantage for us.
Tests are programmed in JavaScript what in my opinion is a great idea. To start with, because JS is the language used by browsers since the very beginning and is a standard with a good API to interact with the DOM. Another good feature is that, because of being the tests written in a programming language, we have the programming tools like functions, data types, control structures… which gives you the highest flexibility to build tests as complex as you need. Some other testing technologies relies on configuration files, like XML files, and this limits a lot the possibility to get off the path of what the web test framework developers initially thought.
Now I will focus on the things I would like to be different in Sahi. Among them, I would highlight that there is a proprietary product (Sahi Pro) built on top of the Sahi Open Source. Sahi Pro provides the more advanced features and I really miss that some of them were in the open source product. For example, a better report system. For me it would be nice that they had an open source license for the Sahi Pro product to be used with free software products like NavalPlan.It is a way to promote both quality in open source and open source itself without damaging the comercial interests of a company supporting a free software product.
Where are we ?
We started developing Sahi tests last month and, at present, we have tests for some of the simpler use cases, which are CRUD use cases related to administrative operations. If you feel like having a look to how they work, I encourage you to deploy NavalPlan, to download the git repository and to read the README file in the script/functional-tests folder where the instructions to run them are described.
Additionally, they say that tests are successful when they detect errors and, in this sense, we proudly 😉 can say that right now we have reported some new bugs on the bugzilla thanks the functional Sahi tests developed so far.
Where are we going ?
Our roadmap concerning web tests will consist of increasing the coverage and facing up more complex interface operations in the near feature. After it,
a last final desired scenario will consist of having a platform in which:
We develop a Maven plug-in or write a configuration to be able to pass the tests integrated in the building process as part of the Maven test phase.
In NavalPlan we use CI and the continuous integration server we have is Hudson. It would be great to integrate the Sahi tests execution in Hudson build cylce and to have the test results published in the Hudson interface to find them easily.
Next June, the 10th, I will be attending the DDD exchange 2011 in London. DDD exchange is an event to learn and share experiences about using Domain Driven Design and it is the 4th annual edition. There I hope to meet up with people interested in this topic and to know first-hand information about professionals applying this way of designing software. So, if you are comming, I see you there!
I liked very much the concept of DDD I learnt by reading the book of the same title Domain Driven Design, written by Eric Evans who, by the way, will give a keynote at the exchange. To sum up very briefly, DDD is based on the next three points extracted from wikipedia article:
Placing the project’s primary focus on the core domain and domain logic
Basing complex designs on a model
Initiating a creative collaboration between technical and domain experts to iteratively cut ever closer to the conceptual heart of the problem.
I have being taking part in NavalPlan from the beginning doing roles of project management and analysis and, in the team, we use part of the practices and ideas of DDD. My opinion is that the result after this experience has been good and I would recommend to use DDD in applications which require quite amount of business logic, like NavalPlan.
Finally, any trip is an occason to meet people living in other regions who share interests with you. So, if you are in London in June, the 10th, and want to know more about NavalPlan, please, let me know 🙂
Tomorrow a NavalPlan development course for AGASOL companies will start in Santiago de Compostela. The aim of the course is to spread our community having more people involved in the project.
Basically the course will be divided in two parts:
User part. During it the main functionalities of the application will be explained.
Development part. In this part example use cases will be developed covering the different technologies used in the project and examining the architecture from top to bottom.
In order to introduce the development part I wrote several class diagrams with the main entities of the application. I composed them using the tool Linguine Maps , about which I talked in my previous blog post NavalPlan Domain Model diagram.
I prepared some slides with these UML class diagrams and I uploaded them to the files section of the project in SourceForge.net. I think that they can be useful not only for the course but as technical documentation to all the people interested in NavalPlan.
NavalPlan is a Java application built using Object Oriented Programming and whose data are stored in a relational database – currently PostgreSQL and MySQL are the RDBMS supported and tested-. To map objects from the objects models to relational tables the HibernateORM is used, which is a well-known framework in Java platform widely deployed.
In the business layer, it is applied the Domain Model architecture pattern which briefly consists of having rich business objects which encapsulate in the same class the data and the behavior related to them. I think that it was a good decision and I am happy with it. Among other advantages, it allows to organize complex behavior and to reuse business logic easily.
The NavalPlan domain model is large and complex, and one of the problems is its maintenance from documentation point of view. This is so because to have UML diagrams updated is time consuming.
To address the problem above and to have some nice diagrams to teach NavalPlan to new developers, I have being playing today with a tool to infer UML class diagrams from the Hibernate mapping files. With a tool like this a lot of time would be saved !!
The tool I found is Linguine Maps. You have to develope a program to use it but, after resolving some configuration issues, I got a quite good result. Therefore, we will use it in NavalPlan from now on.
With Linguie Maps you can configure several things and create diagrams just with the classes you are interested in. As an example and to view a whole picture of NavalPlan I generated a chart with all the classes. I know that maybe it reminds you of an Indian war with so many arrows, but I think that it could be got a good poster from it 😉