A few weeks ago, I read an article in which a teacher taught his students to actively read literary literature, in which I admired his sentence: "Just think of liturature as if you ' re reading a long text-message". Extended to here, compared to find themselves in real life really rarely take the time to examine their professional books after class, said ashamed, this situation occurs most frequently is the final preparation for the exam. Because of this homework, I seem to tell myself that this is a very "proper" reason to go ahead and finish the unfinished task. Read a book, you must be serious, to be worthy of their own, but also worthy of the author. This reading Xin Zou Teacher's book, "Modern software engineering-the law of construction," the first to the fifth chapter, I used 3 classes in class time, in the class for 1.5 hours, benefited!
This chapter is mainly to the "software Engineering" the four characters of the analysis. from the beginning of the introduction, let us understand the software = program + Engineering, program = data structure + algorithm .
Software engineering is the process of applying a systematic, effective and quantifiable method to the development, operation and maintenance of an application. A complex software should not only have a reasonable software architecture, software design and implementation, but also have a variety of files and data to describe the dependencies between the various program files, compile parameters and so on. "Software Engineering" is a large project, there are many concepts need to understand: source control (configuration management), quality assurance, software testing, requirements analysis, program understanding, software Maintenance (service operations), software life cycle, project management, user experience and so on.
The concept of "software engineering" was first proposed in 1968, in order to better understand its history and influence, we take the software industry and the aviation industry to do contrast, can draw a lot of similar places:
Software It is a logical product, the production team is very large, although maintenance is more complex and easy to degenerate, but it does not wear aging. In the 1.2.5 section, what is good about software? At the same time, I am also very puzzled, because the number of bugs can directly measure a software development efficiency, user satisfaction, reliability and maintainability, then is not the software is not a bug is good software? I think otherwise, because there is practical use at the same time is the perfect software, in this world does not exist. Even if Microsoft is proud of the WINDOW8 system will occasionally appear blue screen phenomenon, but this does not directly affect the ability of Microsoft, nor directly affect the availability of the WINDOW8 system, because your RP is determined by the quality of your program, so I personally feel that the software does not exist perfect, There will always be the objective or subjective factors of the customer is not satisfied, we can not cater to all the market demand, the most important thing is to examine the mainstream needs of the market and constantly improve their work with the team research and development.
This chapter mainly introduces PSP (Personal software process), which refers to the process of personal software development, which consists of unit test and effectiveness analysis tool.
Unit testing can accurately and quickly guarantee the correctness of the basic module of the program, the main steps to create the unit test function are: Set the data, use the function of the type being tested, compare the actual results and the expected results. In the 2.1.2 section discussed how to calculate a good unit test, after summing up should be: Unit test should be the lowest function/parameter to verify the correctness of the program; Unit tests must be written by the person most familiar with the code (the author of the program); The machine state remains the same after the unit test Unit testing is fast (a test runs for a few seconds, not minutes); Unit tests should produce repeatable, consistent results; Unit tests run/pass/fail independent of other tests, can artificially construct data to maintain the independence of unit tests; Unit tests should overwrite all code paths Unit tests should be integrated into the framework of automated tests, and unit tests must be saved and maintained with the product code.
There are two kinds of analysis methods, such as sampling and code injection, for efficiency analysis. Sampling methods do not need to change the program, run faster, can quickly find bottlenecks, but not accurate data, and can not accurately represent the call tree in the code. and code injection can make the program's data can be accurately measured, but the time will be greatly extended, but also produce a large data file, but also increase the time of data analysis, which will affect the operation of the program. If we do not analyze blindly optimize the analysis, may be less than the result, so we have to choose according to the actual situation to suit their own program analysis method.
In the 2.3 section, comparing the time spent on individual projects of the four-year-old and the software engineers working for three years, it is obvious that in the two sets of data for demand analysis and testing, the engineer will spend more time than the senior students, while in the specific coding the senior student spends more than the engineer. Does that mean that seniors are weaker than software engineers? I think otherwise, the software engineer is more than the senior students read more than 3 years of books, more than 3 years of work, two types of people in the environment and experience different things, so two people task to complete the quality requirements are not the same, I think, at present, senior students in the application of software engineering may be less familiar with engineers, But as long as after hard work, the ugly duckling will become a beautiful swan!
This chapter mainly describes the software engineer, why the senior engineer is better than the first-time engineers.
To grow and become strong, junior software engineers need to: accumulate knowledge about software development, improve technical skills (such as mastery of specific technologies, hands-on skills), accumulate knowledge and experience in problem areas, and deepen understanding of general software design ideas and engineering ideas ; Improve vocational skills (distinctions and technical skills); practical results. Senior Software engineer, for our current level, is not the touch of it? In fact, we are still young, there is a lot of time to learn, to practice, on the road to senior software engineers, we can test the relevant certificates to obtain theoretical skills, and then go to the relevant units of internship to obtain experience, and finally through independent research or team development to carry out the practice, And then develop brain intelligence and improve your hands-on ability.
At the same time, we should always self-assessment of ourselves. Most of the software engineers are not technical geniuses, many of them are acquired, we have to assess their ability and make timely improvements, and then through continuous learning, the low-level problems are solved, into the automatic operation of the brain, and then have the time and mental power to solve the higher levels of the problem.
This chapter focuses on the different stages of cooperation between two people and the skills that affect others.
Software are in cooperation with each other, the wings only one side is not flying up, although very hard to fly to the mid-air, also not enough wings glide relaxed freely, so cooperation is really important. In cooperation, only exchanges and exchange of ideas, will find their strengths and shortcomings in where. With peer supervision, you can let oneself dare not lazy, let oneself more serious to see and correct the shortcomings of the procedure, have a direction and goal, let everybody more pursue.
In the 4.4 section, the importance of code review was emphasized. What circumstances and circumstances should we review? Code review has self-review, peer review and team review, and the most basic method of review in software engineering is peer review. The reviewer is to ensure the quality of the software by discovering the problem, we do the code review to reduce the occurrence of errors, rather than find a person to nod to themselves, so it is important to find a suitable companion to work together, so that two people in the role of pilots and pilots to exchange, To improve the level of competence of both sides. Two people can succeed in the stage of cooperation from the bud to the run-in, and then to the norms, unsuccessful partners if not considerate of each other, may lose in the running-in phase, therefore, the transposition of thinking here plays a vital role.
Two person cooperation is a pair of pairs of cooperation, pair programming in fact, we will have a lot of benefits: in the development level, pair programming can provide better design quality and code quality, two people to work together to solve problems more powerful, for developers themselves, knot work can bring more confidence, High-quality output leads to a higher level of satisfaction, and at the level of enterprise management, pairs can communicate more effectively, learn from each other and communicate experiences, share knowledge, and better respond to people's mobility.
In short, two hands can lift, two legs can run, two people can exchange cooperation.
This chapter mainly introduces the team spirit
Does that mean that a team is formed as long as it can be grouped together? In fact, software teams have various forms that apply to different people and needs. For their team to win!
A good team process can release the positive aspects of the conflict (each trying to do their job well, persuade others) and avoid negative aspects (negative, conflicting emotions, etc.) that arise from the conflict. We cannot relax our demands because of the team-mates, because the quality of each person's work directly affects the quality of the final software, and when all the high-quality work is combined, it is possible to achieve a good team quality work project.
There are many types of software team models: Attending physician mode, star mode, community mode, amateur theatre model, secret Team mode, Agent team mode, Symphony mode, jazz mode, functional team mode, and bureaucratic model. Each team can not be directed at the most profitable and self-created patterns or patterns, suitable for their team and project requirements is the most important. So how to strengthen cooperation with others? In an organization, most of the time, the members of the cooperation is not what we can choose, so it is likely that the group members of the various aspects of the ability to be uneven, if as a leader, at this time need a good cohesion ability, can put the characteristics of most of the members of the various aspects of cohesion together, It also requires leaders to have a good ability to interact and communicate with different people. If leaders do not set an example at the outset to do all aspects of the work, there will be many undesirable consequences.
Therefore, learn to cooperate with others, play a team spirit in the specific life of the use, can make us receive a multiplier effect, can make our work more well forward development.
Reaction to construction Law of software Engineering from the first Chapter tothe fifth Chapter (Supplemental edition)