Liu Longwei + Original works reproduced please specify the source + "software Engineering (c code practice)" MOOC course http://mooc.study.163.com/course/USTC-1000002006
Experience:
Software engineering is a highly theoretical curriculum, the first is that it uses a phased life cycle plan for strict management, the life cycle of a software product can be divided into a number of different and interrelated stages. The second is to adhere to the stage review, each phase of a rigorous review, continuous shutdown or rework, to achieve software production engineering. Third, the implementation of strict product control software is not the visibility of software products is one of the inherent characteristics. Four is the use of modern programming technology, according to the needs of software production engineering, the development of software language is also a variety of. The software engineering result should be able to clearly examine the tasks of each phase should be as relatively independent as possible, so as to facilitate the gradual completion of each phase of the task, to simplify the work at each stage, easy to establish a system development plan. Six is the development team personnel should few but good in order to make the development project can be completed within the stipulated time, does not exceed the budget, the cost budget and the strict management control cannot be neglected, but the development team personnel becomes the project cost budget the main parameter.
Through the course of learning, learned some software programming ideas, such as: Modular design, code universality, interface specification, information hiding, for the future of learning work has enlightening significance, in the learning process familiar with the use of VI and GIT, while reviewing the C language, in practice to solve some of my previous confusion. The biggest regret is that other courses are too tight to absorb the essence of this course.
Here is a link to my experiment report:
Experiment one: Write a Hello World applet
Experiment Report Experiment Code
Experience: Learn to write the use of VI and GIT, for future experiments laid the foundation
Experiment Two: Command line menu applet V1.0, specific requirements see video
Experiment Report Experiment Code
Experience: initial exposure to modular design ideas, understanding the importance of code style, learned to encapsulate the command as a function for the user to call
Code style principle is: concise, easy to read, no ambiguity, indentation with four spaces; in complex conditional expressions, the logical precedence is clearly represented by parentheses; Do not put multiple lines of statements on one line; add necessary annotations and so on ...
Lab Three: Internal modular command-line menu applet V2.0
Experiment Report Experiment Code
Experience: Through this experiment, understand the importance of code modularity, understand the code of business logic and data storage separation. It also deepens the understanding of the use of pointers in C and their combination with data structures.
Experiment four: Implement command line menu applet with reusable list module V2.5
Experiment Report Experiment Code
Experience: The menu program written in this experiment, compared to the previous section of the program, made a lot of improvements. Code blocks are more reusable, more readable, easier to extend later, and more compliant with software engineering requirements.
Experiment five: Implement command line menu applet with callback enhanced list module V2.8
Experiment Report Experiment Code
Experience: The callback callback function is a function called through a function pointer. The advantage is that this function allows the caller to be separated from the callee, so the caller does not care who the callee is. It only needs to know that there is a called function with specific prototypes and constraints, which optimizes the query interface of the previous experiment. Using the callback function makes the query of the linked list more general, while increasing the concealment of the code.
Lesson Six: Re-entry of functions (reentrant) and thread safety analysis
Experience: Understand the concept of multithreading, know the reentrant nature of functions (reentrant) and thread safety concepts and relationships. Using mutual exclusion Lock, read-write lock Improvement Program
Experiment Seven: Design the menu as a reusable subsystem
Experiment Report Experiment Code
Experience: The difficulty of this experiment lies in the understanding and use of liunx system function getopt
Lesson Eight: Design ideas behind the code
Experience: Learn from different quality perspectives, such as product perspective, user's perspective, and so on, the menu open source want someone to use it. This paper summarizes the design methodology and several important design guidelines, such as modularization, interface design, information hiding, incremental development, abstraction and generalization.
Software Engineering (c coding practice) Learning Summary