**7.4 Cloud based Software development**

The cloud-based information technology services have become a new platform for developing modern software applications that can run on advance platforms such as serverless computing. An early movement toward using web environments for application development came from companies that delivered software products as a service [15]. Software development and management decisions are made early not only to implement development and management methodologies but selection of development environment as cloud friendly programming languages, serverless coding, continuous integration, and continuous delivery mechanisms.

Another developing area of software development is Low-Code/No-Code (LCNC) software development. LCNC approach is based on automated no-code tools allowing used use develop application based on configuration driven, APIs based, crossplatform in cloud-based application development [16]. Many integration points and custom requirements still require low code development however underlying assumption is that many software building blocks are readily available from the cloud vendors or opensource that enables software development to be No Code or Low code effort. NCLC is still evolving field and hence the LCNC based solutions are very

generic and tend to create bulky code that lacks runtime efficiency [C]. As a result, NCLC based software development cycles still needs code optimization and review to make it more efficient and through testing.

### **7.5 Continuous practices – integration (CI) and delivery (CD)**

Modern application development and management practices need to devote significant resources to developing and delivering high-quality software at a faster rate [2]. Continuous Integration (CI) and Continuous Delivery (CD), referred to as continuous practices, are modern SDM practices aimed at assisting organizations in accelerating the development and delivery of software features without sacrificing quality. While CI encourages integrating work-in-progress numerous times a day, CD is concerned with the capacity to release values to consumers rapidly and reliably by including as much automation as feasible. CD includes the deployment to the live environment without human intervention.

Continuous integration is a software development practice where multiple members of a development team work on a various branch of the software simultaneously and use a version control system to frequently integrate their work to the main branch [17]. Each change is built and verified to detect integration errors as quickly as possible. Continuous delivery is a software development methodology where the release process is automated. Every software change is automatically built, tested, and deployed to production. Before the final deployment and delivery, a person, an automated predefined test, or a business rule decides when the final push should occur [17]. Security weaknesses and vulnerabilities can pass undetected through oversights and mistakes in programming and testing, making code susceptible to vindictive activity. Thus, security best practices we discussed so far should be a part of the CI/ CD pipelines by using weakness checkers and as separate additional security checks during the testing system. CI/CD required test automation tolls and deployment automation tools. Test automation tools are used for continuously unit, functional, and performance testing when any change is introduced in the code to ensure the stability of the code base [18]. Similarly, for Delivery and deployment, automation tools are used for packaging and integrating code changes in the live environment at much faster rate without any human intervention and by adhering to all preprogrammed and automated business rules [18].

Continuous practices have few benefits such as receiving more and faster feedback from the software development process and customers; [19] having frequent and reliable releases, which leads to improved customer satisfaction and product quality; and [17] strengthening the connection between development and operations teams and eliminating manual tasks [20, 21]. Continuous practices are making inroads in software development industrial practices across diverse domains and sizes of enterprises. Adopting continuous practices, on the other hand, is not a simple undertaking since organizational processes, practices, and tools may not be prepared to support the very complex and hard nature of these practices [22].
