LEAN SOFTWARE DEVELOPMENT ( As a Survival Tool in Recession ) Er.Kirtesh Jailia 1, Mrs.Sujata 2, Mrs.Manisha Jailia 3, Mrs.Manisha Agarwal 3 1 M.Tech(SE), Independent Researcher,INDIA, kirtesh.jailia@gmail.com 2 Assistant Professor (CSE/IT Dept.), ITM University, Gurgaon(Hr),INDIA ms.sujata06@gmail.com 3 Sr.Assistant Professor(CSE Dept.), Banasthali University,Tonk,(raj),INDIA manishajailia@yahoo.co.in, manishaagarwal18@yahoo.co.in Abstract Lean software development is a new ray of hope for survival in the phases of recession. The term recession is like a nightmare for software companies. Here in this paper we are going to discuss how to sustain the business in the recession with the help of lean software development. Because in various cases we saw that during recession some companies were drowning due to the reason of MISSING DEADLINE, OVER DEVELOPMENT, INEFFECTIVE MANAGEMENT and many more. We knew that there are several reasons for the recession in the software market, but the most important thing is to survive in such recession phase by sustaining the customers, by performing orders as early as customer wants and many more. These are various points through which one can survive in recession phase. But here the question arises how to meet all such requirements.in answer to this question we are dealing with the term LEAN SOFTWARE DEVELOPMENT as a Survival tool in recession. Keywords: Lean software development, Recession survival software development methodology 1. Introduction Lean software development is a translation of Lean manufacturing and Lean IT principles and practices to the software development domain. Adapted from the Toyota Production System, a pro-lean subculture is emerging from within the agile community. The term Lean Software Development originated in a book by the same name, written by Mary Poppendieck and Tom Poppendieck. 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. Mary and Tom's involvement in the agile software development community, including talks at several agile conferences has resulted in such concepts being more widely accepted within the agile community. [1] The application of Lean principles to software development process requires interpretation, and there is more than one school of thought about the best interpretation of Lean Software Development. Some focus on Lean principles applied to common development practices, some focus on workflow management, others focus on complementary product development processes used by Toyota and other Lean producers.[2] 63
1.1 LEAN Software Development Principles Lean software development is based on basic five principles which makes it a special way of software development, let discuss all of them one by one. Specify value from the standpoint of the end customer by product family. Identify all the steps in the value stream for each product family, eliminating every step and every action and every practice that does not create value. Make the remaining value-creating steps occur in a tight and integrated sequence so the product will flow smoothly toward the customer. As flow is introduced, let customers pull value from the next upstream activity. As these steps lead to greater transparency, enabling managers and teams to eliminate further waste, pursue perfection through continuous improvement. [2] Now the question arises that why it is known as LEAN? The word lean in software development came from the automobile industry amazing but it is true. Toyota motors is the first company which introduced the Lean manufacturing. This was used when there is demand increased too folds and a single mistake would lead to a missed deadline means business loss. The problems that Toyota faced foreshadowed the problems that an increasing number of businesses would face in the late 20th century: customers want more variety and better quality, and they want it now. Traditional business practices are often poorly suited to deal with these expectations, and management theorists became increasingly restless in their pursuit of new understanding. Much as the industrial practice of yesteryear evolved into more general business practice, the principles of the Toyota Production System were abstracted into the general business philosophy we now call Lean. 2. What Makes it Different from Traditional Approach? Now we are going to discuss about the lean software development approach and we will find out that how it differs from the traditional? 2.1 Traditional Approach In traditional approach of software development the main focus is given on the linear development of the software, in which we have focus on group of features. The single delivery approach is there in most cases As from figure below. Fig: A (Traditional Project) ref 3. 64
2.2 Lean Development In Lean Development, you select, plan develop, test and deploy one feature (in its simplest form) before you select, plan, develop, test and deploy the next feature. By doing this, you further isolate risk to a feature-level. In these environments, you aim to eliminate waste wherever possible you therefore do nothing until you know it s necessary or relevant. The main focus of the lean development is to reduce the wastes during the software development as: a. Reducing Overproduction i.e. extra features. b. Requirements bucket. c. Reducing processing steps. d. Reducing Information collection time. e. Reducing unnecessary test plans f. Reducing decision time. g. Reducing transportation time. h. Reducing paper work. i. Reducing development time as work on one feature at a time. By working all such steps the project manager will able to meet with the deadline more effectively and efficiently. Fig: B (Lean Approach) ref 3. As from above figure we can see that in case of lean software development the delivery gap is reduced to a very minimal time interval, all such things happened due to the lean approach in which the work done is to develop the requisite feature at a time. Unnecessary requirements etc are not entertained, similarly the testing time; management time also reduces due to the reduction in requirement bucket. As we know that Lean approach focuses on one feature rather than a group of features make it is an easier approach to manage software project and less risky. 3. What to do in Lean Software Development? Now the question arises that what should we do in lean software development to meet with the points above in paragraph 2 (Lean software development), for achieving those points we have to work over certain points as. 65
a. Eliminate Wastes by Doing it Right at Once. "Do It Right the First Time" does not mean to "Freeze the Specs." On the contrary, product (and software project) specifications change constantly. Lean discipline demands instantaneous adaptation to changing market conditions, which is best affected with a flexible architecture that readily accommodates changes, monitoring techniques that detect errors before they occur, and tests that are designed before development begins. The "Do It Right the First Time" rule has been widely used to justify the decision to develop a detailed system design before code is written. The problem with this approach lies in the assumption that customer requirements are static and can be defined by a predetermined system. Because requirements do change,-and frequently-throughout the life of most systems, they cannot be adequately fulfilled by a rigid design. If we acknowledge the axiom that customers may not know what they want at the beginning of development and that their needs might change midstream, we must incorporate a method of obtaining customer feedback during development. Instead, most software development practices include a complex "change control process" that discourages developers from responding to user feedback. Far from ensuring a quality result, these change-resistant processes actually get in the way of "Doing It Right."[4] b. Satisfy Stakeholders by Meeting and Understanding them What they Need Right Now? c. Value Addition through Knowledge Creation. Behind every success there is a base of knowledge, so in team there must be continuous process to improve the human resources this can be done through various ways such as through training sessions etc. but in our point of view the sharing among team mates is the real source to enhance the knowledge base. Create environment in which people will be constantly improving what they are working on - they should know that they are not and should not be perfect - they always have a field to improve and they should do it. Development team should behave like small research institute; they should establish hypotheses and conduct many rapid experiments in order to verify them d. Critical Person s Identification, so that it become easier to Incorporate Feedback from Customers to Software Team. e. Refactoring can be used to improve the Design of Software. Refactoring (Improving the design without changing functionality), or improving the design of existing software in a controlled and rapid manner. With refactoring, initial designs can focus on the basic issue at hand rather than speculate about other features that may be needed in the future. Later in the process, refactoring techniques can incorporate these additional features, as they are required, making it easy to accommodate the future if and when it becomes the present.[4] f. Comprehensive Testing can be Deployed. Lean development employs two key techniques that make change easy. Just as Lean Production builds tests into the manufacturing process to detect when the process is broken, similarly Lean development must build tests at various stages of the development process. 66
As development proceeds and changes are made, the unit and regression tests are run. If the tests don't pass, programming may be stopped until the problem is found and corrected. A comprehensive testing capability is the best way to accommodate change throughout the development process.[4] g. Defer Commitment. <> Schedule Irreversible Decisions at the Last Responsible Moment - you should know where you want to go but you don't know the road very well, you will be discovering it day after day - the most important thing is to keep the right direction <>Break Dependencies - components should be coupled as loosely as possible to enable implementation in any order <>Maintain Options - develop multiple solutions for all critical decisions and see which one works best. h. Optimize the Whole. <>Focus on the Entire Value Stream - focus on winning the whole race which is the software - don't optimize local inefficiencies, see the whole and optimize the whole organization <>Deliver a Complete Product - teams need to have great leaders as well as great engineers, sales, marketing specialists, secretaries, etc. - they together can deliver great final products to their customers [5] i. Respect People The word respect plays an important role in the field of software development, Every team member has to be given respect because every resource is important. Give team leaders the training, the guidance and some free space to implement lean thinking in their environment, let your people think and decide on their own - they know better how to implement difficult algorithms and apply state-of-the-art software Frame works. j. Pull from Demand Lean Software development means rapid, Just-in-Time delivery of value. In manufacturing, the key to achieving rapid delivery is to manufacture in small batches pulled by a customer order. Similarly in software development, the key to rapid delivery is to divide the problem into small batches (increments) pulled by a customer test. The single most effective mechanism for implementing lean production is Adopting Justin-Time, Pull from demand flow. Similarly, the single most effective mechanism for implementing lean development is delivering increments of real business value in short timeboxes [4]. 4. LEAN as a Survival Tool in Recession Now after knowing the term Lean software development, let discuss how it can be used in recession as survival tool. The principle over which the lean software development is based has intrinsic characteristics to fight with recession ghost. During recession what we need? 67
We need SUSTAINABILTY in market and this can be come through some of the things listed below: 1. Fast Delivery i.e. Deadline meeting. 2. Easy management. 3. Highly risk prone. 4. Better human resource management 5. Maintain Financial strength Lean offers all the above things to survive in recession. Let we discuss each point in detail. 4.1 Fast Delivery Deadline has the oxygen** capsule for the industries in the recession, during recession if we able to deliver the product to the customer on or before time than the success factor increases. Once you are able to meet the deadline in recession the sustainability also become easier. The Lean approach focuses on Elimination of Wastes means this approach never go for those features which are not useful for right now (has no value). It focuses on the real requirements of the customers. For e.g. in a birthday party the main requirement is of cake irrespective of its texture (Flavor, looking etc. matters but as a secondary factor). Due to the above written approach the software industry will able to easily meet the deadline by reducing wastages and by saving time (by not doing waste things). 4.2 Easy Management During recession it is very important to manage the software project, because if the management is not good than it is not easy to survive in any condition. But if the condition is like the Recession than project management plays an important role. Lean approach provides a way through which one can easily manage the software project. In Lean software development as we know that focus is on a single feature at a time, rather than group of features as in other approaches. So it becomes easier to manage the project. The another important thing that Lean offers is comprehensive testing and refactoring principle which really makes it a easily manageable approach means more recession prone. 4.3 Highly Risk Prone The risk factor in recession has a strong impact on the software industry, here the risk is not limited to missing deadline or leaving staff but here it expands to SHUTDOWN of a software company also. So it is better to use an approach which is more risk prone. Lean software development is a simplest way to develop the software with less risk than other approaches let see how? Most of the risks come due to the inappropriate learning of the customer requirements and in Lean as we know that SRS can evolve and we have to focus only on single and essential feature, so it is easier to manage the risk. 68
4.4 Better Human Resource Management Lean offers time saving and this time saving can be invested over human resource empowerment during recession. The salary depression can be diluted by reducing the work load and stress of the team. Various empowerment sessions can be done to enhance the skills of the human resource. Empowerment of the development team helps in developing the decision making ability of the team members which in turn, creates a more motivated team. This benefit really cannot be overstressed enough. Developers hate nothing more than being micro-managed and having decisions forced upon them. This way they can determine how best to develop the functionality which will usually result in a much better end product.[6] 4.5 Financial Strength Recession acts as acid for the financial strength of a software company. The fewer customers with cheaper budget are the two main things which are always present in the recession phase. Hence in such scenario for survival we need more customers (Though they have cheaper budget). For e.g. it is better to have 5 customers with $200 each, rather than waiting for 1 having $1000 budget. But for such working we must have fast processing and traditional development approaches doesn t provide it. Lean approach also offers the shield for the recession acid as Delivering the product early is a definite advantage. It means your development team can deliver more functionality in a shorter period of time, hence enabling more projects to be delivered. This will not only please your finance department, but also the end customers. 5. Conclusion At last while concluding this paper we can say that lean software development approach is the best approach which can be used as an effective tool for the recession survival. Lean not only offers faster development but also maintain the strength of the software company during recession. As a survival tool Lean has various amours to shoot the recession ghost while sustain your company with more oxygen *. Now here is a question arises that how can we say that lean approach is better in recession? In answer to this question in one line we can say By reducing wastes we can reduce delivery time with more efficiency and in less cost. At last we would like to say that Lean approach still has many dimensions and we welcome all your views and suggestions over this approach in software development. References [1] http://en.wikipedia.org/wiki/lean_software_development [2] http://shapingsoftware.com/2009/06/15/introduction-to-lean-software-development/ [3] http://www.gosolstice.com/software-development-traditional-vs-lean.html [4] The project perfect White paper on Lean software development by Dasari. A. Ravi kumar. [5] http://agilesoftwaredevelopment.com/leanprinciples [6] http://www.my-project-management-expert.com/the-advantages-and-disadvantages-of-lean-softwaredevelopment.html * Here oxygen means revival element for the software industry during recession 69
70