310 likes | 490 Views
CSC340: Tutorial 1 Software Lifecycles. TA: Yuan An Date: 9:00-10:00am, Fri. Oct. 3, 2003 Location: BA1130. In This Tutorial:. The stages in the waterfall life cycle About prototyping and incremental life cycles The importance of project management
E N D
CSC340: Tutorial 1Software Lifecycles TA: Yuan An Date: 9:00-10:00am, Fri. Oct. 3, 2003 Location: BA1130
In This Tutorial: • The stages in the waterfall life cycle • About prototyping and incremental life cycles • The importance of project management • How users may be involved in a project • The role of CASE tools in systems development
The Development Lifecycle • Starting an information system • Reasons for development of an information system • Why does an information system fail? • Project Lifecycle • Waterfall life cycle model • Waterfall life cycle with iteration • Prototyping • Evaluation of prototyping
Starting an Information Systems • Many reasons for development of information systems: • Problem driven: competition, crisis… • Change-driven: new needs, growth, change in business, change in environment… • Opportunity-driven: new technology… • Part of previous plan… • …. • But failure does happen.
Why Does an Information System Fail? • End user’s perspective: • No system: “what system? I haven’t seen a system.” • Unusable • Insufficient power • Client’s perspective: • Too expensive • Too late • Change of mind • Change of requirements • Developer’s perspective: • Wrong requirements • Insufficient resources • Incomplete requirements • Impossible requirements • Blame the others
Problems Causing Failures • Quality problems: • The wrong problem is addressed. • Wider influence are neglected. • Analysis is carried out incorrectly. • Project undertaken for the wrong reasons. • Process problems: • Requirements drift. • External events change the environment. • Implementation is not feasible. • Poor project management.
Avoiding the Problems • We need to adopt strategies and procedures that will minimize the occurrence of the problems. • There is no such thing as a ‘right’ or a ‘wrong’ strategy or procedure which produces a quality system. • One major source of difficulty is the inherent complexity of software development.
A General Perspective Building computerized information Systems can be viewed as a form of problem Solving.
Problem Solving Model • Main phases are • Data gathering • Problem redefinition • Finding ideas • Finding solutions • Implementation • These focus on understanding what the problem is about • Concerned with understanding more about the nature of the problem and possible solutions
The Development Life Cycle • The information systems development process is a partially ordered collection of actions, carried out by one or more developers, testers, users, or other information systems in order to accomplish a task. • The development life cycle is a process by which a information system is developed, tested, installed and maintained throughout its useful history. • The concept of lifecycle is a useful project management tool. A lifecycle consists of phases, each of which is a process.
The Breakdown of Costs • For large software systems, involving >10k lines of code, the breakdown of costs between different phases is as follows: • Requirements Analysis 5% • Design 10% • Programming-in-the-small 15% • Integration 10% • Maintenance and Evolution 60% • Small software systems<5k LOC • Specification 10% • Decomposition 20% • Coding 20% • Optimization 15% • Testing 25% • Validation 10% • Systems analysis and design more important.
What is Described by a Life Cycle? • The lifecycle describes the temporal, causal and I/O relationships between different lifecycle phases. • The lifecycle concept includes the concept of feedback (returning to a previous phase) as well as moving forward to the next phase. • In the past, the lifecycle concept was applied to the management of complex systems that had some sort of physical hardware as their end product, e.g., missiles, communication networks, spacecraft, etc.
What Does a Life Cycle Consist of? • A series steps through which the product progresses. • A life cycle specifies: • The various phases of the process. • The order in which they are carried out. • The guidance for project management. • Next: The Waterfall Life Cycle…
Waterfall Life Cycle • The traditional life cycle (TLC) for information systems development is also known as the waterfall life cycle model • So called because of the difficulty of returning to an earlier phase • The model shown here is one of several more or less equivalent alternatives • Typical deliverables are shown for each phase
Waterfall Model (cont’) • Consists of a set of phases that a project progresses through in a sequential order. • Each phase must be completed before the project can progress to the next phase. • At the end of each phase is some form of gateway, usually a formal review where that decision is made. • There is no overlap between phases. • Straight forward, simple to understand and use. • Deliverables are frozen at the end of each phase and serve as the baseline for the following phases. • You do not see the software until the end of the project (big bang software development). • Changes are not supposed to happen or are limited or are tightly controlled.
TLC Deliverables • System Engineering • High Level Architectural Specification • Requirements Analysis • Requirements Specification • Functional Specification • Acceptance Test Specifications Life cycle deliverables (adapted from Sommerville, 1992).
TLC Deliverables • Design • Software architecture specification • System test specification • Design specification • Sub-system test specification • Unit test specification Life cycle deliverables (adapted from Sommerville, 1992).
TLC Deliverables • Construction • Program code • Testing • Unit test report • Sub-system test report • System test report • Acceptance test report • Completed system Life cycle deliverables (adapted from Sommerville, 1992).
TLC Deliverables • Installation • Installed System • Maintenance • Change requests • Change request report Life cycle deliverables (adapted from Sommerville, 1992).
Problems with TLC • Real projects rarely follow such a simple sequential life cycle • Iterations are almost inevitable • Time elapses between system engineering and the final installation • The design is unresponsive to business changes during the project
The Waterfall Life Cycle with Iteration Iteration added to solve some of the problems
Strengths of TLC • Tasks in phases may be assigned to specialized teams • Project progress evaluated at the end of each phase • Manage projects with high levels of risks • Next: Prototyping
Prototyping—Advantages • Early demonstrations of system functionality help identify any misunderstandings between developer and client • Client requirements that have been missed are identified • Difficulties in the interface can be identified • The feasibility and usefulness of the system can be tested, even though, by its very nature, the prototype is incomplete
Prototyping—Problems • The client may perceive the prototype as part of the final system • The prototype may divert attention from functional to solely interface issues • Prototyping requires significant user involvement • Managing the prototyping life cycle requires careful decision making
Unified Software Development Process • Captures many elements of best practice • Main phases • Inception is concerned with determining the scope and purpose of the project • Elaboration focuses requirements capture and determining the structure of the system • Construction's main aim is to build the software system • Transition deals with product installation and rollout
Project Phases Workflows Requirements Analysis Design Implementation Test Inception 1 2 3 Size of square relative to time spent on workflow Elaboration 4 5 Construction 6 7 8 Transition 9 10 Iterations within each phase
User Involvement • Users can be involved in various ways • As part of the development team (DSDM) • Via a consultative approach • In fact gathering
Computer Aided Software Engineering • CASE tools typically provide a range of features including • checks for syntactic correctness • repository support • checks for consistency and completeness • navigation to linked diagrams • layering • requirements tracing • report generation • system simulation • performance analysis • code generation