Professional Documents
Culture Documents
Engineering
ENGINEERING
Introduction to
Software Engineering
Software
Engineering
(09CE1402)
• Customized Products:
• Systems which are ordered by a specific customer and developed specially by some
contractor.(e.g. College Mgmt. S/W)
4
SOFTWARE APPLICATIONS
(1) System Software:
• System Software is a set of programs that control and manage the operations
of computer hardware. It also helps application programs to execute correctly.
• System Software are designed to control the operation and extend the processing
functionalities of a computer system.
• System software makes the operation of a computer more fast, effective, and secure.
5
SOFTWARE APPLICATIONS
(2) Application Software :
• Application software consists of standalone programs that solve a specific business need.
• Application Software acts as a mediator between the end-user and System Software.
• This type of software is written using a high-level language like C, Java, VB. Net, etc.
6
DIFFERENCE B/W SYSTEM S/W & APPLICATIONS S/W
Sr. No System Software Application Software
System Software maintain the system Application software is built for specific tasks.
1 resources and give the path for application
software to run.
Low level languages are used to write the While high level languages are used to write the
2 system software. application software.
3 It’s General Purpose Software. While it’s a specific purpose software
Without system software, system can’t run. While without application software, system always
4 runs.
System software runs when system is turned While application software runs as per the user’s
5 on and stop when system is turned off. request.
Example of System software are operating Example of application software are Photoshop, VLC
6 system, etc. Player, etc.
System Software programming is complex Application software programming is simpler as
7 than application software. comparison to system software.
7
SOFTWARE APPLICATIONS
(3) Engineering /Scientific Software:
8
SOFTWARE APPLICATIONS
(4) Embedded Software:
9
SOFTWARE APPLICATIONS
(5) Product line software:
10
SOFTWARE APPLICATIONS
(6) Web Applications:
• Web apps can be little more than a set of linked hypertext files.
• It evolving into sophisticated computing environments that not only provide standalone
features, functions but also integrated with corporate database and business applications.
11
SOFTWARE APPLICATIONS
(7) Artificial Intelligence Software:
12
MANUFACTURING VS. DEVELOPMENT
• Once a hardware product has been manufactured, it is difficult or impossible to
modify. In contrast, software products are routinely modified and upgraded.
• In hardware, hiring more people allows you to accomplish more work, but
the
same does not necessarily hold true in software engineering.
13
CHARACTERISTICS OF SOFTWARE
1 Software is developed or engineered
2 Software doesn’t “wear out.” (to use something a lot so that it no longer
works)
14
WEAR VS. DETERIORATION
Affection from Dust,
Earlier Failure rate in Temperature,
its life Environment etc
15
WEAR VS. DETERIORATION
16
HARDWARE VS. SOFTWARE
Hardware Software
17
SOFTWARE ENGINEERING
• Software Engineering is the science and art of building significant software
systems that are:
– 1) on time
– 2) on budget
18
SOFTWARE ENGINEERING
• A discipline whose aim is the production of quality software, delivered on
time, within budget, and satisfying users' needs.
19
SOFTWARE ENGINEERING
• Software engineers should adopt
20
SOFTWARE MYTHS
SOFTWARE MYTHS
“Beliefs about software and the process used to build it”
• If I decide to outsource the software project to a third party, I can just relax and
let that firm build it.- Outsourcing software to a third party does not help the
organization, which is incompetent in managing and controlling the software
project internally. The organization invariably suffers when it out sources the
software project.
CUSTOMER MYTHS
CUSTOMER MYTHS
• Brief requirement stated in the initial process is enough to
start
development; detailed requirements can be added at the later stages.
• Starting development with incomplete and ambiguous requirements often
lead to software failure.
• Adding requirements at a later stage often requires repeating the
entire development process.
CUSTOMER MYTHS
• Project requirements continually change, but changes can easily
be
accommodated because software is flexible.
• Incorporating change requests earlier in the development process costs
lesser than those that occurs at later stages. This is because incorporating
changes later may require redesigning and extra resources.
PRACTITIONER
(DEVELOPER) MYTHS
PRACTITIONER’S MYTHS
• Once we write the program and get it to work, our job is done.
• 50% to 70% of all the efforts are expended after the software is delivered to
the user.
• The quality of programs is not the only factor that makes the project successful
instead the documentation and software configuration also play a crucial role.
PRACTITIONER’S MYTHS
• The only product that is delivered after the completion of a project is the working
program(s)
• The deliverables of a successful project includes not only the working program but
also the documentation to guide the users for using the software.
• Software engineering is about creating quality at every level of the software project.
Proper documentation enhances quality which results in reducing the amount of
rework.
ATTRIBUTES OF SOFTWARE
ATTRIBUTES OF GOOD SOFTWARE
• (1) Maintainability (જાળવણી)
Software must evolve to meet changing needs;
• (2) Dependability (નિર્ભરતા)
Software dependability includes a range of characteristics including reliability, security
and safety. Dependable software should not cause physical or economic damage in the
event of system failure.
Malicious users should not be able to access or damage the system.
• (3) Efficiency (કાર્ભક્ષમતા)
Software should not make wasteful use of system resources.
• (4) Acceptability (સ્વીકાર્ભતા)
Software must accepted by the users for which it was designed. This means it must be
understandable, usable and compatible with other systems.
SOFTWARE ENGINEERING –
LAYERED TECHNOLOGY
Layered Technology
Tools
Methods
Process model
A quality focus
LAYERED TECHNOLOGY
(1) A Quality Focus
• In short, it covers all activities, actions and tasks required to be carried out
for software development.
• What to do?
• How to do?
LAYERED TECHNOLOGY
(3) Methods
• The method provides the answers of all 'how-to' that are asked during the process.
• When tools are integrated so that information created by one tool can be used by
another, a system for the support of software development, called computer-aided
software engineering (CASE)
SOFTWARE PROCESS
Communication
Planning
Modeling
Construction
Deployment
SOFTWARE PROCESS MODELS
SOFTWARE PROCESS MODELS
Linear Sequential Model (Waterfall Model)
Prototyping
Spiral Model
• In a waterfall model, each phase must be completed before the next phase
can begin.
Estimating Scheduling
Planning
tracking
Systems services, constraints and goals are defined by customers with system users.
• Scheduling tracking:
Assessing progress against the project plan. Require action to maintain schedule.
The individual program unit or programs are integrated and tested as a complete system
to ensure that the software requirements have been met.
Maintenance involves correcting errors which were not discovered in earlier stages of
the life-cycle.
PROS OF WATERFALL MODEL
1) Simple and easy to understand and use
5) Works well for smaller projects where requirements are very well understood.
The model implies that once the product is finished, everything else is maintenance.
Therefore, this model is only appropriate when the requirements are well-understood and
changes will be fairly limited during the design process.
PROBLEM
1. Real projects are rarely follow the sequential model.
3) Technology is understood
• To develop the fully functional system within the short period of time using this
model, it is necessary to understand the requirements fully and to have a
restricted project scope.
RAPID APPLICATION DEVELOPMENT (RAD) MODEL
RAD MODEL
(1) Communication – To understand business problem.
(3) Modeling –
(a) Business Modelling – The information flow among business functions is defined by
answering questions like what data drives the business process, what data is
generated, who generates it, where does the information go, who process it and so on.
(b) Data Modelling – The data collected from business modelling is refined into a set of
data objects (entities) that are needed to support the business. The attributes
(character of each entity) are identified, and the relation between these data objects
(entities) is defined.
(c) Process Modelling – The information object defined in the data modelling phase are
transformed to achieve the data flow necessary to implement a business function.
Processing descriptions are created for adding, modifying, deleting, or retrieving a data
object.
RAD MODEL
• Deployment – Deliver to customer basis for subsequent iteration.
If requirement are well understood and project scope is constrained then it enable
development team to create “ fully functional system” within a very short time period.
Pros OF RAD MODEL
This model is flexible for change.
2) This model requires heavily committed developer and customers. It may fails, if
commitment is lacking.
5) It should be used only if the budget allows the use of automatic code generating tools.
EVOLUTIONARY PROCESS MODELS
EVOLUTIONARY PROCESS MODEL
• Produce an increasingly more complete version of the software with each iteration.
• Prototyping
• Spiral Model
PROTOTYPE MODEL
EVOLUTIONARY PROCESS MODEL- PROTOTYPING
MODEL
• Before carrying out the development of the actual software, a prototype of the
system is built.
6) Errors can be detected much earlier as the system is made side by side.
DISADVANTAGES PROTOTYPE MODEL
1) An unstable/badly implemented prototype often becomes the final product.
4) Easy to fall back into the code and fix without proper requirement analysis, design, customer evaluation, and
feedback.
7) It is a time-consuming process.
WHEN TO USE PROTOTYPE MODEL?
• Prototype model should be used when the desired system needs to have a lot of
interaction with the end users.
• Typically, online systems, web interfaces have a very high amount of interaction
with end users, are best suited for Prototype model.
SPIRAL MODEL
EVOLUTIONARY MODEL: SPIRAL MODEL
• Spiral model is one of the most important Software Development Life Cycle models, which provides
support for Risk Handling.
• In its diagrammatic representation, it looks like a spiral with
many loops.
• The exact number of loops of the spiral is unknown and can vary
from project to project.
• The Radius of the spiral at any point represents the expenses(cost) of the
project so far, and the angular dimension represents the progress made so far
in the current phase.
SPIRAL MODEL
SPIRAL MODEL
Phases Activities performed during phase
•It includes estimating the cost, schedule and resources for the iteration. It also involves
Planning understanding the system requirements for continuous communication between the
system analyst and the customer
Risk •Identification of potential risk is done while risk mitigation strategy is planned and
Analysi finalized
s
Engineering •It includes testing, coding and deploying software at the customer site
•Evaluation of software by the customer. Also, includes identifying and monitoring risks
Evaluation such as schedule slippage and cost overrun
ADVANTAGES SPIRAL MODEL
• Risk Handling: The projects with many unknown risks that occur as the development proceeds,
in that case, Spiral Model is the best development model to follow due to the risk analysis and
risk handling at every phase.
• Good for large projects: It is recommended to use the Spiral Model in large and complex
projects.
• Customer Satisfaction: Customer can see the development of the product at the early phase of
the software development and thus, they habituated with the system by using it before
completion of the total product.
DISADVANTAGES OF SPIRAL MODEL
• Complex: The Spiral Model is much more complex than other SDLC models.
• Too much dependable on Risk Analysis: The successful completion of the project is
very much dependent on Risk Analysis. Without very highly experienced expertise, it is
going to be a failure to develop a project using this model.
• Difficulty in time management: As the number of phases is unknown at the start of
the
project, so time estimation is very difficult.
WHEN TO USE SPRIAL MODEL?
• When deliverance is required to be frequent.
• When the project is large.
• When requirements are unclear and complex.
• When changes may require at any time.
• Large and high budget projects
V MODEL
VMODEL
• V-Model also referred to as the Verification and Validation Model.
• In this, each phase of SDLC must complete before the next phase starts.
• It follows a sequential design process same as the waterfall model.
• Testing of the device is planned in parallel with a corresponding stage of development.
V MODEL
V MODEL
• Verification:
• It involves a static analysis method (review) done without executing code.
• It is the process of evaluation of the product development process to find whether specified
requirements meet.
• Validation:
• It involves dynamic analysis method (functional, non-functional), testing is done by executing code.
• Validation is the process to classify the software after the completion of the development process to
determine whether the software meets the customer expectations and requirements.
• So V-Model contains Verification phases on one side of the Validation phases on the other side.
Verification and Validation process is joined by coding phase in V-shape. Thus it is known as V-Model.
V ERIFICATION P HASE : V MODEL
• Business requirement analysis: This is the first step where product requirements understood
from the customer's side. This phase contains detailed communication to understand
customer's expectations and exact requirements.
• System Design: In this stage system engineers analyse and interpret the business of the
proposed system by studying the user requirements document.
• Architecture Design: The baseline in selecting the architecture is that it should understand all
which typically consists of the list of modules, brief functionality of each module, their
interface relationships, dependencies, database tables, architecture diagrams, technology
detail, etc. The integration testing model is carried out in a particular phase.
• Module Design: In the module design phase, the system breaks down into small modules. The
detailed design of the modules is specified, which is known as Low-Level Design.
• Coding Phase: After designing, the coding phase is started. Based on the requirements, a
suitable programming language is decided. There are some guidelines and standards for
coding. Before checking in the repository, the final build is optimized for better performance,
and the code goes through many code reviews to check the performance.
V ALIDATION P HASE : V MODEL
• Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed during the module design
phase. These UTPs are executed to eliminate errors at code level or unit level. A unit is the
smallest entity which can independently exist, e.g., a program module. Unit testing verifies that
the smallest entity can function correctly when isolated from the rest of the codes/ units.
• Integration Testing: Integration Test Plans are developed during the Architectural Design
Phase. These tests verify that groups created and tested independently can coexist and
communicate among themselves.
• System Testing: System Tests Plans are developed during System Design Phase. Unlike Unit and
Integration Test Plans, System Tests Plans are composed by the client's business team. System
Test ensures that expectations from an application developer are met.
• Acceptance Testing: Acceptance testing is related to the business requirement analysis part. It
includes testing the software product in user atmosphere. Acceptance tests reveal the
compatibility problems with the different systems, which is available within the user
atmosphere. It conjointly discovers the non-functional problems like load and performance
defects within the real user atmosphere.
ADVANTAGES : V MODEL
1) Easy to understand.
3) Saves lots of time. Hence a higher chance of success over the waterfall
model.
5) Works well for small plans where requirements are easily understood.
DIS-ADVANTAGES : V MODEL
1) Very rigid and least flexible.
4) If any changes happen in the midway, then the test documents along
with required documents has to be updated.
WHEN TO USE V MODEL?
• When the requirement is well defined and not ambiguous.
• The V-shaped model should be used for small to medium-sized projects where
requirements are clearly defined and fixed.
• The V-shaped model should be chosen when sample technical resources are
available with essential technical expertise.
COMPONENT BASED
DEVELOPMENT MODEL
COMPONENT-BASED DEVELOPMENT MODEL
• Component based development is a software system development
methodology where the system is developed using reusable software
components.
• Component based development aims at improved efficiency, performance and
quality of the system by recycling components
COMPONENT-BASED DEVELOPMENT MODEL
COMPONENT-BASED DEVELOPMENT MODEL
• Consists of the following process steps
1. Available component-based products are researched and evaluated
for the
application domain
2. Component integration issues are considered
3. A software architecture is designed to accommodate the components
4. Comprehensive testing is conducted to ensure proper functionality
• Relies on a robust component library
• Capitalizes on software reuse, which leads to documented savings in project cost and
time
THANK YOU!!!!