Types Of Requirements In Software Development Essays Example
Software engineering involves the methodical and disciplined approach to developing software products (Lehman, n.d.). Software Engineering develops and maintains reliable software systems that exhibit several features. Such features include; affordability, completeness, scalability, portability, integration, and dependability. The interpretation is that such systems must satisfy all user requirements as defined by the users. Such characteristics are important in meeting the organization’s objectives. The result of software engineering, therefore, is an efficient and reliable software system.
The precise definition of functional and non-functional requirements forms one of the main sections in the software development lifecycle that presents a challenge to developers. Definition of such requirements is essential for meeting both business and system performance objectives. Software requirements detail the main functions that the system must aim to fulfill. They represent the user’s expectations of the real-world system features (Mishra and Mohanty, 2012). Usability is the main feature of any software system under development that demonstrates the system as understandable and usable to the users under specified conditions. Challenges encountered in the different phases of the software development cycle, if not properly managed, may lead to poor usability in software systems a feature that significantly contributes to software failure.
Requirements form the basic functionalities that any system under development must satisfy in order for it to be a success. The two main types of requirements in software development include:
User requirements: these describe the services provided by the system including the operational restrictions.
System requirements: These describe in detail the main areas of implementation in a system development process. Such descriptions provide information regarding the systems functions and operational constraints.
The requirements have further classifications as functional, non-functional and domain requirements. Functional requirements detail the services performed by the system. They are reliant on users, nature of the software under development, and the supporting system platform. Non-functional requirements, on the other hand, detail the properties and constraints of the system such as; response time and storage requirements. Domain requirements define the system characteristics and features that reflect the domain. Such classifications usually pose a challenge to the developers. The developers must strive to maintain proper accounts of completeness and consistency issues. In the real sense, it’s hard to come up with a requirements document that is full complete and consistent. Such creates ambiguity causing different interpretations by the developers. Failure to meet the non-functional requirements also renders the system inadequate. On the other hand, failure to satisfy the domain requirements makes the system unworkable. It is imperative; therefore, that the developers pay attention to the requirements phase of the systems development life cycle (Poza, Kovacic and Keating, n.d.).
Defining Software Requirements
The process software requirements definition constitutes the following necessary steps:
Elicitation: Elicitation is the first step in any software development process. At this stage, the client approaches a developer with certain requirements regarding a software product. At this point, the developer initiates the requirement engineering process that starts with conducting a feasibility study. The study aims to establish whether the development process should kick off or not depending on the client’s requirements. The developer takes into consideration different aspects of feasibility of the project such as; implementation, cost constraints, and the system objectives. Implementation entails technical aspects such as usability, maintenance, and integration with other systems. A feasibility study report indicates whether to commence the development process or drop the project altogether. If the outcome of the feasibility report is positive, the developer moves on to the next process (Haskins, 2011).
Analysis: Analysis is the step that follows after a project passes the elicitation stage of requirements phase. The process involves a comprehensive understanding of each requirement thus formulating harmonized ways of representing such requirements.
Specification: Software requirement specifications clearly demonstrate the ways in which the system should interact with different entities. Such include; compatibility with different hardware, portability across different operating systems platforms, system response time, maintenance, integration with other systems, etc. (Haskins, 2011). In order to define such metrics, the developer must consolidate requirements from different stakeholders who are to form part and parcel of the system operators. Specification, therefore, in this case, must involve proper organization of the requirements in an effort to facilitate proper communication and change management. Developers make use of “use cases” and functional requirements to generate a system requirements specification document.
Validation: After the generation of the requirements specifications, the next step involves ensuring that the requirements specified are valid and satisfy the business objectives. At times, users may request for impractical systems. The personnel involved in the requirements specification stage may also incorrectly interpret the requirements (Bourque and Fairley, 2014). As such, the validation stage seeks to take care of any ambiguities to ensure that the end product well conforms to the organizational objectives as well as meets the user’s needs as much as possible.
Management: Within the course of the projects, requirements may be subject to various changes. It is imperative, therefore, for the developers to ensure efficient management of such changes so as to ensure the development of a product that conforms to the needs of the stakeholders.
Tool Support: Developers usually set milestones that they have to complete within such durations. In order to achieve such milestones within the predetermined schedules, the developers make use of tools to support the completion of specific tasks in the course of the development lifecycle (Bourque and Fairley, 2014). Making the right choice for the proper tool to use in the requirements phase may pose a challenge to some developers. It is imperative that the development team should have proficient people amongst the team members to ensure use of the correct tools depending on the type of the environment.
Bourque, P., & Fairley, R. (2014). Guide to the software engineering body of knowledge. (Ver. 3.0 ed.). IEEE Computer Society.
Haskins, C. (2011). Systems engineering handbook: A guide for system life cycle processes and activities (Ver. 3.2.1. ed.). San Diego, Calif.: INCOSE.
Lehman, M. (n.d.). Software engineering, the software process and their support. Software Engineering Journal, 243-243.
Mishra, J., & Mohanty, A. (2012). Software engineering. New Delhi, India: Dorling Kindersley.
Poza, A., Kovacic, S., & Keating, C. (n.d.). System of systems engineering: An emerging multidiscipline. International Journal of System of Systems Engineering, 1-1.