For that reason, many have likened a commercial software development organization to a sort of factory. Agile software development and the house metaphor the. The simplest environment will be, perhaps, a very basic text editor e. Changes are cheaper and cheaper the earlier you make them. Pete mcbreen argues in his book software craftsmanship that craft is a better metaphor for software development than is engineering or science. The software factory metaphor ai for project management. This allows several validations before the software is. If youve ever read a book or attended a training sessionon on agileagile development, youve probably seen it, too. I now do independent product development helping client turn ideas into software products. No one thinks about moving the starting or ending point of the bridge midway through construction.
Widespread universal conventional conceptual metaphors develop from. A tweet about how engineers should not write code spanish made me revisit a subject i used to enjoy. House building as a metaphor for software development. You have these little folders with little files in them, which you can drag around. Creating software is a time and laborintensive activity comparable to the creation of physical goods. The most common aspect of this metaphor is that a physical architect is somewhat analogous to a software architect. But it isnt exactly any one of them, or all of them together.
Unfortunately, it is one of the least understood and is rarely put into practice as a result. Henrik kniberg created the original and best known version of the drawing. Softwaredevelopment is like building a house as a metaphor, building a house is as old as written history, just as, for example, a key or water. This was a joint panel discussion with a couple of subject matter experts who were there to discuss the pros of open source software. Agile software development today mostly means scrum. In a recent software development seminar, we discussed a famous analogy for agile development.
The term refers to a process in which the teams fight for the ball after a minor rule violation. A house is something that the clients could relate to. In my blog post, i discuss an alternative metaphor for process. When explaining our software development process to clients, the lab3 team often finds itself comparing developing software to the building of a house. It is a leaky abstraction, and i wonder if we can do better. We can get a clue about the right choices for us by looking at the metaphors we use and by finding ways to improve or create empowering alternatives for the metaphors we use. Metaphor appears in many aspects of software development henney2003 from architectural, such as classic xps expression of architecture through a system metaphor beck2000, to metaph ors for. Software development is more like distance running, with its connotations of sustainable pace and a longterm objective, than it is like a series of sprints. Found by navigating in a solution space, paying attention to our inertia.
The train metaphor of software development dzone agile. A wrong metaphor about software development coding is my. What is a good analogy to explain how software development. My favorite take on its problems is this article by martin fowler. Powerful metaphors for software development herbjorns blog.
I really like your gardening metaphor for software development. A confusing abundance of metaphors has grown up around software development. Bootstrapping can also refer to the development of successively more complex, faster programming environments. Consequently, it has profusion of complementary and conflicting. Understanding software construction metaphors joseph e phillips. Scrum describes a process a set of activities but its only agile when you do this activities in an agile mindset. Metaphors and software development the imaginative universal. The software is like engineering metaphor did more harm than good years ago. I think that the most tried and true metaphor for software development, at least in terms of process, is that of building construction.
Many times in my career i have heard software development described to a client the same way you would create a house. Id embrace the metaphor and simply point out where normal bridge building practices differ from normal software development practices. In particular, they are useful for describing the basic principles of agile development and the lifecycle of a typical agile project. Agile software development and the house metaphor earlier this summer, i had the opportunity to speak to a group of lawyers regarding agile software development.
I take the association one step further and claim that it craft is not just a good metaphor for software development, but that software development is literally a craft. When developing software product, there are many approaches for architectures, design and implementation. Probably the most famous and persistent one is the idea that making software is similar to building a skyscraper or to building construction in general. In this paper, we identify the root metaphors underlying current perspectives on human develoment, and present evidence for their role in. There are only one million articles about this, so lets add a new one. Often in the software business, youll deal with people that dont really know a great deal about software. Extreme programming teams develop a common vision of how the program works, which we call the metaphor. We are constantly creating metaphors for the processes we are building. At its best, the metaphor is a simple evocative description of how the program works, such as this program works like a hive of bees, going out for pollen and bringing it back to the hive as a description for an agentbased information retrieval system. The agile mindset differs in 2 distinct beliefs from the traditional mindset, both require their own metaphor. The waterfall model is the earliest sdlc approach that was used for software development. The perversion of agile metaphors why terms matter innoq. On the face of it, there are a lot of similarities between the two.
Although there are some commonalities, software development differs from home building to the extend of considering the metaphor to be completely wrong. Many terms common in software development derive from the building metaphor. Often in the software business, you ll deal with people that dont really know a great deal about software. A very common metaphor used when we talk about software development is to compare it with home building. In fact there are several books written on the topic of software factory. The comparison is applied throughout the language of software. In the software development field, manufacturing metaphors abound for what we do. But you usually have to add contingency plans for things like what if there is. The requirements of the bridge are defined well in advance and do not change during construction. Software engineering with an agile development framework. That is to say, a good metaphor for the process of software engineering is.
Metaphors in software development are ubiquitous, as in the computer world in general. The cat as a metaphor in objectoriented software development. In your book, the pragmatic programmer, you say, rather than construction, programming is more like gardening. In software development the system metaphor has been adopted as a core practice by the. You can drag a file from one folder to another to move it. What are good examples of metaphors in software design. Discovery is the most underrated phase of software development. Understanding the power of metaphor in software development.
Discovery is the most underrated phase of software development extra time spent in discovery saves both time and money down the line. One of the most difficult questions is how much future proof you want to design your application for. Especially people who are in the business of software development, but arent experienced in actual software development, often use various metaphors to better grasp what theyre dealing with. Software development has natural cycles of expansion and consolidation. The presentation slides from a talk i gave at xp2010 in trondheim, norway. Extreme programming xp was designed to produce vast amounts code and deliver software quickly and timely with less cost. An architect, together with an engineering company, technical. And this is not so unlike what we have to do when we solve problems in software development. Software development is not yet mature enough to have a set of standard metaphors. Metaphor appears in many aspects of software development henney2003 from architectural, such as classic xps expression of architecture through a system metaphor beck2000, to metaphors for software development itself, such as building architecture or civil engineering. When explaining our software development process to clients, the lab3 team often finds itself comparing developing software to the building of. So in broader perspective, a house isnt such a bad metaphor my house shouldnt be built on sand. Its like having to write detailed step by step directions for how to drive somewhere.
Indurkhya 5 characterizes metaphor as a description of an object or event, real or imagined, using concepts that cannot be applied to the object or event in a conventional way p. Metaphor in software development curbralan limited. But metaphors also target the process of software development, and not only the final product. In my experience 40 years, fwiw, there are times when the work of building software resembles one or more of the metaphors presented above. Grady booch is a software development guru who wrote one of the most important books about objectoriented programming. A modern, beautiful and clean design, along with the most advanced technology on wordpress theme development unlimited options a complete platform for you to create any type of website in a fantastic way, photography, shop, blog, agency, business.
Finally, while i like metaphors and the insight they provide, i have come to appreciate considering software development like. The buildingconstruction metaphor could be extended in a variety of other directions, which is why the metaphor is so powerful. The language of computer science in general, and software development in particular, is laced with metaphor. House building as a metaphor for software development blog. Metaphors to explain software development matt fisher. Be careful with software metaphors over the years, there have been any number of popular software metaphors that help people radically misunderstand the realities of software development. The most famous metaphor is the desktop metaphor used in windows and the macintosh. Much of what we do is informed by visionaries from the manufacturing sector, taichi ono, eliyahu goldratt. Traditional software projects are like a train leaving the station.
As steve mcconnell notes in code complete 2, theres no shortage of software development metaphors. The waterfall model illustrates the software development process in a linear sequential flow. In his book, booch has wonderful illustrations using a cat as a metaphor for some of the main oop principles. In software development, dogfooding can occur in multiple stages. This means that any phase in the development process begins only if the previous phase is complete. Objectoriented analysis and design with applications. There is a persistent notion in a lot of literature that software development should. The vertical challenge metaphors are equally apt for software development. Like fish in water, software developers often do not perceive the medium that.
Here are some metaphors that i find useful when describing software product development. Software is unpredictable the first is a belief that software is inherently unpredictable in the medium to long term. To facilitate that process various practices have to be implemented, one of which is the practice of system metaphor. Metaphor in software development europlop 2006 oriented and fast, but they are exhausting and are not intended to be repeated iteratively. An extreme programming system metaphor is a practice that is used by the xp developers to replace the standard project architecture used in traditional software development methodologies. The metaphor that im considering is one in which the software is an amorphous blob of children in a school system, the software engineers are teachers, the software architect is, perhaps a principal, the project managers are deans or the equivalent, and marketing people are the political school board types that set the curriculum.
There is a big train sitting at platform 9, we know its due to leave soon, but, well, you know what big long distance trains are. The city metaphor applied in software development the software developer dilemma. The language is so pervasive that it affects our thinking around software development, but unfortunately the metaphor is fundamentally broken and the flaws have led us down a number of bad paths. During periods of expansion, software systems grow in size as developers add new. The idea of system metaphor in extreme programming is quite simple. You can easily be agile without using scrum, and its definitely possible to do scrum in a way that is not agile. October 18, 2006 james ashley but the greatest thing by far is to have a mastery of metaphor. Software development is not like building a house wtia.
Metaphors are more than just flowery language, even though thats how theyre taught to us in gradeschool and college, said prather, ceo of tamarou, a boutique perl development shop. Exploring farming metaphors for software development. It highlights the unique aspect of what we do as a discipline, and it helps to avoid digging ourselves into holes for taking metaphors too far. So, speaking in metaphors, softwaredevelopment is like designing a house. Then, multiple new features can be combined into a single version of the software and tested together. Mcconnell discusses software metaphors and their importance. On software development metaphors, programmers and. What is the easiest metaphor to use to explain to a layman. Increasingly, he said, cognitive linguists are coming to understand that metaphorical thinking is fundamental to our understanding of the world.
563 289 1496 295 1614 16 820 1425 1127 1105 1272 28 585 409 114 948 554 1078 1597 1335 997 1152 1130 74 109 960 41 1200 780 1001 1014 1286 1351 179 934