Software

=__Software Development Cycle__=

__Problem Definition:__

If a problem is not defined accurately at the start of the process of creating a new piece of software or computer system then further issues may arise. Such issues could include the basic functions of the system to not work properly or even that the system cannot perform basic tasks. Therefore, it is immensely important for the end user to propose his/hers idea to the person creating the database for the company in the way they would like it to be conducted. This would make sure that both parties are trouble free as the end user will be happy that his ideas are able to be put forward into the design stage with a designer that is capable of producing his/hers ideas. An example of a problem not being defined accurately: Is when, for example a system was developed for a company and was only set to pay staff every month. This would prove to be a problem if a member of staff is usually paid every week. Therefore, the designer would have major problems in correcting the fault with the database. However, this problem would not have occurred if the end user was upfront when consulting the analysis about creating the database.

__Feasibility Study:__  •Is the technology available E.G If the system needs 2 terabytes of memory which is possible or 1 petabyte which is not (well for public sector anyway.)

• Is it economically viable E.G will the solution be affordable to the company or make their product too expensive for customers to buy.

• The social effect: will the solution put so many people out of work the government won’t allow it? Or is it ethical to replace a doctor with a machine that automaticly diagnoses the patient.

• How easy is it going to be to maintain the system. E.G will there be enough qualified people to run the system.

• Will the solution effect the customer. E.G will they notice a difference and if so is that difference worth the cost of the solution.  __Information Collection: __

This stage comprises collecting information about the situation/problem so that they not only understand the problem better and more clearly, but also understand the present solution and what improvements are required. Some methods of information collection include: There are issues which arise when it comes to the information collection stage, and these problems are often are in conjunction with the method of information collection. Selecting questionnaires for information collection can be advantageous due to it meaning that sorting through the collected data is easier and generally collating the data is easier. There is, however, the main problem which comprises recipients of the questionnaires of surveys, simply not filling out the questionnaires which, on a larger scale, would make the concept of information collection via questionnaire redundant. The other main method of information collection, interviews, is a much more beneficial method due to it comprising face-to-face interaction which means that responses can be interpreted and collected. There is one small issue with interviews which includes interviewees not turning up to their interviews which is the equivalent problem of not filling in questionnaires.
 * Questionnaires
 * Surveys
 * Interviews

__Analysing Requirements:__

The purpose of the Analysis stage is to examine the information collected in the Information Collection stage (from questionnaires, interviews, etc) in order to determine what factors are relevant to the problem. For instance, if the problem was to create a system for book loans at a library, would the number of people expected to use the library be relevant? What about the number of librarians using the system at once? These factors could have an important impact on how the system is designed. Even seemingly small problems, such as a particular librarian's preferences when using a computer system could have a bearing upon the solution created. As well as analysing the information collected, it is often helpful to analyse the existing system. By making Data Flow Diagrams and System Flow Charts to model how the existing system works, possible problems and flaws with the existing system can found, and hopefully fixed when the new system is produced. Ultimately, the result of this stage will be the production of a Requirements Specification. This is a list of all everything the final system should be able to do. The solution created by the designers and programmers must adhere strictly to this specification in order to satisfy the customer’s requirements. It is also important to check that the customer agrees with what is in the Requirements Specification before it is finalised to ensure that it is what they want. Although it may not seem to be important at first, particularly to someone who has never seen an engineering project (of any kind) through to the end, deciding what you want to do in advance (i.e. the Requirement Specification) is vital to the success of the project. If goals are not set in stone beforehand, the entire project can fall to pieces. Multiple programmers working in a team must be able to communicate to ensure the system works; complex systems rely on the lower level systems that they are built on in order to function properly; individual components of the system must not unexpectedly interfere with one another. Without a rigid plan set out beforehand, big changes often end up being made to the foundations of the project, but this usually means that all systems built upon these foundations have to be completely rewritten, or sometimes replaced entirely by new systems. This avoidable problem does not occur when the requirements of the system have been properly analysed in this stage of the project. 