Conversation

Your input fuels progress! Share your tips or experiences on prioritizing mental wellness at work. Let's inspire change together!

Join the discussion and share your insights now!

Comments 0

Sharpen your coding skills—try JavaScript challenges on TOOLX now!

advertisement

Lean Software Development Life Cycle

LSDLC


The definition and concept of "Lean" differ in the various disciplines of software development. Some of the important aspects are as follows:

  • It is important to add customer value and to create only those artifacts that help in other steps of the process.

  • It is appropriate to adopt the practices of others - Poppendiecks.

  • Create practices in line with principles that can be customized as required.

The following section summarizes the major points for the different disciplines involved in the software life cycle:


1. Requirements for engineering:

Middleton and Sutton argue that traditional requirement engineering should be rethought as a search for custom values. The team must focus on building the right thing, rather than building things right. The Kano Model categorizes product attributes as 'must-be', often not explicitly told by the customer, performance factors, and attractive factors in the form of exciting features. Definite guidelines are given that specify ways to provide express requirements effectively. The user can understand this better and it can be used effectively in subsequent steps.

Middleton and Sutton argue for a tabular-driven requirement representation called the Software Cost Reduction method (SCR), appropriate for real-time systems. Coplien and Bjornvig argue that use cases are more suitable for more (human) interacting software. Poppendieck also refers to such specification techniques. All of them stress the importance of Domain Modeling as a tool to understand the customer space and build high-integrity products that are easy to maintain.


2. Architecture:

Middleton and Sutton refer to Parna's principle of information hiding as an important lean software design practice. They, together with Coplien and Bjornvig, argue that building architecture with a few method-rich objects is a central lean idea, by referring to Parna's work and a method called DCI, respectively.


3. Programming:

On a lower implementation level, Middleton and Sutton discuss the lean principles implications for the choice of programming language. They conclude that for high integrity software, it is more 'lean' to select a language with proven ability to be statically verified, such as SPARC ADA, than a 'cooler' more powerful language like C++. This is in line with Liker's principles to choose proven techniques that serve the purpose of optimizing the whole process flow. By using the Design-by-contract method and enabling local verification of input and output data, irrespective of the code being run, it is in alignment with L5 and the lean judoka practice. In this practice, the machine is designed to detect errors and stop the item or code from being passed on to the next step or process.


4. Testing and verification:

Poppendiecks is in favor of a test-first strategy such as Test Driven Development from the agile method of Extreme programming. They also specify that though testing is not a part of a customer-value add activity, it is essential to maintaining high quality. Testing is, therefore, termed a necessary waste. Middleton and Sutton point out that much of the testing (and rework) effort can be reduced by selecting an easy-to-verify requirement and architecture.


5. Integration:

Building software differs significantly from the manufacturing or assembly-line process. For Lean principles to work, the process or project must be decomposed into smaller pieces of comparable Size. This means that the system must be built incrementally. To maximize the flow, there must be simultaneous development of the source code. To be able to detect and stop defects as early as possible, it is vital to have continuous integration. The Poppendiecks Middleton and Sutton refer to Microsoft's Synch and Stabilize process as an example of a process with regular integration points and superior quality demands.


6. Project management:

Management of flow is key to lean project management. Andersson's software Kanban method emphasizes that limiting work in progress is important for a small team. Another important feature of Kanban is visual control along with the Agile Scrum Method. The role of a product and project manager changes in a lean organization. Poppendiecks talks about a 'product champion' whose role is to align all project members, work, and flow toward producing customer value. In this system, leadership is given more importance than traditional management practices. It is akin to Liker's principles.


Software LSDLC Lean Software Development lean software development life cycle LSDLC life cycle what is lean software development lean software software development

advertisement