Why Do We Need Software Engineering?

To understand the necessity for software engineering, we must pause briefly to look back at the recent history of computing. This history will help us to understand the problems that started to become obvious in the late sixties and early seventies, and the solutions that have led to the creation of the field of software engineering. These problems were referred to by some as “The software Crisis,” so named for the symptoms of the problem. The situation might also been called “The Complexity Barrier,” so named for the primary cause of the problems. Some refer to the software crisis in the past tense. The crisis is far from over, but thanks to the development of many new techniques that are now included under the title of software engineering, we have made and are continuing to make progress.

In the early days of computing the primary concern was with building or acquiring the hardware. Software was almost expected to take care of itself. The consensus held that “hardware” is “hard” to change, while “software” is “soft,” or easy to change. According, most people in the industry carefully planned hardware development but gave considerably less forethought to the software. If the software didn’t work, they believed, it would be easy enough to change it until it did work. In that case, why make the effort to plan?

The cost of software amounted to such a small fraction of the cost of the hardware that no one considered it very important to manage its development. Everyone, however, saw the importance of producing programs that were efficient and ran fast because this saved time on the expensive hardware. People time was assumed to save machine time. Making the people process efficient received little priority.

This approach proved satisfactory in the early days of computing, when the software was simple. However, as computing matured, programs became more complex and projects grew larger whereas programs had since been routinely specified, written, operated, and maintained all by the same person, programs began to be developed by teams of programmers to meet someone else’s expectations.

Individual effort gave way to team effort. Communication and coordination which once went on within the head of one person had to occur between the heads of many persons, making the whole process very much more complicated. As a result, communication, management, planning and documentation became critical.

Consider this analogy: a carpenter might work alone to build a simple house for himself or herself without more than a general concept of a plan. He or she could work things out or make adjustments as the work progressed. That’s how early programs were written. But if the home is more elaborate, or if it is built for someone else, the carpenter has to plan more carefully how the house is to be built. Plans need to be reviewed with the future owner before construction starts. And if the house is to be built by many carpenters, the whole project certainly has to be planned before work starts so that as one carpenter builds one part of the house, another is not building the other side of a different house. Scheduling becomes a key element so that cement contractors pour the basement walls before the carpenters start the framing. As the house becomes more complex and more people’s work has to be coordinated, blueprints and management plans are required.

As programs became more complex, the early methods used to make blueprints (flowcharts) were no longer satisfactory to represent this greater complexity. And thus it became difficult for one person who needed a program written to convey to another person, the programmer, just what was wanted, or for programmers to convey to each other what they were doing. In fact, without better methods of representation it became difficult for even one programmer to keep track of what he or she is doing.

The times required to write programs and their costs began to exceed to all estimates. It was not unusual for systems to cost more than twice what had been estimated and to take weeks, months or years longer than expected to complete. The systems turned over to the client frequently did not work correctly because the money or time had run out before the programs could be made to work as originally intended. Or the program was so complex that every attempt to fix a problem produced more problems than it fixed. As clients finally saw what they were getting, they often changed their minds about what they wanted. At least one very large military software systems project costing several hundred million dollars was abandoned because it could never be made to work properly.

The quality of programs also became a big concern. As computers and their programs were used for more vital tasks, like monitoring life support equipment, program quality took on new meaning. Since we had increased our dependency on computers and in many cases could no longer get along without them, we discovered how important it is that they work correctly.

Making a change within a complex program turned out to be very expensive. Often even to get the program to do something slightly different was so hard that it was easier to throw out the old program and start over. This, of course, was costly. Part of the evolution in the software engineering approach was learning to develop systems that are built well enough the first time so that simple changes can be made easily.

At the same time, hardware was growing ever less expensive. Tubes were replaced by transistors and transistors were replaced by integrated circuits until micro computers costing less than three thousand dollars have become several million dollars. As an indication of how fast change was occurring, the cost of a given amount of computing decreases by one half every two years. Given this realignment, the times and costs to develop the software were no longer so small, compared to the hardware, that they could be ignored.

As the cost of hardware plummeted, software continued to be written by humans, whose wages were rising. The savings from productivity improvements in software development from the use of assemblers, compilers, and data base management systems did not proceed as rapidly as the savings in hardware costs. Indeed, today software costs not only can no longer be ignored, they have become larger than the hardware costs. Some current developments, such as nonprocedural (fourth generation) languages and the use of artificial intelligence (fifth generation), show promise of increasing software development productivity, but we are only beginning to see their potential.

Another problem was that in the past programs were often before it was fully understood what the program needed to do. Once the program had been written, the client began to express dissatisfaction. And if the client is dissatisfied, ultimately the producer, too, was unhappy. As time went by software developers learned to lay out with paper and pencil exactly what they intended to do before starting. Then they could review the plans with the client to see if they met the client’s expectations. It is simpler and less expensive to make changes to this paper-and-pencil version than to make them after the system has been built. Using good planning makes it less likely that changes will have to be made once the program is finished.

Unfortunately, until several years ago no good method of representation existed to describe satisfactorily systems as complex as those that are being developed today. The only good representation of what the product will look like was the finished product itself. Developers could not show clients what they were planning. And clients could not see whether what the software was what they wanted until it was finally built. Then it was too expensive to change.

Again, consider the analogy of building construction. An architect can draw a floor plan. The client can usually gain some understanding of what the architect has planned and give feed back as to whether it is appropriate. Floor plans are reasonably easy for the layperson to understand because most people are familiar with the drawings representing geometrical objects. The architect and the client share common concepts about space and geometry. But the software engineer must represent for the client a system involving logic and information processing. Since they do not already have a language of common concepts, the software engineer must teach a new language to the client before they can communicate.

Moreover, it is important that this language be simple so it can be learned quickly.

Business Projects and Essential Resource Planning Software

In a world which idolizes successful and young entrepreneurs and thrives on the support of large economies, it is not surprising that businesses are increasingly wary of where their land, labour and capital are getting utilized. Add that to the fact that this era sees its epitome of technology today, and constantly out-does itself owing to the vigorous competition prevalent in the corporate world. What you are now faced with is a gap that begs to be filled by resourceful computer software with an efficient, speedy and user-friendly interface. Welcome to resource planning software.

The responsibilities of project managers require them to be highly vigilant of everything that goes on about them. Resources, time and the available team are each, in themselves, independent factors in the equation and in direct need of separate management. Apart from that, and more importantly, the project needs to be supervised and it needs to be ensured that it keeps on moving in the right direction. With this sort of burden resting on one, or on a group of persons, errors in judgment and mistakes are bound to occur. The usage of excellent resource planning software for the assistance of the project manager mostly or completely eliminates mis-judgements, and leaves no room for human error. The project manager can then focus on more pragmatic issues rather than simply manually supervising each task as it is done.

Furthermore, in the wake of the failure of large economies worldwide, which puts immense financial and psychological pressure on businesses, such software provides the user with an outline of the whole fiscal year in the form of a more interactive medium that they can get in touch with ahead of time. Deadlines can be met with greater ease as targets are reached with much more consistency. The formulas fed into the database of such excellent resource planning software display realistic and achievable targets based on past information and projected future figures. These figures when made visible to all parties involved (employees, clients) culminate in the coming together of all components in a business to increase profits of current years and still stay posted about future investment plans.

Resource planning software is also practical in its usage. The user-friendly interface usually consists of bright colours to define and highlight important projects for easy identification. It is compatible and lets the user experiment with spread sheets (with excellent templates already made available) and e-mail clients for straightforward no-nonsense handling and online transfer of data. The representation of information using appropriate charts, flow diagrams and animations aids the retention of relevant instructions for the employees and creates an easily interpretable picture for the project manager. Hands-on experiences provided let you drag and drop items onto the timelines, spread sheets flowcharts etc. A more contemporary version of the software might even inculcate touch sensitive interfaces making the hand-on experience quite literal. It will then be possible to operate the software using touch-tablets.

All these features render all previous existing techniques, all the expensive stationery quite useless as well as proving this software to be a necessity for all project managers in large businesses worldwide. The hassle of paper documents can now be a thing of the past and an enterprise’s accounts, resource processing, comparison of projected and actual figures can all find ample, secure space within the boundaries of such revolutionary software. This will let businesses compete well and excel in the ruthless race that the commercial world now takes the shape of.

Project Management Software Guide

Gone are the days when project management used to be a task confined to doing up and down in front of the project manager, noting down the assigned work of the day on papers, writing daily report at the end of the day, submitting those etc. This is the era of web based project management or handling a project with the aid of Internet.

Web based project management works by centralizing complete project information onto a single server that tracks all the work being done. As a result every member of the team can access to the requisite info anytime.

Web based project management has several benefits over the conventional style of managing a project. The foremost and most outstanding feature is saving of time. Web based project management drastically reduces the amount of time consumed in handling a project manually. For now the work for the day can be seen as well as sent online. The project manager can go through it and even send the modifications through the same mode. Other merits of web based project management include convenience in doing the work, automatic mailers and notifications and so forth.

In order to further assist web technique of management many companies have come up with project management software. Project management software can help you to manage your project efficiently if the project requires contributions of multiple individuals or teams using a multi tiered development plan over a fixed area of time. The software is a great organizing tool. It organizes not just the parts of project as landmark targets but also organizes the output of the team member in a comprehensive manner. The software can be of tremendous use in almost every aspect of project handling. For instance advising adequate strategies and techniques, flowcharting tools to support workflow and design management that involves systematizing and developing the abstract ideas into a completely finished product, project handling tools offered by MS Outlook, mapping software solutions to structure and even restructure your progress levels and arrange the information structure of your company’s management teams.

If we try to take a look at kind and type of project management software, we find that several such software have marked their presence in the corporate world. Thus selecting one such software can be brain-taxing task. However prior to purchasing project management software there are certain crucial things that an individual should know. First, the prices of the software vary with the levels of sophistication and vice-a-versa. Usually project management software ranges from $50 to $20,000. Secondly you must know that the software will not accomplish tasks such as defining scope of the project, interaction with the project sponsor etc. but it will just help you in doing these jobs more efficiently and effectively.

If your project is small then grab software for handling small projects. This software will plan and schedule with only durations and not work estimates and resource capacity. At this level the software might just cause you an expense of $25.

While if your project is large then you need to have software that stimulate the project and reschedule and optimize it every time a change is made. This software provides us the capability to budget and schedule not only internal employees but also external consultants and vendors along with budgeting for equipment and travel expenditure. The cost of this software will be around $300- $500.