The law of Construction
Introduction to the first chapter
1. Software Engineering
Software engineering is the process of applying the systematic, orderly and quantifiable methods to the development, operation and maintenance of the softwares.
Software engineering covers the following areas: Software requirements analysis, software design, software construction, software test box software maintenance.
Software engineering is related to the following disciplines: Computer science, Computer Engineering, management, mathematics, project management, quality management, software ergonomics, systems engineering, industrial design, and user interface design.
2, the particularity of software
<1>, complexity
Each module of the software has a variety of explicit or implicit dependencies, and as the system grows and the modules increase, the number of these relationships tends to grow at a geometric rate.
<2>, non-visibility
Software engineers can see the source code directly, but the source code is not the software itself. Business software errors, engineers can see the program in the moment of error left some traces (error code, approximate target code location, error message), but almost unable to fully reproduce the problem of what happened to the program.
<3>, variability
Software looks easy to modify, and modifying the software is much easier than modifying the hardware. It is natural to expect the software to "change" in two cases, one to make the software do something new, and another to adapt the software to the new hardware. But at the same time, it is difficult to modify the software correctly.
<4>, Compliance
Software can not exist independently, it is always to run on the hardware, it is subject to the requirements of other components of the system, it also subject to user requirements, industry system requirements.
<5>, non-continuity
It is easy to understand the continuous system: increase the input, you can see the corresponding output increase. However, many software systems do not have such characteristics, and sometimes small changes in the input can cause great changes in the output.
3. Why should we learn software engineering? What can we learn when we finish the software engineering? Hon
http://zhidao.baidu.com/question/432289923986540484.html (Query the information on the Internet, think this is good!) )
Chapter II Personal skills and processes
1, how to better learn the program design and software engineering
http://news.cnblogs.com/n/509554/
2. Personal Software development process (PSP)
<1>, PSP principle
Each programmer is different, in order to make the work more efficient, the programmer must be on their own historical data based on the work plan, in order to achieve continuous change, the programmer must implement the process and measurement, programmers must pursue quality optimization, early detection of defects and correction, early detection of defects and correction can reduce the cost of pay The fastest and most direct way to work.
<2>, PSP positioning
The PSP is positioned for every developer. Process, plan, measure, track, and make corresponding progress improvement. Instruct developers to estimate, plan, track, complete projects in progress, quality, cost, and achieve continuous process improvement.
Description of <3> PSP
A. The establishment of PSP processes requires the participation of managers and performers;
B. Focus on the developer's 5 points in the PSP: Scale estimation, workload estimation, product quality, process quality, and individual productivity;
C. The scale and workload estimates can be made more effective through statistics and historical data;
D. For product quality, make an early discovery and solve the bug. Can greatly reduce costs, increase customer satisfaction;
E. Through more effective planning and product quality improvement, you can reduce the time of heavy work, thus reducing the life cycle time.
<4>, PSP Process
The PSP has seven levels, and the start point of the PSP is what developers choose to improve on their own workflows. Each level is added on top of its previous level, and in order to minimize the impact of process changes on engineers, developers can slowly implement each of these levels.
3, how to better ensure the quality of the software (ask)
Http://wenku.baidu.com/view/73367c28e2bd960590c677da.html
Http://www.doc88.com/p-677129508676.html
http://www.vipcareer.com/Publish/ViewArticle.aspx?articleId=45684
Chapter III Growth of software engineers
1. What is the better way for software engineers to measure their abilities and values?
Http://www.docin.com/p-307034950.html
Http://www.cnblogs.com/xinz/p/3852177.html
2, the development of software engineers on the road will encounter what (ask)
(Below is a predecessor summarizes the programmer to grow four stages, personally feel very reasonable, at what stage are you?) )
Stage One: I don't know what I don't know (unconscious incompetence)
During the university, I and the teacher did some small projects, since I think they are very cow, at that time also went to some companies to do part-time job interviews, but just don't know why not reply. At that time, I do not know that I do not know, but also think that they know a lot, now think of their former funny, that time is not a programmer, at most can only be considered an amateur programming enthusiasts.
Performance: Fake self-confidence, excessive commitment, mouthful I can do no problem, despise other programmers ....
Stage two: Know oneself do not know (conscious incompetence)
Work, found themselves in the project work encountered difficulties do not know how to solve, and around people than found that their knowledge is very deficient, at this time know their skills than people, a lot of places are insufficient, need to be big and large, this is what everyone said the stage of the junior programmer, this stage must rely on others guidance.
Performance: A little guilty, open-minded learning, secretly efforts, envy cattle people ...
Stage Three: Know what you know (conscious competence)
After three or four years of work, his skills gradually improved, became the project team technical Danale, at this time also very confident, know that they can solve all the problems encountered, this is the senior programmer stage.
Performance: Self-confidence, more objective, real commitment, a little self ...
Stage four: Don't know what you know (unconscious competence)
After many years of work, with the depth and breadth of their knowledge to improve, the more learn to find the less understand, sometimes good feel that they really wasted too much time. Although feel that they still have a lot of need to improve, but the problems encountered in the work can not be solved, this time a lot of knowledge from the system, solve problems also have their own subconscious, and sometimes even they do not know that they know that this is the architect level.
Performance: Open, active, studious, humble ...
Programmer, which stage of your growth path is it?
The fourth chapter two people cooperation
1. Code Specification
Textbook P55-p70
Http://www.doc88.com/p-50876794995.html
2. What are the benefits of pairing cooperation? The impact of personality on cooperation? Do you need code specifications? (question)
Http://www.cnblogs.com/xinz/p/3852241.html
Http://www.cnblogs.com/xinz/archive/2010/11/27/1889978.html
Fifth Chapter team and process
1, "Team" and "non-team"
Characteristics of <1> and team
A, the team has a consistent collective goal, the team must accomplish this goal
A team member does not have to work at the same time, such as a relay race.
B, the team members have their own division of labor, mutual reliance on cooperation, work together to complete the task
A team can cut the task into countless pieces, but each piece is interdependent and indispensable.
<2>, Team work
Teamwork refers to a group of people who have the ability and belief to support the process of cooperation in a particular team, for a common purpose. It can mobilize all the resources and talents of the team members, and will automatically banish all disharmony and injustice, while giving the proper reward to those who are sincere and selfless. If teamwork is out of voluntary, it will inevitably produce a powerful and enduring force.
The performance of <3> and team
A, the member closely cooperates, cooperates the tacit understanding, the common decision-making and consults with others;
b, before the decision-making, listen to the relevant views, the task at hand and other people's views linked together;
C, to assume various roles in a changing environment;
D, constantly assess the effectiveness of the team and my strengths and weaknesses in the team.
2. What are the typical software team models and development processes? What are the pros and cons?
Patterns of <1> and software teams
A, attending physician mode
B, star mode
C. Community model
d, amateur theater mode
E. Secret Team
F, Agent Team
G, symphony Orchestra mode
H, Jazz mode
I, functional team mode
J, bureaucratic mode
<2>, development process
A group of people do software development together, there are always some ways and means.
We have many technologies, practices, habits and ideas in the development, operation, and maintenance of software engineering. Software engineering unifies these related technologies and processes into a single system called the "Software development process", the purpose of which is to improve the effectiveness of software development, operation and maintenance, as well as to improve user satisfaction, software reliability and maintainability.
A, write the re-change mode
B, Waterfall mode
C, various variants of the waterfall model
D, Rational Unified Process
E, boss-driven process
F, the process of progressive delivery
3, many teams in the process of cooperation will encounter a lot of problems, a lot of contradictions, some teams so broken, when encountered difficult to mediate the problem, how to solve it? Hon
The law of construction--reading