Lean Development: A Tool for Knowledge Management in Software Development Process

Lean Development: A Tool for Knowledge Management in Software Development Process

Saqib Saeed, Izzat Alsmadi, Farrukh Masood Khawaja
DOI: 10.4018/978-1-4666-3658-3.ch009
(Individual Chapters)
No Current Special Offers


Software development is a complex activity, which is human intensive in nature. In order to build quality software systems, organizations need to follow mature software development practices, which are continually improved. As a result, the concept of software development process emerged, which highlighted a systematic set of activities required to develop a software system. Recently, agile development methodologies have provided a rich set of innovative software development approaches, aiming to optimize the software process. In order to be successful in adopting these approaches, a thorough understanding of their implementation procedures is required. In this chapter, we took a look at the lean development approach to understand how its principles pave the way in fostering knowledge management initiatives in software process development.
Chapter Preview


Evolution of personal computers meant that computer systems are no more used by the programmer only but users from other domains could also benefit from the computing capabilities. As a result, the evolution of high-level languages emerged, and software systems were designed to support users in government, business and other day-to-day tasks. The enhanced dependence on computing systems made the underlying software development quite complex. Since there was no standardized software development methodology in place, so the success of the project was mostly dependent on the skills and experiences of software projects and managers. As a result there were many software project failures and need was felt to define a standardized software process model. Software process is a set of activities required to realize a software product. The most basic definition of software process is presented by Humphrey (1989). He states “software process as a set of tools, methods, and practices used to produce a software product.” While looking closely at software process the underlying activities could be classified into core and supporting activities. Core activities are mandatory activities without which software artifacts could not be finished whereas supporting activities improve the quality of the end product. A list of core and supporting software process activities is shown in Table 1.

Table 1.
Software process activities
Core ActivitiesSupporting Activities
• Project Initiation
• Project Planning
• Requirements Engineering
• System Design
• Software Coding
• Testing
• Maintenance
• Software Configuration management
• Software Quality Assurance
• Project Management

With the passage of time, many software process models emerged (see Table 2). Waterfall/linear sequential model is the oldest software process model which advocates for carrying out all software development activities in sequence (cf. Royce, 1970; Pressman, 1996). Later different other models emerged to improve the weaknesses of this model. Among them prototyping (cf. Bischofberger & Pomberger, 1992), spiral (cf. Boehm, 1988), incremental model (cf. Larman & Basili, 2003), V model (cf. Pressman, 1996), Rapid application development (cf. McConnell, 1995), and object-oriented paradigm (cf. Booch, et al., 2007).

Table 2.
Software process models
Traditional Process ModelsAgile Process Models
• Waterfall/Linear Sequential Model
• Prototyping
• Spiral Model
• Iterative Model
• V Model
• Rapid Application Development
• Object Oriented Paradigm
• Scrum
• Feature Driven Development
• Crystal Methodologies
• Adaptive Software Development
• Dynamic System Development Methodology
• Extreme Programming
• Lean Software Development

Complete Chapter List

Search this Book: