Current location - Training Enrollment Network - Education and training - Experience of learning software engineering
Experience of learning software engineering
Learning experience of software engineering

In this semester's software engineering course, we studied eleven chapters. The first chapter is the concept of software and software engineering. This chapter mainly explains some conceptual and basic contents, such as the concept and characteristics of software, the main manifestations of software crisis, the concept of software engineering, software life cycle, typical life cycle model and so on. The second chapter is software engineering methods and tools. This chapter mainly introduces software engineering methods, including three methods: traditional method, object-oriented method and formal method. The tool UML is also introduced. The third chapter is the method of software requirements acquisition and structuring. This chapter introduces the tasks of requirement acquisition and requirement analysis in detail, and the main points of drawing hierarchical data flow diagram, E-R diagram and state diagram by structured method. The fourth chapter, structural method, focuses on the use of transformation mapping method and transaction mapping method to generate the initial module structure and improve the module structure. The fifth chapter, coding, focuses on the coding style and specification, and tells us the benefits of coding specification, warning us to form a good coding style in the future. The sixth chapter is software testing methods. This chapter expounds the concept and importance of software testing and the relationship between software testing and development stage. The white box testing technology and Heihe testing technology are also introduced. The seventh chapter is an overview of unified modeling language UML. This chapter introduces the basic patterns, things, relationships and various charts used in UML modeling in detail. The eighth chapter is object-oriented analysis. This chapter mainly expounds three models of object-oriented analysis, including functional model, static model and dynamic model. Chapter 9: Software architecture and design pattern. This chapter explains the basic concepts and typical styles of software architecture. The tenth chapter is object-oriented design. The focus of this chapter is to adjust and refine the object model established in the process of object-oriented analysis. Chapter 11: Software Maintenance. This chapter mainly introduces the tasks, activities and methods of software maintenance.

To learn software engineering, learn to think systematically, develop good coding habits, and learn software engineering well, we must know the goal, process and principle of software engineering:

Software engineering goal: to produce products with correctness, usability and appropriate cost. Correctness refers to the degree to which the software product realizes the expected function. Usability refers to the basic structure, implementation and the availability of documents to users. Moderate cost refers to the degree to which the overall cost of software development and operation meets the requirements of users. There are many problems to be solved in theory and practice to realize these goals, which restrict the choice of process, process model and engineering method.

Software engineering process: the steps required to produce a software product that can finally meet the requirements and achieve the engineering goals. Software engineering process mainly includes development process, operation process and maintenance process. They cover activities such as requirements, design, implementation, verification and maintenance. Demand activities include problem analysis and demand analysis. Problem analysis obtains the definition of requirements, also known as software requirements specification. Requirements analysis produces functional specifications. Design activities usually include overall design and detailed design. The outline design establishes the whole software architecture, including the descriptions of subsystems, modules and related levels, as well as the interface definitions of each module. Detailed design generates module descriptions available to programmers, including data structure descriptions and processing descriptions in each module. Implementation activities translate design results into executable program code. Confirmation activities run through the whole development process, realize the confirmation after completion, and ensure that the final product meets the requirements of users. Maintenance activities include expansion, modification and improvement during use. Accompanied by the above processes, there are management processes, support processes, training processes and so on.

The principle of software engineering refers to the principles that must be followed in the process of software development around engineering design, engineering support and engineering management.

We learned the method of detailed design, the principle of which is whether the process description is easy to understand, review and maintain, and then the process description can be naturally converted into code, and the detailed design is guaranteed to be completely consistent with the code. Including program flow chart, N-S diagram, PAD diagram and HIPO diagram.

Program flow chart: Program flow chart, also called program block diagram, is an algorithm expression tool that software developers are most familiar with. It is independent of any programming language, describes the control flow of the process intuitively and clearly, and is easy to learn and master. Only the following five basic control structures can be used in the flow chart: sequential; Selective type; While loop; Until the cycle; Multi-situation selection.

N-S diagram: a graphic description tool that conforms to the principle of structured programming, called boxplot, also known as N-S diagram. In the N-S diagram, in order to represent five basic control structures, five graphic components are specified. Sequential type; Selective type; When typing repeatedly; Until the repeating type; Multi-branch selection.

PAD diagram: it is a graphic tool to express the logical structure of a program with the idea of structured programming. PAD also established five diagrams of basic control structures, and allowed them to be used recursively.

HIPO diagram: HIPO diagram consists of a set of IPO diagrams and a HC diagram. It is the main expression tool used by IBM in the United States in software design.

HC diagram is not only a hierarchical diagram, but also used to represent the hierarchical structure of software. Each module in HC diagram can be described by an IPO diagram. The IPO diagram consists of three boxes: input, processing and output, and a data file box can be added if necessary. The advantage of this diagram is that it can visually show the relationship between input, processing and output.

There are also testing methods: there are static analysis and dynamic testing according to whether the testing process is in the actual application environment. Test methods include analytical methods (including static analysis and white box method) and non-analytical methods (called black box method).

Static analysis technology: without executing the software under test, check the requirements analysis protocol, software design protocol and the structure, process analysis and symbol execution of the source program to find out the software errors.

Dynamic testing technology: when the program is regarded as a function, the whole input is called the domain of the function, and the whole output is called the domain of the function. The function describes the relationship between the domain of the input and the domain of the output.

I also learned many other tools, languages and methods. Although it has not been thoroughly studied, it is believed that it will be gradually improved in the future research.

For beginners, the knowledge base of software engineering is relatively weak, and some application operations, concepts, tools and methods are difficult to understand. To better understand and master software engineering from the overall concept is not only to read a few professional books carefully, and then practice it several times on the computer, but also to succeed. In the process of learning, we should pay attention to reading more and practicing more, combining with reality, thinking more and finding ways to solve problems by ourselves. But we should also pay attention to learning everything, and we must concentrate on fighting a tough battle. To learn software engineering, we must first understand what our learning goals are, proceed from the actual work, improve in the corresponding learning direction, and work out a detailed learning plan. We should also pay attention to the complementarity with other disciplines, just as when we study object-oriented analysis, we should combine the object-oriented and methodology of freshman study to carry out research and development; When learning a language, we should look at the connection with C language, think more and think more, and integrate what we have learned in various disciplines.

In the study of software engineering, I learned that software is not as simple as some codes. In the process of software development, the workload of writing code actually accounts for less than 30% of the total engineering quantity, while the later management and maintenance account for 60% to 80%. A complete project plan must include many documents, such as software definition, feasibility analysis report, project development plan, software requirement specification, overall design specification, detailed design specification, user operation manual, test plan, test analysis report, development progress report, project development summary report, software maintenance manual, software problem report, software modification report, etc. Every document has to be checked and accepted by the superior, and there are a large number of documents. It's really not easy to do this well, but just writing a good document has become the key to one purpose of software engineering, that is, to study how to make software with a long life with the least expenditure. Every stage needs careful planning, detailed division of labor and personnel arrangement, and every stage needs to be repeated according to the specific situation, so code is only a small process of developing software.

In the study of coding, I learned that it is very important to form my own unique and standardized coding style. Because this affects the heavy maintenance of the software in the later stage, everyone should look at your program. If your program is not standardized, what do others think of your program? If you can't understand the procedure, where can you talk about maintenance? Therefore, in the future study, we must pay attention to the cultivation of this aspect. In the process of programming, we should gradually form our own style on the basis of norms, which is convenient for us to modify and for others to read in the future.

In learning, we should also pay attention to comparing the advantages and disadvantages of the three methods. For example, although the traditional method makes the software get rid of the chaotic state, it is not flexible enough to adapt to the change of requirements, and the traditional method is either behavior-oriented or data-oriented, lacking the organic combination of the two. Object-oriented programming and problem solving are more in line with people's daily natural thinking habits and are suitable for large, complex and interactive systems. Formal method is a software development method based on formal mathematical transformation, which can transform system specifications into executable programs.

In the future study, we should pay attention to reading more books, thinking more, practicing more and discussing more, and be familiar with the basis of books, and spread them on this basis and apply them to future practice. Keep training yourself and be a qualified programmer.