Post on 18-Jan-2016
What is Software
1. It is a set of programs and related documentation which activates hardware and get things done.
2. Instructions that when executed provide desired function and
performance, Data structures that enable the programs to adequately
manipulate information and Documents that describe the operations and
use of the programs.
3. Software is a set of instructions to acquire inputs and to manipulate
them to produce the desired output in terms of functions and
performance as determined by the user of the software.
It also includes a set of documents, such as the software manual, meant
for users to understand the software system. Today's software
comprises the Source Code, Executables, Design documents,
Operations and System Manuals and Installation and Implementation
Manuals.
Types of Software
Software is classified into two classes : Generic and Customized.
Generic software is designed for a broad customer market whose
requirements are very common, fairly stable and well understood by the
software engineer.
Customized products are those that are developed for a customer where
domain, environment and requirements being unique to that customer
and cannot be satisfied by generic products.
Requirements and specifications in a generic product are controlled by
the developer, whereas in the case of the customized product, these are
controlled by the customer and influenced by the practices of that
industry.
The bare minimum essential attributes of good software are four
Maintainability Dependability Efficiency Usability
Categories of Software
All such software applications are categorized into five types for
convenience. They are
System Software : It is the enabler and service provider to software
applications loaded on the computer system. It regulates the system’s
performance and helps to run user-initiated applications. (DOS, Unix)
Business Software : It can be generic or customer specific product.
Some are common to all industries while some deal with industry
specific information processing requirements. (ERP, SCM, CRM
Packages)
Design and Scientific Software : It deals with processing requirements in
their specific field. They are written for specific applications using the
principles and formulae of each field.
Continued ….
Categories of Software ….. Continued …….
Embedded Software : When software written to perform certain functions
under control conditions and further embedded into hardware as a part
of larger systems, is called embedded software.
Artificial Intelligence : it uses non numerical algorithms which use the
data and information generated in the system, to solve the complex
problems. These problem scenarios are not generally amenable
(responsive) to problem-solving procedures, and require specific
analysis and interpretation of the problem to solve it.
What is Engineering
Engineering means Design & Build. So software engineering means
systematic, structured and professional approach of designing and
developing software. Software engineering is a layered technology to
provide maximum quality.
It is defined as discipline that addresses Economic, Design,
Maintenance, Implementation aspects of the software.
It is systematic, scientific and methodical use of standards, models and
algorithms in design and development. It considers issues like
hardware, operating systems, interoperatability between platforms,
performance, scalability and upgrades.
System Analyst / Software Engineer
Designing & Implementing systems to suit organizational needs are the
functions of system analyst. He/she plays a major role in seeing business
benefit from computer technology. He is a person who conducts a
methodical study and evolution of an activity to identify its desired
objectives in order to determine procedures by which these objectives can
be gained. (Methodical study – Define Objectives – Decide procedures – in
controlled environment – with available resources – to achieve common
goals)
System Analyst / Software Engineer - Interpersonal Skills
Communication
Understanding
Teaching ( Educating people )
Selling ( selling ideas, promoting innovations )
Creativity ( Own ideas )
Authority ( Confidence to tell people what to do )
Responsible
Versatility ( Doing different projects & handling changes )
System Analyst / Software Engineer - Technical Skills
1. Analysis and Modeling abilities
2. Conceptualize a software solution and support it by design.
3. Dynamic interface (Blending technical and non-technical
considerations in functional specifications and general design.)
4. Project Management (scheduling, coordinating, staffing, directing,
planning, control)
5. Problem solving (reducing problems to their elementary levels,
developing alternative solutions )
6. Domain knowledge of software systems.
7. Essential Technology and language skills - Basic Knowledge
Change agent
Investigator & monitor
Architect
Psychologist
Salesperson
Politician
User interface analyzer
Behavioral issues
System contracts
Conflict solutions.
Role of System Analyst / Software Engineer
Role of System Analyst / Software Engineer in each phase of SDLC
What is System Types of System
Elements of the System Characteristics of the System
Organizational relationship
among functioning units.
Deterministic / Probabilistic
Open / Closed system
Physical / Abstract
Empirical / Conceptual
Natural / Manmade
Social / Man-machine / Exclusive machine
Inputs
Outputs
Processes
Control
Feedback
Organization
Interaction
Interdependence
Integration
Environment
Boundaries and Interface
Quality
Central Objective
What is a System
It is a collective entity consisting of groups of elements that are
interdependent, interrelated and that interact to achieve certain
objectives. A system could be a part of bigger system.
System Definition
General systems theory is concerned with “developing a systematic,
theoretical framework upon which to make decisions. It discourages
thinking in a vacuum and encourages consideration of all the activities of
the organisation and its external environment. The idea of systems has
become more practical and necessary in conceptualizing the
interrelationship and integration of operations, especially when using
computers. Thus a system is a way of thinking about organizations &
their problems. It also involves a set of techniques that helps in solving
problems.
The term system is derived from the Greek word “Systema” which means
a organizational relationship among functioning units or components.
e.g. Transport system, Telephone system.
Common Characteristics of Any System
Organization :- Arrangement of components to achieve objectives. Such a arrangement portrays a system sub-system relationship, define the authority structure, specifies formal flow of communication and formalizes chain of commands.
Interaction :- Manner in which components functions with each other.
Interdependence :- Proper coordination and linking of components.
Integration :- It is the completeness of the system
Central Objective :- user must know the central objective early in the analysis for successful design and conversion.
Environment :- It is the source of external elements that impinge on the system. In fact it often determines how a system must function
Boundaries & Interface :- A system should be defined by its boundaries. i.e. the limits that identify its components, processes, and interrelationship when it interfaces with another system. e.g. a teller system in commercial bank is restricted to the certain related activities.
Concept of sub-system & supra system
Sub system Supra system Super system
Human beings… Organisation… Industry… Economy… Global economy.
Deterministic & Probabilistic System
A deterministic system operates in a predictable manner and in a given
environment. The behavior of the system’s internals is known with
certainty.In other words, in a deterministic system the next state of the
the system can be predicted without doubt if the current state of the
system is known.
In contrast, a probabilistic system operates in an unpredictable manner.
The behavior of the system internal is probabilistic and hence its
outcome becomes unpredictable. Even if the status of the current system
is known, the next state of the system cannot be predicted with certainty.
Closed or Open System
A closed system is one that is self contained and self reliant (dependent),
and does not need to interact; it is not influenced by the external
environment.
Open systems are designed to exchange or to interact with the
environment and react to inputs accordingly. These systems are
designed to receive undefined inputs. The design and architecture of the
open system is such that it is easily adaptable to changes arising out of
environmental changes.
Exercise : write short note on
Physical / Abstract Systems Empirical / Conceptual Systems
Natural / Manmade Systems Man-machine / Exclusive machine Systems
A large complex system is built with principles to ensure effective
system design. The principles used in system building are
Decomposition Simplification Decoupling
1. Identify & Understand the problem
2. Breaking down the problem into sub problems – Modularity
3. Objective Definition
4. Preliminary Investigation - Fact Finding - Information Gathering
5. Feasibility Study
6. System Analysis
7. System Design
8. Coding - Programming
9. Testing
10. Implementation
11. Maintenance & Support
Software architecture embodies modularity; that is, software is divided
into separately named and addressable components, called modules
that are integrated to satisfy problem requirements.Modularity is the
single attribute of software that allows a program to be intellectually
manageable. As the number of modules grows, the effort (cost)
associated with interfacing the modules also grows.
Coupling - Coupling is a measure of interconnections among modules
in software structure and program structure. The concept is used in
design and architecture.
Questionnaire
Random Sampling
Document Study
Interviews
Observation
Define Prime objectives.
Define sub-system (modular) objectives.
Definition of system procedures and functions.
Definition of system constraints.
Definition of system maintenance responsibility.
Technical
Operational
Economical
Social
Motivational
Technical Feasibility - Analysis showing the feasibility of meeting
requirements through software capability, reliability, availability and the
skills of development team. It is concerned with whether the system
proposed for development can be computerized. But due to rapid &
fantastic development in the hardware industry, now technical feasibility
means whether to & how to computerize. This calls for a look on the
software and computer experts rather than the hardware.
Operational Feasibility - analysis of the operational environment (users, work culture, capacity and capability of organisation etc.) to confirm whether the system will succeed in actual usage even though it is technically and economically feasible. It focuses on the willingness and ability of the management, employees, customers and suppliers of an organization to operate, use and support a proposed system.
Economical feasibility :- It is basically cost benefit analysis. consideration of Startup Cost ( Salaries to programmers and analysts, preparation of data and system manuals, other supporting documents, cost of additional hardware and training ) & Operational Cost ( H/w or S/w rental of depreciation charges, Salaries of operating staff, maintenance staff, installation cost, overheads)
Steps to be followed in CBA Cost benefit Analysis1. Study the information 2. Define the objectives3. Determine various inputs & outputs 4. Establish main system5. Identify changes 6. Estimate cost involved7. Estimate benefits 8. Perform CBA
Analysis Phase - it involves preparing a detailed analysis of the
different functions to be carried out by the system and identification of
the data flow among the different functions. Each function required by
the user is studied carefully and then recursively decomposed into
various subfunctions and the data flows.
Detailed Study of Existing System’s procedures, Existing Systems
Document Study, Its Significance, Num. Of Copies, Information Flow,
File Organizations, Validations & Complexities, Data Processing
Requirements, Such as Searching, Sorting, Merging & Indexing.
Process Logic Etc.
Output Design
Input Design
File Design
ERD to Files
Normalization
Process Design
Structured English
Decision Trees
Decision Tables
Code Design
Menu Design
Location Wise Testing
Onsite
Off Site - Developer’s Site
User Wise Testing
End User - Operators
Programmers
Software Engineer
System Design
Design Phase - The exact requirements of the customer are determined and documented in a SRS Document. The goal of the design phase is to transform the requirements specification into a structure that is suitable for implementation in some programming language. In technical terms, through the design phase we derive the software architecture from the SRS Document. There two distinct design approaches are being followed. I.e. Traditional design approach and object oriented approach.
Interface design - it describes how the software communicates with itself I.e. within various components.
Software Testing
Location wise testing User wise testing General Testing
Location wise Testing – Onsite (Client’s Site) , Offsite (Developer’s site)
Output Design
Contents Format
Location Frequency
Response Volume
Data-File Design
Normalisation
ERD into filesProcess Design ( Specification )
Structured English, Decision trees, Decision Tables
Data flow diagrams
Functional decomposition diagrams
Program Specification
Menu Design
Code Design
Input Design
Data Recording Data Conversion
Data Verification Data Control
Data Validation
Data Correction
User wise TestingUser or OperatorRun all the programs with test dataList out the errors foundFollow data security measures, backups, recoveries as per system specifications.
ProgrammerPreparation of test data and filesLogical error handling of program modules & debug themDocumentation of bugs and effort to remove them
System AnalystModule wise and system wise study of errors.Comparison of outputs with designOverall monitoring and control activity.Beta Test - a test is conducted at customer site by the end user without the presence of developer.
Black Box Test - a test to confirm whether the outcome is correct and as expected for the given inputs.
White box testing - it tests the internals of the system. It tests all internal independent paths, logical decisions, loops within boundaries and internal data structure.
Bottom up Testing - a process of testing that begins at the lowest level and moves upwards in layers. ( sub module to module to sub system … ) - Similarly Top Down Testing
Incremental testing - testing strategy in which sub systems are tested in isolation as units, the testing then continues for integration testing.
Integration Testing - Systematic testing process that discovers errors associated with interfaces which build integrated program structure.
Unit Testing - testing an individual module in isolation. This is in contrast to integration testing.
Usability testing - it measures the ease of use and satisfaction of the users.
Procure necessary h/w and s/w. – Site Preparation
Procurement of necessary preliminary software
Creation of master files with necessary updates
Install the system package, executable version
Training to all end users
Preparation of user manuals
Monitor the running operations
Discard the old system.
System Conversion
Version Control
Implementation
System implementation includes all those activities that take place to
convert from the old system to the new. The new system may be totally
new, replacing an existing manual or automated system, or may be a
major modification to an existing system. Proper implementation is
essential to provide a reliable system to meet organization requirements.
Preparation of user manuals
Creation of master files with necessary updates
Training to all end users
Procure necessary h/w and s/w.
Install the system package, executable version
Monitor the running operations
Discard the old system.
User Manual - It provides a vehicle of communication between customer and developer. It is prepared using information form the system definition as well as the results of prototype studies and mock-ups of user displays and reports.
User’s Manual Should Contain
System objectives
Related system
ResponsibilitiesCost benefit analysis
Data flow diagrams
Operating procedures Security measures
File layouts
Report layouts
System process logic
Validation parameters
Summery about system results
Maintenance - it is a process for modifying the software after its release
to customer. There are different types of maintenance, namely
corrective, preventative, avoidance and adaptive.
Four different types of changes encountered during the maintenance
phase.
Corrective :- It changes the software to correct defects
Adaptive :- It results in modification to the software to accommodate
changes to its external environment.
Enhancement (Perfective) :- It extends the software beyond its original
functional requirements
Preventive :- It makes changes to computer programs so that they can
more easily corrected, adapted and enhanced.
1. Water Fall Model – Classic Life Cycle – Linear Approach
2. Prototyping Approach
3. Spiral Model
4. 4 GT – CASE Tools
5. OOM – Object Oriented Modeling / Programming
6. RAD – Rapid Application Development
ProblemIdentification
Modularity
ObjectiveDefinition
FactFinding
FeasibilityStudy
SystemAnalysis
SystemDesign
Programming
Testing
Implementation
Start
Stop
Gather &Refine
Information
QuickDesign
BuildPrototype
CustomerEvaluation
RefinePrototype
EngineerProduct
Customer Evaluation
Planning Risk Analysis
Engineer the Product
GoNo-Go
Decision