Thursday 25 June 2015

Advantages and Disadvantages of different Models - M1

Discuss the most appropriate uses of different development life cycle models

There are many different models which can be used for systems analysis. All of these vary in their approach, and all of them follow the 5 steps of the development life cycle. Some are more appropriately used in certain situations than others.

Waterfall Model
The first process model that was introduced was called the Waterfall model. This model is used for projects that are small and easy to complete. In this model each phase/stage of the life cycle must be completed before the next one can begin, this is done so that none of the phases overlap with each other. When a phase has been completed, a review takes place to evaluate whether or not the project is on the right path and whether it is worth continuing the design and analysis or not. The system testing will only take place after development has been completed.

The advantages of this model are that it is very simple and easy to understand and use, and is easy to manage, due to the rigidity of the model, for example, each phase does specific tasks once completed and provides a full review process. It is performed in a sequential order, none of the phases overlap with each other, but instead flow one after the other (hence the name Waterfall.)

The disadvantages of this model are that when an application has reached the testing stage, it is quite difficult to go back and modify something that wasn't well planned during the planning stage of the life cycle. The actual software for the system isn't designed or programmed until the very late stages of the life cycle. This model has a fairly high risk attached to it, especially when working with projects that are long or complicated, for that reason, there can often be a lot of uncertainty when using this model.

Due to the simplicity of this model, and how easy it is to utilise it, the most suitable use for it would be for small projects that have very simple and clear requirements for what the system needs to do.  It is important to make sure that the technology being used is understood by the entire team working on the project, as well as having access to a very large amount of resources that are highly skilled and available for as low a cost as is possible.


Spiral Model
The spiral model contains just four phases:

·         Planning phase – The project requirements are made here.

·         Risk analysis – A process takes place that identifies any possible risks and solutions that can be used. At the end of this phase, a prototype is produced. If any risks are found within the prototype, then the solutions that were discovered are utilised.

·         Engineering phase – The software is developed in this phase, along with the testing, which takes place at the end of the phase.

·         Evaluation phase – In this phase the customer has the chance to evaluate the end result of the project so far. After the evaluation is complete, the project proceeds onto the next spiral.

The advantages of this model are that the chances of any risks occurring is reduced. This is because of the large amount of risk analysis that takes place, throughout the entirety of the second phase. There is a very controlled outlook on documentation to be produced and for approval of the project, before the engineering phase can even begin. The software is produced fairly on in this model, meaning that it is developed in a very short amount of time, however, additional functionality can be added to it at a later time.

The disadvantages of this model are that it can be expensive to use throughout the project, as there are a lot of processes that take place (for example, risk analysis), so therefore, this should be accounted for in the budget when planning takes place. For the risk analysis to be thorough it may require a high amount of expertise. Only then are you likely to have identified and analysed all of the potential risks surrounding the project. This expertise is another factor that could eat into the money allocated to the project. It is important to make sure that the risk analysis is done absolutely correctly, as success of the entire project relies very heavily on the risk analysis. Due to the pricing of the model it doesn't scale down well with smaller projects like the Waterfall model does.
This model is most suitably used for projects that have a big focus on the cost, with a lot of emphasis on evaluation, it is best used for projects that have a medium to fairly high risk attached to them due to the amount of risk analysis that takes place within the model.


Rapid Applications Development (RAD)
This model aims to very quickly produce applications and systems for a fairly high cost. The components or functions of the system are developed in parallel with each other (as though they were mini projects), this reduces the development time. The time it takes to fully assemble the system is timed, a finished product is then assembled into a working prototype that is then given to the customers to test. This allows them to provide feedback on the usability of the product and if all the requirements have been met.

The advantages of this model are that the development time is reduced due to the fact that all functions are developed simultaneously, as well as having a swift review process. Lastly, feedback from the users is greatly encouraged in order to evaluate what works well with the system and what needs to be modified, for example, say the system was very quick and responsive to the user, however, there was an issue with the system’s code that caused errors to occur. The user can inform the business of this fact so that they can remove these problems quickly.

The disadvantages of this model are that in order for it to succeed it relies on a strong team and a good individual performance, so that the business objectives can be identified. Only systems that can be broken down into smaller modules of code can be developed using RAD, otherwise they would be incompatible. In order for the system to be developed, developers, designers and programmers must have a high level of skill. This means that hiring the correct staff may end up being very expensive. The overall cost of using this model is very high, therefore it is impractical for use with smaller projects.


This model is most appropriate when the project requirements state to efficiently develop a system to completion, in no more than 2-3 months. If the budget for the project is high enough to accommodate, and there are enough designers, developers and programmers with the correct level of skill needed in order to be able to complete the system without any issues occurring.

Benefits of Structured Analysis - P3

Explain the benefits of Structured Analysis


Structured analysis is an organised method of systems analysis that makes use of graphical diagrams to develop and present system specifications to users in a way that makes them clear and easy to understand. The diagrams explain the steps that need to occur and the data that is needed to meet the design requirements of the system. There are some very important steps involved in structured analysis:
  • Studying the current system and evaluating all of its issues
  • Modelling this system
  • Modelling the new system around these issues, in order to fix them
  •  Modelling the new physical environment
  • Evaluating any alternatives that there may be
  • Choosing the best system approach
  • Creating the graphical specifications

By using a structured approach of systems analysis, both the systems analysts and the users/clients should find many benefits. For example, software that has been properly designed and set up. If analysis and design has been performed using a structured model then all the requirements should be understood by the analysts/designers, therefore the finished product should meet all the initial requirements. By having this high quality software there should be an increase of productivity within the company, as it should be able to serve all the functions it is needed for efficiently without encountering any issues.

A structured approach can reduce the risk of over-run, this includes both time and budget. If the specifications of a system are clearly presented and understood by everyone then the entire development cycle should be completed well within the time allocated for the project, without going over the budget, while still meeting all the requirements. This could be particularly important when your company has acquired another company, because you are scaling up the size of your IT systems, it is important to make sure that you can design them within the time without spending too much of the money for the project.

Projects that are making use of structured analysis are likely to be well-managed. This means that regular check-ups or monitoring of progress will take place to evaluate how successful the analysis and design has been so far, and how far along the project is compared to where it should be (is it ahead or behind.) Regular meetings would be held, in which goals and targets are set (for example, the system needs to be implemented within a certain amount of time and be able to perform basic functions without too much of our budget being spent.) Lastly, a thorough review of the entire project takes place once it has been completed. By having this organised and well-managed project that has successfully been implemented, the company will able to expand on what they do, as they have these new systems that are capable of doing so much more for them, such as setting up online sales. The completion of this project will give staff the experience needed to make it much easier for them to manage new projects in the future; these will also be very successful and help them to expand the business.

Designing systems that are maintainable is a benefit of using a structured analysis method. Maintainable systems are systems that can be modified and updated over a series of time. This means any issues that occur in the system can be removed quickly, without causing too much of a disruption in the system. The code of the system can be modified easily as well.  By designing the system so that this maintenance is so easy to perform, there would be an increase in productivity within the company, as there wouldn't be as much of a delay whenever the systems required maintenance. To make this happen, the requirements for the system will need to be carefully analysed and understood by everyone, when implementing the features that make the system maintainable, evaluation and testing needs to take place to make sure that the system meets these requirements.

Resilient systems are systems that have been designed in order to adapt to change. By using a structured approach to systems analysis, this can be planned for properly in the design stage. By thinking about possible changes that could occur within the business or with technology (new hardware/software being designed), these systems can be designed to accommodate any changes that may happen during the lifetime of the system. Technical documentation would need to be produced that clearly describes how the system can be modified to suit changes, it is important when designing these systems to make sure that they are robust enough, meaning that they are unlikely to fail as new functionality will be added to the system after it has been implemented.  By being able to design resilient systems using structured analysis, the company will be meeting certain legal requirements. By law, certain rules and regulations need to be followed by all companies For example, “All businesses that operate online must send out confirmation that a transaction has taken place.” It is important to make sure that these systems have been designed to be resilient in order to be able to easily adapt and follow these procedures when required to.


Stages of the Development Life Cycle - P1 and P2

The development life cycle represents the life of a system. These systems will need to be:
Designed
Monitored
Updated 
Replaced all over a period of time.


There are 5 stages in the development life cycle, they are as follows:


cycle.png


Stage 1: Analysis
Activities/processes that are carried out in this stage are:
Problem statement - A report that highlights any potential issues that could occur during the analysis and design of the systems.
Interview with the users - The interviews are held with the users to determine whether they are willing to use the systems, are they experienced enough or would they need training etc.
Feasibility study - The people conducting the analysis look at the possibility of the project that they are working on. For example, checking the resources that are available to them (is the budget big enough?, do they have enough staff/time?)
Stage 2: Design
Activities/processes that are carried out in this stage are:
Process description - Accurate and detailed explanations of every process that is going to be occurring in the new system. For example, database software that will be used for keeping records.
Data flow diagrams - These provide a visual representation of the data flow travelling through a system. This allows a user to get a much better understanding on the processes that occur in  a system.
Data dictionary - Is a set of information that describes the content, functions and structure of a system.

Stage 3: Implementation
Activities/processes that are carried out in this stage are:
Program coding - In this stage, the actual installation of the system begins. The actual coding of programs/applications will take place, using assets that have already been produced (data dictionary, data flow diagrams etc.)
Migration of data - Means to transfer all the information from the original system over to the one that is being put in place.
Training the users - Once this has all been done, the users would need sufficient training in how to use these systems, based on the interviews that were held earlier on the amount of time needed to train them may vary depending on how inexperienced the users are with these systems.

Stage 4: Testing
Activities/processes that are carried out in this stage are:

Data testing - Refers to the testing of the information stored on the system (for example, programs that have been installed onto the system, do they work? Is it suitable for the user to use? Has all the data been transferred to the new system? Etc.)

Compatibility checks - Are done to make sure that all the information/programs/applications that have been installed onto the system can work properly on said system. As well as tests to make sure that the user is able to work with the system (is it user friendly? Are there any bugs in the system preventing them from being able to use it? Etc.)


Verification - The system has to be verified that is 100% functional, is safe for users to begin using, can support all the desired information etc.


Stage 5: Evaluation
Activities/processes that are carried out in this stage are:
Reviews - Once the system has been fully set up and declared available for use, a review/reviews need to be conducted in order to reflect on how the design and analysis of the system went. Was the budget big enough to support the project? Were there enough resources? Did we meet all the goals for the project? How closely were the steps of the development life cycle followed?
Performance monitoring - The performance of the system will then be monitored for a period of time after the user has began to work with it. This is to make sure that they have received sufficient training in the use of the system, as well as to check if any issues/errors crop up after the initial setup has taken place.
Amendments - If there are any problems detected in the performance monitoring, amendments will need to be done in order to make sure that these issues are fixed and are unlikely to occur again. Think of it as regular updates being applied to the system.

Tools that can be used for Systems Analysis
A data flow diagram is used as a representation of the data flow through a system. These allow someone to see a process in the system from the viewpoint of the data, as well as offering a visual representation of how a system operates, what it accomplishes and how it will be implemented.
There are 4 components in a DFD, these are represented by 4 symbols:
External entities – The source/destination of the data. Represented by squares.
Processes – Such as input/processing/output, these are represented by rectangles with rounded corners.
Data flow – Whether physical or electronic data, this is represented by an arrow.
Data stores – Physical/electronic data stores are represented by open-ended rectangles.

CASE (stands for Computer Aided Software Engineering) this is the use of computer based design tools to help develop systems. By utilising these tools, analysts are able to increase productivity and improve the quality of the pre-existing systems as well as the new systems that are being designed.

SSADM stands for Structured Systems Analysis and Design Method. This is an industry standard that is developed for systems analysis in many government run projects. SSADM combines both text and diagrams throughout the entire design stage in the development life cycle, from the initial design idea of the system to the systems’ physical design.
Many government run projects use SSADM because they believe that, through the use of a professional, engineering tool, they will be able to improve the overall quality of the systems that they are designing.

There are 7 steps to SSADM. These are as follows:

Feasibility study – Is it possible to achieve what we want?
Investigation of the current system – What needs to be improved in our design?
Business systems operations – Does our organisation have the resources needed to support this?
Requirements specification – Do we have everything that we need to design these systems?
Technical systems operations – Can we operate these systems?
Logical design – Do we have a theoretical design that we want to use?
Physical design – Does our physical design match the theoretical one and does it meet our requirements?
  
Key Drivers
Key drivers are reasons that can initiate the systems analysis and can eventually lead to the design of new systems. These key drivers are:
Need for growth - Expansion of the business (for example, developing online sales, moving into a larger work environment or expanding what the business does.)
Company acquisition - Taking control of another business.
Increase in productivity - Introducing new ways of improving the efficiency of the business (for example, setting up faster systems that require little human interaction to operate.)
Legal requirements - Meaning that, by law a new system would have to be implemented. For example, e-commerce actions require an email as acknowledgement of an order.

Development Life Cycle Models
These are models of systems analysis that closely follow the stages of the development life cycle. They all vary in their approach to systems analysis, and some are more appropriate in certain situations than others. We will be covering three of the most widely used models.
Waterfall Model – Used for projects that are short and easy, (the requirements are understood by the user.) The phases of this stage do not overlap (one must be completed before the next one can begin.) After the end of each stage a review takes place to determine whether or not the project is on the right track.
Rapid Applications Development (RAD) – Used to quickly develop systems for low cost. In this model every phase is developed in parallel with each other (as though they were all smaller projects.) This reduces the development time as all the phases are completed at the same time. Feedback from the users is encouraged.
Spiral Model – Used for complex projects with a high risk and cost attached to them. While the risk of failure of the project is high, a large amount of risk analysis takes place in order to try and reduce that risk. The software is developed very early on in the model, allowing for additional functionality to be added later.