Lean Development

Author(s):  
Saqib Saeed ◽  
Izzat Alsmadi ◽  
Farrukh Masood Khawaja

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.

Author(s):  
J. Rech

Software quality assurance is concerned with the efficient and effective development of large, reliable, and high-quality software systems. In agile software development and maintenance, refactoring is an important phase for the continuous improvement of a software system by removing quality defects like code smells. As time is a crucial factor in agile development, not all quality defects can be removed in one refactoring phase (especially in one iteration). Documentation of quality defects that are found during automated or manual discovery activities (e.g., pair programming) is necessary to avoid wasting time by rediscovering them in later phases. Unfortunately, the documentation and handling of existing quality defects and refactoring activities is a common problem in software maintenance. To recall the rationales why changes were carried out, information has to be extracted from either proprietary documentations or software versioning systems. In this chapter, we describe a process for the recurring and sustainable discovery, handling, and treatment of quality defects in software systems. An annotation language is presented that is used to store information about quality defects found in source code and that represents the defect and treatment history of a part of a software system. The process and annotation language can not only be used to support quality defect discovery processes, but is also applicable in testing and inspection processes.


2009 ◽  
pp. 242-265
Author(s):  
Jörg Rech

Software quality assurance is concerned with the efficient and effective development of large, reliable, and high-quality software systems. In agile software development and maintenance, refactoring is an important phase for the continuous improvement of a software system by removing quality defects like code smells. As time is a crucial factor in agile development, not all quality defects can be removed in one refactoring phase (especially in one iteration). Documentation of quality defects that are found during automated or manual discovery activities (e.g., pair programming) is necessary to avoid wasting time by rediscovering them in later phases. Unfortunately, the documentation and handling of existing quality defects and refactoring activities is a common problem in software maintenance. To recall the rationales why changes were carried out, information has to be extracted from either proprietary documentations or software versioning systems. In this chapter, we describe a process for the recurring and sustainable discovery, handling, and treatment of quality defects in software systems. An annotation language is presented that is used to store information about quality defects found in source code and that represents the defect and treatment history of a part of a software system. The process and annotation language can not only be used to support quality defect discovery processes, but is also applicable in testing and inspection processes.


2016 ◽  
Vol 24 (3) ◽  
pp. 45-70 ◽  
Author(s):  
Delroy Chevers ◽  
Annette M. Mills ◽  
Evan Duggan ◽  
Stanford Moore

For software development firms to be competitive they must assure the quality of the software product. This has led many firms to adopt software process improvement (SPI) programs such as the capability maturity model integration (CMMI). However, for small software firms, especially those in developing countries with limited resources, these programs are often too cumbersome and costly to implement. To address this issue, this paper proposes a simplified SPI model for small firms (SPM-S) comprised of 10 key software development practices; with fewer practices, the proposed model should be more accessible and less costly to implement. Using data collected in four developing countries in the English-speaking Caribbean from 112 developer/user dyads, the model is evaluated with respect to its impact on software quality. The findings show that the software development process coupled with supporting technology (e.g. project management tools) significantly impact software product quality. Implications for software process improvement in small firms and future research are discussed.


2014 ◽  
pp. 1363-1384
Author(s):  
Mohammad Zarour ◽  
Alain Abran ◽  
Jean-Marc Desharnais

Software organizations have been struggling for decades to improve the quality of their products by improving their software development processes. Designing an improvement program for a software development process is a demanding and complex task. This task consists of two main processes: the assessment process and the improvement process. A successful improvement process requires first a successful assessment; failing to assess the organization’s software development process could create unsatisfactory results. Although very small enterprises (VSEs) have several interesting characteristics such as flexibility and ease of communications, initiating an assessment and improvement process based on well-known Software Process Improvement (SPI) models such as Capability Maturity Model Integration (CMMI) and ISO 15504 is more challenging in such VSEs. Accordingly, researchers and practitioners have designed a few assessment methods to meet the needs of VSEs organizations to initiate an SPI process. This chapter discusses the assessment and improvement process in VSEs; we first examine VSEs characteristics and problems. Next, we discuss the different assessment methods and standards designed to fit the needs of such organizations and how to compare them. Finally, we present future research work perceived in this context.


Author(s):  
Shuib Bin Basri ◽  
Rory V. O’Connor

This chapter discusses knowledge management (KM) aspects of how software process and software process improvement (SPI) is practiced within very small entities (VSEs) in the context of Irish software development industry. In particular, this study is concerned with the process of software development knowledge management in supporting the SPI. In order to understand the support process, the authors of this chapter have studied how KM processes are practiced within VSEs which includes communication, learning, sharing, and documentation process. This study also focuses in detail on the issues of the knowledge atrophy problem in VSEs. The findings explain how KM has been practiced and influenced the software development process and process improvement in VSEs. This result indicates that KM processes in VSEs are being undertaken in a very informal manner and also in indirect way. This is due to a small team size, autonomous working and macro-management style and caused VSEs to be more informal in their KM processes specifically and SPI generally. In addition, the results have indicated that the informal environment and culture helped VSEs to easily create and share knowledge between staff members and also assisted VSEs to mitigate the knowledge atrophy problem in their organization.


Author(s):  
Pankaj Kamthan

We model software for a variety of reasons: to assess the viability of or plan software systems to be built, to optimize use of (minimize, or ideally, avoid waste of) resources in response to inevitable changes in business, social, or technological environments, or simply to understand existing software systems. Indeed, as indicated by the model-driven approach to software development (Beydeda, Book, & Gruhn, 2005), models are becoming first-class members of organizations and software process environments that embrace them. The examples of collaboration in implementation of software are well-known (Nosek, 1998; Williams & Kessler, 2003). As models get large and complex, the need for creating them collaboratively in a systematic manner arises, and we propose pair modeling as an approach.


2017 ◽  
Vol 10 (13) ◽  
pp. 143 ◽  
Author(s):  
Jayasudha R ◽  
Viswanathan V ◽  
Shanthi P

The concept of reuse is applied in one of the agile development methodologies called the scrum. Sprint is a single functionality and the result at the end of the sprint functionality is derived as the shippable or bugs. This paper makes an attempt to use the concept of reuse in the agile software development to meet the dynamic change of customer requirements in banks. A banking project is created using both waterfall model and scrum model, and the knowledge gained is stored in the ontology-based repository for the first time. Again, the same project is created for different vendors using the ontology-based repository. The result shows that maximum sprint is reused and all the knowledge gained is stored in the form of ontology. This ontology helps identify the shippable component of each sprint which is a small executable functionality. This leads to less cost and time to deliver the product. The main aim is to increase the availability of the reusable artifacts, which lead to increase the reusability of the developer. The experimental results show improvements in the performance of retrieving the components for the software development.  


Author(s):  
Chitrak Vimalbhai Dave

Abstract: Software Process Models from its inception instill standardization and creates a generic culture of developing software for various IT industries. A great paradigm shift has been observed in terms of embracing Agile Development methodology as a viable development methodology in cross key business units. There is a buffet of agile methodologies comes under the umbrella of ASD, out of which Scrum got the highest popularity and acceptability index. Agile based software development is the need of immediate environment. There is an increasing demand for significant changes to software systems to meet ever-changing user requirements and specifications. As Agile is volatile, so effort estimation is challenging and still striving for perfection to decide size, effort, cost, duration and schedule of projects with minimum error. This cause sensitizes potential researchers all across the globe to start working on addressing the issue of inaccurate predication of efforts. The gap between estimated and actual effort is because of limited or no inclusion of various estimation factors like people and project related factors, inappropriate use of size metric and cost drivers, ignorance of testing effort, team member’s inability to understand user story size and complexity etc. This paper attempts to bridge the gap of estimated and actual effort by the use of soft computing techniques thus taking the research to advance frontier area in terms ofestimation. Keywords: Cost Estimation, Effort Estimation, Scrum, Machine Learning, Agile Software Development


2019 ◽  
Vol 9 (4) ◽  
pp. 4338-4341
Author(s):  
C. L. Vidal-Silva ◽  
E. Madariaga ◽  
T. Pham ◽  
F. Johnson ◽  
L. A. Urzua ◽  
...  

Aspect-oriented software development (AOSD) solves a few issues of the object-oriented software development (OOSD) approach and adds a few more concerning modules and their relationships. Join point interface (JPI) is an AOSD methodology that by the definition of the interface between advised artifacts and aspects solves associated AOSD issues to get software with a high modularity level. Looking for a JPI software development approach, this article proposes and exemplifies the use of JPIAspectZ, an extension of the formal aspect-oriented language AspectZ for the software JPI requirement specifications. Mainly, JPIAspectZ looks for a concept and model consistency in a JPI software development process. Since the main JPI characteristics are the joining point interfaces definitions, i. e. explicit associations definition between aspects and advised modules, thus, by JPI, classes are no longer oblivious of possible interaction with aspects, and aspects, for their action effectiveness, do not depend anymore on signatures of advisable module components. JPIAspectZ fully supports these JPI principles. As JPI application examples, this article shows the formal requirements specification for classic aspect-oriented and JPI examples, along with describing the advantages and disadvantages of this language.


Sign in / Sign up

Export Citation Format

Share Document