Unit 1 SE
Unit 1 SE
Define Software:
Software can be defined as one of the following
o (1) Instructions (computer programs) that when executed provide desired function
and performance,
o (2) Data structures that enable the programs to adequately manipulate
information,
o (3) Documents that describe the operation and use of the programs.
Software Characteristics:
The following are the characteristics of the software
o Software is developed or engineered; it is not manufactured in the classical
sense.
- In Software development and
Hardware manufacturing process,
there are some differences.
- Hardware Manufacturing process
produces “Quality Problems”, that
is nonexistent in Software.
- Software costs are concentrated in
engineering.
- This means that software projects
cannot be managed as if they were
manufacturing projects.
- The Fig is also known as “BathTub Curve”
Prepared By: Prof. Arvind Meniya, Asst. Prof., SSEC, Bhavnagar Page 1
Unit 1 Introduction to Software and Software Engineering
- In theory, therefore, the failure rate curve for software should take the
form of the “idealized curve”
- During its life, software will undergo change (maintenance).
- As changes are made, it is likely that some new defects will be introduced,
causing the failure rate curve to spike as shown in Figure.
- When a hardware component wears out, it is replaced by a spare part.
There are no software spare parts.
- Every software failure indicates an error in design or in the process
through which design was translated into machine executable code.
- Therefore, software maintenance involves considerably more complexity
than hardware maintenance.
Software Applications:
- The following software areas indicate the breadth of potential
applications:
System Software.
Real-time software
Prepared By: Prof. Arvind Meniya, Asst. Prof., SSEC, Bhavnagar Page 2
Unit 1 Introduction to Software and Software Engineering
Business Software
Embedded Software
- The personal computer software market has grown rapidly over the past two
decades.
Prepared By: Prof. Arvind Meniya, Asst. Prof., SSEC, Bhavnagar Page 3
Unit 1 Introduction to Software and Software Engineering
Web-based Software
- The Web pages retrieved by a browser are software that incorporates executable
instructions (e.g., HTML, or Java), and data.
- In essence, the network becomes a massive computer providing an almost
unlimited software resource that can be accessed by anyone with a modem.
Software Myths:
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 practitioners
aware of its existence? Does it reflect modern software engineering practice? Is it
complete? Is it streamlined to improve time to delivery while still maintaining a focus on
quality? In many cases, the answer to all of these questions is "no."
Myth: My people have state-of-the-art software development tools; after all, we buy them the
newest computers.
Reality:
It takes much more than the latest model mainframe, workstation, or PC to do high-
quality software development. Computer-aided software engineering (CASE) tools are
more important than hardware for achieving good quality and productivity, yet the
majority of software developers still do not use them effectively.
Prepared By: Prof. Arvind Meniya, Asst. Prof., SSEC, Bhavnagar Page 4
Unit 1 Introduction to Software and Software Engineering
Myth:
If we get behind schedule, we can add more programmers and catch up.
Reality:
In the words of: "adding people to a late software project makes it later."
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.
Myth:
If I decide to outsource the software project to a third party, I can just relax and let that firm build
it.
Reality:
If an organization does not understand how to manage and control software projects
internally, it will invariably struggle when it outsources software projects.
Customer myths
Myth:
A general statement of objectives is sufficient to begin writing programs— we can fill in the
details later.
Reality:
A poor up-front definition is the major cause of failed software efforts. A formal and detailed
description of the information domain, function, behavior, performance, interfaces, design
constraints, and validation criteria is essential.
These characteristics can be determined only after thorough communication between customer
and developer.
Prepared By: Prof. Arvind Meniya, Asst. Prof., SSEC, Bhavnagar Page 5
Unit 1 Introduction to Software and Software Engineering
Prepared By: Prof. Arvind Meniya, Asst. Prof., SSEC, Bhavnagar Page 6
Unit 1 Introduction to Software and Software Engineering
Generally, common activities apply to the entire software project and help the software
development team manage and track progress, quality, changes, and risks.
Re-usability Management
Risk Management
Prepared By: Prof. Arvind Meniya, Asst. Prof., SSEC, Bhavnagar Page 7
Unit 1 Introduction to Software and Software Engineering
System Design − The requirement specifications from first phase are studied in this
phase and the system design is prepared. This system design helps in specifying hardware
and system requirements and helps in defining the overall system architecture.
Implementation − With inputs from the system design, the system is first developed in
small programs called units, which are integrated in the next phase. Each unit is
developed and tested for its functionality, which is referred to as Unit Testing.
Integration and Testing − All the units developed in the implementation phase are
integrated into a system after testing of each unit. Post integration the entire system is
tested for any faults and failures.
Prepared By: Prof. Arvind Meniya, Asst. Prof., SSEC, Bhavnagar Page 8
Unit 1 Introduction to Software and Software Engineering
Deployment of system − Once the functional and non-functional testing is done; the
product is deployed in the customer environment or released into the market.
Maintenance − There are some issues which come up in the client environment. To fix
those issues, patches are released. Also to enhance the product some better versions are
released. Maintenance is done to deliver these changes in the customer environment.
Ample resources with required expertise are available to support the product.
Easy to manage due to the rigidity of the model. Each phase has specific deliverables and
a review process.
Works well for smaller projects where requirements are very well understood.
Prepared By: Prof. Arvind Meniya, Asst. Prof., SSEC, Bhavnagar Page 9
Unit 1 Introduction to Software and Software Engineering
Not suitable for the projects where requirements are at a moderate to high risk of
changing. So, risk and uncertainty is high with this process model.
Integration is done as a "big-bang. at the very end, which doesn't allow identifying any
technological or business bottleneck or challenges early.
Prototype Model
The prototype model requires that before carrying out the development of actual
software, a working prototype of the system should be built.
A prototype is a toy implementation of the system.
A prototype usually turns out to be a very crude version of the actual system, possible
exhibiting limited functional capabilities, low reliability, and inefficient performance as
compared to actual software.
In many instances, the client only has a general view of what is expected from the
software product.
In such a scenario where there is an absence of detailed information regarding the input
to the system, the processing needs, and the output requirement, the prototyping model
may be employed.
Prepared By: Prof. Arvind Meniya, Asst. Prof., SSEC, Bhavnagar Page 10
Unit 1 Introduction to Software and Software Engineering
Prepared By: Prof. Arvind Meniya, Asst. Prof., SSEC, Bhavnagar Page 11
Unit 1 Introduction to Software and Software Engineering
The Rapid Application Development Model was first proposed by IBM in the
1980s.
The critical feature of this model is the use of powerful development tools and
techniques.
A software project can be implemented using this model if the project can be
broken down into small modules wherein each module can be assigned
independently to separate teams.
These modules can finally be combined to form the final product.
Development of each module involves the various basic steps as in the waterfall
model i.e analyzing, designing, coding, and then testing, etc. as shown in the figure.
Another striking feature of this model is a short time span i.e the time frame for
delivery(time-box) is generally 60-90 days.
When
o the customer has well-
known requirements,
o the user is involved
throughout the life cycle,
o the project can be time
boxed,
o the functionality
delivered in increments,
o high performance is not
required,
o low technical risks are
involved and the system can be modularized.
Advantages:
The use of reusable components helps to reduce the cycle time of the project.
Feedback from the customer is available at the initial stages.
Reduced costs as fewer developers are required.
The use of powerful development tools results in better quality products in
comparatively shorter time spans.
The progress and development of the project can be measured through the various
stages.
It is easier to accommodate changing requirements due to the short iteration time
spans.
Prepared By: Prof. Arvind Meniya, Asst. Prof., SSEC, Bhavnagar Page 12
Unit 1 Introduction to Software and Software Engineering
Disadvantages:
o The use of powerful and efficient tools requires highly skilled professionals.
o The absence of reusable components can lead to the failure of the project.
o The team leader must work closely with the developers and customers to
close the project in time.
o The systems which cannot be modularized suitably cannot use this model.
o Customer involvement is required throughout the life cycle.
Applications:
1. This model should be used for a system with known requirements and requiring a
short development time.
2. It is also suitable for projects where requirements can be modularized and
reusable components are also available for development.
3. The model can also be used when already existing system components can be used
in developing a new system with minimum changes.
4. This model can only be used if the teams consist of domain experts. This is because
relevant knowledge and the ability to use powerful techniques are a necessity.
5. The model should be chosen when the budget permits the use of automated tools
and techniques required.
Prepared By: Prof. Arvind Meniya, Asst. Prof., SSEC, Bhavnagar Page 13