Skip to Main Content

Dev Ops Week 1 2024: Home

Software Development Lifecycle & Dev Ops

Introduction

Strategic Tech Trends 2024

Looking for a quick snapshot of the 2024 Gartner Top Strategic Technology Trends? In this episode of Top of Mind, Gartner Global Chief of Research Chris Howard aligns the 10 trends to three categories that will shape the business and technology trends over the next three years.

They are:

  1. Protect your investment: Learn AI-driven strategies for bias mitigation, continuous threat management and more.
  2. Empower builders: Explore platform engineering and the integration of intelligence into tools to streamline tasks.
  3. Extract value: Discover how enhancing employee experiences leads to organizational growth.

Chapters:

0:00: Intro

0:51: Protect Your Investments

2:18: Rise Of The Builders

3:47: Deliver The Value

Software Development Cycle

Iterative Model

The iterative process starts with a simple implementation of a small set of the software requirements and iteratively enhances the evolving versions until the complete system is implemented and ready to be deployed.

An iterative life cycle model does not attempt to start with a full specification of requirements. Instead, development begins by specifying and implementing just part of the software, which is then reviewed to identify further requirements. This process is then repeated, producing a new version of the software at the end of each iteration of the model.

  • Breakdown a requirement into multiple cycles of development ​

  • Results in multiple builds of the same requirement in sub components.​

  • Final nth build will be used to make up the main release.​

  • Subset of incremental model where each increment is developed using iterative model.

Spiral Model

The Spiral Model provides a systematic and iterative approach to software development. In its diagrammatic representation, it looks like a spiral with many loops. The exact number of loops of the spiral is unknown and can vary from project to project. Each loop of the spiral is called a phase of the software development process.

Each Spiral phase is typically broken into four main quadrants. Activity is broken into cycles of 4 phases, with each phase consisting of different sub-activities to ensure all necessary tasks are completed before moving to the next quadrant.​ The phases are them repeated again in the next cycle.

Evolutionary Model

Evolutionary models in software engineering are iterative and incremental approaches that allow for the development of software systems through a series of iterations or releases. These models emphasize adaptability and flexibility, allowing for changes to be made throughout the development process.

An evolutionary model involves breaking down the software development process into smaller, manageable increments or iterations. Each iteration involves the completion of a subset of the overall software requirements, allowing for continuous testing, feedback, and refinement. This approach enables the software to evolve and improve over time, as new requirements and insights emerge.

LinkedIn Learning

Library Catalogue

Test Your Understanding

What is Dev Ops?

What is Dev Ops?

DevOps combines development (DEV) and operations (OPS) to increase the efficiency, speed, and security of software development and delivery compared to traditional processes. A more nimble software development lifecycle results in a competitive advantage for businesses and their customers.

DevOps can be best explained as people working together to conceive, build and deliver secure software at top speed. DevOps practices enable software development (dev) and operations (ops) teams to accelerate delivery through automation, collaboration, fast feedback, and iterative improvement. Stemming from an Agile approach to software development, a DevOps process expands on the cross-functional approach of building and shipping applications in a faster and more iterative manner.

In adopting a DevOps development process, you are making a decision to improve the flow and value delivery of your application by encouraging a more collaborative environment at all stages of the development cycle. DevOps represents a change in mindset for IT culture. In building on top of Agile, lean practices, and systems theory, DevOps focuses on incremental development and rapid delivery of software. Success relies on the ability to create a culture of accountability, improved collaboration, empathy, and joint responsibility for business outcomes.

Agile vs Waterfall

What is Agile?

Agile is a lean, modern approach to software development, created essentially as a solution-response to the drawbacks of previous methodologies. Given the name, Agile emphasizes on early-delivery of the product and supports adaptive and flexible changes that can be made at any point in the project's lifecycle.

Agile methodologies contain a wide range of different forms: Scrum, Extreme Programming (XP), Feature-Driven Development (FDD) and Crystal.

What is Waterfall?

Waterfall is a traditional method of software development that functions in a sequential format of development. It entails a step-by-step progression of the process, where each phase proceeds in a linear manner, making it easy to manage and understand.

Agile vs Waterfall

Agile is an iterative approach to software development, emphasizing flexibility and collaboration among cross-functional teams. It focuses on delivering small, incremental releases, adapting to changes throughout the development process. 

In contrast, Waterfall is a linear and sequential approach, where each phase must be completed before moving to the next. Changes are difficult to incorporate once a phase is completed. Agile promotes adaptability and customer feedback, while Waterfall provides a structured plan but may struggle with accommodating changes late in the development cycle.

Software Architecture vs Dev Ops

Software Architecture

Software architecture is like the blueprint for building software, showing how different parts fit together and interact. It helps the development team understand how to build the software according to customer requirements. There are many ways to organize these parts, called software architecture patterns. These patterns have been tested and proven to solve different problems by arranging components in specific ways.

Monolithic Architecture

A traditional model of a software program, which is built as a unified unit that is self-contained and independent from other applications. The word “monolith” is often attributed to something large and glacial, which isn’t far from the truth of a monolith architecture for software design. A monolithic architecture is a singular, large computing network with one code base that couples all of the business concerns together.  To make a change to this sort of application requires updating the entire stack by accessing the code base and building and deploying an updated version of the service-side interface. This makes updates restrictive and time-consuming. 

Monoliths can be convenient early on in a project's life for ease of code management, cognitive overhead, and deployment. This allows everything in the monolith to be released at once.

Microservice Architecture

A microservices architecture, also simply known as microservices, is an architectural method that relies on a series of independently deployable services. These services have their own business logic and database with a specific goal. Updating, testing, deployment, and scaling occur within each service. Microservices decouple major business, domain-specific concerns into separate, independent code bases. Microservices don’t reduce complexity, but they make any complexity visible and more manageable by separating tasks into smaller processes that function independently of each other and contribute to the overall whole. 

Adopting microservices often goes hand in hand with DevOps, since they are the basis for continuous delivery practices that allow teams to adapt quickly to user requirements.

Three-tiered Architecture

A 3-tier application architecture is a modular client-server architecture that consists of a presentation tier, an application tier and a data tier. The data tier stores information, the application tier handles logic and the presentation tier is a graphical user interface (GUI) that communicates with the other two tiers. The three tiers are logical, not physical, and may or may not run on the same physical server.

The benefits of using a 3-tier architecture include improved horizontal scalability, performance and availability. With three tiers, each part can be developed concurrently by a different team of programmers coding in different languages from the other tier developers. Because the programming for a tier can be changed or relocated without affecting the other tiers, the 3-tier model makes it easier for an enterprise or software packager to continually evolve an application as new needs and opportunities arise. Existing applications or critical parts can be permanently or temporarily retained and encapsulated within the new tier of which it becomes a component.

Team Dynamics in Software Development

Team Dynamics

Team dynamics is a term that describes the behavioral relationships between the members of a team. The the dynamic between them includes the way they interact, communicate and work together. The success of a team, is greatly influence on the team’s dynamics.

In the context of a software development team, the things to pay attention to are the way the team divides programming work, how the team codes together, or how the team decides on the technology used and the purpose of the software.