Applying Software Engineering Design Principles to Agile Architecture

2022 ◽  
pp. 330-355
Author(s):  
Chung-Yeung Pang

Most enterprise IT systems are very complex with a combination of COBOL and Java programs running on multiple platforms. What is needed is a solid IT architecture that supports the operation and growth of a cross-platform IT system. It must enable the iterative and incremental development of applications that are foreseen in an agile development process. The design concept of such an architecture with its infrastructure and development tool is presented in this chapter. This design concept is based on the design principles and architectural patterns of software engineering. The architecture is a combination of layered, component-based, and service-oriented architectural patterns. The agile development process is based on a model-driven approach. The architecture and development approaches were first introduced in 2004. Since then, many applications have been developed on time and within budget.

Author(s):  
Chung-Yeung Pang

Most enterprise IT systems are very complex with a combination of COBOL and Java programs running on multiple platforms. What is needed is a solid IT architecture that supports the operation and growth of a cross-platform IT system. It must enable the iterative and incremental development of applications that are foreseen in an agile development process. The design concept of such an architecture with its infrastructure and development tool is presented in this chapter. This design concept is based on the design principles and architectural patterns of software engineering. The architecture is a combination of layered, component-based, and service-oriented architectural patterns. The agile development process is based on a model-driven approach. The architecture and development approaches were first introduced in 2004. Since then, many applications have been developed on time and within budget.


Author(s):  
Chung-Yeung Pang

Back in the 1970s, applications mainly comprised programs written in COBOL. Many of these applications are still in operation. To meet new business demands, new applications that have to collaborate with existing programs need to be developed. It is possible to have an agile software architecture that enables easy development, extension and maintenance in COBOL. Such an architecture, and the agile development process, are presented in this article. The architectural design is a combination of the layered, component-based and service-oriented architectural patterns. It also includes features such as the centralized control of the business process, plug-and-play autonomous COBOL modules and context container for storing state data. A model-driven approach is used in the agile development process. Application models include UML class diagrams, state charts and activity diagrams from which various software artefacts and COBOL codes are generated. The architecture and development approaches were first introduced in 2004 and have been successfully applied to 13 applications since then.


2022 ◽  
pp. 1511-1534
Author(s):  
Chung-Yeung Pang

Reusability is a clear principle in software development. However, systematic reuse of software elements is not common in most organizations. Application programmers rarely design and create software elements for possible future reuse. In many agile software development processes, the project teams believe that the development of reusable software elements can slow down the project. This can be a misconception. This chapter examines various ways to reuse software. Three approaches to developing reusable software artifacts from 15 years of experience in the agile development process are presented. The first approach is to create generic programs or configurable frameworks that support similar solutions for a variety of use cases and environments. The reuse of patterns is the second approach presented. Another effective way is to use a model-driven approach with model patterns. These approaches help to speed deployment software. The final product is flexible and can easily be adapted to changes. This is one of the main goals of an agile approach.


Author(s):  
Chung-Yeung Pang

Reusability is a clear principle in software development. However, systematic reuse of software elements is not common in most organizations. Application programmers rarely design and create software elements for possible future reuse. In many agile software development processes, the project teams believe that the development of reusable software elements can slow down the project. This can be a misconception. This chapter examines various ways to reuse software. Three approaches to developing reusable software artifacts from 15 years of experience in the agile development process are presented. The first approach is to create generic programs or configurable frameworks that support similar solutions for a variety of use cases and environments. The reuse of patterns is the second approach presented. Another effective way is to use a model-driven approach with model patterns. These approaches help to speed deployment software. The final product is flexible and can easily be adapted to changes. This is one of the main goals of an agile approach.


Author(s):  
Zoran Stojanovic ◽  
Ajantha Dahanayake ◽  
Henk Sol

Agile software development methods have been proposed as the way to address the problem of delivering high-quality software on time under constantly and rapidly changing requirements in business and IT environments. An agile development process is characterized by extensive coding practice, intensive communication between stakeholders, fast iterative cycles, small and flexible teams, and minimal efforts in system modeling and architectural design. This paper presents the state-of-the-art of agile methods and analyzes them along the selected criteria that highlight different aspects of their theory and practice. Certain limitations of agile methods are identified. The chapter presents the component paradigm as a way of balancing traditional (model-driven or plan-driven) and agile development, depending on the project settings. Service-based component concepts applied at the level of modeling, architectural design and development can ensure and strengthen agile development principles and practices, and at the same time introduce necessary agility to more traditional development. By using components, the software development process can easily scale in size, robustness, and the level of details. This provides an effective balance between the requirements for agility in software development and needs for a disciplined, design-driven way of building complex software.


Author(s):  
Chung-Yeung Pang

Back in the 1970s, applications mainly comprised programs written in COBOL. Many of these applications are still in operation. To meet new business demands, new applications that have to collaborate with existing programs need to be developed. It is possible to have an agile software architecture that enables easy development, extension and maintenance in COBOL. Such an architecture, and the agile development process, are presented in this article. The architectural design is a combination of the layered, component-based and service-oriented architectural patterns. It also includes features such as the centralized control of the business process, plug-and-play autonomous COBOL modules and context container for storing state data. A model-driven approach is used in the agile development process. Application models include UML class diagrams, state charts and activity diagrams from which various software artefacts and COBOL codes are generated. The architecture and development approaches were first introduced in 2004 and have been successfully applied to 13 applications since then.


2015 ◽  
pp. 459-494
Author(s):  
Issa Traore ◽  
Isaac Woungang

It has been reported in the literature that about twenty new software vulnerabilities are reported weekly. This situation has increased the security awareness in the software community. Nowadays, software services are expected not only to satisfy functional requirements but also to resist malicious attacks. As demand for more trustworthy systems is increasing, the software industry is adjusting itself to security standards and practices by increasing security assessment and testing effort. Even though there is a consensus that better software engineering is to improve software quality in the early stage of software development, so far, various approaches that have been proposed to analyze and quantitatively measure the software security target, primarily show the finished software products in their operational life. There are few achievements on how to reduce or effectively mitigate the security risks faced by software products during the development process. In this chapter, the authors introduce a novel model-driven perspective on secure software engineering, which integrates seamlessly software security analysis with traditional software development activities. A systematic security engineering process that starts in the early stages of the software development process and spans the entire software lifecycle is presented. Fundamental software security concepts and analysis techniques are also introduced, and several illustrative examples are presented, with focus on security requirements and risk analysis.


Author(s):  
Chung-Yeung Pang

In this chapter, an approach to improve business agility of a legacy IT system by modernizing COBOL application development is presented. The special features in this approach include the introduction of service oriented architecture (SOA) for Web application integration, using the model driven development approach with code generation, and agile development process. The component architecture and its framework, together with the infrastructure for development and testing, are also presented. The development approach is called “Gaby Paradigm,” which is explained in the chapter. The architecture, framework, and development process have been applied to a number of projects successfully since 2004.


Author(s):  
Abhishek Sharma ◽  
Frank Maurer

This chapter presents the results of a systematic review from existing literature in software engineering for cloud-based applications and describes what the research community thinks about the effects of introducing cloud computing into a software development process. In this systematic review, the authors describe the challenges cloud computing poses for software development. They particularly investigate whether agile methodologies are beneficial or not in developing software that will be deployed in the cloud. In their results, they found that industry practitioners in their blogs and self-reported reviews indicate that agile development and cloud computing goes well together and that further investigation is required to confirm this claim.


Author(s):  
Abhishek Sharma ◽  
Frank Maurer

This chapter presents the results of a systematic review from existing literature in software engineering for cloud-based applications and describes what the research community thinks about the effects of introducing cloud computing into a software development process. In this systematic review, the authors describe the challenges cloud computing poses for software development. They particularly investigate whether agile methodologies are beneficial or not in developing software that will be deployed in the cloud. In their results, they found that industry practitioners in their blogs and self-reported reviews indicate that agile development and cloud computing goes well together and that further investigation is required to confirm this claim.


Sign in / Sign up

Export Citation Format

Share Document