In this phase, the team designs the software architecture and decides on the software development methodology.
Regardless of the methodology chosen, DevOps practices can assist them in producing better quality system within shorter time frame, higher success rate in rolling out the system and getting accurate feedbacks. The section below explains on DevOps approach in 2 different software development methodology namely agile method and traditional method.
2.5.1 Agile Development Model
In agile development model, system modules are broken down to several phases of development and rollout instead of a monolithic rollout. It provides early access to the system and getting user feedback earlier rather than much later stage where system is rigid to new changes. DevOps practices will enable the team to ensure that quality is not compromised and problems are detected at a much earlier stage through continuous and automated unit testing.
Figure 2-6 Agile Model
2.5.2 Traditional Software Development Lifecycle Model
In traditional software development models such as waterfall model shown in image below, system modules are rollout at one go and feedbacks are sought at later stage. Due to this, implementation of changes becomes more difficult and requires tremendous efforts. Besides this, such an event can also cause delay in project delivery. Implementation of DevOps enables the team to detect the problems earlier through automated testing and continuous feedback when system goes live.
Figure 2-7 Waterfall Software Development Lifecycle Model (Osetskyi, V. 2017)
Note: Refer to Buku Panduan Kejuruteraan Sistem Aplikasi Sektor Awam (KRISA) for details on the various types of SDLC and the phases involve in software development lifecycle.
2.5.3 Coding Tools
During coding phase, development team can utilize tools such as Git to improve collaboration in within team and better manage the source code files from continuous changes during development.
|Open source source code repository or distributed version control system that helps to coordinate the team in storing, tracking and managing different versions of files of a software project.
Figure 2-8 Git Distributed Version Control System
2.5.4 Coding Deliverables
Coding deliverables include:
i. Technical blueprint – A technical document serves a guide to the teams in developing and implementing the software. It shall include the system architectural design, the logic and processes of the system and deliverables.
ii. Application code