Systems Analysis II Making the system operational INFO 355 Glenn Booker INFO 355 Week #9 1 Implementation and Deployment Most of this course has focused on two middle ‘core processes’ of the SDLC INFO 355 Identify problem and obtain approval Plan and monitor the project Discover and understand details Design system components Build, test, & integrate system components Complete system tests, deploy solution Week #9 2 Implementation and Deployment Now outline the activities in the last two core processes INFO 355 Build, test, & integrate system components Complete system tests, deploy solution We won’t focus on the actual building of system components (see INFO 15x courses for that) Week #9 3 Testing INFO 355 Testing helps to determine if a component, subsystem, or system works as intended and whether it contains any defects Based on the functional and nonfunctional requirements of the system, testing helps uncover defects Week #9 4 Testing Types of testing include: For each test, define test cases INFO 355 Unit Integration Usability Regression System and stress Starting state Events which take place Response or ending state Week #9 5 Testing Test data must be defined as well; could be INFO 355 Contrived data to test handling extreme cases and errors Data from typical normal fake inputs Real data samples from the existing system Consider using testing automation tools! Week #9 6 Unit testing INFO 355 Tests individual modules, functions, classes, or components Does this piece work in isolation? May write a driver method to call the target unit for various test case input values May have a stub to simulate code not written yet Week #9 7 Integration testing INFO 355 Tests a group of related methods, classes, or components Checks interfaces between units, parameter values, looks for runtime exceptions, and unexpected interactions Trace problems to a unit and fix Week #9 8 Integration testing OO issues in integration testing can include INFO 355 Which method called the defective method? Inherited methods and variables Dynamic choice of method used based on inputs Retained data values between method calls Week #9 9 Usability testing Determine if a method, class, component, subsystem, or system meets user requirements Often based on user interface assessment INFO 355 Does the system work? Is it easy to use? If not, why? May be repeated often during development Week #9 10 Regression testing Not mentioned in the book, but iterative development also depends heavily on regression testing INFO 355 Makes sure that new functionality didn’t break stuff that worked before! Is repeated at the end of every iteration on functions implemented in all previous iterations Week #9 11 System Testing INFO 355 Tests the entire system or at least an independent subsystem Typically near the end of the project (waterfall) or each iteration During development, a daily or frequent system test might be a “build and smoke” test to look for obvious problems Week #9 12 Performance testing A performance or stress test checks for non-functional requirements such as throughput, response time, capacity, etc. INFO 355 Often need large data sets or many simulated system users Look for performance bottlenecks or inadequate hardware Week #9 13 Performance testing Fixing problems in performance testing can be challenging INFO 355 Fix or re-implement software Replace or reconfigure hardware or network equipment Upgrade or replace inadequate components Week #9 14 User Acceptance Testing (UAT) INFO 355 Done at the end of system testing User tests system to see if it fulfills the requirements defined in the project’s RFP and contract Successful UAT results in payment and approval for deployment of the system Week #9 15 Deployment activities INFO 355 Deployment takes the system from the lab to the operational setting where it will spend most of its life By the end of deployment, the system is fully operational (“live”) for executing day-to-day business functions, and we’ve reached the end of the SDLC Week #9 16 Converting and initializing data One major activity is getting preexisting data into the system INFO 355 Sometimes called DCL (data conversion and loading), it can be a major effort all by itself DCL might include data from a legacy system, manual (paper) records that have to be digitized, and data from other related systems Week #9 17 Converting and initializing data Might have to INFO 355 Restructure data from another database Convert a flat file database to relational Normalize data Modify or add tables & attributes Or could reload the existing data, often using some intermediate data structure and import/export utilities Week #9 18 Training users All of the system actors may need training specific to their needs and the functions they use on the system INFO 355 End users and system operators may have very different skills and perform different functions Need to define training scope, goals, materials, format, etc. Week #9 19 Training users Training could be self-paced, instructor-led, etc. Very large scale systems may need training for those who will train the end users INFO 355 Train the trainer Timing of training is key – not too long before system deployment or they’ll forget everything Week #9 20 Documentation Related to training, system documentation is generally needed Need to write documentation to the intended audience INFO 355 User manuals System description Debugging and maintenance guide Level of computer skills, education Terminology known Week #9 21 Configure production environment Before system software can be installed, the backbone of the system must be assembled and tested INFO 355 Servers, routers, firewalls, etc. Install operating systems and other support software Often maintain a production system and a test (sandbox) system Week #9 22 Planning & managing deployment Those are the specific activities of deployment More generally, a plan needs to be developed of the implementation, testing, and deployment sequence INFO 355 What do you implement first? This feeds the iteration plan Week #9 23 Development order Three common approaches for deciding the implementation order INFO 355 IPO – develop Inputs first, then Processing modules, then Outputs Top down – start with the highest level routine (Main?) then develop each piece below that Bottom up – opposite of top down! Start with modules that call nothing Week #9 24 Development order Also consider customer needs, project risks, staff utilization, security, or other considerations Use a source code control system (SCCS, such as RCS) INFO 355 Controls check in and check out of code and documentation Week #9 25 Deployment approaches Before deployment you’re at point A – the old system does everything At some point you’ll be at point B – the old system is gone, and the new system does everything How get from point A to point B? INFO 355 Choose a deployment approach Week #9 26 Deployment approaches Direct deployment (immediate cutover) has minimal time where both systems are in use – days or a few weeks INFO 355 Simple but risky No fallback position if new system fails Week #9 27 Deployment approaches Parallel deployment keeps both systems running in parallel longer (weeks to months) and new functions are taken over by the new system gradually INFO 355 Less risk but higher cost Good when system failure is very expensive or dangerous Week #9 28 Deployment approaches Phased deployment implements new system functionality in specific phases, e.g. INFO 355 Phase A cuts over manufacturing processes Phase B cuts over accounting processes Phase C cuts over human resources processes Low risk but complex to manage Week #9 29 Change and version control Throughout system development and deployment, need processes in place to manage change and version control INFO 355 Part of configuration management (CM) Versioning keeps track of exactly what went into each version of the system Week #9 30 Versioning INFO 355 Copies of the system released to the customer (production environment) might be a production release, release version, or production version Minor production releases might be called a maintenance release Week #9 31 Versioning INFO 355 Every file (source code, data, script, documentation) needs to be tracked over time so you know exactly which version went into every release Need this for recreating bugs Week #9 32 Versioning INFO 355 As deployment nears, alpha releases can go to favored customers to get initial feedback, bug reports, etc. Later beta releases go to wider distribution to check system stability before production release Week #9 33 Change control processes INFO 355 With versioning, need a change control process to assess possible changes to the system before they are implemented For an FAA change control process example, see here Week #9 34 Change control processes Key change control ideas include INFO 355 Standard reporting methods for both bug reports and new feature ideas Systematic review of incoming reports Planning and control over changes to the system (estimate, plan, assign, fix, test, approve) Accommodation of normal and emergency changes Week #9 35