Professional Documents
Culture Documents
Chapter 1 Overview of Software Engineering CS
Chapter 1 Overview of Software Engineering CS
Software Engineering
Compiled by Talegeta G.
Chapter One
production.
Efficient
Reliable
What is Software engineering ?
Legacy systems
majority of software systems that use today developed many years yet,
so there is challenge of maintaining and updating this software .
Heterogeneity
Systems are required to operate as distributed techniques that include a
mix of hardware and software.
Delivery
Many traditional software engineering techniques are time-consuming,
so there is challenge of shortening delivery times for large and complex
systems without compromising system quality.
Risk challenge
Dealing with the increased complexity of software needed for new
applications.
Security, Trust and Scale
Two Orthogonal Views of the Software
We can use synonyms of process such as: procedure, method, course of
action, etc.. Software engineering, as a discipline, has many processes.
Software process: organizing a structured set of activities to develop software
systems.
….cont’d
♥ There are many different software processes but all must include four
activities that are fundamental to software engineering:-
The life cycle defines a methodology for improving the quality of software
and the overall development process.
….cont’d
The SDLC aims to produce a high quality software that meets or exceeds
client/customer expectations, reaches completion within times and cost
estimates.
The SDLC is a framework defining tasks performed at each step in the
software development process.
There are many SDLC used during software development process. SDLC is
used to
Helps to understand the entire process
Enables planning of resources in advance
Enforces a structured approach to development
Helps to track progress of the system
….cont’d
This information is then used to plan the basic project approach and to
conduct product feasibility study in the economical, operational and
technical areas.
During this activity the developer attempts to understand the problem and
delimit its scope. Feasibility study focused on:
Economic feasibility
Operational feasibility
Technical feasibility
Political feasibility
Schedule feasibility
2. Design
Once the requirement analysis is done the next step is to clearly define and
document the product requirements and get them approved from the
customer or the market analysts.
SRS is the reference for product architects to come out with the best
architecture for the product to be developed.
Based on the requirements specified in SRS, usually more than one design
approach for the product architecture is proposed and documented in a
Design Document Specification (DDS).
3. Development (coding)
In this stage of SDLC the actual development starts and the product is built.
Different high level programming languages such as C, C++, Pascal, Java and
PHP are used for coding.
4. Testing
This stage is usually a subset of all the stages as in the modern SDLC models, the
testing activities are mostly involved in all the stages of SDLC.
However this stage refers to the testing only stage of the product where products
defects are reported, tracked, fixed and retested, until the product reaches the quality
standards defined in the SRS.
Programmers know the best of how the program works and therefor they can identify
the most vulnerable areas of the software.
End-users would pay more attentions to their routine tasks which helps to ensure the
5. maintenance
The product may first be released in a limited segment and tested in the
real business environment user acceptance testing (UAT).
This is the final life cycle phase (deploy and maintenance) the software
is put into use.
A process model (also called software life cycle model ) is a descriptive and
diagrammatic representation of the software life cycle.
There are various software development life cycle models defined and
designed which are followed during software development process.
♥ Each process model follows a series of steps unique to its type, in order to
ensure success in process of software development.
Waterfall model
prototype model
incremental model
V-shaped model
Spiral model
The (Rational) Unified Process
….cont’d
Waterfall Model
It is very simple to understand and use. The waterfall model is consistent
with other engineering process models and documentation is produced at
each phase.
In a waterfall model, each phase must be completed before the next phase
….cont’d
Requirements specification
Requirements gathering activity is to collect all relevant information
from the customer regarding the product to be developed.
This is done to clearly understand the customer requirements so that
incompleteness and inconsistencies are removed.
The requirements analysis activity is begun by collecting all relevant
data regarding the product to be developed from the users of the product
and from the customer through interviews and discussions.
….cont’d
During this activity, the user requirements are systematically organized into a
Software Requirements Specification (SRS) document.
In technical terms, during the design phase the software architecture is
Testing
During this phase, each module is unit tested to determine the correct
working of all the individual modules.
It involves testing each module in isolation as this is the most efficient way
to debug the errors identified at this stage.
Deployment and Maintenance
3/2/2018
Incremental Model
To develop the software if the large projects are subdivided into smaller
components, which may thus be developed incrementally and iteratively.
The components all had integrated and then tested as a whole in a final
system test.
….cont’d
If any one component ran into trouble, the other component were able to still
continue to be developed independently.
V-shaped Model
This means that for every single phase in the development cycle
there is a directly associated testing phase.
This is a highly disciplined model and next phase starts only after
completion of the previous phase.
Requirement analysis:
This is the first phase in the development cycle where the product
requirements are understood from the customer perspective.
Once you have the clear and detailed product requirements, it’s
time to design the complete system.
In this phase the detailed internal design for all the system
modules is specified, referred to as Low Level Design LLD.
♥ Unit testing is the testing at code level and helps eliminate bugs at an early
stage, though all defects cannot be uncovered by unit testing.
Integration testing:
System testing:
Acceptance testing:
Spiral model
The (Rational) Unified Process
Agile Model
Software Process assessment model
SW Metrics refers to a range of measurements for computer software that enable
software people to gain insight into the project:
To improve the Process and the Product
Assist in Estimation
Productivity Assessment
Quality Control
Project Control
Human effort used
Number of errors found before the software release
Examples: code, design docs, test plan, user manual LOC (line of code), # of
objects, # of pages, # of files.
This makes designing, coding, testing, and maintaining the system much
simpler.
….cont’d
Inheritance can be
single inheritance- when a class directly inherits from only
one class.
multiple inheritance- when a class directly inherits from
more than one class.
….cont’d
Achieved through: