"Modern software engineering--the law of construction" 1th to 5th chapter book and questions

Source: Internet
Author: User

The
beginning is about a concept: Software = program + Engineering.
start reading this book, the greatest feeling of the experience is that software engineering can be so learned, before learning programming course, always feel this kind of curriculum and boring, always say too much theory, rarely involve practice, or even simply do not practice this link, so learning is very boring,       But reading this book is really a new feeling, first of all, not only in theory, but in a lot of practical things. The beginning of the author said "SOFTWARE = program + Engineering", before writing software or programs, just write programs, at most will take into account the knowledge of data structure, rarely use software engineering, but with the depth of learning, the accumulation of code, if it is the same as before just care program as long as it is available, the actual can run, Then there is no point, such a program is not worth writing, first of all, software engineering is not only related to computer or software knowledge, on the contrary, it involves a lot of knowledge of other disciplines, such as: Management, mathematics, industrial design and other disciplines, If a qualified software developer only knows how to write a program, then hi is just the primary stage, and more advanced should consider more things from a more advanced level, such as the architecture of the entire software.
      How do you know the difference between software engineering and other programming courses in depth?  2. Personal technology and processes         development is often a lot of people work together to complete a software application, there is a dependency between different developers. I need to call the code module you write, you also need to call me to write code module, but because do not understand the module changes, the module does not achieve high cohesion low coupling caused by the impact on other modules, often produce errors. In determining the release of this module, to undergo a complete unit testing, in order to achieve a multiplier effect, we can write the specification is detailed, detailed to the requirements can be expressed as a unit test case.         Carnegie Mellon has a personal development process that works well for our personal development. After receiving the project we can follow several steps to,        estimate time---> requirements analysis---> Generate design documentation---> Design Review---> Code specification---> Specific design--- > Writing Code---> Code review---> Code TEST---> Hiring---> Test report---> Calculation effort---> Summary---> Discuss improvements. As the number of years of work increases, the proportion of coding will become smaller, because development is no longer blindly coding, the proportion of testing will be more and more high, to ensure quality requirements.         If personal technology is weak, be good at applying others ' templates and adding new elements to form a software. Can this road go down?  3. Software engineer Growth         So why do we use software engineering? Because software engineering combines technology, practices, habits, and ideas in the development, operation, and maintenance processes to improve the efficiency of software development, operations, and maintenance. At the same time, the use of software engineering, but also reduce our workload, to avoid unnecessary rework.       How to improve your skills? Through constant efforts, the low-level problems are solved, become not through the brain's automatic operation, and then have the time and mental power to solve the higher levels of the problem. We're going to be proficient at low-level issues (int[] arr or int arr[],arraylist or array<t>), middle-level issues (what schemas are used), high-order issues (performance Optimization ...). ) .      Software engineeringDoes the teacher have the basic qualities that can be promoted in the course?  4. Two partners       The present development is rarely done alone, at least two people. We write code not only to let the machine understand, but also to let others understand, so that your teammates can understand. This requires code specification. Code specifications are divided into Code style specifications and code design specifications. Code style specifications include: indent, line width, position of {}, branch, name, case. One of the things I think is more important is that each statement defines only one variable and does an operation. Use {} Even if the IF and ELSE statements have only one sentence. Add an underscore to the variable name to indicate the scope, such as M_iage.         Code design specifications are not just procedural issues, but also involve programming, the relationship between modules, design patterns, and so on.         A function only does one thing.         The members in the class are public,protected,private in the order in which they are listed.         in a small software development process, there is a pattern called pair programming, in which a pair of programmers work together to design, code, test, document, and because each job is seen by two pairs of eyes, The initial quality of the program depends on the high level of the programmer, throughout the development process of continuous and subtle review.         co-operation is based on strong band weakness. Excellent belt difference mode, driving the students to learn the enthusiasm, and help poor student good. Or the combination of strong, complementary mode good? How do I choose a teammate?  5. Teams and processes         What is a team? The team has a consistent collective goal, and the team will work together to accomplish this goal. Team members have their own division of labor, mutual reliance on cooperation to complete the task. When starting a business, some programmers get together to write good programs and swarming solve problems together, which is the simplest mode (swarm mode). Gradually, the team transitions to the following pattern.         Attending physician mode: There is a lead programmer who handles the design and coding of the main modules, and other members support his work from various angles.         Community mode: There are some volunteers who participate in projects they are interested in, without getting paid, such as the Linux community.         Amateur theater mode: Such a team in every project, different people will pickDifferent roles. In the next project, these people may be finished with another role. The team has a boss who directs everything.         Functional Team mode: colleagues with different abilities work together to achieve a single function.         Do software together, there will always be some development methods, such as:        Xie re-change mode: Do not need too much knowledge, directly on the handwriting code, has been changed until the release.         Waterfall model: one-way irreversible, final product until the end. Follow the requirements analysis-coding test-Release step-by-step walk down. Strive to be completed at once.         RUP unification process: Like a waterfall model on a large scale, like an iterative model in each phase. Initial stage: Analyze the approximate composition of the system, and what kind of external entities to deal with, the approximate cost and the budget is how much. Refinement Stage: Prepare the project plan, confirm the main function, performance. Construction phase: Test all feature sets and publish them as beta versions. Delivery phase: Continuous modification based on user feedback. The core of a team should be skilled personnel or strong organizational skills, flexible, good at using the template combination of personnel?       Finally, I hope to be able to take this course in the teacher's teaching.

Modern software Engineering-the law of Construction 1th to 5th chapter of the book and questions

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.