Software Engineering-Personal Assignment-Question Review and Personal Summary

Software Engineering-Personal Assignment-Question Review and Personal Summary

Answer past questions

Previous Questions Blog

Q1: Can unit tests really produce repeatable, consistent results
Unit tests should produce repeatable, consistent results

If the result of the unit test is wrong, there must be a problem with the program, and this error must be repeatable.

In Chapter 2, there are the above conclusions, but based on my test in OO unit 2, I don’t think the test results can be repeated. In multi-threading, there are often various small multi-threading problems, and these Minor problems are bugs that are triggered in a very harsh situation after the program has been running for a very long time. If you run this piece of code repeatedly, it is very likely that the bug will not be triggered again, and the results will naturally be inconsistent. I think that among all kinds of software projects now, multi-threaded projects should account for the vast majority, and it is inevitable that some bugs with very low probability will appear in the test and cannot be reproduced.

A: In actual testing, our tests did produce repeatable, consistent results. The latter can be reproduced in our defect records, and we have also repaired each defect.

Q2: Who should write unit tests?
Unit tests must be written by the person who is most familiar with the code (the author of the program).

There are the above descriptions in Chapter 2, but I think the person who is most suitable for writing unit tests should be the person who is most familiar with the requirements of the module, or the person who puts forward the requirements to test, because the author of the program may just follow the requirements After completing the code, when testing, he will also complete the test according to his own code understanding, and if he has misunderstood the requirement when writing the code, then no matter how he tests, he will not be able to detect the problem, because in In his eyes, this is correct, but in terms of real requirements, this function may be problematic, so I think the test should be written by the person who is most familiar with the requirements.

A: There is a classmate in our team who is responsible for testing. I think that after the team meeting, everyone’s understanding of the requirements should be the same. There is no difference between the two people’s understanding of functional requirements as I thought before. Therefore, I think it is more reasonable for the test students to write it. Of course, before the code is handed over to the test students, this function has been tested many times by the students who wrote the code.

Q3: Is it correct to use Six Sigma method on time to completion?
But looking at the standard deviation, Al's variance is 5.3 and Bob's is 1.

In Chapter 3, there is an analysis comparing the delivery time. I personally think that it is not very appropriate to use Six Sigma to evaluate the actual completion time and estimated time. Let's look at the definition of Six Sigma: (Baidu Encyclopedia)

Six Sigma (Six Sigma, 6 Sigma) is a management strategy proposed in 1986 by Bill Smith, an engineer at Motorola at the time. This strategy emphasizes setting lofty goals, collecting data, and analyzing results to reduce product and service defects. The principle behind Six Sigma is that if you detect how many defects are in your project, you can figure out how to systematically reduce them to make your project as perfect as possible.

We can see that this method actually evaluates the defects of the project, 6 Sigma = 3.4 mistakes/million opportunities, that is to say, it evaluates the error rate of the project, and a programmer completes the task too early. Can it be considered a mistake? Personally, I think it is more appropriate to use the average time and exceeding time to evaluate.

A: In fact, our team did not choose this method for evaluation, but used the number and quality of completed tasks to evaluate, because there were not too many cases in our group that caused others to fail because of the unfinished work of one person. Situations where work cannot be performed.

Q4: Is it really recommended to use goto?
Q: Can we use goto?

Answer: It is better for a function to have a single exit. To achieve this, goto can be used. As long as it helps to clearly reflect the program logic, any method can be used, including goto.

In Chapter 4, in the code design specification, it is described as above. But in my personal development, I have never used goto, as the comments say:

The goto statement makes the static structure of the program inconsistent with the dynamic structure, thus making the program difficult to understand and difficult to check for errors.

The result of the goto statement: The goto statement is reserved in high-level programming languages ​​​​such as C/C++, but it is recommended not to use it or use it less. In some newer high-level programming languages, such as Java, which does not provide goto statement, although it specifies goto as a keyword, it does not support its use, making the program concise and easy to read; nevertheless, later c# still supports goto statement, one goto statement The advantage is that it can ensure that the program has a unique exit, avoiding too large if nesting.

goto often makes the program structure strange, and the other party of the pair should rarely use goto, which increases the difficulty of understanding. I think goto can be replaced by something else, not very used to seeing goto in code.

A: No one in our team uses this kind of thing at all. I think this should not be used in the end. In our cooperation, we can see that other people's codes are all familiar structures, and there will be no goto and goto. It's a team norm issue.

Q5: Can PM really be equal to everyone?
The difference between Program Manager and Project Manager of some companies:

Project Manager Program Manager
Is the executive leader of the team and leads everyone to work on the project. Work with everyone equally to push the team to complete the functions of the software.
Usually the only representative of the team dealing with the outside world A team can have many PMs
Has the final say on the functionality of the project Form resolutions with other team members
Manage things and people take care of people
don't necessarily do specific work must do specific work

When reading Chapter 9 Project Manager, there is the above table, which describes Program Manager as working with everyone on an equal footing, forming decisions with other members, and managing things regardless of people. But in the actual project in my university, I think this is very hard to do. When I was the project team leader for the first time, my initial thought was that everyone should be equal, make suggestions on the project together, and then vote to decide the direction of the project, etc. I should play a role similar to the moderator. The meeting should be a meeting for everyone to participate in and express their opinions. However, in fact, most of the projects are held by me at the end. I am also explaining how this place should be completed and what details should be paid attention to. Where there are predecessors' blogs to learn from, others may basically not speak. Even so, I have already found relevant blogs and described the input and output of the implemented functions. I still have to rush to start working. For example, I once had a project and arranged tasks during the winter vacation. Show me the effect, but this task was delayed until the summer vacation. In the end, I spent one night to reproduce the blog that I sent to him before. In fact, there will be no strange problems at all if I follow that article. I think no matter what people say, it is difficult to complete a task similar to PM, at least in college. Of course, it may be different in work, but I still doubt that PM can be equal to everyone. PM should manage people in every project, and push those who have not kept up with the progress. How can we achieve true equality? ?

A: In this soft engineering cooperation, we have held many meetings. I think PM is equal to us in a certain sense. There are two PMs in our group, one of which is mainly responsible for the front end, and the other is responsible for the back end, but usually because we use the coding platform to assign tasks to specific people, and also specify the completion time, so there is no need When the PM comes to push, what the PM does is the role of a moderator. During the meeting, we also speak one by one to form a final decision on a problem.

Knowledge points for each stage

need

typical user . Since our project is in cooperation with China Communications, after obtaining some of their general requirements, we consider whether their requirements are reasonable by substituting typical users, and further refine and integrate the vague requirements. Finally turned into specific needs.

design

Graphical modeling and analysis methods . Modeling things in a graphical way can well reflect the connection between things, so that software developers can accurately grasp the content of the design in the subsequent moments. We use real-time design, and we can clearly see the operating logic of the entire software, such as how to jump? What functions are required? It is very helpful for subsequent development.

accomplish

Progress management . We use teamwork on CODING for progress management, where you can see everyone's tasks and defects, you can see the overall progress, everyone can assign tasks or defects to others, and you can easily find Who did a certain part.

test

bug report . When one person finds a bug, how does one report the bug to others? This requires the specification of error reports or defect reports. We use teamwork on the CODING platform to explain each defect in detail. How to trigger it? trigger result? Expected results after repair? That way everyone knows how to fix the bug.

release

Cut out the functionality . Can't complete the function? Just cut it off. When we actually developed it, we planned to make an AR face function, but later we found that this function can only be used by a few people's mobile phones, and it is difficult to complete. In the end, we did not implement this function and directly cut it off.

maintain

structured maintenance . Every time a new requirement arises, it should start from the requirement analysis, analyze the whole process, judge the possible impact of the modification on other places, add the new requirement without causing other bugs as much as possible, and use the back-end Dynamic deployment does not affect the user's use.

experience

The soft work is finally over. In this project, I am mainly responsible for the multi-person synchronization part, and there is also the AR part. Now I have a deeper understanding of multi-person synchronization in unity, and even feel that I can go to station b by myself I recorded a video about how to implement a multiplayer online game. In fact, there are many things that are not written in the current blog or official technical documents, such as how to synchronize everyone's clothes, how to implement scene invitations, and how to implement team invitations. etc. I learned a lot in it. In the last week, I basically went to bed around 3 to 4 o'clock, and got up in the morning to continue working. It can be said that I basically spent all my time researching and developing soft jobs, but I also gained something, which I think is worth it.

In addition to technical aspects, I also learned more about how to work in a team, how to establish a more convenient communication channel, how to allocate tasks reasonably, etc. Before that, I hated teamwork very much, because my previous teamwork was rarely the same as this time experience, so I will also gain experience from this teamwork, and then make better teamwork. For example, using more team collaboration tools is more efficient than using WeChat, etc., and you can easily track everyone's tasks and progress.

Finally, I would like to thank my pairing partners and team-mates, as well as my teachers and teaching assistants for their hard work!

Guess you like

Origin blog.csdn.net/qq_45551930/article/details/125397434