MIS 7003 MBA Core Course in MIS Professor Akhilesh Bajaj The University of Tulsa Introduction to S/W Engineering © All slides in this presentation Akhilesh Bajaj, 2004,2007. All rights reserved.
Goals To understand the different methods of software development To understand primary reasons why systems fail
SDLC Systems development life cycle (SDLC) - a structured step-by-step approach for developing information systems. Useful for large scale projects. Documents produced at each stage. Easy to manage. Users (us) sometimes left out, since we only interact in the first part of the process.
Seven Phases in the SDLC Phase 1: Plan Set the business goals for the system. E.g., improve our customer service quality by reducing the number of pending customer cases by 50%. Set the players (stakeholders), who will pay for the system, who will develop it (consultants or in-house). Simple cost benefit analysis of the system. Set the milestones, and get a broad idea of the hardware & software that will be used to build it. Create the team on the developer and user side. The user side manager should be the project manager. Deliverable: Plan Document, contract with developers.
Seven Phases in the SDLC Phase 2: Analysis End Users (us) interact with the systems analysts in the development team. This part is the most important part of the process. This is where we get our voices heard. Political battles need to be resolved here. Discussion: Are all systems political?
Seven Phases in the SDLC Phase 2: Analysis The analysts will ask us questions, and observe what data and processes we use. Based on that, they will come up with data diagrams and process diagrams. As end-users, we should participate in this process, and make sure the analysts have the diagrams down correctly. We should also make sure the analysts have access to all the information they need. It is important that we ASK the analyst team how these requirements will be transmitted to the developers (programmers) and whether we will have continuous feedback from them on how the system is coming up.
Seven Phases in the SDLC Phase 2: Analysis Deliverables: Data diagram document, process diagram document, other requirements from us, signoff from all end- users, signoff from project manager.
Seven Phases in the SDLC Phase 3: Design Decide on the software & hardware required for the system. E.g., Oracle Database running on a UNIX server, with front end developed in visual basic running on windows clients. Come up with the system design (database tables, primary keys, foreign keys, etc), as well as the GUI screens the users will need. Deliverables: Design document, signoff from end- users on the screen shots, signoff from project manager.
Seven Phases in the SDLC Phase 4: Development Start with the actual coding of the system. Usually done on development machines that will be different from the production machine. At this point, the development team does not interact much with the end-users. However, we should make it a point to follow up on the development, and ensure the system is conforming to our requirements, and the analysts have done a good job of conveying our needs. Otherwise, we run the risk of getting partial functionality. Deliverables: First Version of the system, technical manuals.
Seven Phases in the SDLC Phase 5: Test Once the first version is built, we alpha test it. Alpha testing means getting some of us end-users to use the system and find all the bugs in it. As end-users, we should all try to alpha test the system. We should keep track of bugs we find and report them to the development team, via the project manager. At this point, we may be tempted as end-users to identify NEW requirements for the system. This is a temptation we should avoid. New requirements are handled usually in a later version of the system. Once the alpha testing is over, the system is beta tested. This means actually using the system to do business for small periods of time, and simulating a complete load on the system. More bugs are revealed here, that need to be fixed. The testing team will consist of end-users, as well as testers from the development team. Deliverables: Bug reports that track the bugs over time, as well as fixes.
Seven Phases in the SDLC Types of Testing Unit Testing: Test units of code, like a procedure or a class. White-box and black box testing. Static and Dynamic testing. Integrated Testing: Object oriented design helps reduce errors in this area. System Testing: Test entire system with real world work loads. Also test system for recovery, security, stress & acceptance.
Seven Phases in the SDLC Phase 6: Implement Once the bug number is acceptable, the system is ready for release. We usually do a phased release, where the old systems are not taken down immediately, but both the old & new system work in parallel for some time (maybe a few weeks or months). At the time of release, a help desk needs to be set up, and training sessions need to be conducted for all users who did not participate in the testing. At this point, as end-users, we should accept the system as it is, make note of changes we may need, and adapt to the system. All information systems change the nature of information flow, and are hence important. Deliverables: User manuals.
Seven Phases in the SDLC Phase 7: Maintain The maintenance is done by in-house IT staff. As end users, we should keep a close eye on our systems, since their performance may degrade over time. Also, any bugs we find should be reported to the maintainers. Deliverables: Maintenance log, new requirements log, bug report log.
Seven Phases in the SDLC Types of Maintenance Perfective Maintenance: Make a working system better. Corrective Maintenance: Correct bugs in the system. Configuration Management: Baseline, and then manage all changes to documentation, code, binaries, etc.
Self Sourcing We build the systems ourselves (as end –users). What systems can we develop? –Spreadsheet applications –Small database systems –Buy off-the-shelf small systems and install & use them. E.g., QuickBooks. Many small businesses & business units in larger organizations self-source. Discussion: Most self-sourcing systems require a) a cost/benefit analysis, b) a brief description of the technology used, c) who the users will be, etc. IN essence, it’s like the planning document we talked about in the last class. We need to do this to justify the cost of the new system.
Out Sourcing We hire people from outside to develop the system for us. A turn-key solution is expensive, but puts everything in the hands of the external organization. What is the biggest problem with a turn-key solution? Politics are not resolved, unless a strong internal project manager is selected. Discussion: What might be some other problems with out-sourcing? What are some advantages?
Prototyping The development process consists of building one prototype early on in the process, showing it to end-users (us) getting feedback, then making improvements to the prototype, showing it again to the end-users, and so on, till a final system is created. Advantages: better end-user involvement, better acceptance. Disadvantages: Chaotic process, hard to manage, poor documentation. May be better for smaller projects.
Why Systems Fail 20% of systems are successful, 80% of systems fail. Five primary reasons why systems fail include: 1.Unclear or missing requirements 2.Skipping SDLC phases 3.Failure to manage project scope Scope creep – project scope increases Feature creep – developers add extra features 4.Failure to manage project plan 5.Changing technology Class Discussion: Have any of us seen an information system failure?