Software Engineering
What is Software
: It is a set of programs and related documentation which activates hardware
and get things done.
Engineering means Design
& Build.
So software engineering
means systematic, structured and professional approach of designing and developing
software.
Initially (around 1965)
there was a concept of Software Guru. - Everybody was developing software as
per his/her perception. - At that time Software development was just programming
- There was vast difference between development techniques. - Need of introducing
engineering approach in Software. - SAD - SSAD - SE (Software Engineering)
Software development means
developing the 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.
Types of system
Open / Closed system ( interaction with surroundings )
Physical / Abstract
Empirical / Conceptual
Natural / Manmade
Social / Man-machine / Exclusive machine
Deterministic / Probabilistic ( Weather forecast )
Elements of the system
Inputs
Outputs
Processors
Control
Feedback
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.
What are modules ( Modularity
)
- 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.
System Analyst
Introduction :- Designing & Implementing systems to suit organisational
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 such as a business to identify its desired
objectives in order to determine procedures by which these objectives can be
gained.
Interpersonal Skills
Communication
Understanding
Teaching ( Educating people )
Selling ( selling ideas, promoting innovations )
Creativity ( Own ideas )
Authority ( Confidence to tell people what to do )
Responsibilities
Versatility ( Doing different projects & handling changes )
Technical Skills
Basic knowledge
Questioning attitude
Dynamic interface ( Blending technical and non-technical considerations in functional
specifications and general design.
Project Management ( scheduling, coordinating, staffing, directing, planning,
control etc.)
Problem solving ( reducing problems to their elementary levels, developing alternative
solutions )
Role of system analyst
Change agent
Investigator & monitor
Architect
Psychologist
Salesperson
Politician
User interface analyzer
Behavioral issues
System contracts
Conflict solutions.
Role of Software Engineer
as per System Development Life Cycle phases.
System Development Life Cycle / Phases of SDLC
1. Understand the problem
2. Breaking down the
problem into sub problems - Refer Modularity
3. Objective Definition
Activities
Define prime objectives
Define sub-system (modular) objectives
Definition of system procedures and functions
Definition of system constraints
Definition of system maintenance responsibility.
4. Fact Finding Methods
Observation
Record searching
Interviews ( structured & non structured / advs & disadvs of both )
Questionnaire
Random Sampling
5. Feasibility Study
- Technical Feasibility
:- 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
:- 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 C&B Analysis
Study the information
Define the objectives
Determine various inputs & outputs
Establish main system
Identify changes
Estimate cost involved
Estimate benefits
Perform C&B analysis i.e. Decision making.
6. System analysis
Detailed Study Of Existing System ( Procedures )
Existing Systems Document Study, Its Significance, Num. Of Copies, Information
Flow
File Organisations
Validations & Complexities
Data Processing Requirements Such As Sorting Or Merging
Process Logic Etc.
7. System Design
- Output Design
Contents
Format Location
Frequency Response
Volume
- Input Design
Data Recording
Data Conversion Data Verification
Data Control Data Validation
Data Correction
- Data-File Design
Normalisation
ERD into files
- Process Design ( Specification
)
Structured English, Decision trees, Decision Tables
Data flow diagrams
Functional decomposition diagrams
Program Specification
Menu Design
Code Design
8. Coding ( Programming
)
9. Testing
- Location wise Testing
- Onsite (Client's Site) , Offsite (Developer's site)
- User wise Testing
User or Operator
Run all the programs with test data
List out the errors found
Follow data security measures, backups, recoveries as per system specifications.
Programmer
Preparation of test data and files
Logical error handling of program modules & debug them
Documentation of bugs and effort to remove them
System Analyst
Module wise and system wise study of errors.
Comparison of outputs with design
Overall monitoring and control activity.
10. 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.
System Manual should
contain
System objectives
Related system
Responsibilities
Cost benefit analysis
Data flow diagrams
Operating procedures Security measures
File layouts
Report layouts
System process logic
Validation parameters
Summery about system results
Maintenance & Evaluation
Maintenance of the system operations as per requirements of the user over a
period of time. Continuous review so as to accommodate minor changes. Identification
of change - accomodating change - Version control
Software Engineering Approaches
Guru Concept
Design & Build ( Engineering )
Concept of modeling or prototype ( Visual things are better to understand )
Built in prototype & through away prototype
Waterfall Model
Spiral Model
Prototyping
4GL - Object Oriented
Modeling / Prototyping Tools
Structured ( Data ) Modeling
( Entity Relationship Diagram )
Introduction via DBMS notes
Concept of entity set
Mapping 1:1, 1:M, M:M, 1:0/1.
Types :- Unary, Binary, Turnery, Self referenced
Concept of Weak entity or Dependent entity.
Concept Attributes, keys
Generalization, Specialization, Aggregation
Cases 5
Database Design Methods
- Mapping ERD into files
- Normalisation ( Normal
forms )
- Denormalisation :- To
improve performance of normalisation in case of cartision join. Difficult
to join tables if they are more in number so keep few tables
Process Modeling ( Data Flow Diagrams )
Basic Symbols ( Chain
/ Codd or Gayen / Sarssen )
Any Activity Or Process
Data Flow
It means flow of documents and information from one place to another. When documents
flow then physical DFD and when information flows then logical DFD.
Source Or Destination
Destination is Receipent of information
Source is sender of information
Data Source
Stores information for further processing, it is normaly a persistant storage.
DFD
Shows |
DFD
Does Not Show |
What happening in
the system
In better manner then a narative text
- Graphics
- Partitioning
- Top down approach
- Precise textual
support
|
How things Begin and
End
- Loops
- Decisions
- Practicle time
- Sequence activity
precedance
|
Invalid
Data flows |
Valid
data flows |
Process
To Process
Process To Entiry
Process To Data Source |
Entity
To Entiry
Entiry To Data Source
Data Source To Data Source
Process With Y/N Condition |
Levels of DFD ( Exploding
)
Rules For
- Source / Destination
Need not be drawn at every level
At 0th and 1st level must
Duplicate / Triplicate drawing
Shows system boundries
- Data Flow
Name every data flow
Arrows indicate read / write access.
- Data Stores
All data stores should be at 1st level
Identification and numbering
Duplicate and triplicate drawing
- Process
Should have identification
Should have Name ( strong verb and object )
General Steps for drawing
DFD
Identify environment in terms fo sources & destination
Identify In ( events ) and Outs ( Data flows )
Identify external information if required
Produce Context level.
Identify mini-systems for level 1 from the data flows
produce level ( No attention to details & sequence only for logical precedance
Make first level more readable & avoid crossing.
Expand & explode
Write process specification for primitive fully exploded processes ( to explain
how process works )
Loops
Decisions
Sequence
Cases 5
Temporal Modeling (State
Transition Diagrams )
Documentation Techniques
System Flow Charts
It is a diagramatic representation of information expressed in time sequence.
This chart gives the total path of information and stepwise indication of process
and input transformation of data into information. It is useful in
Understanding present system
Designing new system.
Symbols Used
Functional Decomposition
Diagrams
Structured Flow Charts
- It improves maintainability
of the system.
- Top - Down approach with
modular design
- The connections between
modules are limited and the intereaction of data is minimal.
- Improves system quality
while easing maintenance tasks.
- It is a design tool that
visually displays the relationship interact and also graphically depicts the
data that are communicated between modules.
- These charts are developed
prior to the writing of program code, they are not intended to express procedural
logic, a task left to flowcharts and pseudocode nor do they describe the actual
physical interface between processing functions. They identify the dat apasses
existing between individual modules that interact with another.
- Concept of called module
and calling module.
Hierarchical Input Process
Output (HIPO) Chart
These are graphical diagrams rather than narative description of system
They assist the analyst in answering three guiding questions
What does the system module do ? ( at the time of design stage )
How does it do ? ( at the time of testing )
What are the inputs and outputs ?
A HIPO description for a system consisted of the Visual Table of Contents and
the Functional Diagram.
VTOC :- This shows the relation between each of module making up a package.
It consists of heirarchy chart that identifies the modules in a system by number
and in relation to each other and gives brief description of each module.
Logic Representation
Techniques
Decision Trees
Decision Tables Theory with example
Pseudo code and structured English
Cases 3 each
Interface Design
Menu Design
Screen Design Mode / Style / Interaction
Report Design
Code Design
Features
Less space required
You are compacting information
Unique field
helps in joining tables
helps in sorting information
Different types of codes
" Sequential or Running Codes
1,2,3 or A,B,C
" Block Codes
1 - 100 indicate some value say A
101 - 200 say B
201 - 300 say C
" Numonics
" Combined codes or Significant Digit Codes
While coding consider
What items are required to be coded
Volume and type of information
Concepts
Case Tools
Reverse engineering
Types of data processing :- Bach, On line, Real time processing
System Contracts
Contract includes all agreements, verbal promises.
Difficult to prove after system is installed.
Hardware and / or software contract negotiation is a legal task.
Mainly two types of software drawn
- Outlining the terms of
leasing. Authorised copy is usable i.e. you have a licence to use it but you
are not owner.
- Contract with the independent
agency ( fixed fees, fixed amount, specific calendar or hourly duration, payment
intervals, maintenance of software you have produced.
Data Dictionery
- The logical characteristics
of current systems data stores including name, description, alies, contents
and organisation.
- Identifies processes
where the data are used and where immidiate access to information is needed
- Used for identifying
database requirements
- Manages details in large
systems.
- Communicate common meaning
- Documents the features
of the system
- Decision making ( whatever
to go forward with the system )
- To locate errors and
ammissions.
System Audit
It means to validate reports and outputs.
Auditing procedure should have following abilities
Trace the transaction with intermediate values.
Keep account of both transaction and results.
Keep constant balance when system involves financial matters.
Sufficient control on inputs.
Keep detailed journal.
Case Tools
Case Means Computer-Aided Software Engineering.
Helps in quick application development, based on requirement specifications.
Mainly three types CASE Tools
Upper case tools ( Analysis and requirement capture phase )
Middle case tools ( Design phase )
Lower case tools ( Different utilities )
Generally includes 5 components
Diagrams ( Tools )
Supports analysis and documentation of requirements
Mainly flow diagrams, program charts etc.
Help in drawing diagrams, and store details internally
Ease of change according to specification, helpful in tedious jobs.
Centralised Information Repository
Capture, analysis, processing and distribution of information is aided by a
centralised information repository.
It contains the details of system components, data items, data flows, processes
and also description of volume and frequency.
Also store Authorisation levels, validations
Interface Generators
Screens for both to enter and to receive the data.
Screen builder based on information
Code Generators
Yet not perfected. Gives only 75% positive results.
Code generation is useful in creating reusable computer code.
Management Tolls
Assist project managers in maintaining effectiveness and efficiency throughout
the application development.
Helps in time, cost estimation
Management of network of activities
Benefits of Case Tools ( Overall )
Easing the task of analysis and design
Generating code
Revision of applications
System prototyping
Improved ability to meet user requirements
Supports iterative development process
Standardisation
Improved quality
Object reusability
Disadvantages
Follows certain standards so not every time usable in every environment.
Costly considering training and knowledge.
Substandard products
Inefficiency between integration of different tools.
Examples
- Database Designers
- User Interface Designers
( Wizards )
- Program Generators
- Programmer Analysers
- Static ( Find Out The
Variables Functions And Their Use, Call Etc. )
- Dynamic ( Run The Program
And Find Out Execution Efficiency, Finetune Requirements Etc. )
- Impact Analysis ( Impact
On Different Modules Due To Changes )
- Diagrammers (Dfds &
Erds)
- Source Code Control Management
Tools ( Version Control, Change Control, Accounting, Undoing Changes Etc.
)
- Testing Tools ( Black
Box Testing I.E. Compare Inputs With Outputs Not The Procedures )
- Test Data Generators
( For Boundary Analysis )
- Reverse Engineering Tools
( From Source Code, Design To Initial Stage )
- Turbo Analysis By TELCO.
Roger Pressman
As the number of computer systems grew, libraries of computer software began
to expand. In-house developed projects produced tens of thousands of program
source statements. Software products purchased from the outside added hundreds
of thousands of new statements. A dark cloud appeared on the horizon. All of
these programs - all of these source statements - had to be corrected when faults
were detected, modified as user requirements changed, or adapted to new hardware
that was purchased. These activities were collectively called software maintenance.
Software definition (
Software is
Instructions that when executed provide desired function and performance
Data structures that enable the programs to adequately manipulate information
Documents that describe the operations and use of the programs.
Software is a logical rather
than a physical system element. It has many different characteristics that differ
considerably from those of hardware
Software is developd or engineered, it is not manufactured in the classical
sense.
Software doesn't wear out
Most software is custom-built, rather than being assembled from existing components.
It is difficult to develop meaningful generic categories for software applications
still
System software
Real - time software
Business software
Engineering and scientific software
Embedded software
Personal computer software
Artificial intelligence software