Uploaded by khanh29bk

Ch02 BuildingSystems

advertisement
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
Download