timeline chart, Software Engineering

Also, since programmers have a sense of pride and over-confidence, given a work, they feel that they would be able to do it fast.

Recent Posts

A project may have multiple deadlines, each corresponding to a project milestone. In any project, various technologies are applied to solve the problem at hand. In general, the developers would have varying levels of expertise in these technologies. More so, some of the developers would not be knowing some of the technologies to be used. The learning curve, which gives one's expertise as one learns a subject with time, tells us, initially the rate of learning is slow, then there is very fast learning and finally as expertise has been gained, the rate of new learning drops.

Surprisingly, the software development life cycle models are silent about the learning of new technologies to be used in a project. There is a natural tendency to not to speak about something not known, especially if it happens to be in the domain of software technology. The best we are willing to do is to talk about is difficulty in knowing about requirements, which is in the application domain.

Nevertheless, in almost all projects, some new technology is to be used and some new concepts need to be mastered. As is seen in the learning curve, the initial learning part is difficult. A tight deadline makes it worse. The initial learning part becomes longer. In some cases, learning is put aside and all efforts are put towards getting some visible output. What happens is that the programmers never get past the initial part of the learning curve. This results in lack of creation of fundamental concepts and a poor quality of basic building blocks.

This is like making a skyscraper without adequate foundation. The result may vary from a total project failure to an overall lack of quality of the developed software product.

Although software engineering has matured during the last forty years and the software crisis is presumed to have been eradicated, software managers still seem to have problems with project schedules and deadlines.

A lot many projects take much more time then planned. As someone has quipped, A badly managed project takes thrice the time planned, a well managed one takes only twice. Software development teams take a lot of time planning schedules, re-working and re-negotiating schedules and analyzing why development did not happen as per schedule.

It does not contribute to the software code that does the job. The human aspect of project deadlines is that missing a deadline is considered some sort of a failure, resulting in disappointment and, sometimes, financial loss. More often than not, missing a deadline appears to have been beyond a team control. The reasons for missing may be external factors like some input not received from customer, or some bug not resolved till date or simply the development taking more time than planned.

A project's timeline is made up of individual deadlines linked to project's milestones. A project milestone and associated deadline indicates the work planned for that deadline. However if one looks at the work done during the project's timeline and the work planned for various deadlines, the difference between plan and achievement become apparent.

In most projects, the progress achieved is a lot less than progress planned. The software managers seem to think that if challenging milestones are put for a team, at least a fraction of work planned would be done and overall rate of progress would be better than before.

Unfortunately, unrealistic milestones lead to wastage of precious resources and, quite often, the software developed is of poor quality and not useful for the end-product. A deadline is the estimated date of completion of a project milestone. It is the date by which all the work involved in the current milestone should be completed, resulting in a deliverable software version which can be independently tested and released to the customer.

So a project milestone along with its associated deadline is a mini-project in itself. There may be contractual obligations on the part of both supplier and customer associated with the deadline. Meeting the deadline by the supplier might result in release of payment and generation of goodwill for the supplier. However, if a deadline is not meet, dreadful things like straining of supplier-customer relations and, in extreme cases, premature termination of the project might happen.

Is it fair to treat a project deadline in such a sacrosanct manner? The answer to this question normally depends on which side of fence one is sitting. Software developers, obviously, would not want the deadline to be treated in such a final manner.

They would normally say that a lot of progress had been achieved till date and the target milestone was only a short time away. A customer might think that missing the deadline was a serious default on planned project performance on the part of developers. Those in management might take a view somewhere in between, depending upon whether they were a part of developers' management or customer's management.

There is a case that our views of project deadlines are clouded by short-term goals and prejudices and while thinking of a project's deadlines we often forget about the bigger picture, the overall success of the project. The only reason project management exists, both on the customer's side and at the developer's side, is for the overall success of the project so that it meets the requirements of project's stakeholders.

So we need to take a holistic view in this regard. The first step in this direction is to ask the questions,. The answers to these questions are known to all. Deadlines are either estimated or set. Estimating is not an exact science; it is a heuristic aimed to arrive at a likely date of completion of task. Quite often, deadlines are set by managements based on their feel of the work involved, which can be quite off the mark. Software development depends on a lot of factors like the problem at hand, working environment, development environment - its stability and ease of use, quality of documentation, software process model followed for development, the clarity of requirements, inter-personal relationship between the developers and the customer and also between members of the development team, etc.

A many of the factors may be beyond the control of a development team. In fact, a development team may really be trying to do the work in spite of some unfavorable factors. Realizing the importance of meeting deadlines to the longevity of projects, many developers just claim meeting the deadline without completion of work. What follows is a protracted round of discussions during which the work done and not done is discovered.

The storm of deadline weathered, what come at the end of work review is a list of errors or missing items , which can be taken up in the next milestone. Regarding missing a deadline as failure, consider a team which has done an exceptional quality work, taken pains to find a lot of hidden requirements and is only a few days away from completing a milestone when the deadline passes. Technically, it has missed a deadline and a short-sighted management may consider it a failure.

It is not as rare as one may think; ask any software guru, it does happen. The situation is similar to that of a policeman who chased a robber for a kilometer, almost caught him and then heard the siren announcing the end of his duty for the day. He let the robber go. The solution lies in realizing that a deadline is nothing more that an estimate which has a probability of happening sometime in future. Explain scalability of information systems, Question: Software requirements specification, A Software Requirements Specification It includes a set of use cases, describing the interactions.

What is heuristics testing, What is Heuristics Testing? What is Heuristics Testing? Ans Heuristics Testing is the failure-directed testing. Achieves the high speed development using component based construction. You are to create a decision table to help you decide what to do for the day. If it is a weekday and it is not a holiday, then you go to work. However, if it is a weekday and it. What is prototyping approaches in software process, What is prototyping app