When a software development company decides to start a software project, it has to take into account some issues like: where does the idea come from? who will be in charge of the project?
Regarding the origin of the idea, it can come from:
In both cases, we must have a clear overview of the product to be developed, and evaluate its viability. This is easier when it comes from external entities, since the agreement can fit the needs of the software company in order to make a profitable product. But, when it is an internal development, as the company has no additional incomes, it is essential to evaluate if this project is really worth it.
The project manager is an experienced person who will be in charge of coordinating the development process in general. We have to take into account some factors, such as:
The project manager must do tasks like:
The first stage in the sofware development process is the requirements analysis, which is divided into two subtasks: requirements specification and software analysis. In this section we are going to talk about how to gather the requirements of the system to be developed.
The communication with the customer is an essential part of the decision-making process, since we can get to know what he really wants. In this process we have two main drawbacks:
In order to reduce these drawbacks as much as possible, we must:
There are several techniques that we can apply to gather information from the customer, set the application requirements and evaluate its viability. Some of the most popular (and not necessarily excluding) are:
An interview is a systematic way of getting information from another person, through a structured/guided conversation. This is an important aspect, since an interview does not consist in just asking questions. These questions must be ordered and structured, and they must follow a final purpose. The way we set the conversation will determine the information that we will finally get.
A good interview must be divided into these stages:
Exercise 1:
Determine if the following statements are true or false, and why:
- Interviews are the most suitable way of getting information for a software project, in general
- JAD is a quick way of specifying the requirements of an application in projects where several departments of the customer company are involved
- Questionnaires are useful when we try to gather information from the customer and the components are far from each other geographically
- Only with the observation of the company or the study of its documentation we can get a SRS very accurate.
From the customer needs gathered through any of the techniques explained above, we must get to define the requirements of the application, either hardware or software. This way, we elaborate a document called system requirements specification (SRS), which describes as much as possible what the software product is going to do.
Before going on, we must set what a requirement is: a requirement is a condition that the customer needs in order to solve a problem or reach a target. This way, we define the system restrictions.
For instance, a broker that asks us to implement an investment application may be worried about the response time of the application, which is crucial in order to buy or sell the stocks optimally. This quickness would then be a requirement for the application.
There are three main types of requirements:
Proposed exercises:
Exercise 2:
Read the following text about the development of a software product, and then identify the system, functional and non functional requirements:
A blog has three types of users: administrators, editors and visitors. Any of them must log in in order to enter the application. Administrators can register other users, editors can publish posts, and visitors can comment them. We expect that this web site has lots of visits per day, so the availability of the service must be high. We must also have several servers in order to balance the load and distribute client accesses. Besides, as we don’t have very experienced editors, the user interface for them must be as simple as possible. Every post and comment will be stored in a MySQL database, with daily backups. Passwords will be encrypted in order to prevent possible attacks.
Exercise 3:
From the following proposal for a software product, try to identify the system, functional and non functional requirements.
A cultural organization is focused on the loan of two type of objects: music discs and books. We need an application that lets us add new objects to the system from both types. Besides, there are many users that come to this organization. They will need to log in with a user name and password. Then, they may be able to search any disc or book, either by object type (disk/book) and/or by object name (title). Once the object is chosen, they can ask for it if it is not available. Users can have up to 5 objects on loan simultaneously. As this organization is settled in a small town, we don’t expect to have many users asking for books or disks at the same time, so we just need a single computer and a small database to store the information. In case a user does not remember his password, the system will send it by email to the same account that he entered when he registered.
Exercise 4:
Classify the following requirements into system requirements, functional requirements or non functional requirements:
- The application must save the data before closing
- The database server must be in a separate computer
- If there is no connection with the remote server, the application must show an error message and then close
- The response time must not exceed 10 milliseconds
- We must have enough bandwidth to send the video in real time streaming
- We must verify that the information entered by the user (name, id and phone number) is correct