Agile Software Development With Scrum Ken Schwaber Messager Hands Civil Extra Quality
Following the main ideas of iterative and incremental development on the Agile paradigm, my thesis is that the best software architecture for a given project emerges as the rest of the projects goes on, and that there are concrete practices and techniques that support the incremental design of the architecture together with the rest of the application, allowing for late but safe refinement whenever needed.
Agile Software Development With Scrum Ken Schwaber messager hands civil
Most software development is a chaotic activity, oftencharacterized by the phrase "code and fix". The software is writtenwithout much of an underlying plan, and the design of the system iscobbled together from many short term decisions. This actually workspretty well as the system is small, but as the system grows it becomesincreasingly difficult to add new features to the system. Furthermorebugs become increasingly prevalent and increasingly difficult to fix.A typical sign of such a system is a long test phase after the systemis "feature complete". Such a long test phase plays havoc withschedules as testing and debugging is impossible to schedule.
We've lived with this style of development for a long time, butwe've also had an alternative for a long time: methodology.Methodologies impose a disciplined process upon software developmentwith the aim of making software development more predictable and moreefficient. They do this by developing a detailed process with a strongemphasis on planning inspired by other engineering disciplines.
All of this brings a few questions to mind. The first is thematter of how difficult it is to get a UML-like design into a statethat it can be handed over to programmers. The problem with a UML-likedesign is that it can look very good on paper, yet be seriously flawedwhen you actually have to program the thing. The models that civilengineers use are based on many years of practice that are enshrinedin engineering codes. Furthermore the key issues, such as the wayforces play in the design, are amenable to mathematical analysis. Theonly checking we can do of UML-like diagrams is peer review. Whilethis is helpful it leads to errors in the design that are often onlyuncovered during coding and testing. Even skilled designers, such as Iconsider myself to be, are often surprised when we turn such a designinto software.
This kind of adaptive process requires a different kind ofrelationship with a customer than the ones that are often considered,particularly when development is done by a separate firm. When youhire a separate firm to do software development, most customers wouldprefer a fixed-price contract. Tell the developers what they want, askfor bids, accept a bid, and then the onus is on the developmentorganization to build the software.
A fixed price contract requires stable requirements and hencea predictive process. Adaptive processes and unstable requirementsimply you cannot work with the usual notion of fixed-price. Trying tofit a fixed price model to an adaptive process ends up in a verypainful explosion. The nasty part of this explosion is that thecustomer gets hurt every bit as much as the software developmentcompany. After all the customer wouldn't be wanting some softwareunless their business needed it. If they don't get it their businesssuffers. So even if they pay the development company nothing, theystill lose. Indeed they lose more than they would pay for the software(why would they pay for the software if the business value of thatsoftware were less?)
In an adaptive process the customer has much finer-grainedcontrol over the software development process. At every iteration theyget both to check progress and to alter the direction of the softwaredevelopment. This leads to much closer relationship with the softwaredevelopers, a true business partnership. This level of engagement isnot for every customer organization, nor for every software developer;but it's essential to make an adaptive process work properly.
Although Cockburn is the most explicit in his people-centricview of software development, the notion of people first is a commontheme with many thinkers in software. The problem, too often, is thatmethodology has been opposed to the notion of people as thefirst-order factor in project success.
Recent history increasingly shows us how untrue this is forsoftware development. Increasingly bright and capable people areattracted to software development, attracted by both its glitz and bypotentially large rewards. (Both of which tempted me away fromelectronic engineering.) Such schemes as stock options increasinglyalign the programmers interests with the company's.
To understand what made the implementation of agile management practices a success in the software industry as well as its spread across the globe on the exponential rate in contrast to any other industry, one has to take into consideration the following factors on which the dynamics of agile management rely onto and further draw a comparison of them with the traditionally followed management practices [2, 20] (See Table 1).
Apart from the software products and services, one of the major parts of the project development process is the interaction between the stakeholders which plays a pivotal in determining the performance of the project. Considering which, Uludag, Kleehaus  and Hobbs and Petit  in their respective studies indicated that agile management practices allow organizations for its internal stakeholders to communicate freely as well as maintain a consistent stream of feedback from the external stakeholders. Thus, assuring the regarding organization to achieve optimal performance levels.
Typically, for a large-scale operation with a higher magnitude of complexity, like software development, is often considered as a project rather than a routine-based operation/task, by most of the organizations. This demands a persistent application of relevant management practices under effective supervision to tackle the complexity. 350c69d7ab