Outside-in software development

Outside-in software development

Of all the agile software development methodologies, outside-in software development takes a different approach to optimizing the software development process. Unlike other approaches, outside-in development focuses on satisfying the needs of stakeholders. The underlying theory behind outside-in software is that to create successful software, you must have a clear understanding of the goals and motivations of your stakeholders. Your ultimate goal is to produce software that is highly consumable and meets/exceeds the needs of your client.

Outside-in software development is meant to primarily supplement your existing software development methodology. While it does ideally work in more agile environments, it is possible to fit outside-in development into waterfall-based or six sigma methodologies. Outside-in software development is not a catchall solution, but a way to better your existing methodology.

The four stakeholder groups

What sets outside-in software development apart from other stakeholder-based approaches is the categorization of the four types of stakeholders. The following four groups are unique, but there is a lot of interaction between all four:

* Principals: The people who buy your software--the most important stakeholder to appease.
* End-users: The people who interact with your product. They experience how your software works in the real world.
* Partners: The people who make your product work in real life, such as operations teams and also business partners and system integrators.

* Insiders: The people within your company that have some impact on how your team develops software.

It is crucial to speak with all stakeholders, even if they aren't the primary audience of your software.

Implementing outside-in software development

The outside-in approach does not require your entire development methodology to change. Outside-in development can supplement the existing tools of developers.

Outside-in development works particularly well in the context of agile/lean development. One of the major tenets of agile development is to program with the least amount of waste. Outside-in methodologies promote only developing according to stakeholder requirements. By identifying your stakeholders properly and soliciting helpful feedback early on in the development process, agile and outside-in methodologies can mesh together seamlessly.

Kessler and Sweitzer recommend that, no matter what kind of development methodology you employ, you incrementally introduce outside-in development to your team. They cite the lack of enthusiasm by developers as the main reason to not implement sweeping, large scale change.

Outside-in software development should not be introduced as a holistic development process. It is meant to supplement your current software development methodology.

See also

* Software development process
* Software engineering
* Extreme programming
* Agile software development
* Waterfall model
* Six Sigma

References

* Carl Kessler [http://outside-in-thinking.com "Outside-in thinking"] , 2008.
* Carl Kessler and John Sweitzer. "", IBM Press.
** First Edition, 2008. ISBN 0-13-157551-1. Pp.1–3, 23–31, 183–195
*Craig Larman and Victor R. Basili. [http://www2.umassd.edu/SWPI/xp/articles/r6047.pdf "Iterative and Incremental Development:A Brief History " IEEE Computer, June 2003]

External links

* [http://www.standishgroup.com The Standish Group]
* [http://www.honeywell.com/sixsigma/ Honeywell Six Sigma Plus]
* [http://www.motorola.com/motorolauniversity.jsp Motorola University]


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Look at other dictionaries:

  • Outside–in software development — Of all the agile software development methodologies, outside–in software development takes a different approach to optimizing the software development process. Unlike other approaches, outside–in development focuses on satisfying the needs of… …   Wikipedia

  • Open source software development — is the process by which open source software (or similar software whose source code is publicly available) is developed. These are software products “available with its source code and under an open source license to study, change, and improve… …   Wikipedia

  • Software testing — is an empirical investigation conducted to provide stakeholders with information about the quality of the product or service under test [ [http://www.kaner.com/pdfs/ETatQAI.pdf Exploratory Testing] , Cem Kaner, Florida Institute of Technology,… …   Wikipedia

  • Software design — is a process of problem solving and planning for a software solution. After the purpose and specifications of software are determined, software developers will design or employ designers to develop a plan for a solution. It includes low level… …   Wikipedia

  • Software patent debate — is the argument dealing with the extent to which it should be possible to patent software and computer implemented inventions as a matter of public policy. Policy debate on software patents has been active for years. [Cite book |last=Nichols… …   Wikipedia

  • Software engineer — A software engineer is an engineer who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything containing software, such as computer chips,… …   Wikipedia

  • Software release life cycle —   A software release life cycle refers to the phases of development and maturity for a piece of computer software ranging from its initial development, to its eventual release, and updated versions of the released version to help improve… …   Wikipedia

  • Software house — A software house is a company whose primary products are composed of software, i.e., computer programs. Types of software houses There are a number of different types of software houses: *Large and well known companies such as Microsoft, Oracle… …   Wikipedia

  • Software package (programming) — A software package is used in object oriented programming to name a group of related classes of a program. Packages are useful to measure and control the inherent coupling of a program. In a modular program, even outside object oriented… …   Wikipedia

  • Software versioning — is the process of assigning either unique version names or unique version numbers to unique states of computer software. Within a given version number category (major, minor), these numbers are generally assigned in increasing order and… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”