You've probably heard of the first widely used programming language -- IBM's Fortran -- which was released in for mathematical and scientific computing. Another, Cobol , was released by the US Department of Defense in for use in business applications. But the transition to using a time-sharing model instead of batch processing for running programs was perhaps most significant of all because it led to a rapid growth in computing applications. Unfortunately, projects consistently failed to deliver reliably, on time and on budget.
Practitioners were forced to admit that they lacked the proper best practices to implement and produce software at scale commercially. They called it the "Software Crisis". It was clear that designing complex software systems would require better tools and approaches than were available at the time so a conference was convened in to find a solution. This is really where the term "Software Engineering" found its roots.
The conference sought to apply the best practices of project management and production -- already used in traditional engineering disciplines -- to software. As a result, they produced a report which defined the foundations of software engineering.
Over the following decades, the discipline of programming saw a familiar tension between the scientific thinking of academia, which tended to seek idealized solutions to engineering challenges, and the practical needs of an industry faced with real-life time and cost pressures and bloated code bases. The early 70's saw the emergence of key ideas in systems thinking which allowed engineers to break these giant projects into modular and much more manageable pieces that communicated via interfaces.
Another tectonic shift occurred in the early s with the move away from thinking of data as just a continuously changing stream and towards the idea of persisting discrete "objects" which could interact and hold independent state. More concretely, that allowed developers to create and interact with the almost-physical objects of the graphical user interface GUI like menus and icons and windows.
The Software Crisis continued as software engineers seek to right the ship. The s were a time when software engineering began its rise as new ideas, languages, and hardware were introduced.
The language was designed by Nicklaus Wirth. It would grow to become one of the most popular programming languages. This was also the time when the Unix operating system , developed by Ritchie and Ken Thompson, made its debut. Ritchie, who died in , is recognized as one of the most important people in software technology, and his work can be found in almost every software created in the modern age. Many of these PCs were designed for business and not the home.
The s continued to show great changes as the Software Crisis began to wind down. New languages and tools help begin the journey toward better engineering and the move toward object-oriented programming begins.
Computer-Aided Software Engineering is designed to improve the quality of the system while also reducing cost and development time. JCL was the least popular feature of the The demand for programmers exceeded the supply. The notion of timesharing, using terminals at which jobs could be directly submitted to queues of various kinds was beginning to emerge, meeting with some resistance from traditionalists.
As the software field stabilized, software became a corporate asset and its value became huge. Stability lead to the emergence of academic computing disciplines in the late 60's. However the software engineering discipline did not yet exist. Many "high-hype" disciplines like Artificial Intelligence came into existence. As these new concepts could not be converted into predicted benefits, the credibility of the computing field began to diminish.
Standards organizations became control battle grounds. The vendor who defined the standards could gain significant competitive advantage by making the standards match their own technology. Although hardware vendors tried to put a brake on the software industry by keeping their prices low, software vendors emerged a few at a time. Most customized applications continued to be done in-house. Programmers still had to go to the "machine room" and did not have computers on their desks.
My argument was developed in a short version on my paper First things first: If software engineering is the solution, then what is the problem? Department of Defense DoD and its contractors, could not defeat the interests of the ACM the main professional association of that time in an industry of software, academically strong, but DoD was looking for a silver bullet for its managerial crisis and to control to its huge software projects and to its contractors.
So, the software crisis term was coined. After this, would was evident an intellectual and political hostility towards the ACM. In any case, SE was invented in Garmisch, at least in a rhetorical sense as the technical and management discipline that would solve the software crisis.
The silver bullet was discovered, finally. CS did not hesitate and now, more than fifty years after of its foundation, is widely recognized as a science and beyond, it has influenced those others. However, SE succumbed to the outside interests and now it navigates to the drift, without such progress.
0コメント