Professional Documents
Culture Documents
NOTES UNIT I
EID303
SOFTWARE
ENGINEERING
3/4 B.Tech B5
PRANEEL ANKIREDDY
ASSISTANT PROFESSOR,
DEPARTMENT OF
CSE,GIT,GU
EID 303: Software Engineering LECTURE NOTES | UNIT I
Software: It is the product that software engineers design and build then support over the long
term. It encompasses programs that execute within a computer of any size and architecture,
documents that encompass hard-copy and virtual forms, and data that combine numbers and text
but also includes representations of pictorial, video, and audio information.
Who builds / uses software? Software engineers build and support it, and virtually everyone in
the industrialized world uses it either directly or indirectly.
Why software? Because it affects nearly every aspect of our lives and has become pervasive in
our commerce, our culture, and our everyday activities.
What is software? From the point of view of a software engineer, the work product is the
programs, documents, and data that are computer software. But from the users viewpoint, the
work product is the resultant information that somehow makes the users world better.
Software is a product.
Delivers computing potential.
Produces, manages, acquires, modifies, displays, or transmits information.
Software is a vehicle for delivering a product.
Supports or directly provides system functionality.
Controls other programs (e.g., an operating system).
Effects communications (e.g., networking software).
Helps build other software (e.g., software tools).
Software Applications
System software.
Application software application.
Engineering/scientific software.
Embedded software.
Product line software.
WebApps (Web applications).
AI software.
Data mining
Grid computing
Cognitive machines
Software for nanotechnologies
Software Myths
Widely held but false view
Propagate misinformation and confusion
Three types of myth
Management myth
Customer myth
Practitioners myth
Management myth
Myth (1) - The available standards and procedures for software are enough.
Myth (2) - Each organization feel that they have state-of-art software development tools
since they have latest computer.
Myth (3) - Adding more programmers when the work is behind schedule can catch up.
Myth (4) - Outsourcing the software project to third party, we can relax and let that party
build it.
Customer myth
Myth (1) - General statement of objective is enough to begin writing programs, the
details can be filled in later.
Myth (2) - Software is easy to change because software is flexible.
Practitioners myth
Myth (1) - Once the program is written, the job has been done.
Myth (2) - Until the program is running, there is no way of assessing the quality.
Myth (3) - The only deliverable work product is the working program
Myth (4) - Software Engineering creates voluminous and unnecessary documentation and
invariably slows down software development.
A PROCESS FRAMEWORK
Establishes the foundation for a complete software process
Identifies a number of framework activities applicable to all software projects
Also include a set of umbrella activities that are applicable across the entire software
process.
Continuous Model
Lets organization select specific improvement that best meet its business objectives and
minimize risk
Levels of CMMI
Level 0: Incomplete: Process is adhoc .Objective and goal of process areas are not
known.
Level 1: Performed: Goal, objective, work tasks, work products and other activities of
software process are carried out.
Level 2: Managed: Activities are monitored, reviewed, evaluated and controlled.
Level 3: Defined: Activities are standardized, integrated and documented.
Level 4: Quantitatively Managed: Metrics and indicators are available to measure the
process and quality.
Level 5: Optimized: Continuous process improvement based on quantitative feedback
from the user. Use of innovative ideas and techniques, statistical quality control and other
methods for process improvement.
Staged Model:
This model is used if you have no clue of how to improve the process for quality
software.
It gives a suggestion of what things other organizations have found helpful to work first.
Levels are called maturity levels.
Level5-Optimized
Level4 Quantitatively
Managed
Level 3 - Defined
Level 2 - Managed
Level 1 - Performed
Level 0 - Incomplete
Process Patterns
Process Assessment
Does not specify the quality of the software or whether the software will be delivered on
time or will it stand up to the user requirements.
It attempts to keep a check on the current state of the software process with the intention
of improving it.
Process Models:
Various software development life cycle [SDLC] models are suitable for specific project related
conditions which include organization, requirements stability, risks, budget, and duration of
project. One life cycle model theoretical may suite particular conditions and at the same time
other model may also looks fitting into the requirements but one should consider trade-off while
deciding which model to choose. Here I am summarizing advantages and disadvantages of
various life cycle models.
Advantages
Simple goal.
Simple to understand and use.
Clearly defined stages.
Well understood milestones.
Easy to arrange tasks.
Process and results are well documented.
Easy to manage. Each phase has specific deliverable and a review.
Works well for projects where requirements are well understood.
Works well when quality is more important than cost/schedule.
Customers/End users already know about it.
Disadvantages
Problems
Real projects rarely follow the sequential flow since they are always iterative
The model requires requirements to be explicitly spelled out in the beginning, which is
often difficult.
A working model is not available until late in the project time plan.
The customer must have patience.
Advantages
Some working functionality can be developed quickly and early in the life cycle.
Results are obtained early and periodically.
Parallel development can be planned.
Progress can be measured.
Less costly to change the scope/requirements.
Testing and debugging during smaller iteration is easy.
Risks are identified and resolved during iteration; and each iteration is an easily managed
milestone.
Easier to manage risk - High risk part is done first.
With every increment operational product is delivered.
Issues, challenges & risks identified from each increment can be utilized / applied to the
next increment.
Disadvantages
Advantages
Disadvantages
Problems in RAD
Requires a number of RAD teams
Requires commitment from both developer and customer for rapid-fire completion of
activities.
Requires modularity.
Not suited when technical risks are high.
For large, but scalable projects, RAD requires sufficient human resources to create right
number of RAD teams.
If developers and customers are not committed to the rapid-fire activities necessary, RAD
projects will fail.
If a system cannot be properly modularized, building the components necessary for RAD
will be problematic.
RAD may not be appropriate when technical risks are high.
Prototyping
The Prototyping Model is a systems development method (SDM) in which a prototype (an early
approximation of a final system or product) is built, tested, and then reworked as necessary until
an acceptable prototype is finally achieved from which the complete system or product can now
be developed. This model works best in scenarios where not all of the project requirements are
known in detail ahead of time. It is an iterative, trial-and-error process that takes place between
the developers and the users.
Mock up or model (throw away version) of a software product.
Used when customer defines a set of objective but does not identify input, output, or
processing requirements.
Advantages
Reduced time and costs.
Improved and increased user involvement.
Disadvantages
Insufficient analysis.
Starts in middle and continually visits the basic tasks of communication, planning,
modeling, construction and deployment
Realistic approach to the development of large scale system and software
Software evolves as process progresses
Better understanding between developer and customer
The first circuit might result in the development of a product specification
Subsequent circuits develop a prototype
And sophisticated version of software
Advantages
Disadvantages
Does not focus on flexibility and extensibility (more emphasis on high quality).
Elaboration phase
Construction phase
Transition phase