Introduction to the article----software Engineering reprint

Source: Internet
Author: User

Reprint address:http://www.cnblogs.com/lishiyun19/p/4443002.html

Many people, including computer trained students, on the development of software engineering projects and maintenance issues, more or less have some wrong understanding. Learning the basic knowledge of software engineering is of great significance for improving software development efficiency, saving software development cost and improving software maintainability.

First, software crisis and engineering

The concept of software engineering software Engineering was first proposed by NATO in 1968, when a large number of scientists were convened to solve the "software crisis" problem. However, there has always been a unified and effective definition of what software engineering lacks. So, to explain what software engineering is, we have to understand what is a software crisis? In general, we refer to a series of problems in the development and maintenance of computer software, collectively referred to as the software crisis. Simply put, the software crisis mainly consists of the following two aspects:

1. How to develop the software efficiently;

2. How to effectively maintain the existing software;

In other words, the software crisis throughout the software's life process, and these problems are not only not normal operation and maintenance of software, almost all software has varying degrees of software crisis problems. So the question comes, what causes the software crisis?

Objectively speaking, because the software is a logical part of the computer system, rather than the physical components, to a certain extent, the lack of predictability, management and control of development, maintenance process is quite difficult; In addition, software often has a large scale, the size of the software with the complexity of the program exponentially a number of levels of growth, Greatly increases the difficulty of development and maintenance.

Subjectively speaking, in the software development process, due to the uneven level of engineers, project time is often relatively long, then the following problems will be caused:

1) Neglect the importance of software requirements analysis, or even the wrong understanding of the requirements of the software, resulting in the development process of human, material and resource waste;

2) Ignore the software development data and document construction, resulting in the completion of software projects, face hundreds of thousands of lines or even more code, completely unable to effectively debug and maintenance;

3) Because the method of software design is unscientific, it leads to a lot of software code redundancy and coupling, which brings great trouble to the maintenance of the later period.

To sum up, in order to be able to remove from the subjective and objective two factors or minimize the uncertainty caused by the software crisis, we must adopt scientific methods and tools, but also grasp the ability to manage and organize the development team rationally, therefore, Software engineering is a engineering discipline that studies and directs how to better develop and maintain software from both the technical and management aspects, which can be referenced in the context of Wikipedia's definition of the project.

Second, the software life cycle

In the more than half century of the birth of software engineering, through the efforts of several generations of scientists and excellent engineers to explore and summarize, formed a set of effective software development and maintenance model, in summary, the software life cycle by software definition, software development and maintenance of the three major stages, And each stage can be subdivided into several small phases, as shown in:

  

Problem definition: Occupy the entire software project about 5% of the time, define all the problems to be solved;

Feasibility Study: Occupy the entire software project 5%~10% time, determine whether the problem is worth solving, and provide recommendations for follow-up tasks;

Demand analysis: Occupy the whole software project 5%~10% time, determine the software system must complete the work;

Overall design: Occupy the whole software project 10%~15% about time;

Detailed design: Occupy the whole software project 10%~15% about time;

Coding and Unit Testing: 20%~25% the entire software project around the time, writing code and unit tests;

Comprehensive testing: Occupy the whole software project 30%~40% about time;

Operation and maintenance: mainly after the use of software delivery maintenance work;

Third, software engineering methodology

In general, the set of technical methods that we use throughout the software lifecycle, called Software Engineering Methodologies, consists of 3 elements: methods, tools, and processes.

Method: It is the technical method of accomplishing various tasks in the process of software development, and mainly expounds the problem of "how to Do";

Tools: Refers to the use of methods to provide automatic or semi-automated software engineering support environment;

Process: Refers to a series of tasks and frameworks needed to achieve high-quality software, and sets out the steps to complete each task, and mainly answers the question of "when to do";

At present, the most widely used software engineering methodology is mainly structured methodology and object-oriented methodology.

Main features of 1> structural methodology:

The use of structured technology to complete the task of software development;

The software life cycle is divided into several stages, and then the tasks of each phase are completed sequentially.

The beginning and the end of each phase have strict standards, for any two adjacent stages, the previous phase of the end of the standard is the beginning of the next phase of the standard;

Rigorous technical review and management review must be formally conducted before the end of each phase;

2> main features of the object-oriented methodology:

The object is used as a software component which integrates the data and operates on the data, in other words, the decomposition of the function of the structured method is replaced by object decomposing.

Divide all the objects into classes;

According to the relationship between the parent class and the subclass, several related classes are organized into a hierarchical system.

objects can only be connected to each other by sending messages;

Iv. Summary

In general, software engineering is a cross discipline, is to apply the basic principles of computer science, mathematics, engineering and management to the development and maintenance of software, with software methods and technology as the core, focusing on the analysis and evaluation of large-scale software, specification, design and evolution, while involving management, quality, innovation, standards, Personal skills, teamwork and professional practice. In the Software development project, it involves not only the actual problems of the configuration and deployment of the organization and application software system, but also the innovation of the theoretical knowledge which must be promoted and practiced continuously. In order to solve the real problem, it is necessary to get the best balance in theory and application.

Introduction to the article----software Engineering reprint

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.