Software Engineering - Unit 1
Software Engineering - Unit 1
disciplines, are often under pressure to maintain budgets, keep schedules from slipping, and
improve quality. Like a drowning person who grasps at a straw, a software manager often
grasps at belief in a software myth, if that belief will lessen the pressure (even temporarily).
Customer myths: A customer who requests computer software may be a person at the next
desk, a technical group down the hall, the marketing/sales department, or an outside
company that has requested software under contract. In many cases, the customer believes
myths about software because software managers and practitioners do little to correct
misinformation. Myths lead to false expectations (by the customer) and, ultimately,
dissatisfaction with the developer.
Practitioner’s myths: Myths that are still believed by software practitioners have been
fostered by over 50 years of programming culture. During the early days, programming was
viewed as an art form. Old ways and attitudes die hard.
Management Myths
Myth: We already have a book that’s full of standards and procedures for building
software. Won’t that provide my people with everything they need to know?
Reality: The book of standards may very well exist, but is it used? Are software
Myth: If we get behind schedule, we can add more programmers and catch up
the words of Brooks [Bro95]: “adding people to a late software project makes it
later.” At first, this statement may seem counterintuitive. However, as new people
are added, people who were working must spend time educating the newcomers,
thereby reducing the amount of time spent on productive development effort.
People can be added but only in a planned and well coordinated manner.
Management Myths…
Myth: If I decide to outsource the software project to a third party, I can just relax
idea that a program is a set of instructions that tell a computer what to do. It is often
used in languages such as C and C++.
are self-contained units that contain both data and behavior. It is often used in
languages such as Java, C#, and Python.
Functional paradigm: This paradigm is based on the idea that a program is a set
Logic paradigm: This paradigm is based on the idea that a program is a set of
logical statements that can be used to infer new information. It is often used in
languages such as Prolog and Mercury.
Generic view
A set of activities, methods, practices, and transformations that people use to develop and
maintain software and the associated products (e.g., project plans, design documents, code,
test cases, and user manuals)
The foundation for software engineering is the process layer. It is the glue that holds the
technology layers together and enables rational and timely development of computer
software.
Process defines a framework that must be established for effective delivery of software
engineering technology.
Generic view…
The software process forms the basis for management control of software projects and establishes
the context in which technical methods are applied, work products (models, documents, data,
reports, etc.) are produced, milestones are established, quality is ensured, and change is properly
managed.
Software engineering methods provide the technical ―how to’s for building software. Methods
encompass a broad array of tasks that include communication, req. analysis, design, coding,
Software engineering tools provide automated or semi-automated support for the process and the
methods.
When tools are integrated so that info. Created by one tool can be used by another, a system for
Also include a set of umbrella activities that are applicable across the entire
software process.
The term software crisis revolves around three concepts: complexity, change and the
expectations.
This term was given by F. L. Bauer at the first NATO Software Engineering
In general it refers to poorly written, hard to read, error-prone software that often
Software crisis is also referred to the inability to hire enough qualified programmers.
Software Crisis…
The most visible symptoms of the software crisis are late delivery, over budget;
Software Crisis
3) Software validation: The software must be validated to ensure that it does what
the customer wants.
4) Software evolution: The software must evolve to meet changing client needs.
Software life cycle model
The period of time that starts when a software product is conceived and ends when the
product is no longer available for use.
SDLC provides a series of steps to be followed to design and develop a software product
efficiently.
SDLC Steps
Waterfall Model
Waterfall Model Strengths
Easy to understand, easy to use
Provides structure to inexperienced staff
Milestones are well understood
Sets requirements stability
Good for management control (plan, staff, track)
Works well when quality is more important than cost or
schedule
Waterfall Model Deficiencies
All requirements must be known upfront
Deliverables created for each phase are considered frozen – inhibits
flexibility
Can give a false impression of progress
Does not reflect problem-solving nature of software development –
iterations of phases
Integration is one big bang at the end
Little opportunity for customer to preview the system (until it may be
too late)
When To Use Waterfall Model
Requirements are very well known
Product definition is stable
Technology is understood
New version of an existing product
Porting an existing product to a new platform.
Prototyping Model
Advantages of Prototyping Model
It allows the development team to quickly create a working model of the product,
which can be tested and evaluated by the users.
It enables the development team to gather feedback from the users, which can be
used to improve the design and functionality of the final product.
It allows the development team to focus on specific aspects of the product, rather than
trying to build the entire product at once.
It allows for a more flexible and iterative development process, as the prototype can
be modified and improved based on the findings from each iteration.
It can help to reduce the overall cost of the project, as the prototype can be developed
and tested with minimal resources.
Disadvantages of Prototyping Model
It may not be suitable for large and complex projects, as the prototype may not scale
well and may require a significant amount of rework to turn it into the final product.
It can be time-consuming and costly to create multiple prototypes and revise them
based on user feedback.
The prototype may not accurately represent the final product, leading to
misunderstandings and unrealistic expectations from users.
The prototype may not adequately address all functional and non-functional
requirements of the final product.
There is a risk of the prototype being discarded or significantly revised during the
development process, leading to wasted effort and resources.
It can be difficult to accurately estimate the cost and timeline for a project using the
prototype model, as the scope may change significantly during the development
process.
When To Use Prototyping 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. It might take a while for a system to be
built that allows ease of use and needs minimal training for the end user.
Prototyping ensures that the end users constantly work with the system and provide a
feedback which is incorporated in the prototype to result in a useable system. They are
excellent for designing good human computer interface systems.
Spiral Model
Advantages 0f Spiral Model