Software Development Life cycle
Sdlc--software Development Life Cycle.
The traditional software development life cycle is:
Waterfall Model: Sequential, only to complete the previous stage to open the next stage, the software life cycle is divided into: planning, requirements analysis, software design, programming, software testing and operation and maintenance of six basic activities. The advantage is that it provides a stage-by-phase checkpoint and focus for the project, which must be provided with a template to provide a common guide for analysis, design, coding, testing, and support. The disadvantage is that each stage is divided into fixed, resulting in a large number of documents, greatly increase the workload, users only wait until the end of the process to see the development results, increase the development risk, not adapt to the changes in user needs.
Prototype model: the establishment of samples, gradually refinement, also known as the sample model, borrowing the existing system or building samples as a prototype model, through the improvement of the sample to meet customer needs. The advantage is that it allows development and users to agree on prototypes, reduce errors in design and risk in development, shorten development cycles, and reduce costs. The disadvantage is that customer and developer understanding of the prototype is not suitable for accurate prototyping, but also limits the developer's innovation.
Helical Models: General system-level applications use spiral models, which introduce risk analysis. It is an evolutionary software development process model, which takes into account the iteration of prototype model and the systematization and strict monitoring of waterfall model. The advantage is that design flexibility is easier to adapt to the changing needs of customers, and the effective interaction of customers ensures the right direction and controllability of the project. The downside is the need for a wealth of experience and expertise in risk assessment, while excessive iterations increase development costs and delay delivery times.
Agile development
Agile development is developed in a continuous iterative way, with the evolving needs of the user as the core. Software projects are split into multiple sub-projects at the beginning of the build, and the results of each subproject are tested to be visually, integrated, and run-to-use features. The goal of agility is to improve development efficiency and responsiveness.
Agile Development Models:
Agile Manifesto:
Individual interactions above processes and tools
Working software is higher than understanding documentation
Customer collaboration is higher than contract negotiation
Response change is higher than following plan
Agile principles:
Meet "customers" with early and continuous high-value work delivery.
Large work is divided into smaller constituent departments that can be quickly completed.
Identifying the best work is occurring from a self-organizing team,
Provide positive employees with the environment and support they need and believe they can do the job.
Create processes that can improve sustainable work.
Maintain a constant pace of complete work.
Welcome to change the demand, immediate is in the late project.
Meet with project team and business owner every day during the project.
In the periodic revision period, let the team reflect how to be efficient, and then make the corresponding behavior adjustment.
Measure the work progress through the vehicle workload.
Continue to pursue perfection.
Leverage adjustments to gain a competitive advantage.
List of agile nouns:
Scrum: A professional term for rugby, which means "fight the ball", the name of a development process called scrum, which means that everyone is like playing football as fast, full of fighting passion, efficient work.
Scrum team: Development team, mainly responsible for the development of software products under the Scrum specification process, the number of people in the 5~10, each member may be responsible for different technical aspects, but requires that each member must have a strong self-management ability, and have a certain ability to express, Members can work in any way they can, as long as they reach the sprint goal.
Product Owner: is responsible for determining the functionality of the product and meeting the required standards, specifying the release date and delivery content of the software, and having the power to accept or reject the work of the development team.
Scrum Master: Process Manager, primarily responsible for the smooth implementation and execution of the entire scrum process in the project, as well as eliminating communication barriers between customers and development, enabling customers to drive development directly
Sprint Burn-down Chart:sprint Burndown chart, which shows the cumulative amount of work remaining in a sprint, is a trend graph that reflects the completion of the workload.
Product Backlog list: A list of products to be listed, which is the desired, prioritized function for a product or project.
Sprint Backlog List:sprint to-do list, Sprint task List, pulled from the product backlog list.
Sprint: The meaning of a short distance race, which refers to an iteration where the period is 2 weeks to 1 months, that is, we call the process of the development of an iteration as fast as the sprint.
User story: Users ' stories that describe the user's desired functionality from a user's perspective.
Agile practices
tdd--test driver Development: test drive development, which examines the entire project from the perspective of testing. The principle is to write the unit test case code before developing the functional code, and test the code to determine what product code needs to be written. The basic idea is to drive the whole development through testing, which is the process of quantifying requirements analysis, design and quality control. TDD process: Define the functions that need to be done, write test cases for the function, compile the test code that does not pass, write the corresponding function code, execute the test code until the test passes, refactor the code and ensure that the test passes, and loop through all the functions development. That is, the non-operational---can run---refactoring. TDD principles: Independent testing, test lists, test drivers, write-ahead assertions, testability, timely refactoring, small steps forward.
bdd--Behavior-Driven development: Behavior Drive Development is a complement to TDD, or a branch of TDD, where behavior is a more natural development driver than testing concepts, and considering behavior naturally prompts you to write the canonical class first, Become a very effective driver of implementation. Test-driven development lets us understand the test-first, but doesn't tell us exactly what to test, you write a test, but they don't tell you what should happen and don't tell you what the actual expectations are, it's unclear what the requirements are. Behavior-driven development is designed to help developers determine what they should test. and behavior-driven development provides a common language to avoid inconsistencies between customer and development, enabling design and testing to be combined to develop products.
Pair programming: Two programmers work together on one computer, one person enters the code, and the other examines each line of code that he enters. The advantage is that the programmer help each other, can get the ability to complement and enable the programming environment to effectively implement the design and enhance the code and product quality, and effectively reduce the bug, in programming to discuss with each other may be faster and more effective solution to the problem. The disadvantage is also obvious, programmers are accustomed to different causes of trouble, or quarrel over a problem, if the content of the conversation is unrelated to the work, instead of distracting attention resulting in inefficiency and so on.
Code refactoring: Make any changes to the software code to increase readability or simplify the structure without affecting the output. The purpose of refactoring is to continually improve the design, to help uncover hidden code flaws, and to improve programming efficiency. General refactoring methods include: Encapsulating member variables, extracting methods, generalization types, method renaming, and so on.
Software development Overview-Agile mode