hoofdstuk 11: ontwikkeling van informatiesystemen
TRANSCRIPT
Hoofdstuk 11: Ontwikkeling van informatiesystemen
Overzicht
• The Systems Development Lifecycle (SDLC)– Preliminary investigation– Systems Analysis– Design– Programming– Testing– Maintenance
• Legacy systems• Prototyping
Methodologies and the SDLC• A methodology is a comprehensive set of steps,
guidelines, activities and/or principles, prescribing the process by which the IS can be developed
• Many methodologies distinguish a series of stages that the IS undergoes – the systems development life cycle (SDLC)
• Various techniques may be prescribed during these stages
SDLC: Waterfall Approach
The classical SDLC is predominantly a ‘waterfall’ approach:• sequence of stages in which the output of each stage
becomes the input for the next• facilitates project management: clear ‘milestones’• but can be costly, time consuming and inflexible,
especially for smaller projects• establishing user requirements can be very difficult
Typical SDLC Stages• Preliminary investigation: establishing a high-level view of
the intended project and its feasibility• Analysis: analysis of the information needs that the system
should satisfy; describes what the system should do
• Design: laying out how the system should be structured to meet the requirements determined by the systems analysis
• Programming: writing executable code based on the design
• Testing: process that determines whether the system produces desired results under known conditions
• Deployment: putting the new system into operation
• Maintenance: ongoing process of making further changes to it
Note: many variations of divisions into (sub-)stages
Preliminary Investigation
• Usually includes conducting a feasibility study: determines whether the project is achievable, given the organisation’s resources and constraints– Technical feasibility: proposed solution can be implemented with
available hardware, software, and technical resources?
– Economic feasibility: benefits of proposed solution outweigh costs?
– Operational feasibility: proposed solution is desirable within the existing managerial and organisational framework?
(e.g., taking into account history of IT acceptance, IT skills of staff, organisational structure, …)
System Analysis
• Analyze the organisation’s processes, information needs and its existing systems– Data gathered from written documents, interviews,
questionnaires, observation, measuring– Describe using various modelling techniques – Pinpoint problems/opportunities
• Establish requirements that the new system must satisfy– Functional requirements: what tasks should the system
perform?– Non-functional requirements: performance, security, …
System Design• Further elaborate on the analysis; lay out the components
of the IS and their relationship to each other• Some design choices include:
– setting automation boundaries– centralized or distributed system– file-based or database system– batch or online system– …
• Modular design: IS broken down into separate modules– more manageable: different teams of programmers/testers can be
allocated to them in subsequent stages– often documented in structure charts & module specifications
• User interface design
Setting Automation Boundaries
Programming• Process of writing actual program code for the system
specifications prepared during the design stage• Procedural versus non-procedural programming
languages– Most conventional programming languages are procedural:
• Programmers must specify the sequence of processing steps to be performed in order to accomplish task
• Three main constructs: – sequence: execute steps in order shown– iteration: repeat a series of steps while/until a condition is satisfied– selection: conditionally execute if a condition is satisfied
• Example languages: C or C++, Java, Pascal, Basic, …
– Non-procedural languages:• Specify not the exact sequence but what needs to be accomplished• Example: Structured Query Language (SQL)
Example procedural programming languages
• COBOL– Developed around 1960– Has long been popular for business applications
• Pascal– Intuitive for educational use
• C, C++ – Powerful and efficient but lacks 100% portability across
systems
• Java– Designed to run on any system – Popular for web applications
Testing• Static versus dynamic testing techniques
– Static: not actually executing the program; e.g. code inspection
– Dynamic: feeding test cases into the program and then seeing whether its execution meets certain requirements
• Levels of testing– Unit testing: testing separate program modules
– Integration testing: testing whether modules work together properly
– System testing: testing the system as a whole• volume testing: can it handle the amount of data and transaction rate?• stress testing: does the system break down in extreme conditions?
– Acceptance testing: done by the end-user (unlike the former three); provides final certification that the system is ready to be used in a production setting
Testing (contd.)• How to choose the test cases?
– Exhaustive testing: try every combination (usually not an option…)
Consider this simple scenario:• Suppose that the program needs values for n input items• Say every item has 2 possible values (e.g. yes or no)
• Then, the number of test cases would have to be 2n
• E.g., for n = 10, this equals 1024• For n = 20, the number would already exceed 1.000.000• …
“Exponential explosion”:
– Test case selection strategies:• black box: select a suite of test cases without looking at the internal
structure of the module (e.g. randomly generated)
• white box: try to get a good test coverage by looking inside the module
size
reso
urce
s
Deployment
• Systems changeover: process of replacing the old system by the new system– Parallel running: conservative conversion approach where both
the old system and the potential replacement are run together– Direct changeover: risky conversion approach whereby the new
system replaces the old system on an appointed day– Pilot study: strategy to introduce the new system to a limited area
of the organisation until it is proven to be fully functional– Phased approach: introduces new system replacement in stages;
mixture of direct changeover and parallel running methods
• Data entry/migration
• Hardware/software installation
• Training
Systems Changeover Strategies
Direct changeover:
Parallel running:
Systems Changeover Strategies (contd.)
Pilot study:
Systems Changeover Strategies (contd.)
Phased approach:
Maintenance
• Three types of maintenance:– corrective: fixing bugs– perfective: enhancing the system without changing its
functionality (e.g. optimizing its performance)– adaptive: changing the system’s functionality in order to
meet evolving requirements
• Preferably coupled to:– an ongoing formal review process– procedures for version control– systematic documentation of changes
• Probably the most costly stage in the SDLC
Maintenance Problems: Legacy Systems
• Legacy systems:– old systems (e.g. 20-30 years old)– large, monolithic, and difficult (thus expensive) to modify– running on mainframes– written in (near-)obsolete languages
“The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence.” (Dijkstra)
– with very little or out-of-date documentation– whose original designers are retired or have left the organisation– still critical for the functioning of the organisation– often demanding high availability
(e.g. customer account transaction processing in banks)
– which continue to be used because the cost of replacing or redesigning (“re-engineering”) them is prohibitive
Prototyping
• Prototyping: building experimental system quickly for demonstration and evaluation purposes
• Provides easier way for users to determine information requirements
• Iterative instead of sequential process
• Incremental or throwaway prototyping