Close

Software development

Learn the essentials of software development


Software ate the world. Not long after Marc Andreessen famously stated “software is eating the world” in 2011, did it consume the world. In today’s digital economy, every company is software-intensive. Amazon may be the world’s largest retailer, but it isn’t a retail company – it’s a software company, proclaimed former Amazon CEO Jeff Bezos. “Our business is not what’s in the brown boxes,” he said. “It’s the software that sends the brown boxes on their way.”

DevOps Infinity Loop

What is software development?

Software development refers to the design, documentation, programming, testing, and ongoing maintenance of a software deliverable. The combination of these steps are used to create a workflow pipeline, a sequence of steps that when followed produce high-quality software deliverables. This pipeline is known as the software development lifecycle.

While there are many nuances, the software development lifecycle generally includes common elements, as noted below.


Steps in the software development lifecycle


Lightbulb orbit

Discover

Projects are envisioned, designed, and prioritized. A methodology such as agile helps to guide the work process for the project. Practices like DevOps guide practices during development and operations. Confluence is a great tool to develop product research documents and share design files during this stage.

Simple workflow

Plan

Stakeholders are identified, budgets set, and infrastructure requisitioned. Design documents from the concept phase are broken down into actionable tasks. Jira and Trello manage, track, and organize these task lists.

Save code

Build and Test

Development teams work to build production-ready software that meets requirements and feedback. CI/CD pipelines ensure an efficient developer experience. Bitbucket offers collaborative code review tools and CI/CD pipelines that plugin to the code review process.

Code release

Deploy

With code written, tested, and merged, it’s time to ship it. Bitbucket's CI/CD pipelines make deployments as easy as clicking a button. The live production code will need a place to live. Consider using cloud hosting provided by Amazon AWS, Google Cloud Platform, or Microsoft Azure.

gears

Operate

Support and maintenance are required for active software projects. Jira Service Management provides powerful tools to capture, triage, and resolve customer support requests.

error

Observe

Incident management is when Development and Operations respond to unplanned events and restore services using reliable methods for prioritizing incidents and getting to resolution fast.

Practices throughout the software development lifecycle

ci/cd

Continuous feedback

Teams should evaluate each release and generate reports to improve future releases, ask for customers to give input about the value and impact of product features, and share business-related outcomes with stakeholders. By gathering continuous feedback, teams can improve their processes, and increase value to customers.

Security

Security

As software applications grow in complexity and scale, traditional Q&A and security that is “bolted on” at the end of a release cycle are no longer enough to keep software safe. Instead, testing should be included throughout the software development lifecycle in order to minimize bugs in software code.

Key features of effective software development


Agile

Agile is an iterative approach to project management and software development that helps teams deliver value to their customers faster and with fewer headaches. Agile methodologies are immensely popular in the software industry since they empower teams to be inherently flexible, well-organized, and capable of responding to change.

DevOps

DevOps is a set of practices, tools, and a cultural philosophy that automate and integrate the processes between software development and IT teams. It emphasizes team empowerment, cross-team communication and collaboration, and technology automation.

Continuous integration and delivery (CI/CD)

Continuous integration is the practice of automating the integration of code changes into a software project. It allows developers to frequently merge code changes into a central repository where builds and tests are executed.

Continuous delivery expands upon continuous integration by automatically deploying code changes to a testing/production environment. It follows a continuous delivery pipeline, where automated builds, tests, and deployments are orchestrated as one release workflow.

Microservices

A microservices architecture, also simply known as “microservices”, is an approach to building an application as a series of independently deployable services that are decentralized and autonomously developed. These services are loosely coupled, independently deployable, and easily maintainable.

With a microservices architecture, developers can organize in smaller teams specializing in different services, with different stacks and decoupled deployments.

Agile

Agile is an iterative approach to project management and software development that helps teams deliver value to their customers faster and with fewer headaches. Agile methodologies are immensely popular in the software industry since they empower teams to be inherently flexible, well-organized, and capable of responding to change.

DevOps

DevOps is a set of practices, tools, and a cultural philosophy that automate and integrate the processes between software development and IT teams. It emphasizes team empowerment, cross-team communication and collaboration, and technology automation.

Continuous integration and delivery (CI/CD)

Continuous integration is the practice of automating the integration of code changes into a software project. It allows developers to frequently merge code changes into a central repository where builds and tests are executed.

Continuous delivery expands upon continuous integration by automatically deploying code changes to a testing/production environment. It follows a continuous delivery pipeline, where automated builds, tests, and deployments are orchestrated as one release workflow.

Microservices

A microservices architecture, also simply known as “microservices”, is an approach to building an application as a series of independently deployable services that are decentralized and autonomously developed. These services are loosely coupled, independently deployable, and easily maintainable.

With a microservices architecture, developers can organize in smaller teams specializing in different services, with different stacks and decoupled deployments.

Software development tools


Software development tools can help with every step of the software development lifecycle including guiding agile and DevOps practices, code management, enabling automation through CI/CD, incident response, testing, and more.

Jira Software Logo

Jira

Jira is the #1 software development tool used by agile teams. Jira is a project management tool for agile teams to plan, track, and ship world-class software with confidence.

Bitbucket logo

Bitbucket

Bitbucket is not only Git code management. Bitbucket gives teams one place to plan projects, collaborate on code, test, and deploy.

Compass Logo

Compass

Compass is a developer experience platform that helps you navigate your distributed architecture, bringing disconnected information about engineering output and the teams collaborating on them together in a central, searchable location.

Atlassian Open DevOps

Teams have everything they need to develop and operate software in Open DevOps, right out of the box. Open DevOps starts with Jira, Confluence, Bitbucket, and Opsgenie. Teams can easily add the tools they want, such as GitHub or GitLab, with a single click.

Atlassian Open DevOps

Teams have everything they need to develop and operate software in Open DevOps, right out of the box. Open DevOps starts with Jira, Confluence, Bitbucket, and Opsgenie. Teams can easily add the tools they want, such as GitHub or GitLab, with a single click.