background preloader

Extreme programming

Extreme programming
Planning and feedback loops in extreme programming. Extreme programming (XP) is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development,[1][2][3] it advocates frequent "releases" in short development cycles, which is intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted. Critics have noted several potential drawbacks,[5] including problems with unstable requirements, no documented compromises of user conflicts, and a lack of an overall design specification or document. History[edit] Although extreme programming itself is relatively new, many of its practices have been around for some time; the methodology, after all, takes "best practices" to extreme levels. Origins[edit] The first time I was asked to lead a team, I asked them to do a little bit of the things I thought were sensible, like testing and reviews.

Scrum (development) Scrum is an iterative and incremental agile software development framework for managing product development. It defines "a flexible, holistic product development strategy where a development team works as a unit to reach a common goal", challenges assumptions of the "traditional, sequential approach" to product development, and enables teams to self-organize by encouraging physical co-location or close online collaboration of all team members, as well as daily face-to-face communication among all team members and disciplines in the project. A key principle of Scrum is its recognition that during a project the customers can change their minds about what they want and need (often called "requirements churn"), and that unpredicted challenges cannot be easily addressed in a traditional predictive or planned manner. Later, Schwaber with others founded the Scrum Alliance and created the Certified Scrum Master programs and its derivatives. Each sprint is started by a planning meeting.

Agile software development Agile software development is a set of principles for software development in which requirements and solutions evolve through collaboration between self-organizing,[1] cross-functional teams. It promotes adaptive planning, evolutionary development, early delivery, and continuous improvement, and it encourages rapid and flexible response to change.[2] Agile itself has never defined any specific methods to achieve this, but many have grown up as a result and have been recognized as being 'Agile'. The Manifesto for Agile Software Development,[3] also known as the Agile Manifesto, was first proclaimed in 2001, after "agile methodology" was originally introduced in the late 1980s and early 1990s. History[edit] Incremental software development methods trace back to 1957.[6] In 1974, E. The Agile Manifesto[edit] In February 2001, 17 software developers[12] met at the Snowbird resort in Utah to discuss lightweight development methods. Agile principles[edit] Evolutions[edit] Overview[edit] RAD[edit]

Kanban This article is about the process management and improvement method. For the lean manufacturing process, see Kanban. Kanban in the context of software development can mean a visual process management system that tells what to produce, when to produce it, and how much to produce inspired by the Toyota Production System[1] and Lean manufacturing.[2] The name 'Kanban' originates from Japanese[看板], and translates roughly as "signboard" or "billboard". It was formulated by David J. Anderson[3][4] as an approach to incremental, evolutionary process and systems change for organizations. Start with existing process The Kanban method does not prescribe a specific set of roles or process steps. Agree to pursue incremental, evolutionary change The organization (or team) must agree that continuous, incremental and evolutionary change is the way to make system improvements and make them stick. Respect the current process, roles, responsibilities and titles Leadership at all levels 1. 2. 3. 4.

Scrum – Beginners Guide To Scrum Scrum is an agile way to manage a project, usually software development. Agile software development with Scrum is often perceived as a methodology; but rather than viewing Scrum as methodology, think of it as a framework for managing a process. In the agile Scrum world, instead of providing complete, detailed descriptions of how everything is to be done on a project, much of it is left up to the Scrum software development team. This is why in Scrum development, for example, a sprint planning meeting is described in terms of the desired outcome (a commitment to a set of features to be developed in the next sprint) instead of a set of Entry criteria, Task definitions, Validation criteria, Exit criteria (ETVX) and so on, as would be provided in most methodologies. Scrum relies on a self-organizing, cross-functional team. And in Scrum, a team is cross functional, meaning everyone is needed to take a feature from idea to implementation. The product backlog is another artifact of Scrum.

Lean Lean software development (LSD) is a translation of lean manufacturing and lean IT principles and practices to the software development domain. Adapted from the Toyota Production System,[1] a pro-lean subculture is emerging from within the Agile community. Origin[edit] The term lean software development originated in a book by the same name, written by Mary Poppendieck and Tom Poppendieck.[2] The book presents the traditional lean principles in a modified form, as well as a set of 22 tools and compares the tools to agile practices. Lean principles[edit] Lean development can be summarized by seven principles, very close in concept to lean manufacturing principles: Eliminate waste[edit] In order to eliminate waste, one should be able to recognize it. A value stream mapping technique is used to identify waste. Amplify learning[edit] Software development is a continuous learning process with the additional challenge of development teams and end product sizes. Decide as late as possible[edit]

Agile Architecture: Strategies for Scaling 1. Towards Agile Architecture Architecture provides the foundation from which systems are built and an architectural model defines the vision on which your architecture is based. The scope of architecture can be that of a single application, of a family of applications, for an organization, or for an infrastructure such as the Internet that is shared by many organizations.Regardless of the scope, my experience is that you can take an agile approach to the modeling, development, and evolution of an architecture. Here are a few ideas to get you thinking: There is nothing special about architecture. 2. Figure 1. Figure 2 depicts the agile/basic lifecycle described by the Disciplined Agile Delivery (DAD) framework. Figure 2. An alternative to this light-weight approach to initial architecture modeling, is to attempt to define your architecture completely before implementation begins. 3. This question is more complex than you think. Sometimes people don't agree. 4. 5. Figure 3. Figure 4. 6.

Empathic design Empathic design is a user-centered design approach that pays attention to the user's feelings toward a product.[1][2][3] The empathic design process is sometimes mistakenly referred to as Empathetic design.[4] Characteristics of empathic design[edit] The foundation of empathic design is observation and the goal is to identify latent customer needs in order to create products that the customers don’t even know they desire or, in some cases, solutions that customers have difficulty envisioning due to lack of familiarity with the possibilities offered by new technologies or because locked in an old mindset. Empathic design relies on observation of consumers as opposed to traditional market research[5] which relies on consumer inquiry with the intention to avoid possible biases in surveys and questions, and minimizes the chance that consumers will provide false information. Empathic design process[edit] Leonard and Rayport identify the five key steps in empathic design as:[8] See also[edit]

Spark Innovation Through Empathic Design Almost every company competes to some degree on the basis of continual innovation. And to be commercially successful, new product and service ideas must, of course, meet a real—or perceived—customer need. Hence the current managerial mantras: “Get close to the customer” and “Listen to the voice of the customer.” The problem is, customers’ ability to guide the development of new products and services is limited by their experience and their ability to imagine and describe possible innovations. How can companies identify needs that customers themselves may not recognize? A set of techniques we call empathic design can help resolve those dilemmas. The techniques of empathic design—gathering, analyzing, and applying information gleaned from observation in the field—are familiar to top engineering/design companies and to a few forward-thinking manufacturers, but they are not common practice. Developing the expertise, however, is a worthy investment. When Questions Don’t Yield Answers

Experiences from Industry Challenges of Doing Empathic Design: Experiences from Industry Carolien Postma, Elly Zwartkruis-Pelgrim, Elke Daemen, Jia Du Abstract Empathic design aims to build creative understanding of users’ experiences for new product development (NPD). In this paper, we review the literature of empathic design, and we discuss our own experiences with introducing and practicing empathic design in several NPD projects at Philips Research over the past years. Having experimented with empathic design in an industrial context, we experienced success but also encountered eight challenges that relate to discrepancies between the theory of empathic design as described in literature on the one hand, and the application of empathic design in an industrial context on the other. Full Text: PDFHTML

Selenium - Web Browser Automation Exploratory testing Exploratory testing is an approach to software testing that is concisely described as simultaneous learning, test design and test execution. Cem Kaner, who coined the term in 1983,[1] now defines exploratory testing as "a style of software testing that emphasizes the personal freedom and responsibility of the individual tester to continually optimize the quality of his/her work by treating test-related learning, test design, test execution, and test result interpretation as mutually supportive activities that run in parallel throughout the project. While the software is being tested, the tester learns things that together with experience and creativity generates new good tests to run. History[edit] Exploratory testing has always been performed by skilled testers. Description[edit] Exploratory testing seeks to find out how the software actually works, and to ask questions about how it will handle difficult and easy cases. Benefits and drawbacks[edit] Usage[edit] See also[edit]

Related: