1, the review:
for computer-related majors, we have learned a lot of professional courses, such as programming languages, algorithms, data structures, compiling principles, software engineering and so on. but I believe many of my classmates and I still have doubts about what we are going to learn in the course after that. In other words, we all feel that there is an insurmountable gap between theory and practice. However, when I read the book "Building the Law of modern Software Engineering (second edition)" by Xin Zou, I solved the problem I had been struggling with.
Because of homework requirements, the first time is to read quickly, although still some of the contents of the book some questions, but still feel that the book has many characteristics:
(1) text + picture; A lot of professional books have a problem is that the whole book is a word, although there is no lack of content of high-quality books but it is easy to let readers sleepy tired when reading, I have been exposed to the amount of computer-related books are mostly like that, so Xin Zou Teacher novel book mode is very attractive to me, One of the reasons I can finish reading this book in one weeks. The book contains a lot of interesting images that readers can use to deepen their understanding of the relevant concepts .
(2) theory + practice; This book introduces the related concepts of software engineering, such as: SW project, Unit test, software development process, agile development, software requirement, user experience, software testing, quality assurance, etc. However, while introducing these basic concepts, Xin Zou also comprehensively explains how they behave in actual research and development work, and how they relate to each development and test person. In introducing these concepts, Xin Zou teachers often give examples, but also make people more easy to understand.
(3) humor + rigorous; the concept of software engineering is relatively dull and monotonous , Xin Zou Teacher in order to enhance the interest of students, the description of the language is very humorous, such as the book with "Chiu", "Guo Dong", "Small Fly", "Xiao Li" and other roles between the dialogue to reveal the essence of a concept, Through the humorous dialogue between them deepened the understanding of the relevant concepts. At the same time, as a professional technical guidance book, Xin Zou teacher in a lot of technical introduction also used data, the real situation analysis, rigorous and serious.
2. Personal questions:
(1) We are doing a software on the quality of the software should be how high requirements? When the size of our code is very large, it is basically impossible to do without bugs. A lot of software is not repaired when the release to use, although the basic functions can be completed, but there are a lot of bugs, and eventually lead to modify some bugs cost too much, or the impact is too large. But if we blindly pursue high quality, has been pressed to repair the release too late will also cause a lot of losses. How can we hold on to the previous degree and be able to maintain a more peaceful relationship with each other?
(2) How is the workload allocated in a team project? If a professional and mature team, everyone technology is good enough, can consider the average distribution of team members, or according to the technical problems of individual competence proportional division. But for the team we are now working on, we don't even know what we need to do in our group division, and there may be flaws in the perception of personal ability.
(3) About bugs and tests. From the very beginning of contact with computer programming we understand that there is no way that someone's program can be made without defects, bugs are always there. But how do you judge the importance of these bugs? How can I be sure that the changes to a bug do not affect other features? How to analyze the effect of this bug on the whole program? Is there a simpler and quicker way to ensure the correctness of all units than unit testing? Even if we pass enough tests, there is no guarantee that there will be no error in the actual operation, especially when developing object-oriented Web sites or software, because there are many problems with the diversity of objects. So is there a bug in the maintenance phase that is more appropriate than patching?
(4) In addition to writing procedures, we also learn to analyze the program, in many cases the analysis of program performance is more important than writing programs, the book also introduces the code module execution efficiency, focus on optimizing the time-consuming memory of a large part, but also because we need to optimize some of the basic code and then have the data structure and algorithm, But most of the time you don't think of a suitable algorithm for this function in the first place, how do you think of a suitable algorithm based on the test results?
(5) There is a dialogue in the book is very meaningful, probably say a newcomer into the company to see some of the program to write some programs feel very rubbish want to push to rewrite, this time an old employee told him that he now see these procedures are also predecessors just entered the company when the program is not very good rewrite results, but not the original easy to use. We use the software on the basis of our predecessors but it doesn't mean that we think he's bad and we have the ability to write better than him, so how do you treat someone else's program correctly? There may be a place you feel bad, but there must be a place for you to learn.
Read the building method of modern software Engineering (second edition)