You are on page 1of 22

Software Engineering

Unit I Short Notes


Introduction:
Software playing important role in our day to day life ranging from purchasing bus ticket
to maintaining our national security.
Software Engineering is essential for national and international societies.
Software Systems are abstract and intangible.
They are not constrained by properties of material, governed by physical laws or
manufacturing process.
Because of lack of physical constraint, software system quickly become more complex.
Software systems are many types
1) simple embedded system,
2) complex world wide system.
It is meaningless to looks for common notation , methods or techniques between 1 & 2.
Developing an Organizational System is different from developing Controller for
scientific instrument.
All these application require software engineering but different software engineering
techniques.
Many software projects that uses software engineering ends with software failure because
of two reasons.
1) Increasing demands,
2) Low Expectations.
The need for complex software increases every day.
Small software firms not following software engineering techniques.
History of Software Engineering:
The notation of software engineering was first proposed in 1968 at the conference held to
discuss about software crisis.
It is very clear individual approaches to program development did not worked for large
complex software projects.
It is unreliable, cost more then budget and delivered late.
Through out 1970 to 1980 many software engineering techniques were proposed.
Ex : Structured Programing, OOD.
Professional Software Development:
Many people write program for hobby or for personal use but a professional software
should be developed for some purpose.
The professional software is developed by a team of professional rather then individuals.
It follows certain development procedures.
It is maintained and changed through out its life.
Software = Computer Program + Associated Document + Configuration Data.
These 3 files helps software to work correctly.
Common Terms
What is software?
Computer programs and associated documentation.
Software products may be developed for a particular customer or may be developed for a general
market.
What are the attributes of good software?
Good software should deliver the required functionality and performance to the user and should
be maintainable, dependable, and usable.
What is software engineering?
Software engineering is an engineering discipline that is concerned with all aspects of software
production.
What are the fundamental software engineering activities?
Software specification, software development, software validation, and software evolution.
What is the difference between software engineering and computer science?
Computer science focuses on theory and fundamentals; software engineering is concerned with
the practicalities of developing and delivering useful software.
What are the key challenges facing software engineering?
Coping with increasing diversity, demands for reduced delivery times, and developing
trustworthy software.

What are the costs of software engineering?
Roughly 60% of software costs are development costs; 40% are testing costs. For custom
software, evolution costs often exceed development costs.
What are the best software engineering techniques and methods?
While all software projects have to be professionally managed and developed, different
techniques are appropriate for different types of system. For example, games should always be
developed using a series of prototypes whereas safety critical control systems require a complete
and analyzable specification to be developed. You cant, therefore, say that one method is better
than another.
What differences has the Web made to software engineering?
The Web has led to the availability of software services and the possibility of developing highly
distributed service-based systems. Web-based systems development has led to important
advances in programming languages and software reuse.
Software Engineering Paradigm
Process Activities
Software Specification
Feasibility study
The purpose of the study is to check current hardware and software meets user needs.
Requirement Elicitation And Analysis
Deriving the system requirement through observation of existing system.
Requirement specification
Translation of information gathered during analysis into user and system requirement.
Requirement Validation
This activity checks the requirements for realism, consistency and completeness.

Software Design and Implementation
Architectural Design
The overall structure of the system is designed.
Interface Design
Interface between components are designed.
Component Design
Individual components are developed by programmers according to requirement.
Database Design
Process of designing data structure and representing the data structure in database.

Software Validation
Development Testing
Each component is tested at the time of development .
System Testing
The integrated components are checked against interface errors.
Acceptance Testing
The user acceptance test is performed with real user data for the purpose of finding
unidentified errors using simulated test data.

Software Evolution
The change in software system is cheaper compared to the change in hardware based
system.
The software evolution is important process and it cost more then software development.
The software evolution is long time process where multiple engineers work for same
project in different time.
Software engineering is an evolutionary process where software is continually changed
over its lifetime in response to changing requirements and customer needs.







Coping with Change
System Prototyping
The change can be avoided using system prototyping model, The change can be identified in the
early stages and it will not propagate to full version of products. It is also called change
avoidance.
Incremental Delivery
The incremental delivery process model will deliver the system in increments based on user
feedback. The change can be well tolerated because the change is implemented only in new
incremental development process. It is also called change tolerance.

Boehm Spiral Model
Objective Setting
The objective for each phase is defined based on user and system requirement.
Risk Assessment and reduction
The risk for particular phase is identified and reduced based on in depth analysis
Design and Validation
The product for particular phase is developed and validated based on objective. The final
phase is validated with real user data.
Planning
Further phases are planed based on previous design phase and it continues till last phase.









Rationale Unified Process
Inception
The phase should identify all external entities (people and systems) that will interact with the
system and define these interactions.
Elaboration
The goal of the phase is to establish an architectural framework for the system.
Construction
The construction phase involves system design, programming, and testing. Parts of the system
are developed in parallel and integrated during this phase.
Transition
This phase moves software from development to user community.


Software Process Models
The waterfall model,
Incremental development,
Reuse-oriented software engineering.






Waterfall Model:

Incremental Model





Reuse Oriented Software Engineering


Verification & Validation.


Software testing is a part of verification and validation.
V & V have many process to assure the software quality.
V & V is also called as software quality assurance. It have multi step verification process
for quality assurance.
Verification checks that a particular function is implemented correctly.
Validation is the process of verifying that the built software is matching customer
requirement.
Verification: "Are we building the product right?"
Validation: "Are we building the right product?"

Few Activities in V Model or V & V Model.
formal technical reviews,
quality and configuration audits,
performance monitoring,
simulation,
feasibility study,
documentation review,
database review,
algorithm analysis,
development testing,
qualification testing,
installation testing

Life Cycle Models
Problem Solving or Software Development
The process
Methods
Tools & Phases



Linear Sequential Model
LSM is also called as Classic life cycle model or waterfall model.


Prototyping Model
If Detailed Input and output specification is not provided by customer then prototyping model is
better to build great software.


Rapid Application Development
RAD is a high speed adaption of Linear Sequential Model in which RAD is achieved
using component based construction of Software.
Business Modeling The information flow among business function is modeled.
Data Modeling Information flow is refined as set of data objects
Process Modeling Data Modeling is transformed to support business function
Application Generation RAD creates application using fourth generation technique.
Testing New Components are tested.



EVOLUTIONARY SOFTWARE PROCESS MODELS
Incremental Model
Linear Sequential Model + Prototyping Model
Spiral Model
Combines iterative nature of prototyping with the controlled and systematic
aspects of the linear sequential model.
WIN WIN Spiral Model
Negotiating takes places at the beginning of each phase.
The Concurrent Development Model
The status of each phase can be easily tracked and development goes in a
concurrent way.

Incremental Model

Spiral Model

WIN WIN Spiral Model

Concurrent Development Model

Component Based Development Model


The Formal Methods Model
In this model, the software is analyzed using formal mathematical notations.
It is also called as Clean Room Software Engineering.
Challenges:
The development of formal models is currently quite time consuming and expensive.
Because few software developers have the necessary background to apply formal
methods, extensive training is required.
It is difficult to use the models as a communication mechanism for technically
unsophisticated customers.
Fourth Generation Technique
The software development is carried out by tools that automatically generates codes
based on specification.
This kind of tools are called as computer aided software engineering(CASE) tools.


System Engineering
System engineering focus on variety of elements, it will analyze, design and organize those
elements into a system that may be product or service or technology.
System Engineering is classified into two types
Business process engineering
Product engineering.
Both systems are developed using computer based system.

What is it?
Learning about software working environment.
Who does it?
System engineer works with client, user and others.
Why is it important?
Understanding about system is important to develop software
What are the steps?
Requirement, Analysis , specification, modeling and model validation
What is work product?
Prototype, model, specification even symbolic notation. But it should represent
the behaviors.
How do I ensure that I did perfect product?
By comparing specification with work product.

Computer Based System
The goal of computer based system is to support some business function or to create a
product that generate a revenue.
The computer based system uses variety of system elements they are
Hardware
Software
People
Database
Documentation
Procedures
System Engineering Hierarchy



Hierarchy is divided into multiple stages they are
World View (WV)
Domain View(DV)
Element View(EV)
Detailed View(DV)
WV = {d1,d2,d3,.,dk}
DV = {e1,e2,e3,..,ek}
EV = {c1,c2,c3,..,ck}
Activities in System Engineering
System Modeling
System Simulation

System Modeling Factors
Assumption
Assumes pre-defined set of constraints.
Simplification
Simplifies inputs and outputs.
Limitation
Limiting the system inputs and outputs.
Preferences
Preferred solution is used with assumptions.
Constraints
Constraints the system for simplification.
System Simulation
Simulation and Modeling tools helps the system engineer to test drive the specification of
the system.
The development activity is performed after the simulation that avoids software failure.

Business Process Engineering
Business Process Engineering creates three architecture
Data Architecture
Information needs of the business is satisfied through data objects.
Application Architecture
The data objects are transformed for specific needs of the business.
Technology Infrastructure
Used to support data & application architecture.

Product Engineering
Product engineering enables business organization to create a product based on customer
needs to produce revenue for the business.
Product engineering contains four components
Hardware
The hardware required to support product function is created.
Software
The software required to support business function is designed
People
The people engineering activity considers the interaction of people with
systems.
Data
The data that is primary driving vehicle of any business is organized in a
way that is used by other components,