Chapter - 1 Software Development Concept

Chapter - 1 Software Development Concept


1 Introduction
System:
A combination of parts or components, which work together to control a task or an activity, is called system. All system has inputs, a process and outputs.
Basic elements of a system:
All system has 3 basic elements.
                   I.            Input
                II.            Process
             III.            Output
Information System:
The study of complementary network of hardware and software that people an organization used to collect, filter, and process, create, and distribute data is called information system.
There are 6 elements in an information system are as follows:
       I.            People
    II.            Procedure
 III.            Data/information
 IV.            Hardware
    V.            Software
 VI.            Communication


Types of Information system



The six major types of information systems corresponding to each organizational level (the four levels shown in figure above) are:
1. Transaction Processing Systems (TPS): serve the operational level of an organization.
2. Knowledge work systems (KWS)
3. Office automation systems (OAS) to serve the knowledge level of an organization.
4. Decision-support systems (DSS)
5. Management information systems (MIS) serve the management level of the organization.
6. Executive support systems (ESS) serve the strategic level of an organization.


System Analyst

The person who is responsible for the analysis design and implementation of the business system to the computer is called System Analyst.
·       Role of a system Analyst: Success of every system development depends on the role of system analyst. Some important roles of system are as following:
a.     Change Agent:-Analyst must carefully plan, monitor and implements the new changes in an organization so that the user will accept the new changes.
b.    Investigator & monitor:-They may have to investigate the failure of an existing system and find out problems and accordingly find the solution.
c.     Architect: - They may have co-ordinate between the user’s logical design requirements and the detailed physical system design.
d.    Psychologist:-The analyst reaches people, interprets their thoughts, a session their behavior and draws conclusions from these interactions.
e.    Motivator: - The analyst will prepare and provide training and proper motivation to use the system.

·       Characteristics of system Analyst
1)     Knowledge of organizations
2)    Knowledge of computer systems and software.
3)    Good- inter- person relation.
4)   Ability to communicate.
5)    An analytical mind.
6)   Breadth of knowledge.

·       Duties & Responsibilities of a system Analyst:
The duty of a system analyst is to co-ordinate the effects of all groups to effectively develop & operate computer based information systems. The major duties of a system analyst are as following:
a)    Defining user’s Requirements:-The analyst should finds the needs by using fact finding techniques like interview, observation etc.
b)   Prioritizing Requirements Agreement:-By conducting common meeting & arriving at agreement, analyst can prioritize the requirements. For this analyst must be diplomatic.
c)    Analyst & Evolution:-On the basic of facts & opinions, system analyst finds the best characteristics of the new or modified system which will meet the user’s stated information needs.
d)   Solving Problems:- System Analyst is basically a problem solver. S/he must study the problem in depth & suggest alternate solutions to management.
e)   Drawing up functional specifications:- Analyst should obtain the functional specifications of the system to be designed & specification must be non-technical so that users and managers can understand.
f)     Designing System;- One of the major duties of the analyst is to design the system.
g)    Evaluating System:- It is analyst critical duty to evaluate a system after it has been in operation for certain period of time.

System development Life Cycle (SDLC)

The process of developing system by set of predefined steps is called SDLC. It consists of a set of steps or phases in which each phase of the SDLC uses the results of the previous one.




A 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. A number of system development life cycle (SDLC) models have been created: waterfall, fountain, and spiral build and fix, rapid prototyping, incremental, and synchronize and stabilize. The oldest of these, and the best known, is the waterfall model: a sequence of stages in which the output of each stage becomes the input for the next. These stages can be characterized and divided up in different ways, including the following
·       Project planning, feasibility study: Establishes a high-level view of the intended project and determines its goals.
  • Systems analysis, requirements definition: Refines project goals into defined functions and operation of the intended application. Analyzes end-user information needs.
  • Systems design: Describes desired features and operations in detail, including screen layouts, business rules, process diagrams, pseudo -code and other documentation.
  • Implementation: The real code is written here.
  • Integration and testing: Brings all the pieces together into a special testing environment, then checks for errors, bugs and interoperability.
  • Acceptance, installation, deployment: The final stage of initial development, where the software is put into production and runs actual business.
  • Maintenance: What happens during the rest of the software's life: changes, correction, additions, and moves to a different computing platform and more. This, the least glamorous and perhaps most important step of all, goes on seemingly forever.
1.5 Importance and necessity of SDLC
a)    It encourages development of software in a systematic and disciplined manner.
b)   It defines entry and exit criteria for every stage.
c)    If we have developed the SDLC, then at which stage on developments is going on we can say.
d)   It can be easy to implement.
e)   It can be complemented under deadline.

1.5 System development model
A descriptive and diagrammatic model of a system is called system development model. A model identifies all the activities. Some of the important models are as follows:-

 Waterfall Model

The waterfall model shows a process, where developers are to follow these phases in order:

1. Feasibility Analysis
2. Design
3. Implement
4. Test
5. Maintain
                                                                                            
In a strict Waterfall model, after each phase is finished, it proceeds to the next one. Reviews may occur before moving to the next phase which allows for the possibility of changes (which may involve a formal change control process). Reviews may also be employed to ensure that the phase is indeed complete; the phase completion criteria are often referred to as a "gate" that the project must pass through to move to the next phase. Waterfall discourages revisiting and revising any prior phase once it's complete. This "inflexibility" in a pure Waterfall model has been a source of criticism by other more "flexible" models.

 

Spiral Model

The key characteristic of a Spiral model is risk management at regular stages in the formal software system development "spiral model", it falls models and rapid prototyping models combine the emphasis has been neglected by other models of risk analysis, particularly suited to large-scale complex systems. Spiral model spiral down to a number of iteration, the four quadrant diagram representative of the following activities:



The steps in the spiral model iteration can be generalized as follows:
1.      The system requirements are defined in as much detail as possible.
2.     A preliminary design is created for the new system.
3.     First prototype of the new system is constructed from the preliminary design.
4.    A second prototype is evolved by a fourfold procedure:
·       Evaluating the first prototype in terms of its strengths, weaknesses.
·       defining the requirements of the second prototype;
·       Planning and designing the second prototype.
·       Constructing and testing the second prototype.

Prototype Model
The Software Prototyping refers to building software application prototypes which display the functionality of the product under development but may not actually hold the exact logic of the original software.
Software prototyping is becoming very popular as a software development model, as it enables to understand customer requirements at an early stage of development. It helps get valuable feedback from the customer and helps software designers and developers understand about what exactly is expected from the product under development.
FEASIBILITY STUDY
Feasibility study is the study of whether the system is feasible or not to design. It consists of technical feasibility, economical feasibility, operational feasibility, legal feasibility and behaviour feasibility.
Types of Feasibility Study:
1. Economical Feasibility:
It concerns with cost effectiveness of the system. The main objective of economical feasibility is to calculate approximate cost- both the development cost and the operational cost and the benefits from the system. Management always think that the short term cost is overshadowed by the long term gain. Both direct and indirect benefits should be measured.
2. Technical Feasibility:
It concerns with the availability of the hardware, software and the support equipments for the complete development of the system. It also deals with the other different types of technical requirements: uninterrupted power supply, network and internet connection etc. Moreover it also deals the technical manpower to develop and operate the system.
3. Operational Feasibility:
It concerns with smooth operation of the system. It is all about the problems that may occur during operation of the system after its development. For the smooth operation of the system, there are different factors such as: accuracy, response time, security, services and the efficiency of the system.
4. Behaviour Feasibility:
It concerns with behavior of the users and the society towards the new system/technology. Generally, most of the traditional employees are not easily ready to upgrade them with the new system/technology. They may feel that their jobs are unsecured because of new system and react accordingly.
5. Legal Feasibility:
It concerns with legal issue of the system. If the system is illegal then the system designing is meaningless. Everything is measured whether it is legal or illegal. It considers copyright law, labour law, foreign trade, tax etc. It plays role in the contract between the clients and the developer and also considers the code ownership of the system.
6. Schedule Feasibility:
It is the process of splitting project into tasks and estimate time and resources required to complete each task. It determines the deadline to complete a system and schedule the task accordingly. If the system is completed in the given deadline then it is called good system design otherwise it affects other feasibility such as economical, technical, operational.
System Design
The goal of the design phases is to transform the requirements specification into a structure that is suitable for implementation in some programming language. Currently, two distinct design approaches are being followed in different industries: traditional design approach.
·       Traditional Design:- It is also called structured design. It describes the process that act transform data into useful information. It relies on a set process models that graphically describes a system. Process modeling identifies the data flowing into a process.
·       Object-oriented Design:-Object-oriented analysis combines data and the processes that act on the data into things called objects. Using an object-oriented design, a programmer then transforms the objects into reusable code and components. An object is a member of a class, which is a collection of similar objects. Objects posses characteristics called properties, which it inherits from its class or possesses on its own.
Two types of design exist: Logical design and physical design.
·       Logical design:-Logical design identifies the records and relationship to be handled by the system. It focuses on the reasoning by breaking down the system into a subsystem, and each subsystem into smaller subsystems, until the process cannot be further repeated. It establishes the relationships among various subsystems, the records and variables in the subsystems, and interrelationships among variables and subsystems.
·       Physicals design:-Physical design proceeds, after logical design in complete, in two steps. At first an initial broad level design; followed by a detailed design. It addresses the physical aspects of the system such as inputs and output devices, hardware configurations, memory and storage, physical security etc. the Board design identifies the main architecture of the proposed system. Detailed designed and detailed user procedures are documented.
System Development
 At this stage, the system design is given to the programmer for coding in programming language. The programmer should have the knowledge of selected language to find the errors and modify the program. There are many tools available for help through the steps of systems design. Let, the teams are making a system in prototype model.

Prototyping
Prototyping means a creation of working model of a new computer system or program for testing and refinement. Prototyping is used in the development of both new hardware and software systems and new systems of information management. Prototyping is an important complement of Rapid Application Development (RAD). RAD is the approach where systems are developed quickly. The system that is developed is called prototype. It is thus heavily user-oriented because the prototype is given to user to use and they will tell the weakness to improve the system.

CASE (Computer Aided Software Engineering)
 CASE tools are a computer based product aimed at supporting one or more software engineering activities within a system or software development process. CASE software, however, is expensive, requires expensive training and is difficult to use.

System Testing
System testing is an investigation conducted to provide stakeholders with information about the quality of the product or services under test. System testing also provides an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation.

• Black-box or behavioral testing (knowing the specified function a product is to perform and demonstrating correct operation based solely on its specification without regard for its internal logic)
• White-box or glass-box testing (knowing the internal workings of a product, tests are performed to check the workings of all independent logic paths)
Ø White Box Testing
This testing strategy is very efficient in module testing because control and data flow is clear within the module. However, it is possible to apply this testing strategy within whole program. White Box Testing is sometimes called glass box testing. It is a test case design method that uses the control structure if the procedure designs to derive test case. Using white box testing methods, the software engineer can derive test that
·       Guarantee that all independent paths within a module have been exercised at least once.
·       Exercise all logical decisions on their true and false sides.
·       Exercises all loops at their boundaries and within their operational bounds.
·       Exercise all internal data structure to ensure their validity.

Ø Black Box Testing
Black Box Testing is used to review module or program function from outside. A black box strategy is very efficient in the function and system testing. The testing applies to determine whether inputs are accepted as planned. It is also called behavioral testing, focuses on the fictional requirement of the software. Black box testing enables the software engineer to derive sets of inputs conditions that will fully exercise all the functional requirements for a program. Black box testing is not an alternative to white box testing techniques. Rather, it is a complementary approach that is likely to uncover different class of errors than white box method. It attempts to find errors in the following categories:
·       Interface errors
·       Errors in data structure or external data base access
·       Behavior or performance errors and
·       Initialization and termination errors.

Implementation

System implementation generally focuses on the coding and installing of the system. The system implementation is composed of activities, which are coding, testing, and installation. The purpose of these steps is to convert the physical system specification into the working and reliable software.

Coding is the process whereby the physical design specification created by the analysis team is turned into working computer code by the programming team. Once the code has begun the testing procedure can begin and proceed in parallel.
Installation is also an activity involved in the implementation phase and is the process during which the current system is replaced by the new system. There are three strategies of installation:
·       Direct Installation:
§  In the direct installation the old system is turned off and new system is installed. This type of installation is very risky.
·       Parallel Installation:
§  In parallel installation the old and new systems run in parallel. It is the riskless type of the installation. In this method, the system are run in parallel until the end users are satisfied by the new system’s performance, then the old system is turned off.
·       Phased installation:
§  In the phased installation, the old system is changed to the new incrementally, starting one or few functional components and then gradually extending the installation to cover the whole new system.
Maintenance and reviews
System maintenance denotes the process of modifying a software product after it has been delivered to the customer or organization. Most system needs maintenance due to wear and tear caused by use. Maintenance involves performing ay one or more of the following three kinds of activities.
1.      Correcting errors that were not dissolved during the system development phase. This is called corrective maintenance.
2.     Importing the implementations of the system and enhancing the functionalities of the system according to the customer’s requirements. This is called perfect maintenance.
3.     Porting the software to a new environment e.g. to a new operating system. This is called adaptive maintenance.
A post- implementations review helps developers and users to analyze and highlight the successful and non-so-successful parts of a system. This review enables to perform a systematic search for better ways to develop and implement systems, apart from helping the organizations to recap the important lesion it gained from developing the system. Such as an audit is normally conducted after the system is fully operational and it performance can be evaluated.

CONCEPT OF SYSTEM DESIGN TOOLS
a) Context Diagram

The context diagram gives a board overview of the system and identifies the major inputs, processes, and outputs in the system. It allows users and developers to view the big picture. The context diagram represent diagram represents the entire system under investigation. This diagram should be drawn first, and used to clarify and agree the scope of the investigation.



b)  Data flow diagram

Data Flow Diagrams (DFDs) are the versatile diagramming tools. We can use the Data Flow Diagrams to represent both physical and logical information of the system. There are two different standard sets of DFD symbols to represent the data flow, database, processes and source/links or external entities. In this documentation we have used the standard set of DeMarco and Yourden. A DFD is a hierarchical graphical model of a system that shows the different processing activities or functions that the system performs and the data interchange among these functions. In the DFD terminology, it is useful to consider each function as a processing station that consumes some input data and produces some output data. DFD is an elegant modeling technique that turns out to be not only useful for several other applications such as showing the flow of documents or items in an organization.


 c) E-R (Entity Relationship) diagram
The Entity Relationship (ER) Data Model is a detailed logical representation of the entities, associations and data elements for a system. A graphical representation of the ER data model is known as ER Diagram.
An entity is a person, place, object, event or concept in the user environment about which the organization wishes to maintain data. An entity has its own identity and attributes that distinguish it from other entities. Different entities have different relationships with one another.
The basic symbols used in ER diagram are:



d) System flow chart

System flowcharts are a way of displaying how data flows in a system and how decisions are made to control events.
To illustrate this, symbols are used. They are connected together to show what happens to data and where it goes. The basic ones include:



Note that system flow charts are very similar to data flow charts. Data flow charts do not include decisions, they just show the path that data takes, where it is held, processed, and then output.
Using system flowchart ideas
This system flowchart is a diagram for a 'cruise control' for a car. The cruise control keeps the car at a steady speed that has been set by the driver.
A system flowchart for cruise control on a car
The flowchart shows what the outcome is if the car is going too fast or too slow. The system is designed to add fuel, or take it away and so keep the car's speed constant. The output (the car's new speed) is then fed back into the system via the speed sensor.
e) Decision table
Decision tables, like flowcharts and if-then-else and switch-case statements, associate conditions with actions to perform, but in many cases do so in a more elegant way. Structure of a decision table :

The four quadrants
Conditions
Condition alternatives
Actions
Action entries

An Example of a decision table:
Rules
Conditions
Printer does not print
Y
Y
Y
Y
N
N
N
N
A red light is flashing
Y
Y
N
N
Y
Y
N
N
Printer is unrecognized
Y
N
Y
N
Y
N
Y
N
Actions
Check the power cable
X
Check the printer-computer cable
X
X
Ensure printer software is installed
X
X
X
X
Check/replace ink
X
X
X
X
Check for paper jam
X
X





f) Decision tree
A decision tree is a decision support tool that uses a tree-like graph or model of decisions and their possible consequences, including chance event outcomes, resource costs, and utility. It is one way to display an algorithm.
Decision trees are commonly used in operations research, specifically in decision analysis, to help identify a strategy most likely to reach a goal.
g) Use case Diagram
Use case represents the functional requirements of the system. A Use case model consists of actors and use cases of the system. An actor represents the role that a user can play.
The other actor job employer can also sign up. After successful sign up the job employer is provided with the required username and password with which the job employer can login into to his own account. After login the job employer can create, update and add its company profile as requirement. Employer posts the jobs so that the different job seeker can notice the posted jobs and apply for it. The employer can view the resume posted by various job seeker. Company can also change the username and password according to his need.   


UNIT - 1  [HOMEWORK QUESTIONS ]
1.      What the major activities in SDLC are with based on waterfall model?
2.     What is feasibility study? Why feasibility study is important in system analysis phase? Explain.
3.     What is feasibility study? Explain different levels of feasibility study.
4.    What is system? Explain the basic elements of system.
5.     Who is system analyst? List out the roles of system analyst.
6.    Define SDCC. Explain different stages of system development life cycle (SDLC) with clear figure.
7.     Define program logic. Explain different types of program logic tools.
8.    What do you mean by system testing? Differentiate between black box testing and white box testing.