Systems Analysis and Design

INTRODUCTION:
Systems Analysis and Design is the process of investigating an existing system (often a manual system) and designing a new replacement system (usually a computerized system) to carry out the same functions. Systems projects are complex and can last for many months, or even years. People who work in this area are known as Systems Analysts or Systems Designers. In these notes, we will use the term "Systems Analyst", or simply "Analyst" to refer to the person who carries out both Analysis and Design.

  SYSTEM
A system is simply set of components that interact to accomplish some purpose . Systems are all around us . For ex: you experience physical sensations by means of complex nervous system , a set of parts , including your brain , spinal cord,and special sensitive cells under you skin that work to gether to make you feel hot,cold ,itchy and so on. 
A business is also a sytem . Its components – marketing , manufacturing, sales , research , shipping , accounting and personnel all work to gerher to create a profit that befits the employee and stock holders of the firm.

Important systems characteristics :

Ø  Systems have structure, defined by parts and their composition;
Ø  Systems have behavior, which involves inputs, processing and outputs of material, energy or information;
Ø  Systems have interconnectivity: the various parts of a system have functional as well as structural relationships between each other.
Ø  Systems have by themselves functions or groups of functions.



( Informational System Categories )CLASSIFICATION OF SYSTEM

An information system (IS) is any combination of information technology and people's activities using that technology to support operations, management, and decision-making.



Classification of systems can be done in many ways.

Physical or Abstract System
Physical systems are tangible entities that we can feel and touch. These may be static or dynamic in nature. For example, take a computer center. Desks and chairs are the static parts, which assist in the working of the center. Static parts don't change. The dynamic systems are constantly changing. Computer systems are dynamic system


Open Closed System
Systems interact with their environment to achieve their targets. Things that are not part of the system are environmental  elements for the system. Depending upon the interaction with the environment, systems can be divided into two categories,

Man made Information System
The main purpose of information systems is to manage data for a particular organization. Maintaining files, producing information and reports are few functions. An information system produces customized information depending upon the needs of the organization.

Computer Base System:
A system of one or more computers and associated software with common storage called system.A computer is a programmable machine that receives input, stores and manipulates data, and provides output in a useful format. The computer elements described thus far are known as "hardware."

Information System( Business Information System ):
An information system (IS) is any combination of information technology and people's activities using that technology to support operations, management, and decision-making. Information system deals with data of the organizations. The purposes of Information system are to process input, maintain data, produce reports, handle queries, handle on line transactions,generate reports, and other output. These maintain huge databases, handle hundreds of queries etc. The transformation of data into information is primary function of information system.  Three major information systems are
1. Transaction processing systems
2. Management information systems
3. Decision support systems

 Transaction Processing Systems
TPS processes business transaction of the organization. Transaction can be any activity of the organization. Transactions differ from organization to organization. For example, take a railway
Reservation system. Booking, cancelling, etc are all transactions. Any query made to it is a transaction.

Management Information Systems:
These systems assist lower management in problem solving and making decisions. They use the results of transaction processing and some other information also. It is a set of information processing functions. It should handle queries as quickly as they arrive.

 Decision Support Systems:
These systems assist higher management to make long term decisions. These type of systems handle unstructured or semi structured decisions. A decision is considered unstructured if there are no clear procedures for making the decision and if not all the factors to be considered in the decision can be readily identified in advance.



SYSTEM ANALYST

The system analyst is the person (or persons) who guides through the development of an information system. In performing these tasks the analyst must always match the information system objectives with the goals of the organization.

 Role & Need of System Analyst:
Role of System Analyst differs from organization to organization. Most common responsibilities of System Analyst are following:
1) System analysis
It includes system's study in order to get facts about business activity. It is about getting information and determining requirements. Here the responsibility includes only requirement determination, not the design of the system.

2) System analysis and design:
Here apart from the analysis work, Analyst is also responsible for the designing of the new system/ application.

3) Systems analysis, design, and programming:
Here Analyst is also required to perform as a programmer, where he actually writes the code to implement the design of the proposed application. Due to the various responsibilities that a system analyst requires to handle, he has to be multifaceted person with varied skills required at various stages of the life cycle. In addition to the technical know-how of the information system development a system analyst should also have the following knowledge.
Ø  Business knowledge: As the analyst might have to develop any kind of a business system, he should be familiar with the general functioning of all kind of businesses.
Ø  Interpersonal skills: Such skills are required at various stages of development process for interacting with the users and extracting the requirements out of them.
Ø  Problem solving skills: A system analyst should have enough problem solving skills for defining the alternate solutions to the system and also for the problems occurring at the various stages of the development process.





THE SYSTEMS DEVELOPMENT LIFE CYCLE (SDLC),
OR
SOFTWARE DEVELOPMENT LIFE CYCLE

In systems engineering, information systems and software engineering, is the process of creating or altering systems, and the models and methodologies that people use to develop these systems. The concept generally refers to computer or information systems.

Systems and Development Life Cycle (SDLC) is a process used by a systems analyst to develop an information system, including requirements, validation, training, and user (stakeholder) ownership. Any SDLC should result in a high quality system that meets or exceeds customer expectations, reaches completion within time and cost estimates, works effectively and efficiently in the current and planned Information Technology infrastructure, and is inexpensive to maintain and cost-effective to enhance.
For ex. Computer systems are complex and often (especially with the recent rise of Service-Oriented Architecture) link multiple traditional systems potentially supplied by different software  vendors. To manage this level of complexity, a number of SDLC  models have been created: "waterfall"; "fountain"; "spiral"; "build and fix"; "rapid prototyping"; "incremental"; and "synchronize and
stabilize.

The systems development life cycle (SDLC) is a type of methodology used to describe the process for building information  systems, intended to develop information systems in a very  deliberate, structured and methodical way, reiterating each stage of the life cycle.
System Development Phases:
Systems Development Life Cycle (SDLC) adheres to important phases that are essential for developers , such as planning, analysis, design, and implementation, and are explained in the section below.
 SDLC Phases:
·        Problem Definition
·        Design
·        Analysis
·        Validation
·        Implementation
·        Evaluation


Explanation of the SDLC Phases:

Requirements gathering and analysis
The goal of system analysis is to determine where the problem is in an attempt to fix the system. This step involves "breaking down" the system in different pieces to analyze the situation, analyzing project goals, "breaking down" what needs to be created and attempting to engage users so that definite requirements can be defined (Decomposition computer science). Requirements Gathering sometimes requires individuals/teams from client as well as service provider sides to get detailed and accurate requirements....
Design:
In systems, design functions and operations are described in detail, including screen layouts, business rules, process diagrams and other documentation. The output of this stage will describe the new system as a collection of modules or subsystems. The design stage takes as its initial input the requirements identified in the approved requirements document.

Build or coding:
Modular and subsystem programming code will be accomplished during this stage. Unit testing and module testing are  done in this stage by the developers. This stage is intermingled with the next in that individual modules will need testing before integration to the main project.

Testing:
The code is tested at various levels in software testing. Unit, system and user acceptance testings are often performed. This is a grey area as many different opinions exist as to what the stages of
testing are and how much if any iteration occurs.
Below are the following types of testing:
Ø  Data set testing.
Ø  Unit testing
Ø  System testing
Ø  Integration testing
Ø  Black box testing
Ø  White box testing
Ø  Regression testing
Ø  Automation testing
Ø  User acceptance testing
Ø  Performance testing
Ø  Production

 Operations and maintenance
The deployment of the system includes changes and  enhancements before the decommissioning or sunset of the  system. Maintaining the system is an important aspect of SDLC. As key personnel change positions in the organization, new changes  will be implemented, which will require system updates.


DATA FLOW DIAGRAMS

A data-flow diagram (DFD) is a graphical representation of  the "flow" of data through an information system. DFDs can also be  used for the visualization of data processing (structured design).  On a DFD, data items flow from an external data source or  an internal data store to an internal data store or an external data  sink, via an internal process. A DFD provides no information about the timing of processes, or about whether processes will operate in sequence or in parallel.



 OVERVIEW OF DFD:
It is common practice to draw a context-level data flow diagram first, which shows the interaction between the system and external agents which act as data sources and data sinks. On the  context diagram (also known as the 'Level 0 DFD') the system's interactions with the outside world are modeled purely in terms of data flows across the system boundary. The context diagram shows the entire system as a single process, and gives no clues as to its internal organization. This context-level DFD is next "exploded", to produce a Level 1 DFD that shows some of the detail of the system being modeled. The Level 1 DFD shows how the system is divided into sub-systems (processes), each of which deals with one or more of the data flows to or from an external agent, and which together provide all of the functionality of the system as a whole. It also identifies internal data stores that must be present in order for the  system to do its job, and shows the flow of data between the
various parts of the system.

How to develop Data Flow Diagram:

1. The system designer makes a context level DFD or Level 0, which shows the "interaction" (data flows) between "the system" (represented by one process) and "the system environment"
(represented by terminators).
2. The system is "decomposed in lower-level DFD (Level 1)" into a set of "processes, data stores, and the data flows between these processes and data stores".
3. Each process is then decomposed into an "even-lower-level  diagram containing its sub processes".
4. This approach "then continues on the subsequent sub  processes", until a necessary and sufficient level of detail is reached which is called the primitive process (aka chewable in one bite).
___________________________________________________________________________
SYSTEM DESIGN

Systems design is the process or art of defining the architecture, components, modules, interfaces, and data for a system to satisfy specified requirements. One could see it as the application of systems theory to product development. There is some overlap with the disciplines of systems analysis, systems architecture and systems engineering. System design is divided into two types:

1)  Logical Design
The logical design of a system pertains to an abstract representation of the data flows, inputs and outputs of the system.  This is often conducted via modeling, which involves a simplistic
(and sometimes graphical) representation of an actual system.
Ø   Data flow diagrams
Ø   Entity Life Histories
Ø   Entity Relationship Diagrams




2) Physical Design
The physical design relates to the actual input and output  processes of the system. This is laid down in terms of how data is  inputted into a system, how it is verified/authenticated, how it is processed, and how it is displayed as output.

Requirements analysis - analyzes the needs of the end users or customers
Benchmarking — is an effort to evaluate how current systems are used
Systems architecture - creates a blueprint for the design with  the necessary specifications for the hardware, software, people  and data resources. In many cases, multiple architectures are evaluated before one is selected.
Design — designers will produce one or more 'models' of what they see a system eventually looking like, with ideas from the  analysis section either used or discarded. A document will be produced with a description of the system, but nothing is  specific — they might say 'touch screen' or 'GUI operating system', but not mention any specific brands;
Computer programming and debugging in the software world, or detailed design in the consumer, enterprise or commercial world  specifies the final system components.
System testing - evaluates the system's actual functionality in  relation to expected or intended functionality, including all integration aspects.


SYSTEM IMPLEMENTATION

Systems implementation is the construction of the new system and its delivery into ‘production’ or day-to-day operation.  The key to understanding the implementation phase is to  realize that there is a lot more to be done than programming. During implementation you bring your process, data, and network models to life with technology. This requires programming, but it  also requires database creation and population, and network installation and testing. You also need to make sure the people are taken care of with effective training and documentation. Finally, if you expect your development skills to improve over time, you need to conduct a review of the lessons learned.

Process of Implementation which involves the following steps:
• Internal or outsourcing (trend is "outsourcing")
• Acquisition: purchasing software, hardware, etc.
• Training: employee (end-users) training, technical staff  training. SQL training in 5 days costs around $2000, + airplane, hotel, meals, rental car ($3000 to 5000); evaluation
• Testing:
• a bigger system requires more testing time
• a good career opportunity for non-technical people who wish to get in the door in the IT jobs.
• Documentation:
• backup
• knowledge management system
• Actual Installation
• Conversion: Migration from the old system to a new system
• Maintenance: very important; if you don't maintain the new  system properly, it's useless to  develop a new system.
• monitor the system,
• Upgrade,
• Trouble-shooting,
• Continuous improvement

SYSTEM MAINTENANCE

Once the system is installed, the MIS job has just begun. Computer systems are constantly changing. Hardware upgrades  occur continually, and commercial software tools may change every year. Users change jobs. Errors may exist in the system. The  business changes, and management and users demand new  information and expansions. All of these actions mean the system  needs to be modified. The job of overseeing and making these  modifications is called software maintenance. 

The pressures for change are so great that in most  organizations today as much as 80 per cent of the MIS staff is  devoted to modifying existing programs. These changes can be time consuming and difficult. Most major systems were created by teams of programmers and analysts over a long period. In order to make a change to a program, the programmer has to understand how the current program works. Because the program was written by many different people with varying styles, it can be hard to understand.

 Finally, when a programmer makes a minor change in one location, it can affect another area of the program, which can cause additional errors or necessitate more changes. One difficulty with software maintenance is that every time part of an application is modified, there is a risk of adding defects  (bugs). Also, over time the application becomes less structured and  more complex, making it harder to understand. These are some of the main reasons why the year 2000 alterations were so expensive and time consuming. At some point, a company may decide to  replace or improve the heavily modified system.