Off-the-shelf VS BespokeWhen a company wants to develop a new Information Technology project, there are two main choices for how they should proceed:
Off-the-Shelf Software - Widely available from stores (physical or online), could be very general software such as a suite like Adobe Creative Suite (Dreamweaver, Photoshop etc...), or it could be a very specific piece of software for a very niche purpose such as account software, or a School Information System.
Bespoke/Custom Software - Created specifically for a single company. Usually the company hires a software development team if they don't have one in-house. The developers analyse the current situation/system so that may design a solution that perfectly fits the organisation's needs. A good example of bespoke software would be a system to help launch a spaceship!
Development ToolsTo create new software, developers must use a range of programs. The source code is entered in a text based editor, a compiler translates that into machine code which is readable by a computer to execute the code instructions, and debugging tools help fix the errors in the code (Computer Scientists will be familiar with this process). These tools are commonly bundled together in an Integrated Development Environment, or IDE. Tools such as XCode for developing iOS applications also include a graphical user interface builder to generate the look and feel of the software.
The Systems Development Life Cycle is about the stages involved in creating an IT system. It starts from the moment an idea is suggested all the way through to delivering a working system and maintaining that system for the client. Following the stages of the SDLC is very important as it makes sure that the correct most appropriate system is developed in terms of features, costs, and time. Following the SDLC also helps to prevent project failure (System doesn't fulfil it's purpose, or ends up way over budget and no longer remains feasible to run).
There are several interpretations of the Systems Development Life Cycle, using different names for the stages or rearranging/merging some of the stages.
The key stages that we will discuss here are: Analysis, Design, Implementation, Testing, Installation, and Maintenance.
AnalysisThis is an investigation of the current system, either an existing computer based system or a manual one (or the situation surrounding a new system that has no predecessor at all). At this stage, the needs of the client along with the possibility of creating a solution for that client are fully assessed. At the end of the Analysis stage, it may be determined to go ahead and create a new system or to not bother because of high costs.
At the analysis stage the project goals must be determined. The aim of the project and its scope or limitations should be defined here; A project with sketchy poorly defined goals is most likely to fail (if the new system solves the wrong issues or problems that are outside of the scope).
Data about the current systems needs to be collected to ensure the new system fixes the right problems and adds the right features. This data collection can come from users, managers, administrators and any existing documentation. Different methods used to collect data include questionnaires, face-to-face interviews and user observations.
A good way of understanding the current system is to look at existing documentation such as organisational policies, user manuals and technical documentation. It's always important to check the dates and accuracy of such documents to ensure they are not out of date and are still relevant.
Once the problem has been investigated, a formal document in the form of a requirements specification is needed. This technical document describes the needs of the organisation as well as the projects goals and scope.
This document is normally divided into functional requirements covering which features the system should have(input, output, storage, processing requirements, user interface) and non-functional requirements covering how the system should work (hardware platform requirements, produce results within a certain time after user input, completed in a certain time frame or budget). These are also known as constraints.
Identifying possible IT solutions
After performing the relevant analysis, it may be the case that there are several possible solutions to the problem. It may involve creating an entirely new system, or adapting and repairing the existing system, or even sticking with the existing system entirely and not creating anything at all!
Feasibility study and justification of chosen solution
Once possible solutions have been identified, one of them needs to be chosen. Whichever is chosen, there needs to be a business case that justifies it in terms of time, cost, resources available. A SWOT (Strengths, Weaknesses, Opportunities, Threats) is sometimes conducted to help determine the feasibility of the solution.
Project Development Roles
Once the project gets the go-ahead to be developed, a project manager can be chosen who will be responsible for ensuring the project is completed, following deadlines and the requirements specification. A project management methodology will also be chosen, such as PRINCE2 or PMBoK. The project will be broken down into stages (like the SDLC or even smaller stages) along with start and finish dates and important dates along the way called "Project Milestones".
Gantt charts give a high level view of a project and its schedule. It includes each task, who is responsible for the task, and the task start and finish times. By referring back to the chart, one can check a date against actual progress to see if a project is on schedule. Project management software such as Microsoft Project, or spreadsheet applications can be used to create Gantt charts.
Program Evaluation and Review Technique charts represent the tasks and schedule visually by showing relationships and dependencies for each task. Using a PERT chart it is easier to understand which activities can be done at the same time, and easier to spot bottlenecks and conflicts in the process.
Critical Path (CP) can be used to work out the longest or slowest route from the beginning to the end of the project, so that the minimum possible time needed for the project can be seen.
DesignThis is where he solution is planned out to meet the needs of the client. All of those client needs should have been identified during the Analysis stage!
ImplementationThe implementation or development stage is the creation of the system, closely following the designs produced in the previous stage.
TestingThis stage of the life cycle make sure that the system created functions as it is supposed to. The Analysis stage has the detailed requirements on which testing can be based.
InstallationThe installation or delivery of the software along with any necessary hardware usually at the client's business location. This stage may also involve the changeover of removing any old system and transferring data into the new system. Training will also need to take place here to help users understand how to use the new system.
MaintenanceThis is the updates and changes made to a system to rectify bugs, add or remove features, or boost performance. For larger systems that are to be used over many years, the maintenance costs form a large portion of the project budget.
PRINCE2PRojects IN Controlled Environments 2 - This project management methodology starts by turning an evaluation of benefits and challenges into a business case.
PRINCE2 separates the life cycle into different stages such as Starting Up, Initiating, Delivering and Final Delivery. Each of those stages is then broken down further into Directing, Managing and Delivering. This describes exactly what type of work is being conducted. The Directing Level is for top management, the Managing Level is for project managers who steer the project and move between different stages (Managing Stage Boundaries), and at the Delivery Level, the project is created by developers/programmers.
One main feature of PRINCE2 is the Project Initiation Document which is a summary/results of the analysis tasks. An example of the Project Initiation Document is shown below!