Summary of software engineering m1/m2

Source: Internet
Author: User

Already clear questions: 1. What is the "no silver bullet" assertion?

By reading the most famous article of Brooks, I know that in the software development process is not a universal end kill weapons, only a variety of methods integrated use, is the solution. And all kinds of theories or methods of how to claim magic are not silver bullets that kill the "software Crisis" wolf. In software engineering, although the use of various high-level languages effectively removes the problem of minor complexity, the necessary complexity of the software itself cannot be removed. For example, our usual homework, the elevator scheduling in the course, the state of the elevator and various properties must be considered and implemented, if you refer to real life examples, the situation becomes more complex. In short, to get an ideal program, you have to consider a variety of issues, many people work together to develop a complex software, because everyone's ideas are different, the team's initial run-in process is also very laborious.

2. What is the relationship between the team model and the project development model, and how to choose the most efficient and appropriate model?

Cathedral mode (the Cathedral model): The source code is disclosed after the software is released, but is controlled by a dedicated team during each version of the software development process. The authors take the GNU Emacs and GCC software as examples.

Market mode (the Bazaar model): Source code is open on the Internet during the development process for people to view and develop. The author takes the development of Linux core as the founder of Linux core Linus Torvalds as an example, and also cites the development of Fetchmail as an example.

This article uses "Cathedral mode" to describe the internet world closed, centralized development model (for example, the most typical Apple closed mode), with "market model" described in the internet world parallel, dynamic multi-person collaborative development model, from the traditional company perspective "Cathedral Model" obviously more to protect their own interests , but if you look at the "market model" from the perspective of software development and it development, it is a must.

After discussion in our group, I think it is more efficient to turn a valuable bazaar into a cathedral. In other words, a semi-finished product is disclosed, and finally gradually perfected to form the final project. In the process of transformation, many factors need to be promoted. An initial project can be an imperfect project with many flaws, but it has to have a prototype of a project and the value to attract investment and talent. Although the quality of the cathedral is generally high, but it takes a long period of time, market mode is the number of wisdom superimposed, in this regard, the market model has greater competitive potential.

3. When pairing programming, the partner's character and other factors influence the cooperation.

In concrete practice, I think the most important personality factor of a partner is a sense of responsibility and a positive attitude. These two points have a very important role to play in our cooperation. A sense of responsibility proves that he will submit the assigned tasks on time, and the positive attitude will affect the morale of the whole team.

4. Agile development or other advanced methods for team requirements, methods of picking skills.

By looking at the information, I have a deeper understanding of the problem.

The main agile approach:Extreme Programming (XP)

The main purpose of extreme programming (XP) is to reduce the cost of change in demand. It introduces a number of good software development methodologies and brings them to the extreme. For example, in order to get feedback from users in a timely manner, XP requires the customer representative to be with the development team on a daily basis. At the same time, XP requires a pair programming (pair-programming) approach to all programming. This approach is an extreme manifestation of the traditional peer review (peer review), or it can be said to be an alternative.

Process:

XP defines a simple set of development processes, including: Writing user stories, architectural specifications, implementation planning, iterative planning, code development, unit testing, acceptance testing, and more.

Thought:

Like all other agile methods, XP anticipates and actively accepts changes.

Scrum

Scrum is an Agile development framework that consists of a development process, several roles, and a set of prescriptive implementation methods. It can be used for software development, project maintenance, and can also be used as a framework for managing agile projects.

In Scrum, product requirements are defined as a backlog of product backlogs. The backlog of product requirements can be user cases, independent function description, technical requirements and so on. The backlog of all product requirements starts with a simple idea and is gradually refined until it can be developed.

Process:

Scrum divides the development process into multiple sprint cycles, and the sprint represents a 2-4-week development cycle. Each Sprint has a fixed length of time. First, the product requirements are divided into different product requirements backlog items. Then, at the Sprint planning meeting, the most important or most valuable backlog of product requirements is first scheduled into the next sprint cycle. At the same time, at the sprint schedule, all the backlog of product requirements that have been assigned to the sprint cycle are estimated, and each entry is designed and assigned to the task. During the Sprint cycle, the backlog of product requirements for these plans is implemented and fully tested. Every day, the development team will have a short scrum meeting (Daily scrum meet). At the meeting, each team member was required to report on their progress and to present the various obstacles encountered. At the end of each sprint cycle, a system that can be used is delivered to the customer while the Sprint Review Conference (Sprint review meeting) occurs. At the review session, the development team will present the new system functionality to the customer or to the end user. At the same time, customers will make comments and some changes in demand. These can be retained in the form of a new backlog of product requirements and implemented in the subsequent Sprint cycle. The sprint review will then summarize what deficiencies in the last sprint cycle need to be improved and what are the positive aspects. Finally, the entire process starts from scratch and begins a new Sprint planning meeting.

Role:

Scrum defines 4 main types of roles:

Ø Product Owner: This role is responsible for the product's vision, balancing the interests of all stakeholders (stakeholder), and prioritizing the backlog of product requirements. It is a point of contact between the development team and the customer or end user.

Ø Stakeholder (stakeholder): This role has a direct interest relationship with the product and is usually made up of a customer or end-user representative. They are responsible for collecting and compiling product requirements and reviewing project results.

Øscrum expert (scrum Master): Scrum experts are responsible for directing the development team to develop and practice scrum. It is the focal point for communication between the development team and the product owner.

Ø team member: The developer who does the actual development work for the project Member.

Scrum provides an agile development framework, and many other agile methods can be integrated into scrum. such as test-driven development (Test-driven development) and pair programming (pair programming) can be integrated into Scrum.

Lean development (Lean development)

The Lean software development model evolved from the Toyota Product system development approach. It consists of two parts: part is the core idea and principle, and the other part is composed by some tools in the corresponding tool.

The core idea of lean development is to identify and eliminate waste. In software development, errors (bugs), useless features, waiting, and any other things that do not benefit from the implementation of the results are wasted. Waste and its source must be analyzed and identified, and then managed to stop it.

Lean software is more important is to constantly improve the development process of a way of thinking. Therefore, using the lean model with other agile development models will have a good effect.

How to choose an agile approach:

Choosing an appropriate method depends on a variety of factors. Before making a decision, we need to fully consider these areas:

Ø the complexity of the method. Ensure that the team or organization is able to cope with this complexity.

Ø community Support. The popular approach may not be your ideal choice, but the popular approach has at least more community and industry support to benefit you.

Ø practical Tools. Choose a method that can provide you with a number of support tools. A good automation tool can help teams effectively handle daily work, promote teamwork, and reduce management costs.

Ø your current development approach and your current team's understanding of agile methodologies. Choosing an agile approach that is closer to your current development approach will help drive the implementation of this approach.

Ø the size of your team. A smaller team is best to start with a simple approach. Of course, this does not mean that you have to choose those that are relatively simple in their own way, such as Crystal Clear. You can choose some relatively comprehensive approach, but start with a simple one. As your team grows in size, add the appropriate details.

Ø you do not need to follow only one method. You can choose a major method for your team, such as Scrum, and then integrate it from other approaches to other ways that help your team or organization.

Agile is always evolving, so no one can guarantee that the current agile approach is correct. Each team that uses agile development can make its own contribution to agile development by discovering and forming its own ideas and best practices.

Questions that still have questions

Our presentation process for Scurm meeting was more formalized, what did I do today? What are you going to do tomorrow? What's the problem ... So I still want to know if there is a more efficient and scientific way of meeting.

The new question

1, about the code style, everyone has a different style, how to better integrate them together? Would you like to require a unified code specification at the beginning of the project?

2, in the process of team collaboration, through a kind of mechanism to mobilize everyone's enthusiasm?

3. How can each member of the project team find the right job for him so that he can play his maximum value? What basis can the project division of labor follow to be more scientific?

A new understanding of 8 articles or blogs related to software engineering

Software engineering consists of three elements: methods, tools, and processes.

About the software engineering, about teamwork, in the answers to many of these questions, never escape the choice of methods and the definition of rules. Like Linux and Apple systems, their development patterns are completely different, but the end result is the same, not all "good" methods are suitable for themselves, that is, the choice of a "suitable" method will be a great help to the project. At the same time, management is also a very important link, the way of a good management team in a sense is a comprehensive overall performance.

What "knowledge points" are learned in the project requirements/design/implementation/test/release/maintenance phase

Ø Requirement: NABCD model Demand Analysis method

Ø Design: Abstract from functional requirements into graphical modeling

Ø Realization: Agile programming, Cathedral and market development model

Ø Test: Black box and white case

Ø release: Try to release the software on more platforms and receive more user feedback.

Ø Maintenance: Structured maintenance, starting from the design document to revise and review

Blog Links:

Http://www.cnblogs.com/yuccalan/p/4826577.html

Summary of software engineering m1/m2

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.