Artifact In Software Development
During the process of software development, many tangible by-products are created. These are called artifacts. Artifacts play a vital role in the software and systems development processes.
Here’s an in-depth discussion of what an artifact is and why it’s important in the software development process.
What is an Artifact?
As a software developer, you’ll come across an artifact at one point or another. Artifacts are used in simple and complex program development projects. They’re essential parts of developing programs.
However, according to research, the term artifacts is new. The term artifacts can refer to documents, deliverables, work products, case studies, diagrams, Unified Modelling Languages (UML), or design documents. An artifact helps to define the structure, architecture, and the process of developing software. Artifacts are critical in complex software that requires a clear path of direction.
Here are some other examples of artifacts:
- Documents: such as a software architecture document or a business case
- Models: such as a design model or a use-case model
- Model Elements: a subsystem, a model within an element, such as a class.
In simple terms, the software itself is a conglomerate of artifacts neatly presented and debugged. However, artifacts can have many forms, such as documents, databases, or printed documents. Artifacts are used to describe the products and the documentation behind the software as it’s being developed.
In the process of software development, these artifacts rely on one another. Following these artifacts is a process. Hence, if the interdependencies among these artifacts are neglected and the process isn’t followed, there can be huge problems.
Moreover, the use and production of these artifacts are very crucial in software maintenance and updates as these artifacts help in resolving problems. In simple terms, a collection of artifacts is like a manual for the software. This ‘manual’ can only be understood better by the software professional who was part of the development process.
Since artifacts are blueprints in the software development paradigm, it’s best to employ an artifact model to keep things organized. Each artifact’s contents are highly important since they help determine the contents of the next connected artifact.
During the software development process, the whole team agrees on the content, structure, and details of the artifact and establishes its concept. Only then an artifact is created from its abstract. Artifacts in a model not only disclose which responsibilities are assigned to the code structure, but they also help navigate its purpose. This information is required along the software development process.
In software development, artifact models are like backbones and the artifacts are indispensable tools. These support the flexibility in the project life cycle, ensure precision in the results, and help in the standardization of terminologies within the project.
Artifacts are stored in a repository so that they can be accessed on-demand. Moreover, these artifacts or related reports have instructions or guidelines that describe the purpose of these artifacts. The report represents an artifact or a set of artifacts within the artifact model.
You can browse the internet for more details on what is an artifact? Everything you need to know.
Why is an Artifact Important?
As mentioned earlier, artifacts are mostly documents with their own set of guidelines. Reports explain the inter-linking of these artifacts. The reports and the guidelines make the software development process more manageable and organized.
An artifact is important in the case of end-user documentation development. The user can examine these documents to understand how the software works without getting into the complexities of the coding behind it.
An artifact can be an application and or a complex set of data objects created by an end-user. Therefore, without the need to know the programming language used in its development, artifacts define automated behaviour, control sequence or database requests, grammar rules, or user-generated content.
All these are important in the operation and maintenance of the software. To summarize, the term artifact is a broad one. Some software may have only a few artifacts that explain how it works, whereas others may be required for operating the software or updating it in the future.
Moreover, the reason why an artifact is called an artifact is that the archaeological term artifact refers to the remnants of other people. These artifacts are dug up and the same analogy works in the digital world.
These artifacts help new developers understand the thought process of the previous developers. By understanding the thought process, more features can be added or the software can be improved. Hence, developers can make other decisions based on the information obtained from these artifacts.
How are Artifacts Created?
Every project requires strategic planning. Hence, before starting the development of software, the development team decides on the artifacts required at each stage. These include source codes, models, diagrams, risk assessments, etc.
The strategic planning of required artifacts is done during the research process of the field. Without this important stage, it’ll be as if builders start constructing a house without its blueprints. To avoid a huge mess, these artifacts are organized and dedicated to each task.
Even after thorough planning, more artifacts may be required and added later. Moreover, creating these artifacts is a crucial part of the project. Like any part of the project, these artifacts are approved by senior members before finalizing.
There are three main types of artifacts:
- Code Artifacts: These are purely technical. They include test suites to run the programs, setup scripts that allow the programs to run on machines, compiled code, which is the final running program, and test outputs that come out as the software is tested.
- Documentation: These include diagrams, end-user agreements, and internal documentation.
- Project Management Artifacts: These can be anything like criterion, user cases, or stories. The criteria lay down all the periods and project/program requirements.
Sometimes artifacts are created after the software is developed. This is done for creating end-user-agreements or instruction manuals to aid the users. These are added before the programs are added, compiled, and shipped for consumption.
Here are some examples of artifacts and what they mean.
- Use Cases: Like product descriptions, use cases are descriptors for users on how to use the program, software, or website. Use cases are directly related to the function of the program or site. Hence, a use case is a vital artifact.
- Unified Modelling Language (UML): It’s the most vital part of the strategic planning of the software. It tells you how a chunk of the software will work as it maps out the processes, links, and steps involved. It doesn’t directly run the software and it’s the key step in designing and programming the software.
- Class Diagrams: Class diagrams map out the overall structure of the software. For example, what was the first piece of code that was written and how it’s connected to the other parts? The diagrams map out the links and processes involved at each stage between clicks in a visual way.
- Software Documents: Most of these artifacts are technical software documents. These documents describe the attributes or the characteristics of a part of the software. These documents can include the details of the software’s architecture, marketing, or end-user processes. These are mostly meant for developers who examine the software from the business point of view.
- Images: Images that are used in software development are also included. These can be design images or reference images. They may be even simple sketches to envision how the final product should turn out. These are especially important in the case of game development since images of scenery, characters, or challenges can be based on these preliminary images designed at the research stage.
- Source Code: A source code can be the type of language used to develop these programs. It won’t include the actual code. It’s just a design or plan that may help the developers.
- Meeting Notes: Most of the artifacts are technical. However, meeting notes can also be artifacts. They include full transcripts of meetings or notes of all the discussions in the planning or research stage. These include important decisions and the design choices made. Hence, meeting notes are important for inclusion in the repository.
- Prototypes: No product is complete without prototypes. The final prototype is the finished version of the product itself. However, prototypes as artifacts are important as they help the developers see what happened behind the scenes.
- Risk Assessment: Every project includes risks and downfalls of the software or its parts. The assessment aids developers in navigating problems and finding solutions. This artifact is the most important for the software developers as they need to be cautious of the potential risks involved at each stage. This artifact can also help in risk management while updating the software in the future.
- The Compiled Application: The compiled application is the final product. It’s in its usable stage and hence the final artifact. While all the other artifacts are meant for the developers, this one is meant for the end-user.
A user installs the program through a compiled application on their computers and uses the software. However, there can be several compiled applications in the artifact repository as it can include experimental builds or the final product.
When are Artifacts Important?
Although it may seem that artifacts are only important in the developmental stage of the product, they’re crucial throughout. They are strategically planned for the long-term. For example, a company that has launched a game in the form of software will have to update and develop the product for years to come.
Updates to games may involve adding new features, challenges, graphics, or even updating the older version. From a practical point of view, these artifacts are like maps that walk any developer through the process of software development. Artifacts help the developer remember how the software was developed or guide the new developers on how it was developed.
From diagrams, risk assessment, source codes, and prototypes, these artifacts are technical. They’re designed to guide programmers on how the software was developed. As mentioned earlier, these artifacts are interconnected. If the artifacts are not thoroughly planned, maintained, or created, future repairs or updates may become difficult. Solving these problems becomes complex and consumes more time.
Hence, there’s a special repository created for this purpose to guide new programmers about all the stages, codes, and thought processes involved in developing the software. In effect, artifacts are critical for the development, running, maintenance, and updating of software.
Maintenance of Artefacts
Artifacts are maintained like the software itself. However, the maintenance of artifacts varies based on the role of the artifact. The role can either be symbolic or practical.
In its symbolic role, artifacts represent the project management aspect of software dev to show how serious the contractor is. They also walk you through the deliverables that existed at the time of the development process. They also inform you about the project’s needs and the subsequent stages.
But symbolic artifacts are only for general information. Therefore, they’re not as detailed as practical artifacts. They indicate where the project stands.
Practical artifacts serve a greater purpose and need to be maintained throughout the lifecycle of the project. Since practical artifacts must be maintained, they contain detailed deliverables that unveil the working part of the developed software.
If artifacts aren’t created and stored properly, they may create many problems and the process of software development become slow and inefficient. The learning curve may become steeper and costlier. Moreover, from a project management point of view, the artifacts are very important since they’re deliverables that help determine various stages of development. However, the deliverables of software projects are mostly the same as the artifacts themselves, with software being the final product. In any case, it’s vital to store and maintain all artifacts for future use.
The Bottom Line
Artifacts are by-products of the software development process. They’re the building blocks of what the software is made of. From a project management point of view, they’re quite important as they help determine at what stage the development process is.
Artifacts are required during development, operations, maintenance, and upgrading of the software. Consequently, artifacts must be stored carefully for future reference.