Modern software engineering software = program + Software Engineering

Source: Internet
Author: User
Tags social network software
Software: Software = program + Software Engineering

 

Recently, I talked with several colleagues about some program, architecture, and software issues. Everyone is here and there is no clear conclusion. I wrote some ideas here for expert correction.

Almost all programmers know the famous saying "program = Data Structure + algorithm. However, many people have doubts in their studies and work. For example:

1) I wrote the travel Algorithm Implementation of the binary tree. Here, the binary tree is a data structure, and the travel implementation details are algorithms. The C program I wrote is the result. But how can I use this program? In Java, there seems to be no pointers. Do I have to understand Binary Trees?

 

2) I found my job and became a programmer, but I found that all the algorithms have been implemented by others. I only need to call them. It seems that my company's software and data structures and algorithms have little relationship. Is the data structures and algorithms that I have worked so hard to learn useful? How can we distinguish between a good programmer and a bad programmer?

 

3) when I came to work in the software company, I found that the program written by my colleagues in the company was really rubbish and could not be maintained. I want to overwrite it! Later, an old employee told me with a smile that the program we now see is the result of the overwrite by new employees last year. It is not as useful as previous versions.

 

So what is the "software" on which our software industry depends? What is the "program" that our programmers use to survive?

 

Program, here refers to the source program, which is a line of code. Looking at the past, they are indeed some algorithms built on the data structure. Code alone is not enough. These lines of code won't run on their own. Someone needs to compile them into the target code that the machine can understand. Compilation is not only a cc or link command, but also a complicated software, we need to use various files to describe the dependencies between various program files, compile parameters, link parameters, and so on. These areSoftware Construction.

 

The software team members constantly modify various source code every day. How can we ensure the quality of the software in constant modifications without crashing? Sometimes, we need to write some special functions for a specific requirement, and then merge these functions back to the main version. This isSource code management-It is also calledConfiguration Management. We also have a series of tools and programs to ensure the correctness of the program. These tools and programs should be more correct in order to ensure the quality of other software, right? ThisQuality assuranceIs also called quality assurance.Software Testing-Testing.

 

If someone needs to buy a software, they must first find the customers who have various requirements, which may be reliable or unreliable. We need to implement these reliable requirements. A group of people should analyze the needs, design, implement (write data structures and algorithms), test, and finally release software. This process isSoftware Project Management.

 

A good software, even if the function is not much different from similar software, can make people feel very useful. This is the"User Experience"Very good. User Experience has nothing to do with data structures and algorithms, but many very successful software won in this regard.

 

With the software, we have to sell it to make money. There are many ways to make money, such as making a payment immediately, making a trial and then making money, and using it for free, advertisements are also used for free, and programs are not written by me. If you have any questions, pay for me, and I will consult ..." Of course, the software is installed without the user's knowledge, and the user cannot get rid of it. Recently, Company A has asked users to uninstall Company B's software before they can run. These are all software-making.Business Model. Some methods are legal, some seem reasonable, but not legal. Some are unreasonable, but there is no way. Before the relevant laws are complete, the software industry has anotherRegulationThe software engineer should haveProfessional EthicsTo constrain the behavior of IT personnel.

 

The above and software development activities (Build management, source code management, software testing, and Project Management) Is the core part of software engineering. In a broad sense, software engineering also includesUser Experience). Therefore, I think:

Software = program + Software Engineering

 

Understanding this is the basis for discussion on all programs, software, and architecture. An extended inference is:

Software Enterprise= Software + business model

 

Not to mention, business models will also affect the needs of software. For example, some people want to develop social network software and provide a wide range of APIS for others to develop, this API support will become an important feature of this software.

 

Back to the doubts at the beginning of this article, the answer is also clear-the Program is a basic skill, but in addition to the program, software engineering determines the fate of the software.

 

The software industry is still a relatively young industry. The concept of software engineering was first proposed in 1969. The following is a comparison of the aviation industry with a longer history.

 

99 of the 100 children have stacked paper planes like the following:

The process of "Designing/manufacturing paper airplanes" seems less technical, but there are also many tips. Some children may breathe a sigh of relief in front of the paper plane before they fly. There may be profound truths, maybe just superstitious. As these planes run and cheer, these children may have the idea of "I want to fly in the sky when I grow up. Like a real airplane, paper airplane and model airplane all reflect the basic theory. (I don't understand these theories, so I won't talk much about "Aerodynamic ).

 

After many years, many people still have the idea of "flying in the sky. Someone actually implemented the following:

 

 

This is the report from the Associated Press.

This buddy said-when you were lying on the lawn in summer, you saw the white clouds float. Do you have any fantasies that you could jump to the clouds?

So one day he could not help but realize his fantasies.

 

Bend, Ore. (AP)-last weekend, bend gas station owner Kent Couch settled down in his lawn chair with some drinks and snacks-and a parachute.
Attached to the lawn chair were 105 balloons of varous colors, each 4 feet around. bundled together, the balloons rise three stories high.
Couch carried a Global Positioning System device, a two-way radio, a digital camcorder and a cell phone. he also had instruments to measure his altitude and speed and about four plastic bags holding five gallons of water each to act as a ballast-He cocould turn a spigot, release water and rise.
Destination: Idaho.
Nearly nine hours later, couch was short of Idaho. But he was 193 miles from home, in a farmer's field near Union, having crossed much of Oregon at 11,000 feet and higher.

Why wowould couch try such a flight?
"When you're a little kid and you're holding a helium balloon, it has to cross your mind," he told the bend bulletin.
"When you're laying in the grass on a summer day, and you see the clouds, you wish you coshould jump on them," he told the bulletin. "This is as close as you can come to jumping on them. it's just like that."

 

 

Compared with some seemingly "crazy" ideas, some are not only crazy, but also crazy for several years. In the winter of 1903, the Wright brothers, after years of hard work, flew their planes on the chilly beach. It flew 36.5 meters and lasted 12 seconds. After the test flight, we had no time to take a group photo in front of the plane. A storm blew the plane along several times and most of the important components were destroyed.

 

Now, the aviation industry has become an industry with tens of billions of dollars. Millions of people work in this industry every day (aircraft design, manufacturing, sales, auxiliary equipment design, manufacturing, sales, civil aviation services, security, ground services, airport design, construction, maintenance), more people enjoy the convenience it brings every day, of course, there are all kinds of troubles.

 

 

What is the relationship between it and the program, software, and software engineering? We can make an analogy:

Aviation

Software

Impact (if successful/What will happen if a failure occurs)

Toys:

Paper airplane/flight model

Data Structure/Algorithm

Affecting yourself will increase/decrease your interest in this kind of knowledge. This kind of knowledge also involves competitions, such as aerial model competitions and program algorithm competitions. But after the competition, what are the maintainability of highly handwritten programs of these algorithms? Is anyone going to release commercial software with a program?

Try by amateurs:

Balloon + beach chair lift-off

Write websites using JavaScript and Ruby

The balloon was successfully launched-the local Evening News reported. The program can run and write on its own blog. After a failure, you will soon pick up new hobbies.

Pioneer's exploration:

Litte brothers' flight

Software Industry Innovation

Summing up the experience, even if the plane only flew 36 meters, the white still saw epoch significance. This is also true for many software prototypes.
If you still have money after the failure, you must continue to innovate.

Mature industry:

Aircraft Manufacturing

Civil aviation

Taobao, Ali-pay, win7

It affects a company, an industry, and relevant industries and personnel.

 

 

In the mature aviation industry, from conception to final operation of an aircraft engine, I don't know how many people, how many processes, how many processes, and how much knowledge should be verified. We can't imagine that if a commercial engine finds a problem during the flight, the original designer will climb into the engine and knock it out, "continue flying, I have done it ". However, in the software industry, many software engineers are often proud to do this.

 

We usually discuss various program-related issues on blogs and forums. At what level does the above table talk about "programs? When I went to work for a job, I said that I knew software engineering and I drew a lot of pictures, wrote a lot of documents, and finally got a high score... do these students really understand software engineering?

 

 

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.