[Reprinted] Introduction to the development history of Software Engineering

Source: Internet
Author: User

Address: http://blog.csdn.net/emag_se/archive/2005/03/05/312317.aspx

1. the world's first computerProgramEmployee

The first software writer was Ada (Augusta Ada Lovelace), who attempted to write software for a mechanical computer of Babbage (Charles Babbage) in 1860. Despite their failure, their names are always in the history of computer development. Her father is the avid radical poet and the adventurer, Baron. She is also a brilliant figure-top math and a certain degree of gambler. Her most important contribution came from collaboration with inventor Charles Babbage to design the world's first large-scale computer-difference engine and analytical engine. She even thought that if there were correct instructions, the Babbage machine could be used to compose music. This was a crazy idea, because at that time most people only thought of it as a mechanical abacus, however, she has the rendering power and appeal to spread her thoughts.

2. emergence of modern computer software

In 1950s, software was born with the advent of the first electronic computer. People who take writing software as their profession also began to appear, mostly trained mathematical and Electronic Engineers. In the 1960 s, U. S. Universities began to earn a degree in computer science to teach people to write software.

In the early stages of computer system development, hardware is usually used to execute a single program, which is compiled for a specific purpose. In the early days when general hardware became common, the versatility of the software was very limited. Most software is developed by an individual or organization that uses the software. The software is often in a strong personal color. No systematic approach can be followed in early software development. software design is a hidden process completed in a person's mind. BesidesSource codeThere are often no software instruction documents.

3. Software Crisis

From the middle of 1960s to the middle of 1970s, software was widely used as a product during the second period of computer system development, there is a "software Workshop" dedicated to writing software at the needs of others. This software development method basically follows the Early individualized software development method, but the number of software expands sharply, the software requirements become increasingly complex, and maintenance becomes more and more difficult, development costs are surprisingly high, but failed software development projects are not uncommon. The "Software Crisis" started like this!

The "Software Crisis" has led to a further study of software and its features, and people have changed their early views on software. In the early days, programs that were considered to be excellent were often hard to be understood by others. The whole article was full of program skills. Nowadays, it is widely believed that in addition to the correct functions and excellent performance, excellent programs should also be easy to understand, easy to use, easy to modify and expand.

In 1968, a computer scientist from the North Atlantic Treaty Organization proposed the term "Software Crisis" for the first time at an International Academic Conference held in Germany. To sum up, the software crisis involves two aspects: 1. How to develop software to meet the ever-increasing and increasingly complex needs; 2. How to maintain the ever-expanding number of software products.

4. Proposal of Software Engineering

In the fall of 1968, the NATO (NATO) science and technology committee convened nearly 50 top programmers, computer scientists and industry giants to discuss and develop countermeasures to get rid of the "software crisis. The concept of software engineering was first proposed at that meeting.

Software Engineering is a discipline that studies how to develop and maintain software with systematic, standardized, quantitative, and other engineering principles and methods. Software Engineering includes two aspects: software development technology and software project management. Software development technology includes software development methodology, software tools and software engineering environment. Software project management includes software measurement, project estimation, progress control, personnel organization, configuration management, and project plan.

5. Traditional Software Engineering

We have made unremitting efforts to meet the challenges of the software crisis. These efforts are carried out simultaneously in two directions.

First, from the management point of view, we hope to implement the engineering of the software development process. The most famous achievement in this regard is the "Waterfall" life cycle model that everyone is familiar. It is the first life cycle model that emerged after the "Software Crisis" in the late 1960s S. As follows:

Analysis → design → coding → test → maintenance

Later, some people proposed a rapid prototyping method, a spiral model, and a fountain model to supplement the waterfall life cycle model. Currently, they are widely used in software development practices.

This effort also makes people realize the standards of documents and the importance of communication between developers and users. Standards for some important document formats are determined, including naming rules for variables and symbols and the originalCode.

The second direction of software engineering development focuses on the analysis and design methods in the software development process. An important achievement in this area is the popular structured development method in 1970s, namely, Po (process-oriented development or structured method), structured analysis, design, and corresponding testing methods.

The goal of software engineering is to develop and produce products with good software quality and cost-effectiveness. Cost effectiveness refers to the degree to which the overall overhead of software development and operation can meet user requirements. Software Quality refers to the sum of features and features related to the software that can meet clear and implicit demand capabilities. Software quality can be evaluated by six features: functionality, reliability, usability, efficiency, maintainability, and portability.

6. Modern Software Engineering

Software is not purely materialized and contains human factors, so there are a lot of changes that cannot be done like an ideal material production process, based on physics and other principles. Early software development only considers people. Traditional Software Engineering emphasizes the laws of physical properties. The most fundamental of modern software engineering is the relationship between people and things, that is, people and machines (tools and automation) the relationships that are constantly evolving at different levels.

The emergence of object-oriented analysis and design methods (OOA and OOD) has dramatically changed traditional development methods. Next comes new methods and fields such as Object-Oriented Modeling Language (represented by UML), software reuse, component-based software development.

Correspondingly, software process management is proposed from the perspective of enterprise management. That is to say, it focuses on a series of activities implemented during the software life cycle and continuously optimizes the software process and its instances through process measurement, Process Evaluation and process improvement. and spiraling growth. Among them, the most famous software process maturity model is the Capacity Maturity model established by the Software Engineering Institute (SEI) of Carnegie Mellon University. At the beginning of its establishment and development, this model was designed to provide a comprehensive and objective review basis for large-scale software project bidding activities, it is also applied to process improvement activities within many software institutions.

Author Profile:

Net Name: Tiandi yishaou

Software Engineering Laboratory, Fudan University

Research Direction: software architecture, component-based software development, configuration management, and re-engineering

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.