Chapter I. Introduction
Through the first chapter, I probably understand what I am going to learn from this book and how to implement it. The author of the book-Zou teacher, by setting simple characters and short words, so that books away from the dull, but also clear, which strengthens my reading patience.
Section 1.1 through 3 short dialogues and a life example, inspired me to what is the program, what is software, what is software engineering, no use to the algorithm need not learn, master, software and algorithms, data structure has no correlation problems such as thinking. Think about it and find that you are vague about these concepts and have no understanding. By continuing to look down, I gradually understand the line of code is the source program, can meet a variety of functions is the application software, to ensure that the maintenance is software services .... Also learned that a software is not simple to write on the write, but also need to consider a variety of factors, such as people's needs, functional feasibility. When the software team worked together to overcome the difficulties of writing software, need to consider software application issues, whether it is free for others to use, or charge, or have a different version of the charge, this time I do not only want to understand what is software, but also need to know what software business model, We should follow the professional ethics of the software industry well.
1.1.2 Festival through the introduction of the development stage of aviation, I understand the development of software and its almost, the same need from the idea to hands-on implementation, and then to continue to explore, improve, expand, to form a mature system. Through the business software and enthusiasts program, to strengthen my attention to business software development, understand that development software can not do as you like, to more from the customer's point of view, consider the problem, only fully consider the overall, can quickly resolve the unexpected situation, reduce user losses. Only oneself can be good at discovering the problem, solve the problem, can make oneself further, not stay the practice stage.
1.2 section detailed to the software engineering under the definition, introduces the particularity of the engineering, introduces the origin of the "engineering" in the project, narrates the relationship between the software engineering and computer science, the knowledge field of the soft project, and emphasizes the goal of "good enough" to create the software, etc. Tell me about the importance of applying engineering principles in software development; the charm of engineering, not only to learn good software engineering knowledge but also to combine it with other disciplines to learn to think, but also to read more books, a lot of knowledge of the field of software engineering, make themselves strong; When developing software, combine time, customer demand, Strive to develop "good" software at the right time.
question:1.1.2 The final mention of qualified software engineers, what are the specific standards? Or is it possible to write code and find problem solving to be a problem? At this stage, where can we start to develop our own development thinking and ability to move towards the engineer?
Chapter II personal skills and processes
If I have a little concept in the first chapter, then the second chapter I can say is nothing, what is VSTS, what is unit testing, what is regression testing, or what is performance analysis ... A lot of new names, the first time to see, is so no clue. If it were not for Baidu, just reading, I do not know vsts--visual Studio Team System, Microsoft developed a set of highly productive, highly integrated, extensible life cycle development tools.
2.1.1 To tell me, unit testing important role, may be their ability is insufficient, the relevant knowledge is too little, while looking at the side to think, unit test how to write? Where is it written? When do you write? Even if it is written according to the code in the book, what tools are used to write it?
When it was all over, I realized that a little bit of VSTS could be used to write unit tests, and VSTS could provide us with the basic skeleton of unit testing; knowing that unit tests are important for programming, it is better to plan unit tests in detail when writing specifications, and 1. The steps involved in writing unit tests. Setting data 2. Use the function of the type being tested 3. Compare actual results with expected results. When we write, we should pay attention to the class library in the unit test, to correspond.
The 2.1.2 section highlights how the standard of a good unit test is generated through clear typography. This section tells me: Unit testing is to verify the correctness of the program on the lowest function or parameter, in general, the unit test must be written by the person who is most familiar with the program code, after each unit test, is not affected by the previous ....
2.1.3 Regression test, I saw this word, I thought it would be so the unit tests are put into the program to integrate, check. Did not think of its intention is to avoid the program back to the original abnormal state, all found and fixed bugs find a way out, one by one to verify the large-scale comprehensive test.
From section 2.2, I learned about performance analysis, and this book provides an example of how VSTS offers performance analysis tools. Two methods of performance analysis: Sampling and code injection. Both of these methods have advantages and disadvantages, so we need to use the two together to achieve optimal. This chapter has a lot of performance analysis nouns, need I have some understanding, can understand the book refers to the proper noun. In the performance analysis, we need to see how many times the code has been called, how long it takes, to think, to solve a part of the code time-consuming problem, and to consider the proportion of a part of the code, not blindly optimized. 2.2 mentioned in the Release Versions and Visual Studio , I have Baidu a bit, feel a little abstruse, not very understand.
2.3 Person development process, through the Book of Senior students and the work of the software engineers have been working for 3 years, I learned that from the students to the professional programmer, not only to write code can be efficient, but also not limited to a certain software technology, the development process awareness, spend more time to collect data, analysis and improve.
2.4 Large sections asked us to practice, but I did not understand the knowledge of books, do not know how to do, I hope VSTS write unit Test example can be more detailed, a little more.
question:Does the code coverage mentioned in a.2.1.2 mean that unit tests can overwrite all the code in the program, or do the functional paths implemented by the code, or otherwise parse?
The unit tests mentioned in b.2.1.2 should be integrated into the framework of automated testing, how is this implemented?
c.2.1.2 that unit testing must be protected and maintained along with the product Code, the unit tests that I understand are written in VSTS, and the product code is written in a technical software, how is the two unified management?
Chapter III The growth of software engineers
Looking at the previous two chapters, I feel that I am far from a programmer at this stage, the software engineer is unreachable. In school I learned a lot, such as C language, data structure, object-oriented ... Learn a lot and not fine, the road is confused, looking at now I am a blind study of students, in class after listening to the lesson but did not spend more time to study, encountered do not understand the easy plunges dead end, always spend a lot of time stuffy thinking, not to the end did not go to ask classmates, to Baidu. Look at the process of the people, are very good, they can only envy envy at the side of hate. Now, how can you improve your interest in programming, strengthen your programming ideas, and improve your own value?
The basic requirements of a novice software engineer are mentioned in the book,
1. To accumulate the relevant knowledge of software development, improve technical skills;
2. To accumulate knowledge and experience of problem understanding;
3. To understand the general software design idea and the engineering idea;
4. Improve professional skills
5. Actual results.
From 10% to 5 need time accumulation, but also need to strengthen their learning ability, which for the present I will be a long process. In this process, I want to set up the correct learning consciousness, to treat every procedure must learn to analyze, to understand how much programming program, planning their own plan to complete the time and the actual completion of the relative ratio, pay attention to the quality of completion. Make every effort to build up the road of your own software engineer.
question: If after graduation, just out of our knowledge is not enough to learn at school, the general company recruitment will require a year or two of work experience or say have experience of priority, then we fresh students how to strengthen their value? The company needs to create value for its talent, but also the opportunity to let us learn slowly?
The fourth chapter two people cooperation
By pairing, I realized that writing a program is not just about knowing, but also seeing and understanding your own programs with others.
4.1 Large sections refers to the code specification, we write code to pay attention to code style specifications and code design specifications, whether it is the class name, object name, indentation or line width of what, in the knot programming must have provisions, or to the back of the class or object more, it is easy to mess up, it is unclear who is who. To learn to encapsulate, write functions, the function module to materialize, reduce the main method inside the code, avoid large-scale error.
4.4 Refers to the code review, in peacetime programming program, I will also look at their own code, run the program, if the results are the same, error can be. Did not want to find out the code error, but also to consider whether the logic is wrong, the algorithm is not enough optimization and other problems. Can others feel that the program I am writing is easy to understand and can learn from it.
4.5 Pair programming, two people work together, think together to write a program, is conducive to improve efficiency, learn from each other. So to learn the different stages and techniques of cooperation mentioned in section 4.6, when beginning to explore the project, halfway through the problem, when the simple review, you can think independently, the period of clear thinking, good communication, together to write, strengthen cooperation. In the cooperation in an objective and comprehensive treatment of their own partners, know how to encourage each other, learn from each other.
question:A. Does error handling in this chapter 4.3.3 the same as unit tests mentioned in chapter II?
B. What are the assertions mentioned in this chapter 4.3.3? Just the code written in the book, I understand is the judgment statement, such an understanding can?
The fifth Chapter team cooperation
Pair programming, two a good exchange of views, resulting in a small disagreement, in exchange for a team cooperation will be how? Will not have been disconnected from the pair programming, the team work is confused, no division of labor, not easy to communicate? So we have to learn to find the right team work model and development process. The book mentions a lot of team cooperation patterns and development processes, all have advantages and disadvantages. Just from the perspective of campus cooperation, I think the use of functional team mode is more suitable for mutual cooperation and communication, and the development process in the campus cooperation stage, easy to be overlooked or not considered comprehensive, we should focus on training.
question:A. Is there a close relationship between the team work model and the development process? Can the two be divorced?
The law of construction--the Book of modern software engineering