Software engineering is a concept that has received significant recognition as a result of the massive increase in technological advancement around the world. Many engineers engage in processes of designing software that is essential at both individual and corporate level. Some of these processes call for particular approaches in ensuring that the specifications of what is designed to meet the standards and needs of customers (Davis, 1990).
In addressing this concern, it has been noted that the notion of software documentation should not be underestimated as it plays core roles in software engineering. This research paper analyses the concept of software documentation by focusing on the sub field of software requirements as applied in software design.
Software documentation refers to a written text which usually accompanies most computer software after they have been designed. In essence, software documentation serves an informative role in explaining how particular software work or how to use in performing different tasks (Wiegers, 2003).
As result, software documentation differentiates the functionality of given software depending on the roles being performed by an individual. When talking about software documentation, one has to consider a number of things. In other words, there are basic things which define documentation or, which have to be present for it to serve its rightful purpose effectively.
For instance, documentation contains software features, which are core in understanding how the software operates. What are features? A feature is simply a service normally provided by a given system with an aim of satisfying the needs of stakeholders, which could be one or more (Hartman, Proeme & Matthes, 1968).
In other words, the intended use of the software is usually linked to the specific features of software to be designed. In understanding software documentation, it has been argued that there are several software requirements that are equally important and need to be considered in ensuring efficiency. What is a requirement?
From a general perspective, a requirement refers to something, which is crucial and essential for the existence or occurrence of another. In our daily lives, it is sometimes hard or impossible to write down what people have been saying or describe how far a particular process has come.
Are features and requirements similar? The two are distinctively different although many people confuse them. Within the context of software documentation, a feature is represented graphically with an abstract use case. This differs from software requirement as it is represented graphically with a concrete use case.
Use cases simply refer to the description of certain steps or actions between a user, also known as actor and a software system, which leads the user towards realizing something useful being searched. Whatever that is found is also referred to as a restaurant (Satzinger, Jackson & Burd, 2008). The most significant point about use cases is that they help in determining features to be implemented and how certain errors can be improved.
Due to the importance of software requirements, the process of determining them has to be effective in order to realize desired results. As such, determination of requirements is always under certain regulations and guidelines that are core in obtaining a given goal. The first rule is being sensitive to political and organizational considerations (Satzinger, Jackson & Burd, 2008).
This has been found to promote gaining of respect. In practical, it involves identifying and consulting all stakeholders in order to maintain the movement of things in a positive and productive direction. Additionally, identifying domain constraints is important since system problems are never found at the end but in the beginning.
Moreover, good results are obtained through various options. It is essential to collect requirements from various stances and perspective in order to realize good outcomes, which require appreciation. To achieve this demand and have it in practice, it is worth being open minded as it augments the overall well being of many things that are equally significant. To achieve this, requirements of the source have to be met for the entire process to be productive (Satzinger, Jackson & Burd, 2008).
In this case, one has to be clear and precise for the purpose to avoid confusion. In addition, understanding the feasibility of the system has to be observed. Certain questions have to be asked, and answers looked for in order to determine the likelihood of meeting the system target. One has to step aside and imagine the possibilities of the elicitation and the abstract analysis of the entire project.
In using elicitation techniques to determine software requirements, it is necessary for one to include interviews and questionnaires in order to have a wider range of information from respondents. Many people prefer interviews and consider them better than questionnaires.
In adopting this method, it is paramount to think within the line of participation and involvement of other people in the design process. Workshop costs may be also factored in order to brainstorm and reconstruct ideas. Some of the practical approaches that could be important to include prototyping, casing, story boards and role playing (Wiegers, 2003).
From the enumeration of these requirement guidelines, it is important to appreciate the changing mode and rate of software engineering. Because of the rapid changes being experienced, most software are becoming complex and large, thus calling for an evolutionary approach (Clements, 2003).
This means that software requirements are expected to change due to the ever-changing technology in the world. By the fact that software knowledge is obtained through development, changes in the needs of users and transformation of the environment are inevitable.
Furthermore, software requirements ensure that there is verification and the testing process. Together with prototyping and meetings, there are also focus groups, observation, and other scenarios. Importantly, software documentation approaches combine user stories, use cases and specifications, which are different in nature.
By prioritizing the value, this implies that the system can maximally make use of up to 80% of the requirements documented (Wiegers, 2003). On the other hand, brainstorming tends to refine idea reduction and idea generation which in turn help in identifying the requirements needed for completion. Moreover, being able to evaluate the problem and synthesize a workable solution is a major area to be determined.
Besides these determination guidelines, specification involves a number of steps, which include but not limited to classifying requirements, conceptual modeling, prioritizing requirements, requirements allocation, negotiation and architectural design. However, in carrying out all these steps, it is important to have documentation in mind. Documentation is done both verbally and graphically (Davis, 1990).
For verbal documentation, there is an immediate opportunity to get feedback and clarification. It, therefore, promotes clarification and gaining of important knowledge through meetings and organized workshops. Furthermore, verbal approach provides enough ideas about problems and strategies, which could be applied in dealing with the problem at hand.
On the other hand, graphical documentation involves story boards and role playing, conceptual graphs and goal means network. Certain models like the use of model and domain model are the different ways of gathering important information and going through the elicitation process. The benefit of these designs is that they allow clarification and easy “checking off” throughout the process of design. Usage models allow the designer to clearly understand how users will interact with the system while meeting their demands (Davis, 1990).
This is quite important in comprehending their needs and how to improve them in order to meet their needs in totality. Similarly, domain modeling usually involves business units and the existing relationship between them. In this regard, user Interface models integrate part of the software with which users directly interact with. The most important thing about this model is that it allows the designer to understand the entire domain of the expectations of stakeholders concerning the User Interface.
As noted before, the exercise of collecting and gathering the requirements of a given system through its users and stakeholders is what constitutes to elicitation specification. This is sometimes referred to as requirements gathering. This process is wide enough and requires more steps in order to realize a thorough assessment process (Wiegers, 2003).
For instance, workshops are held with certain individuals and stakeholders as a way of attributing outside thoughts and ideas. This concept is dealt with by software engineers who specialize in elicitation specification and validation. As such, people can only come together through a set of guidelines of requirement specifications. Some of these include but not limited to brainstorming, role-playing and general viewpoints from several people (Clements, 2003).
Notably, a requirement of elicitation is usually specified as a list of core points, covering many aspects of the software and assist in the process of formulating, documentation and specification (Wiegers, 2003). The specification side includes the possibility of the system penetrating to far places and the development of its functions. A complete description of the system to be developed is normally contained in the activity in which the document is generated.
During specification communication, there are specified subjects to be put into consideration. These include but not limited to external processes, performance requirements, functional requirements, software system attributes, and logical database requirements (Clements, 2003).
Furthermore, defining the problems that have to be solved with the systems is always the leading goal behind every process. To realize high-quality solutions, it is important for one to have the ability to elicit, communicate and finally document. Additionally, the involvement of everybody in gathering of documents and in communicating software requirements to all participants is of immense significance during the entire project life cycle (Davis, 1990).
For instance, there has to be the delegation of duties to allow efficiency and collection of relevant information within the shortest time. Some of the areas to be considered during delegation include market opportunities, problems and software challenges, software solution implementation, project analyst and an executive sponsor (Aurum & Wohlin, 2005).
For the case of the analyst, he or she must evaluate the overall flow and structure of the information to be sourced, refine functional problems, discover the bonds of the design and set the properties of the system. These tasks are important in discovering the problem before deciding on a global solution that offers a holistic response.
Others who are equally important in the requirement process are IT experts, business users, technical leaders, requirements engineer and testing specialists. Every person has a role to play in requirement elicitation. The facilitator keeps all organized meetings going. He makes crucial announcements, controls conduct of participants, and establishes rules necessary for smooth flow of meetings (Hartman, Proeme & Matthes, 1968).
In case some of the people miss with critical requirements, critical software requirements get affected. Two approaches, therefore, have to be adopted. These are evolutionary approach and technical approach. Evolutionary approaches mainly deal with success, i.e. all critical users within the overall engineering process. On the other hand, the traditional approach is a dictator to the developer while users are allowed to work jointly with an aim of developing shared ideas (Hartman, Proeme & Matthes, 1968).
In analyzing the concept of software documentation, it is paramount to consider the numerous benefits of requirements elicitation, specification and its documentation. Requirement process is essential in determining success and quality of a system that is under development (Clements, 2003).
During the stage of elicitation requirements, the needs of the clients are identified and are important in creating requirements that affect all the parties. Thorough description of system requirements is also important based on its functionality; it would show possible errors for the analyst to go back, and fix before the project is moved to the next step of development.
Lastly, documentation of requirements allows all past stages to be brought together and presented to the client for further processes of advancing the project (Hartman, Proeme & Matthes, 1968). It is therefore, worth noting that client requirements are essential in order to achieve goals in system development. They give a plan for software requirements to adopt and its specifications always encompass requirements from customers, users and stakeholders.
Aurum, A., & Wohlin, C. (2005). Engineering and managing software requirements. New York City: Springer.
Clements, P. (2003). Documenting software architectures: views and beyond. Boston: Addison-Wesley Professional.
Davis, A. (1990). Software requirements: analysis and specification. Michigan: Prentice Hall.
Hartman, W. Proeme, A., & Matthes, H. (1968). Management information systems handbook: analysis, requirements determination, design and development, implementation and evaluation. New York City: Mcgraw-Hill.
Satzinger, J., Jackson, R., & Burd, S. (2008).Systems Analysis and Design in a Changing World. Stamford, Connecticut, U.S: Cengage Learning.
Wiegers, K. (2003). Software requirements: practical techniques for gathering and managing requirements throughout the product development cycle. New York City: Microsoft Press.