Agile Methodology

Chapter 11
Systems Analysis and Design
Learning Objectives:
In this chapter we will discuss the following topics:

The Systems Development Environment

The information Systems Development Life Cycle (SDLC).

Rapid Application Development (RAD), prototyping, Joint Application Development
(JAD) and Computer Aided Software Engineering (CASE).

Agile methodologies and extreme programming.

Object Oriented Analysis and Design (OOSAD) and the Rational Unified Process (RUP).
Learning Outcomes:
After going through this lesson, you should be able to:
1.
Understand what is meant by ‘system thinking’
2.
Understand the different phases of system developments life cycle
3.
Identify the strengths and weaknesses of different development methodologies such as:
RAD, Prototyping, JAD and CASE
4.
Explain Agile Methodologies and Extreme Programming
5.
Describe OOSAD and RUP
11.0
INTRODUCTION
Systems are created to solve problems. One can think of the systems approach as an organized
way of dealing with a problem. System Analysis and Design, mainly deals with the software
development activities. A system is a collection of components that work together to realize
some objective forms. Basically there are three major components in every system, namely
input, processing and output.
In a system the different components are connected with each other and they are
interdependent. For example, Human body represents a complete natural system. We are also
bound by many national systems such as political system, economic system, educational system
and so forth. The objectives of the system demand that some output is produced as a result of
processing the suitable inputs.
11.1
The Systems Development Environment
Information system aims at providing detailed information on a timely basis throughout the
organization so that the top management can take proper and effective decisions [1]. The
information system cuts across departmental lines and help achieving overall optimization for
the organization. The organization is viewed as a network of inter-related sub-systems rather
than as a hierarchy of manager-subordinate relationship. The information system can be of two
types:
(a)
Integrated information system
(b)
Distributed information system
(a) Integrated Information System
The integrated information system is based on the presumption that the data and information
are used by more than one system in the organization and accordingly [2], the data and
information are channeled into a reservoir or database. All the data processing and provision of
information is derived and taken from this common database. The development of an
integrated information system requires a long-term overall plan, commitment from
management at all levels, highly technical personnel, availability of sufficient fund, and
sophisticated technology. It also requires adequate standby facilities, without which the system
is doomed to failure. Because of its integrated component, the modification to the system is
quite difficult and the system development takes a fairly long time.
(b) Distributed Information System
There are opinion that development of an integrated information system is embodied with
several practical problems and therefore, not feasible. This view has been reinforced by the
failure of integrated systems in various large organizations. The concept of a distributed
information system [3], [4] has emerged as an alternative to the integrated information system.
In the distributed information system, there are information sub-systems that form islands of
information systems. The distributed information system aims at establishing relatively
independent sub-systems, which are, however, connected through communication interfaces.
Following are the advantages of the distributed information system:

The processing equipment as well as database are dispersed, bringing them closer to the
users.

It does not involve huge initial investment as is required in an integrated system.

It is more flexible and changes can be easily taken care of as per user's requirements.

The problem of data security and control can be handled more easily than in an
integrated system.

There is no need of standby facilities because equipment breakdowns are not as
calamitous as in an integrated system.
The drawbacks of the distributed system are:

It does not eliminate duplication of activities and redundancy in maintaining files.

Coordination of activities becomes a problem.

It needs more channels of communication than in an integrated system.
It is possible to consider several alternative approaches, which fall between the two extremes a completely integrated information system and a totally independent sub-system. It is to be
studied carefully what degree of integration is required for developing an information system.
It depends on how the management wants to manage the organization, and the level of
diversity within the organization.
11.2
The information Systems Development Life Cycle (SDLC).
System life cycle is an organizational process of developing and maintaining systems [5] . It
helps in establishing a system project plan, because it gives overall list of processes and subprocesses required developing a system. In the System Analysis and Design terminology, the
system development life cycle means software development life cycle. See figure 11.2. It is
made up of the following phases:
(a)
System study
(b)
Feasibility study
(c)
System analysis
(d)
System design
(e)
Coding
(f)
Testing
(g)
Implementation
(h)
Maintenance
Figure 11.2: Different phases of Software development Life Cycle
(a) System Study
System study gives a clear picture of what actually the physical system is. It is done in two
phases. In the first phase, the preliminary survey of the system is done which helps in
identifying the scope of the system. The second phase of the system study is more detailed and
in-depth study in which the identification of user’s requirement and the limitations and
problems of the present system are studied. After completing the system study, a system
proposal is prepared by the System Analyst (who studies the system) and placed before the
user. The proposed system contains the findings of the present system and recommendations
to overcome the limitations and problems of the present system in the light of the user’s
requirements.
(b) Feasibility Study
The feasibility study is basically the test of the proposed system in the light of its workability,
meeting user’s requirements, effective use of resources and .of course, the cost effectiveness.
In the process of feasibility study, the cost and benefits are estimated with greater accuracy.
(c) System Analysis
Analysis involved a detailed study of the current system, leading to specifications of a new
system. It is a detailed study of various operations performed by a system and their
relationships within and outside the system. During analysis, data are collected on the available
files, decision points and transactions handled by the present system. Interviews, on-site
observation and questionnaire are the tools used for system analysis.
All procedures, requirements must be analyzed and documented in the form of detailed data
flow diagrams (DFDs), data dictionary, logical data structures and miniature specifications.
System Analysis also includes sub-dividing of complex process involving the entire system,
identification of data store and manual processes.
(d) System Design
Based on the user requirements and the detailed analysis of a new system, the new system is
designed. This is the phase of system designing and it proceeds in two stages :

preliminary or general design

Structure or detailed design
In the preliminary or general design, the features of the new system are specified. The costs of
implementing these features and the benefits to be derived are estimated. If the project is still
considered to be feasible, we move to the detailed design stage.
In the detailed design stage, computer oriented work begins in earnest. At this stage, the design
of the system becomes more structured. Structure design is a blue print of a computer system
solution to a given problem having the same components and inter-relationship among the
same components as the original problem. Input, output and processing specifications are
drawn up in detail. In the design stage, the programming language and the platform in which
the new system will run are also decided [6].
There are several tools and techniques used for designing [7]. These tools and techniques are:

Flowchart

Data flow diagram (DFDs)

Data dictionary

Structured English

Decision table

Decision tree
(e) Coding
This is also called the programming phase in which the programmer converts the program
specifications into computer instructions, which we refer as programs. The programs
coordinate the data movements and control the entire process in a system.
(f) Testing
Before actually implementing the new system into operations, a test run of the system is done
removing all the bugs, if any. After codifying the whole programs of the system, a test plan
should be developed and run on a given set of test data. The output of the test run should
match the expected results.
Using the test data following test run are carried out:

Unit test

System test
Unit test: When the programs have been coded and compiled and brought to working
conditions, they must be individually tested with the prepared test data. Any undesirable
happening must be noted and debugged (error corrections).
System Test: After carrying out the unit test for each of the programs of the system and when
errors are removed, then system test is done. At this stage the test is done on actual data. The
complete system is executed on the actual data. At each stage of the execution, the results or
output of the system is analyzed. During the result analysis, it may be found that the outputs
are not matching the expected out of the system. In such case, the errors in the particular
programs are identified and are fixed and further tested for the expected output. When it is
ensured that the system is running error-free, the users are called with their own actual data so
that the system could be shown running as per their requirements.
(g) Implementation
Implementation is the stage of a project during which theory is turned into practice. During this
phase, all the programs of the system are loaded onto the user's computer. After loading the
system, training of the users starts. After the users are trained about the computerized system,
manual working has to shift from manual to computerized working. The following two
strategies are followed for running the system:
i.
Parallel run: In such run for a certain defined period, both the systems i.e. computerized
and manual are executed in parallel.
ii.
Pilot run: In this type of run, the new system is installed in parts. Some part of the new
system is installed first and executed successfully for considerable time period. When
the results are found satisfactory then only other parts are implemented. This strategy
builds the confidence and the errors are traced easily.
(h) Maintenance
Maintenance is necessary to eliminate errors in the system during its working life and to tune
the system to any variations in its working environment. It has been seen that there are always
some errors found in the system that must be noted and corrected. It also means the review of
the system from time to time. The review of the system is done for:

knowing the full capabilities of the system

knowing the required changes or the additional requirements

studying the performance
If a major change to a system is needed, a new project may have to be set up to carry out the
change. The new project will then proceed through all the above life cycle phases.
11.3 Rapid Application Development (RAD), prototyping, Joint Application Development
(JAD) and Computer Aided Software Engineering (CASE).
There several approaches to system development. They include:
I. Rapid Application Development (RAD)
Rapid application development (RAD) [8], [9], a variation on JAD, attempts to create an
application more quickly through strategies that include fewer formal methodologies and
reusing software components. With conventional methods, there is a long delay before the
customer gets to see any results. Development can take so long that the customer's business
has fundamentally changed by the time the system is ready for use. The user cannot see
anything until 100% of the development process is finished and 100% of the software is
delivered. RAD are used because:

to converge early toward a design acceptable to the customer and feasible for the
developers

to limit a project's exposure to the forces of change

to save development time, possibly at the expense of economy or product quality
II. Prototyping
Prototyping is the process of quickly putting together a working model (a prototype) [10], [11]
in order to test various aspects of a design, illustrate ideas or features and gather early user
feedback. Prototyping is often treated as an integral part of the system design process, where it
is believed to reduce project risk and cost. Often one or more prototypes are made in a process
of iterative and incremental development where each prototype is influenced by the
performance of previous designs; in this way, problems or deficiencies in design can be
corrected. When the prototype is sufficiently refined and meets the functionality, robustness,
manufacturability and other design goals, the product is ready for production.
Advantages of prototyping

May provide the proof of concept necessary to attract funding

Early visibility of the prototype gives users an idea of what the final system looks like

Encourages active participation among users and producer

Enables a higher output for user

Cost effective (Development costs reduced)

Increases system development speed

Assists to identify any problems with the efficacy of earlier design, requirements
analysis and coding activities

Helps to refine the potential risks associated with the delivery of the system being
developed
Disadvantages of prototyping

User’s expectation on prototype may be above its performance

Possibility of causing systems to be left unfinished

Possibility of implementing systems before they are ready.

Producer might produce a system inadequate for overall organization needs

Producer might get too attached to it (might cause legal involvement)

Often lack flexibility

III.
Not suitable for large applications
Joint Application Development (JAD)
The Joint Application Development (JAD) methodology [12], [13] aims to involve the client in
the design and development of an application. This is accomplished through a series of
collaborative workshops called JAD sessions. JAD is thought to lead to shorter development
times and greater client satisfaction, both of which stem from the constant involvement of the
client throughout the development process. On the other hand, with the traditional approach
to systems development, the developer investigates the system requirements and develops an
application, with client input consisting of a series of interviews.
IV.
Computer Aided Software Engineering (CASE).
CASE (computer-aided software engineering) [14], [15] is the use of a computer-assisted
method to organize and control the development of software, especially on large, complex
projects involving many software components and people. Using CASE allows designers, code
writers, testers, planners, and managers to share a common view of where a project stands at
each stage of development. CASE helps ensure a disciplined, check-pointed process. A CASE
tool may portray progress (or lack of it) graphically. It may also serve as a repository for or be
linked to document and program libraries containing the project's business plans, design
requirements, design specifications, detailed code specifications, the code units, test cases and
results, and marketing and service plans.
CASE originated in the 1970s when computer companies were beginning to borrow ideas from
the hardware manufacturing process and applies them to software development (which
generally has been viewed as an insufficiently disciplined process). Some CASE tools supported
the concepts of structured programming and similar organized development methods. More
recently, CASE tools have had to encompass or accommodate visual programming tools and
object-oriented programming. In corporations, a CASE tool may be part of a spectrum of
processes designed to ensure quality in what is developed. (Many companies have their
processes audited and certified as being in conformance with the ISO 9000 standard.)
Some of the benefits of CASE and similar approaches are that, by making the customer part of
the process (through market analysis and focus groups, for example), a product is more likely to
meet real-world requirements. Because the development process emphasizes testing and
redesign, the cost of servicing a product over its lifetime can be reduced considerably. An
organized approach to development encourages code and design reuse, reducing costs and
improving quality. Finally, quality products tend to improve a corporation's image, providing a
competitive advantage in the marketplace.
11.4
Agile methodologies and extreme programming.
Agile Methodology
Agile methodology is an approach to project management [16], [17], typically used in software
development. It helps teams respond to the unpredictability of building software through
incremental, iterative work cadences, known as sprints. In waterfall, development teams only
have one chance to get each aspect of a project right. In an agile paradigm, every aspect of
development — requirements, design, etc. — is continually revisited throughout the lifecycle.
When a team stops and re-evaluates the direction of a project every two weeks, there’s always
time to steer it in another direction. Thus by focusing on the repetition of abbreviated work
cycles as well as the functional product they yield, agile methodology could be described as
“iterative” and “incremental.” The results of this “inspect-and-adapt” approach to development
greatly reduce both development costs and time to market. In essence, it could be said that the
agile development methodology helps companies build the right product. Instead of
committing to market a piece of software that hasn’t even been written yet, agile empowers
teams to optimize their release as it’s developed, to be as competitive as possible in the
marketplace.
Extreme programming
Extreme Programming (XP) is actually a deliberate and disciplined approach to software
development [18], [19]. It is only eight years old but it has already been proven at many
companies of all different sizes and industries worldwide to work. XP is successful because it
stresses customer satisfaction. The methodology is designed to deliver the software your
customer needs when it is needed. XP empowers your developers to confidently respond to
changing customer requirements, even late in the life cycle. This methodology also emphasizes
team work. Managers, customers, and developers are all part of a team dedicated to delivering
quality software. XP implements a simple, yet effective way to enable groupware style
development. XP improves a software project in four essential ways; communication, simplicity,
feedback, and courage. XP programmers communicate with their customers and fellow
programmers. They keep their design simple and clean. They get feedback by testing their
software starting on day one. They deliver the system to the customers as early as possible and
implement changes as suggested. With this foundation XP programmers are able to
courageously respond to changing requirements and technology. XP is a lot like a jig saw
puzzle. There are many small pieces. Individually the pieces make no sense, but when combined
together a complete picture can be seen. This is a significant departure from traditional
software development methods and ushers in a change in the way we program.
11.5
Object Oriented Analysis and Design and the Rational Unified Process (RUP).
Rational Unified Process (RUP) [20] is an object-oriented and Web-enabled program
development methodology. According to Rational (developers of Rational Rose and the Unified
Modeling Language), RUP is like an online mentor that provides guidelines, templates, and
examples for all aspects and stages of program development. RUP and similar products -- such
as Object-Oriented Software Process (OOSP), and the OPEN Process -- are comprehensive
software engineering tools that combine the procedural aspects of development (such as
defined stages, techniques, and practices) with other components of development (such as
documents, models, manuals, code, and so on) within a unifying framework.
RUP establishes four phases of development, each of which is organized into a number of
separate iterations that must satisfy defined criteria before the next phase is undertaken: in the
inception phase, developers define the scope of the project and its business case; in the
elaboration phase, developers analyze the project's needs in greater detail and define its
architectural foundation; in the construction phase, developers create the application design
and source code; and in the transition phase, developers deliver the system to users. RUP
provides a prototype at the completion of each iteration. The product also includes process
support for Java 2 Enterprise Edition (J2EE) and BEA (WebLogic) development, and supplies an
HTML-based description of the unified process that an organization can customize for its own
use.
Other Methodologies that you may find includes:

Adaptive Project Framework

Crystal Methods

Dynamic Systems Development Model (DSDM)

Feature Driven Development (FDD)

Information Technology Infrastructure Library (ITIL)

Lean Development (LD)

PRINCE2

Rational Unified Process (RUP)

Scrum

Spiral

TenStep Project Management Process

Waterfall (a.k.a. Traditional)
Summary:
A system is a collection of components that work together to realize some objective forms.
Information system aims at providing detailed information on a timely basis throughout the
organization so that the top management can take proper and effective decisions. The
information system can be of two types: Integrated information system and Distributed
information system. The system development life cycle is made up eight phases: System study,
Feasibility study, System analysis, System design, Coding, Testing, Implementation and
Maintenance. Rapid application development (RAD), attempts to create an application more
quickly through strategies that include fewer formal methodologies and reusing software
components Prototyping is the process of quickly putting together a working model (a
prototype) in order to test various aspects of a design, illustrate ideas or features and gather
early user feedback. The Joint Application Development (JAD) methodology aims to involve the
client in the design and development of an application. CASE (computer-aided software
engineering) is the use of a computer-assisted method to organize and control the
development of software, especially on large, complex projects involving many software
components and people. Agile methodology helps teams respond to the unpredictability of
building software through incremental, iterative work cadences, known as sprints. Extreme
Programming (XP) is actually a deliberate and disciplined approach to software development.
Rational Unified Process (RUP) is an object-oriented and Web-enabled program development
methodology.
Exercises:
Fill in the blanks:
1. A …… is a collection of components that work together to realize some objective forms.
2. …… is an object-oriented and Web-enabled program development methodology.
3. ….. is a successful software development approach because it stresses customer satisfaction.
4. In ……. aspects of development such as: requirements, design, etc. — are continuously revisited
throughout the lifecycle.
5. Some ….. support the concepts of structured programming and similar organized development
methods.
6. …… can lead to shorter development times and greater client satisfaction, both of which stem from
the constant involvement of the client throughout the development process.
7. ……. is often treated as an integral part of the system design process, where it is believed to reduce
project risk and cost.
8. ……. attempts to create an application more quickly through strategies that include fewer formal
methodologies and reusing software components.
9. ……. is the stage of a project during which all the programs of the system are loaded onto the user's
computer.
10. …… is when the programs which have been coded and compiled and brought to working conditions,
are individually tested with the prepared test data.
11. The ……. stage is when the design of the system becomes more structured.
12. The ……. is basically the test of the proposed system in the light of its workability, meeting user’s
requirements, effective use of resources and cost effectiveness.
13. The second phase of the …… is more detailed and in-depth, in which the identification of user’s
requirement and the limitations and problems of the present system are studied.
14. The …… system is based on the presumption that the data and information are used by more than
one system in the organization.
15. ……. is an organizational process of developing and maintaining systems.
Answers:
1. System
2. Rational Unified Process (RUP)
3. XP
4. agile programming
5. CASE tools
6. JAD
7. Prototyping
8. Rapid application development (RAD)
9. Implementation
10. Unit test
11. detailed design
12. feasibility study
13. system study
14. integrated information
15. System life cycle
Short Essay Questions:
1. Define a system. Explain the components of a system.
2. What do you understand by system development life cycle?
3. Discuss the importance of system analysis and design in the development of a system?
4. What is difference between integrated information system and distributed information system?
5. What are the advantages of distributed systems?
6. What are the advantages and disadvantages of prototyping?
7. Compare and contrast between CASE tools, Prototyping, JAD and RAD.
8. What happens during the testing stage of the SDLC?
9. Why is the analysis phase of the SDLC very important?
10. Why is extreme programming getting more and more popular?
References:
Books:
1. Diane M. Coyle, Computers Are Your Future, Complete, 10/E, Prentice Hall, 2009. ISBN-10:
0135045118, ISBN-13: 9780135045114.
2. John Preston, Sally Preston and Robert L. Ferrett, Computer Literacy for IC3, Prentice Hall, 2009.
ISBN-10: 0131498649, ISBN-13: 9780131498648.
3. Alan Evans, Mary Ann Poatsy and Kendall Martin, Technology in Action, Introductory, 5/E, Prentice
Hall, 2009. ISBN-10: 0135137667, ISBN-13: 9780135137666.
4. Brian K.Williams and Stacey Sawyer, Using Information Technology: A Practical Introduction to
Computers and Communications, 7th Edition, McGraw-Hill, 2007. ISBN-13 9780072260717.
5. James A. O'Brien and George Marakas, Introduction to Information Systems, 13th Edition, McGrawHill, 2007, ISBN-13 9780073043555.
Online References:
[1]
www.ccsu.edu/business/faculty/Jarmoszko/
In%20class%20MIS%20461/Systems%20Development%20Environment.ppt
[2]
nos.org/htm/sad4.htm
[3]
www.cs.cmu.edu/~aml/research/dis.html
[4]
www.sti-innsbruck.at/fileadmin/documents/teaching_archive/ws0405/group1.ppt
[5]
www.startvbdotnet.com/sdlc/sdlc.aspx
[6]
swenbyjunoirs.wordpress.com/2007/10/23/systems-development-life-cycle-sdlc/
[7]
en.wikipedia.org/wiki/Information_Engineering
[8]
www.cs.bgsu.edu/maner/domains/RAD.htm
[9]
www.casemaker.com/download/products/totem/rad_wp.pdf
[10]
qa.techinterviews.com/q/200608090
[11]
www.scribd.com/doc/8774478/SDLC-Models
[12]
www.cse.fau.edu/~maria/COURSES/CEN4010-SE/jad.pdf
[13]
www.bitpipe.com/tlist/Joint-Application-Development.html
[14]
en.wikipedia.org/wiki/Computer-aided_software_engineering
[15]
https://www.thedacs.com/databases/url/key/153
[16]
www.agilemethod.net/
[17]
agileintro.wordpress.com/2008/01/04/waterfall-vs-agile-methodology/
[18]
www.extremeprogramming.org/
[19]
www.xprogramming.com/xpmag/whatisxp.htm
[20]
www.ibm.com/developerworks/rational/library/content/03July/1000/
1251/1251_bestpractices_TP026B.pdf