First, at the beginning of the semester I have found five questions through the reading materials, and now I come to answer these questions
1, the question: The second chapter of the teaching material in the Software technology module design, the finer the better, but I am in the object-oriented programming, always can not be separated from some modules, resulting in some of the number of methods of code lines too much, there is no more specific design method template.
Answer: This problem the teacher also replied to my solution is in the design of the time may also carry out some unit testing, so as to facilitate the development of the design, after a semester of study and thinking, I found that the problem is mainly due to my lack of experience in writing code and thinking problem is not comprehensive cause, In the personal project and the two-person team project, our task is to write the Beijing Subway search Route project, in the beginning of the personal project, because I have no experience in the design, so in the implementation of the code will always appear in the design process has not been considered, such as the airport line of the one-way subway, Metro line Line 2 will lead to the search dead loop, and Sihui to four Huidong a section of the road there are two sections of the subway and so on, after considering these factors, so that my code has become very different from the design, some places even have to change the design, add a lot of methods. However, in the second double project, due to the previous implementation experience, we in the design phase of the Beijing Metro to consider the special situation, and adopted a more explicit method to solve the problem, rather than temporary "patching", so that the code design more standardized.
2, the question: The second chapter in the teaching of the use of code analysis tools, focus on the advantages of the Code analysis tools, and ignore the Code analysis tools, the amount of specific use, I personally in the process, found not very clear many of the meaning of the parameters, I can provide some specific use of the tutorial.
Answer: In the actual unit test, when the single-person project and the double Project unit testing, because the need to test C # code, I found that I use the vs2015 Community version is not able to do unit testing, to use the test tool with VS can only use the VS2015 Pro version or older vs version, So eventually I used the vs2013 Community Edition, the test method see http://www.cnblogs.com/codeinet/p/4647394.html
3, Question: The fourth chapter of the teaching material goto statement in the case of help to clarify the code logic, you can use, but I learned C language when I heard that Goto statement as far as possible, it will greatly increase the difficulty of debugging code, how to explain this contradiction.
Answer: This question I may have found the answer in the course of compiling technology, one of the implementation of the compiler is to first tell the source code translated into the intermediate code, and then the intermediate code into a compilation. The intermediate code we used is a four-dollar formula, and I used a directive of four in the form of J, that is, the unconditional bar directive, similar to the C language Goto, a very common source program in the compilation technique is the translation while statement, Each while statement at the end of the translation of a four-tuple will have a J instruction, used to jump to the beginning of the loop, from the C language of this high-level program language into the same semantics, but different forms of the four-dollar formula, the resulting J statement can help us better understand the structure of the four-yuan, To help us quickly locate the statements in the four-tuple semantics such as while, so I conclude that the goto statement in a high-level programming language such as C does break module closure and increase the difficulty of debugging code. But when Goto such non-jump statements are used in theoretical code analysis (closer to the low-level language of the four-dollar type), it is more conducive to the positioning and understanding of the code, so the two are not contradictory.
4, the question: The Nineth chapter of the textbook is about the importance of PM, PM is responsible for doing development and testing outside of things, and in the actual completion of this course project, ask is not in our team do not need pm this role?
Answer: This question is probably the least technical content of my question, the original understanding of software engineering is too narrow, I thought it was just a leader to lead a bunch of programmers to write code, but after a semester of study, I found that PM needs to do a little less than we do, he should be in time to understand the project progress of each team member, Problems encountered during the programming process, as well as the impact of this on the overall development project progress, and real-time dynamic adjustments to ensure that the project is completed in the specified time, but also to continue to report to the teacher work progress, access to teacher advice, and other teams to communicate to obtain the needs, and planning the impact of these things on the project work progress. Although these tasks are tedious, they are critical to the project, and it is because of the existence of PM that we, the developers, can safely and fully devote themselves to the project. So PM is indispensable.
5, the question: the 12th chapter of the textbook will be the importance of the user interface, then in the case of limited time and energy, we should abandon some of the expansion of the development of the function to invest more to the interface or focus on the development of some extended functionality?
Answer: A good user interface will give users an excellent user experience, but the more cool features are also expected by the user. But when the time is not enough for both to be the best, we need to consider the problem, some of the extended functionality will inevitably cause the interface changes, these changes may be large, or even a new interface, so in the implementation of certain functions, it is necessary to consider whether the interface team can complete these requirements in the time required changes, If this cannot be done, you should abandon the implementation of this extended feature, otherwise you can consider the implementation.
Second, after studying the software project of this semester, I have some new problems
1, in the team project, I am the writing of the back-end code, which involves the use of other team members of the method, after the call, I need to test to ensure that the use is correct, and sometimes I need to debug after the problem, the discovery of the problem to locate, So my position in the whole team has changed from a code integrator to a debugger, so sometimes I'm a little confused about my position across the team, how do I define my role in the team?
2, in teamwork, conflict is unavoidable, each person's understanding of the problem is different but have their own unique, I in the team generally conflict when the choice of compromise, but in the implementation of other people's plans sometimes feel that their ideas may be more effective, at this time should do?
Third, the knowledge point that I have learned in software engineering
1. Demand
"Customer is always the first": In the Demand method, I deeply feel this wisdom, once the customer proposed changes in demand, we need to update or even change our development progress, always to meet the needs of customers prevail.
2. Design
"Design Before action": a project directly before the structure is not fully understood the action is fatal, the actual situation of the project and the expected access, planning adjustments or even changes, may directly lead to the entire project within the expected time to complete.
3. Realize
"Reducing or replacing the use of new technologies": the use of a new technology will inevitably lead to problems that have never been solved, this problem may lead to the extension of the entire project, the use of Java calls C # technology in our project, this cross-compiling technology in our original design when we think it is not difficult, But it is such a small problem, slowing our progress by 2 weeks, leading to many of the features we want to implement are not implemented.
4. Testing
"Complete testing is critical": A team if there is a person's code problem, it will affect the entire team project problems, if the entire project for code debugging, task volume and very inefficient, so every update of a module, each modified one line of code should be completed testing, It would be much easier to locate the problem after finding it, and don't think, "I don't have a problem with this line of code," and you understand the code this way, but others may have different understandings, so there are different ways to use it, so the changes should be done in a complete test, regardless of size.
5. Release
"Pay attention to the difference between the release and the experimental version": The release version of the first to undergo experimental version of the test, and the release version of the code should be more concise, run more stable, it should not output debugging information, the code commented out code should be removed.
6. Maintenance
"Maintenance is a responsibility": the so-called maintenance refers to the code in the release of stable operation is still someone to regularly pay attention to its operation, ensure error, if there are problems, timely correction. Maintenance is the responsibility of a team, to ensure that their own procedures to operate normally, is responsible for the user, but also their own obligations, responsibility.
Problem solving after the software engineering study