Lecture 2: Building a System based on Chapter 2 Overview • Aims & requirements: Providing students understandings about building a system. Requirements: - Reading materials before the lecture - Attending required • Lecturing format: – – – – Content: activities in building a system Discussion: programming environment Self-study: Java programming Exercise: Build a Java program StringSorter. • Reading material: Chapter 2, Textbook 2 1. INTRODUCTION: Developing and Supporting a System • What is a system? – Is a single program a system? – How many programs must be there? – Does it have to involve hardware, programs, business process, and others? • Is there a difference between developing and supporting a) a single program versus b) a system ? Size and Complexity • Breadth issue (more in numbers - size): – Major functions – Features within each major function – Interfaces among features and functions – Interfaces to “external” systems – Number of simultaneous users and of total users – Data types and structures Size and Complexity • Depth issue (linkages) - complexity – Amount of Nesting – Number of “chained” relationships • How does depth-and-breadth influence complexity? (look at the next slide) (b) Increased Size and Complexity (a) Simple Start Start Wait for signal Perform task A Signal is? Perform task B a Perform task A other b Perform task C Perform task C Perform task A2 Perform task B Stop Stop Size and Complexity Increases Depth and Breadth Increase • In the previous slide, only a few items were added. – A wait for signal – Decision on processing based on the signal • Imagine what happens when we are developing a system where the depth and breadth (or complexity) increases by additional 100 or 1000 more items and decisions. “Technical” Issues : Systems Development • Problem and Solution Simplification – Decomposition – Modularization – Separation – Incremental iterations “Technical” Issues : Systems Development • Technology and tools choices – Development platform – Development language – Database – Network – Configuration management “Technical” Issues : Systems Development • Process and Methodology – A software development process: a set of tasks, the sequence and the flow of these tasks, the inputs to and the outputs from the tasks, and the preconditions for each of the tasks involved in the production of a software – Choice of process – Choice of methodologies – Choice tools to support the process “non-Technical” Issues: Systems Development • Project Effort Estimation and Scheduling – Needs to consider and estimate more items – Needs to coordinate more items in terms of pre-requisites and co-requisites – Needs to consider more potentials of risks and variations “non-Technical” Issues: Systems Development • Assignments and Communications – More people with an increased variety of skills – More communications among the people – More errors and modifications With the increase in system complexity, there is a corresponding increase in the “manpower” or human resources. 2 people: 4 people: 6 people: 1 path possibly 6 paths increase to potentially 15 paths Increase in Amount of Communications as # of People Increases. Also, an increase in the probability of error. 2.BUILDING A Large, Complex System • Building “Mission critical” or “Business critical” system (such as payroll) requires several separate activities performed by more than 1 person: – Requirements: gathering, analysis, specification, and agreement – Design: abstraction, decomposition, cohesion, interaction and coupling analysis – Implementation: coding and unit testing – Integration and tracking of pieces and parts – Separate testing: functional testing, component testing, system testing, and performance testing – Packaging and releasing the system Different Vertical functions Common Messages . . . Common Screens Horizontal functions Vertical and Horizontal entities that need to be designed, implemented, integrated, tested, and released Supporting a System • Pre-release education and preparation – Number of expected users – Number of known problems and expected quality – Amount of user and support personnel for training – number of fix and maintenance cycles Supporting a System • Post-release user and customer support – Call center and problem resolutions – Major problem fixes and code changes – Functional modifications and enhancements 3. Coordination Efforts Required in Systems Development and Support • Because there are more parts and pieces to consider in Systems than a single program developed by a single person for a limited number of users, there is the need for Coordination of: – Processes and methodologies – Final product and intermediate artifacts – People (developers, support personnel, and users) The previous diagram on people increase and potential communication paths increase provides a clue to the importance of coordination efforts. Process • The development and support processes became heavily weighted towards risk aversion. • There is a need to simplify the process • There is no single process that fits all occasions. Product • A software product often thought of as only containing the executable code. • However, there are more to be produced during development process: i.e requirement documents, user manuals. • People • For a large software system, we need a team of people • There is a need to take into account activities of coordinating people