Software Engineering - review questions and personal summary

project content
This work belongs to the Northern software engineering courses Park class blog link
Please click on the link to see the job requirements Work requirements
My goal of this course is To become a software developer with a certain experience
In particular aspects of the job which helped me achieve goals Let me their current situation to have a more clear understanding

First, the question before the blog

Please Click the link to view

Second, the answer to the blog in question

1. The type of inheritance is advocating the use of it?

For that matter, I think there are different approaches for different projects. Some projects since birth is destined to become one of the large-scale projects, relying on the power of individuals unable to complete independence, it must be possible to write through the joint cooperation of more than programmers. While other projects are typical of small-scale projects, two or three people or even an experienced programmer can easily be completed, you do not need too many people fit. For the former, it is necessary to use the type of inheritance where the need for developers to constraints, such functional modules can be limited within a certain range, it is conducive to the consistency of the overall structure of the program; and for the latter, may use only the type of inheritance where necessary, such as the series of similar objects as the same kind of object projected on different facets. These are my thoughts determine in practice, project backend framework of our group chose Ruby on Rails, a very pure object-oriented language, and middleware is chosen Python. Rails projects to be relatively large number, and the frame itself contains a lot of types of inheritance, so we yielded to use a lot of types of inheritance; Python to write middleware is hybridity several pieces of module, in order to be done quickly do not use too much of object-oriented technology, but fast track solution to the problem.

2. The role reversal is whether a reasonable choice?

I later found out, pair programming with the purpose of my pre-conceived is not the same. I thought, pair programming is to directly improve programming efficiency and the birth, but after a practice that is not the case. Pair programming is essentially sacrificed two times, in exchange for a little bug-free code, thus indirectly improve the efficiency of software development (late review because it becomes easy). In this case, a man by the time the driver and another person for a long time is bound to bring the pilot to driver fatigue problems, so often the roles were reversed in fact is a reasonable choice.

3. The user how to weigh the opposite evaluation of the UI?

Practice tells me two truth: 1 user always easier said than done white whore party, if it is according to their opinion will be a major event; 2 "really sweet" is the essence of humanity... Whether we are from our small program this semester project, or in my own personal experience when using all kinds of App, have found want to make everyone happy is an impossible task. A user base up, before it is truth will be broken by the views of a wide variety of wonderful work, if you really go one by one to meet the needs of users, must wait until the arrival of communism that day. More sensible approach is, from the outset to establish a good one kind of UI style preferences, and unswervingly implement it, as long as the software is done well, sooner or later, users will say "really fragrant."

4. How to design a test case for the method is complicated side effects?

Ruby on Rails framework taught me the truth: Nothing is a test file can not be resolved, if there is, it is on an integration test. Before I was too rigidly stick in the mire of unit testing can not extricate themselves, and later in the course of practice, I found, is just a means test unit testing, the actual software testing, integration testing is easier to use, more cost-effective test methods. Integration testing software as a black box, concerned about whether the state of the software running as expected, the test unit test larger size compared to the many, many ways to pack their side effects can be picks up, do the test from close to the user's point of view. Therefore, design test cases when he met those methods do not unit testing, integration testing simply put them on, the test finished all at once.

5. How do the visibility of the project?

I now think that this problem may be somewhat selfish. Before my idea is that a software project team to back-end and front-end team are completely separate independent backend interfaces just need to do all you can get away to leave, front-end interface to show only need to do all the work can go home to sleep, other places can be a problem of training and preparation of others, you do not take this the pot. But then I discovered that a team of woe, front and rear can be truly independent of absence. Whether the project manager or investor perspective, the front and rear ends are non-existent, the only presence of only the project itself, the problem is brought out of the project, the front end is still a problem entire project problem, the front end of the rear end of the fortunes of dependency, also share a common lot. Therefore, the back-end is no need to consider how much visibility do the back-end module, should focus more on improving the functionality and testing does not become a bottleneck in the front end. In this way, the current terminal is completed, work will naturally be the back end of the show out.

Third, the problem is not clear whether the original

Fortunately, now it is gone.

Fourth, whether or not a new problem

My question is: how to continue to control software quality.

A team, the technology gap is certainly exist, this time is often the most technical people will take the lead, is responsible for the quality of the code part of His review. But the stronger a person's ability comes great responsibility, things will be more responsible, and can not come to the code often do special detailed review. Code quality we set at the beginning is relatively high, but later serious decline rapidly rising amount of code to review the code of technical personnel to bring a lot of pressure, sometimes in order to be able to quickly deploy the project on line to see the effect, often there are gulping type of audit, code quality control has become something of a formality. But the code quality is very important when several people push code to a common code base, personal bad coding style will soon avalanche amplification, thereby affecting the entire project. For small teams, when the code progressively larger amounts (up to about one million lines) when what better code quality control methods do?

Fifth, the various stages of learned knowledge

1. Demand analysis phase

How to distinguish between what the needs are important and what needs are not important: only need to enter the user into his own behalf, and binding function of similar products on the market, you can roughly judge.

2. Design Phase

Not up on the front Mang, if not design directly start, then, it will die ugly.

3. The implementation phase

Familiar with a project the best way is to go personally to their implements a new feature.

4. Test Phase

Integration testing tests are often higher than the unit cost.

5. Release stage

User environment in which strange, after many Bug is really on the line can be found.

6. maintenance phase

React learned a Rails project and project deployment methods on the server, as well as use Tencent cloud object storage.

Sixth, understanding and experience

In this semester software engineering course, my identity has been changed. In the beginning, I was responsible for the development of small programs, written a few simple logical pages and micro letter unauthorized access, encapsulates several API; later, I turn to the back-end, learning the Ruby on Rails framework, began to study the rear end of each realization of functions; then, I do a web client developed from scratch self React, completed about 3000 lines of code a small web client community management App; finally, I transfer half to half the operation and maintenance + a back-end developer, learning a variety of projects and various tools deployed on the server, and manipulate data on the production database in a production environment, Dapeng wings at the edges seek death. During this period, I was almost from a technical point through all aspects of the project, thus also got to glimpse the whole picture of the project.

My feeling is that the project sparrow our group is small but perfectly formed, in all aspects are covered. I thought before software engineering (especially here for the time being at App development, including but not limited to small programs), just a frontend + backend, there is nothing particularly complex technology, step by step to act in it. But then I found that in order to better complete this project, you need a lot of additional knowledge surrounding. For example, in order to give small program to better pictures I / O performance, we use Tencent cloud object storage service, which requires us to learn additional ways Tencent cloud using the SDK, and SDK and the Rails project organically combine . During this period, I learned a middleware design approach, understanding the significance of the presence of micro-service architecture; there, in order to make micro letter template message push, need to work together with the front and rear, also you need to set a timed task on the server, this guide me into the operation and maintenance of the door; in the operation and maintenance process, I also need to learn to deploy front-end back-end project on the server, for a newcomer, the project deployment up and realize they are almost the same difficulties. In Ruby on Rails tutorial, there is a very classic words, "technology is complicated." Now this sentence I have a very profound experience.

Therefore I realized that modern software engineering has become a difficult to rely on it alone to complete the task, only to the software project team to inject vitality in a steady stream. I am grateful to my teammates, and they together this semester, I had a very enjoyable.

Guess you like

Origin www.cnblogs.com/zhouyufei/p/11094400.html