Revisiting software Engineering--a preliminary understanding of software engineering

Source: Internet
Author: User

Part I: Overview of software Engineering

A software = program + Engineering

in seeing this formula, I think everyone is also very easy to understand this, a software implementation is inseparable from the program support, the program is Software "Flesh and Blood", then only the program can it? The answer is no, because an excellent software, inseparable from good architecture and design, but also inseparable from teamwork,,,,, that this series of implementation, must be related to the method, and these methods and ideas, is what we software engineering to study the part, which is the "skeleton".

Next, give us a simple example: now we are a building designer, to build Beijing's Bird's Nest stadium, the building materials and workers are already in place, so now we have to do is how to use a systematic, orderly, quantifiable way to combine these elements organically into a piece, form a building , the bird's nest is not only strong but also beautiful. Then I think software engineering is the need to analyze, design, write code, maintenance and a series of organic combination of processes to form a user-approved software (this user approval may not have a unified standard), then this is software engineering to do.

Let's start with the basics and focus on the concept of the program: Take a look at the official definition: A program is a collection of command sequences written in a computer language to achieve a specific goal or solve a particular problem. A series of statements and instructions that operate to achieve the intended purpose. program, in this case refers to the source program, is a line of code. Looking closely at the past, they are indeed some of the algorithms that are built on data structures. (program = data structure + algorithm) But the code does not work, these lines of code will not run on their own, someone must be compiled into the machine can understand the target code, and compiled not only cc and link command, for a complex software, Not only do we have a reasonable software architecture (software Architecture), software design and implementation (software design & implementation), we also use various files to describe the dependencies between each program file, compile parameters, Link parameters, and so on. These are the building of software.

In the software development process, our code can not be static, the code into various aspects of the changes, sometimes need to change the configuration of the program, these processes are the source code management, we call it configuration management , we also have a series of tools and procedures to ensure the correctness of the program, These tools and procedures themselves should be more correct in order to ensure the quality of other software, which is the quality assurance , the specific verification process called Software testing . At the same time, our software has a certain purpose, before we do the software, we need to do related to the software Requirements Analysis , the relevant feasibility requirements listed, for future work to prepare for the next step is the software design , code implementation, testing , to the final software delivery , later, we may also be related to the software testing and post-maintenance .

Software Lifecycle (Sdlc,systems Development Life CYCLE,SDLC): Is the lifecycle of software from production to retirement or discontinuation (a series of processes described above), with problem definition, feasibility analysis, Overall description, system design , coding, commissioning and testing, acceptance and operation, maintenance upgrade to the stage of abandonment , this time-based method of thinking is a kind of thought principle in software engineering, that is, step by step, progressive, each stage must have a definition, work, Review and form documentation for communication or reference to improve the quality of the software.

The core parts of the software are: build management, source code control, software testing, project management, and later, we also include the user experience, user interface design, including related business purposes and behavior.

Therefore, all of the above-mentioned content is to deduce:

Software = Program Plus software engineering

Thus the inference to get an extension is:

Software enterprise = Software + business model

The program is the basis of all content, software engineering determines the quality and use of the cycle, business model determines the success or failure of a software enterprise

What is the second software engineering?

(a) The definition of software engineering;

(1) Concept: Software Engineering is the process of applying systematic, orderly, quantifiable methods to the development, operation, and maintenance of software.

( 2) Software engineering covers the following areas: Software requirements analysis, software design, software construction, software testing, and software maintenance.

(3) Deepen understanding: We have many technologies, practices, habits, and ideologies in the process of developing, operating, and maintaining software. Software engineering unifies these related technologies and processes into a single system called the "Software development process", the purpose of which is to improve the efficiency of software development, operation and maintenance, as well as user satisfaction, reliability, and software maintainability.

(ii) Features of software engineering:

(1) Complexity:

software can be said to be the most complex human creation system, large-scale software system has more than millions of of the code, at the same time, the software template has a variety of dependencies, with the growth of the system and the increase in the number of modules, the growth rate of these relationships will be rapid, Random complexity can be imagined.

(2) Non-visibility:

The operation of the software code is in the form of machine code, we see that the source code is not equal to the software itself, the final running form of the software we do not see, a single error (in the case of large code size), we can not accurately reproduce the program exactly what the problem, this invisibility is also very scary.

(3) Variability:

Customer needs can not be fixed, as the user needs change, software variability has increased, sometimes it is difficult to modify the software changes.

(4) Compliance:

The purpose of software development is to serve people, it needs a certain hardware needs, but also to meet the needs of users, some of the compliance is also a very important part

(5) Non-continuity;

It is easy to understand continuity, increase input, you can see the corresponding output increase, but many software systems do not have such a feature, and sometimes input very small changes, will cause great changes in output

(iii) objectives of the software engineering:

(1) develop software that meets user needs

(2) release "Good enough" software within the expected time through a certain software process

(3) data and other means to demonstrate the development of the software can be maintained and continue to develop


Criteria for judging whether it is good enough:

A: Satisfaction of the User: Fewer bugs, consistent with user needs, high software efficiency

B: Reliability: Good performance of software, high security

C: The quality of software processes: software team personnel components, as well as the overall ability of the team and professional quality, and software bugs negatively correlated.

D: maintainability: Software at the beginning of the structure of the problem, resulting in software maintenance is more difficult, the entire life cycle of software will also have a corresponding impact.

Part II: Personal development process

In the process of software development, team development is an unavoidable form of expression, but the development of the team can not be separated from individual efforts, however, the development of the individual needs a certain development process to improve our development efficiency and product quality, next we look at the individual development of the specific development process

(a) The specific operation flowchart:

(ii) Characteristics of the PSP:

• Not limited to a single software technology (such as a programming language), but rather focus on the process of software development so that engineers of different applications can compare each other.

• Do not rely on exams, but mainly rely on the engineers to collect their own data, and then improve statistics.

• In small, start-up teams, high-quality project requirements are difficult to find, which means that the input quality for programmers is not high, in which case the programmer's output (program/software) is often not of high quality, but this is not entirely up to the programmer.

PSP depends on the data

• The need for engineers to enter data to record the activities of engineers, which in itself requires no small cost.

• What if the data is inaccurate or missing? Let the engineer make up some?

• How can we ensure that engineers can record this data if some data is not good for the engineer (e.g., to spend a lot of time revising the bug)?

The purpose of PSP is to document how engineers can achieve the efficiency of demand, rather than documenting customer satisfaction with the product. The engineer might be able to develop a software that customers don't like very efficiently, is this engineer a good engineer?

These contents are summarized on the basis of Xin Zou Teacher's "Law of construction". As a beginner (the big God can bypass), some of the views may not be correct, welcome everyone to criticize correct! Let's make progress together!

Reference: The law of construction Xin Zou People's post publishing house

Revisiting software Engineering--a preliminary understanding of software 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: 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.