Software Engineering Notes by softsys

Search   Chat 


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