The Definitive Guide to

Software Artifacts

What are Software Artifacts and why are they the backbone of software development? Learn about different artifact types and why every developer needs them.

► Find out how to improve engineering efficiency!

Introduction

What are software artifacts and what do they have in common with historical artifacts? Just like the latter, a software artifact is a product that is created through human efforts.

And even though both are artifacts in retrospect, there is one big difference: While historical artifacts are tangible, software artifacts are usually virtual, like language models, microservices, or design documents that emerge during the software development process.

Learn more about software artifacts and how they drive all development efforts.

What is a software artifact?

In software development, a software artifact is an item that is produced during the development process. This can be a data model, a prototype, workflow diagram, a design document, or a setup script. In fact, there are specific artifacts that are required during a development cycle – and these need to be stored in an accessible manner.

The term artifact is normally used in a historical context and refers to human inventions. More often than not, artifacts are of scientific interest and are used to trace back processes revealing past ways of life. Software artifacts are similar as they help developers retrace their steps when creating a software product. Thus, they serve as a map that outlines the software development process.

In the world of software development, “Software Artifact” is not a standardized term. Therefore, it’s not surprising that different organizations have their own definitions and perspectives. Within LeanIX Value Stream Management, a software artifact is an independently deployable piece of software that was actually developed by an engineer. This sets them apart from software assets – a term that is not well-accepted by the developer community as it is rather management-heavy and operational.

However, in order to follow general industry standards, this page also includes software artifacts that are not only generated by engineers or developers, but also by other staff members who contribute to the development process.

But what types of artifacts are we actually talking about and how are they stored for future use? Read on and learn about the different types of software artifacts and the importance of various artifact repositories.

Artifact repository

Historical artifacts are discovered by archeologists as they are not that easy to find. Needless to say, software artifacts that are scattered all over the place would be detrimental in the world of software development. For easy traceability, they need to be properly stored in an artifact repository. Below are the three different types that you need to be able to distinguish.

Remote repository: Uses a remote URL and is sometimes even hosted by an outside provider. While it is possible to remove software artifacts, it is not possible to add any.

Local repository: In this scenario, software artifacts are stored on a server on-premise and are deployed and managed locally.

Virtual repository: This is a combination of the two repository types above. Held under one single URL, users have access to remote and local artifacts and can simply delete or add them.

Next, learn about the different types of software artifacts, when they are created and what they are typically used for.

20 Key Questions a Microservice Catalog Answers

Poster

20 Key Questions a Microservice Catalog Answers

Download this LeanIX poster to see the 20 key questions a microservice catalog can answer.

Microservices @ LeanIX - then, now and tomorrow

Video

Microservices @ LeanIX - then, now and tomorrow

Live Recording - EA Connect Day 2020 

Per Bernhardt - Staff Software Engineer - LeanIX

 

Maximize the Development Efficiency of Your Microservices Landscape with LeanIX

Webinar

Maximize the Development Efficiency of Your Microservices Landscape with..

Watch this on-demand webinar hosted by The Open Group, where LeanIX shares insights on how we can help bring order and clarity to your complex microservices architecture.

Efficiently Navigate your Microservices with LeanIX

Webinar

Efficiently Navigate your Microservices with LeanIX

Watch this interview-style webinar on how to build reliable software using a microservice catalog - including a product demo

Types of software artifacts

While there are different options when it comes to artifact repositories, there are also various types of software artifacts that need to be stored.

In general, you can differentiate between three different types: project management artifacts, code artifacts, and document artifacts. Read below for more details.

Project management artifacts

These types of artifacts are created after the code has been developed. They are used to test the functionality of the software and to detect bugs or glitches. Project management artifacts always have the end-user in mind and are usually created by software developers, software maintenance staff, and software project managers.

See below for a few examples.

  • Class diagrams: These are static structure diagrams of the system, showing its classes, attributes, and methods, as well as all objects and their interdependencies.
  • Walkthroughs: As the name suggests, walkthroughs are guides that walk teams through an application from top to bottom.
  • End-user documentation: This type of documentation is meant for clients and is supposed to assist end-users with the usage of the respective software.
  • Internal documentation: This type of documentation is created for employees who are in charge of maintaining or fixing the software application.
  • User case/stories: These artifacts describe in detail and in technical terms what the respective software is supposed to do.
  • Criteria: With these artifacts, the client or the project manager lays out the requirements of the software or project to give developers a specific goal.
  • Unified Modeling Language (UML): UML is used to visualize and plot out the software and how it works including links and processes.
  • Risk Assessments: These describe all potential risks and pitfalls when it comes to the software, so developers can find ways to avoid and work around them.

Code artifacts

Code artifacts are probably the most expected by-products in the software development process as they build the foundation of a program. Created by developers and site reliability engineers, code artifacts let them test their work in detail before the software is launched. This is the best way to avoid glitches later on.

Below are the most common and useful code artifacts:

  • Test suites: This is a specific code to test the ins and outs of a program to make sure that every process is working as expected.
  • Setup scripts: These artifacts prepare the environment for the software and ensure that it can run on any given machine.
  • Compiled code: This is the final code that will go out to the user – thus, it should be free of glitches and errors.
  • Test output: These artifacts are connected to the test suites as they include the logs and results from the testing phase.
  • Microservices: These artifacts are loosely-coupled services or small deployable components that create more complex application systems in their totality.

Documentation artifacts

Created by software developers, maintenance staff, or software project managers, documentation artifacts become important towards the end of programming. In simple terms, a documentation artifact keeps a record of all documents that are needed to replicate the outcome without having to create new artifacts.

This includes the end-user agreement which states the usage terms and conditions of the artifact itself – meaning it explains how to use the artifact and not how to use the software program.

Below are some of the most important documentation artifacts you’ll come across in software development.

  • Diagrams: These artifacts are used to visualize the internal processes of the software and illustrate the connection between the program and the developer. Usually, they are created during or at the beginning of the coding phase.
  • End-user agreements: As the name suggests, these artifacts help the user understand the program and also state the terms of service.
  • Internal documents: These artifacts include all documents that help developers understand or improve the software.

Free poster

20 Key Questions a Microservice Catalog Answers

Cataloging microservices helps DevOps teams to visualize their microservice landscape including details on ownership, dependencies, and business context. 

Get your free copy
Microservice catalog key questions and answers

The benefits of software artifacts

Storing software artifacts in an accessible manner brings many advantages to development teams and beyond. Amongst other things, they are used to articulate the objectives of the program, performance expectations, and feature content of the product. These can be reviewed by the team and the client to ensure that there’s a shared and unified vision.

Below we’ve outlined the most important benefits.

Roadmap from start to finish

Software artifacts are the backbone of software development as they provide developers with a roadmap for a program from start to finish. Without artifacts, it would be difficult to know which tools are necessary to build a fully functional program. This roadmap or template also allows teams to track the development process over time and find out whether workflows need to be adjusted to meet expectations, goals and deadlines.

Time efficiency

Software artifacts save time and thus, money. After all, nobody wants to develop a program that is already outdated by the time it’s ready to launch. This is why software artifacts should be at the center of the development process – they provide guidance and structure and help reduce the developers’ workload who get to fast-track certain steps and procedures. They also allow them to work around known bottlenecks and avoid common mistakes.

Easy upgrades and reusability

Once a program is ready to launch, it’s still not fully “finished” as every software needs updates for continuity. On average, a program will last for 3 to 5 years before it needs to be updated to maintain its functionality. Software artifacts facilitate this process. What is more, developers can also examine documentation, code, and other artifacts from past products to gather ideas and determine how to approach technical problems in new projects.

Maintainability

The upkeep of a program can take a lot of time and effort. Tasks range from fixing occasional errors or bugs that come up during usage over time, or solving problems that arise when new features are added or when the program is replaced entirely. When software artifacts are created, all these potential issues are being addressed which prolongs the duration of use and helps maintain the software in check.

Developing prototypes

Before a program is fully developed and launched, clients usually want to see a prototype showing what the final product will actually look like and what the user will experience. Essentially, this prototype is a true artifact that will assist developers in connecting the mere idea of a product to a functioning program. It’s also fairly easy to make corrections on the prototype as opposed to the finished software product.

Promoting ownership

In a world of microservices, cloud-based solutions, and a rather scattered architecture, service ownership has become increasingly important. Software artifacts allow developers to leave their “signature” on their unique products, which is not only significant from a creator’s perspective. It also allows future developers to exercise better version control and contact the right person in case of questions or issues with the program.

Providing knowledge

With artificial intelligence changing the digital world, software artifacts have gained importance as they offer in-depth knowledge that AI can use to improve the software even more. This accessible knowledge is also important for new developers who are not familiar with the previous development process. In many ways, artifact repositories can be regarded as a library or information bank that can answer all the questions that a new team member might have about an existing software program.

Conclusion

Artifacts form the basis of any software development. In their entirety, they serve as a guide for developers and improve workflows, maintenance, and troubleshooting efforts.

Thanks to artifacts, product iterations can be traced back to specific product attributes and versions. That is why a good artifact repository ensures that teams save time and work towards the same goal. As a developer, knowing how to create and manage software artifacts is key.

Thus, modern tools like LeanIX VSM are now playing an integral role in software development – amongst other things, they help your team discover software artifacts, find the right owners, analyze DORA and Flow metrics, and indicate their lifecycle and availability status.

Free Poster

Build Better Software with the help of these 17 Metrics

Learn about the essential metrics that help DevOps, CTOs, Product Managers, and Engineering leaders improve engineering efficiency and help build better software.

Get your free Copy

LeanIX-Poster-17_Metrics_To_Help_Build_Better_Software-EN_Landing-Page-Preview
check

What are crawl, walk, and run metrics?

check

How to measure them?

check

What are the sources for tracking them?

check

What is their impact potential?

Frequently asked questions on Software Artifacts

What is an artifact in software?

A software artifact is an item that is produced during the development process. This can be a data model, a prototype, workflow diagram, a design document, or a setup script.

In fact, there are specific artifacts that are required during a development cycle – and these need to be stored in an accessible manner.

What are software artifacts examples?

Software artifacts examples fit into three different types: Project management artifacts like class diagrams and walkthroughs, code artifacts like microservices, and test suites, and documentation artifacts like diagrams and internal documents.

What is an artifact repository?

An artifact repository is a place to store software artifacts created during the software development process. There are three different types of repositories: remote, local, and virtual.

What is an artifact in DevOps?

A DevOps artifact is an item that is produced during the development process. This can be a data model, a prototype, workflow diagram, a design document, or a setup script.

17 Metrics To Help Build Better Software

Free Poster

17 Metrics to Help Build Better Software

Download now!