11 November

An introduction to Software Artifacts

BY TRUDO

Artifact, as a term, is generally used in a historical context regarding human inventions. Scientifically, artifacts are used to create a tracing system to reveal past-life processes, and this is how it is similarly used in software development. Even though the word artifact in development is a relatively new word, software artifacts have been part of the development process from the very beginning. Software artifacts are an essential part of programming and they’re produced during the development process. They’re a direct and tangible byproduct of it. An artifact can be considered a document, a deliverable, design models, case studies, and any other work products. They are used to describe the software and the product as it’s being developed, and specific artifacts are necessary during certain development cycles, which require for them to be stored in a way that are accessed easily. The term is not standardized in the world of software development, therefore creating a different definition for each organization. We want to make sure that you as a reader will understand all kinds of software artifacts, including documentation and other administrative artifacts.

Artifact, as a term, is generally used in a historical context regarding human inventions. Scientifically, artifacts are used to create a tracing system to reveal past-life processes, and this is how it is similarly used in software development. Even though the word artifact in development is a relatively new word, software artifacts have been part of the development process from the very beginning.

Code artifacts are the most obvious by-products of the development process. They are created by developers and engineers and they build the base or foundation of the software. Through artifacts, developers and engineers can test the product before it’s out for the public, and it helps them in the debugging process. Some of the most common code artifacts are, compiled code, test suites, setup scripts, test output and microservices.

Project management artifacts are always created after the technical part, or coding, has already been developed, but not after its finalized. These artifacts can help testing the functionality of the software, and have a more user-end focus. They’re created not only by software developers but also maintenance engineers and other software maintenance staff, project managers and so on. Some examples of project management artifacts include class diagrams, end-user documentation, user case/stories, unified Modeling Language (UML), and risk assessments. Documentation artifacts come towards the end of the software development journey. They keep track and a clean record of all relevant documents, allowing the replication of the product, without needing to create extra instructions even for someone who was not involved in the initial creation phase. Examples of documentation artifacts are diagrams: give visual images to written codes, building a bridge between the developers and the programs, end-user agreements: contains the terms and conditions, written as a guide to make the user understand how to use the artifact and internal documents. Without having access to all of the artifacts mentioned above, even some other ones that we might have not mentioned, the development process of any part of the software can be significantly more difficult. In cases where the development can be handed over to other parties or new developers, this process can become even more complicated. Generally, whenever a new developer or a programmer enters a new project, one of the first things that they require from the company is take a look at the artifacts and overall developing history of the software. If any part is missing, this will leave the developer with too many questions. Artifacts form the basis of any software development and serve as a guide for anyone involved in the process, but mainly for the developers. They create a roadmap from start to finish, improving time efficiency, allowing easy upgrades and reusability, maintainability, developing prototypes, promoting ownership, and just providing knowledge in general.