CH 1

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 42

Chapter 1- Introduction and Software Processes

Topics covered

 Basic definition
 Role of Management in Software Development
 Software Products
 Essential attributes of good software
 Importance of Software Engineering Practices
 Challenges for Software Engineering Practices
 Software Engineering Diversity
 Software Life Cycle
 Software Process Model and its Types
Chapter 1 Introduction and Software Processes 2
1.1 Basic Definition

 , Fritz Bauer defined software engineering as


“The establishment and use of sound engineering principles in order to obtain
economically developed software that is reliable and works efficiently on real
machines”.
 Stephen Schach defined the same as
“A discipline whose aim is the production of quality software, software that is
delivered on time, within budget, and that satisfies its requirements”.

Chapter 1 Introduction and Software Processes 3


1.2 Role of Management in Software Development

Factor Role
Software development requires good managers. The manager who can
understand the psychology of the people and provide good leadership. After
People having a good manager, project is in safe hands. It is the responsibility of a
manager to manage, motivate, encourage, guide and control the people of
his/her team.
What is delivered to the customer, is called a product. It may include source
Product code, specification document, manuals, documentation etc. Basically, it is
nothing but a set of deliverables only.
Process is the way in which we produce software. It is the collection of
activities that leads to (a part of) a product. An efficient process is required to
Process produce good quality products. If the process is weak, the end product will
undoubtedly suffer, but an obsessive over reliance on process is also
dangerous.
A proper planning is required to monitor the status of development and to
control the complexity. Most of the projects are coming late with cost
Project
overruns of more than 100%. In order to manage a successful project, we
must understand what can go wrong and how to do it wright.

Chapter 1 Introduction and Software Processes 4


1.3 Software products

 Generic products
 Stand-alone systems that are marketed and sold to any customer who wishes to buy
them.
 Examples – PC software such as graphics programs, project management tools; CAD
software; software for specific markets such as appointments systems for dentists.
 Customized products
 Software that is commissioned by a specific customer to meet their own needs.
 Examples – embedded control systems, air traffic control software, traffic monitoring
systems.

Chapter 1 Introduction and Software Processes 5


1.4 Essential attributes of good software

Product characteristic Description


Software should be written in such a way so that it can evolve to meet the
Maintainability changing needs of customers. This is a critical attribute because software change
is an inevitable requirement of a changing business environment.

Software dependability includes a range of characteristics including reliability,


security and safety. Dependable software should not cause physical or economic
Dependability and security damage in the event of system failure. Malicious users should not be able to
access or damage the system.
Software should not make wasteful use of system resources such as memory and
Efficiency processor cycles. Efficiency therefore includes responsiveness, processing time,
memory utilisation, etc.

Software must be acceptable to the type of users for which it is designed. This
Acceptability means that it must be understandable, usable and compatible with other systems
that they use.

Chapter 1 Introduction and Software Processes 6


1.5 Importance of software engineering

 More and more, individuals and society rely on advanced software systems.
Automation in each and every field of life has become a necessity. To fulfill all
these demands software products are being developed that are reliable and
trustworthy to its users.
 Initial cost for any software development has remained an obstacle in the
history but time has proved that well engineered software products are
cheaper in longer run than those software that are just developed like a
personal programming project.

Chapter 1 Introduction and Software Processes 7


1.6 Challenges for Software Engineering Practices

 Heterogeneity
 Increasingly, systems are required to operate as distributed systems across networks
that include different types of computer and mobile devices.
 Business and social change
 Business and society are changing incredibly quickly as emerging economies develop
and new technologies become available. They need to be able to change their existing
software and to rapidly develop new software.
 Security and trust
 As software is intertwined with all aspects of our lives, it is essential that we can trust that
software.

Chapter 1 Introduction and Software Processes 8


1.7 Software Engineering Diversity

 There are many different types of software system and there is no universal
set of software techniques that is applicable to all of these.
 The software engineering methods and tools used depend on the type of
application being developed, the requirements of the customer and the
background of the development team.

Chapter 1 Introduction and Software Processes 9


Application types

 Stand-alone applications
 These are application systems that run on a local computer, such as a PC. They include
all necessary functionality and do not need to be connected to a network.
 Interactive transaction-based applications
 Applications that execute on a remote computer and are accessed by users from their
own PCs or terminals. These include web applications such as e-commerce applications.
 Embedded control systems
 These are software control systems that control and manage hardware devices.
Numerically, there are probably more embedded systems than any other type of system.

Chapter 1 Introduction and Software Processes 10


Application types

 Batch processing systems


 These are business systems that are designed to process data in large batches. They
process large numbers of individual inputs to create corresponding outputs.
 Entertainment systems
 These are systems that are primarily for personal use and which are intended to
entertain the user.
 Systems for modeling and simulation
 These are systems that are developed by scientists and engineers to model physical
processes or situations, which include many, separate, interacting objects.

Chapter 1 Introduction and Software Processes 11


Application types

 Data collection systems


 These are systems that collect data from their environment using a set of sensors and
send that data to other systems for processing.
 Systems of systems
 These are systems that are composed of a number of other software systems.

Chapter 1 Introduction and Software Processes 12


1.8 Software Life cycle

Chapter 1 Introduction and Software Processes 13


1.9 Software Process Model

Chapter 1 Introduction and Software Processes 14


1.10 Types of Software process models

Chapter 1 Introduction and Software Processes 15


1.10.1The waterfall model

 The Waterfall Model was first Process Model to be introduced. It is also


referred to as a linear-sequential life cycle model. It is very simple to
understand and use. In a waterfall model, each phase must be completed
before the next phase can begin and there is no overlapping in the phases.
 Waterfall model is the earliest software development life cycle (SDLC)
approach that was used for software development.
 In Waterfall model, typically, the outcome of one phase acts as the input for
the next phase sequentially.
 Figure 1.2 (next slide) is a pictorial representation of different phases of
waterfall model.

Chapter 1 Introduction and Software Processes 16


The waterfall model

Figure 1.2: Waterfall Model


Chapter 1 Introduction and Software Processes 17
Waterfall Model Phases

Phase Description
Requirement Gathering All possible requirements of the system to be developed are captured in this phase
and analysis and documented in a requirement specification doc.
The requirement specifications from first phase are studied in this phase and system
System Design design is prepared. System Design helps in specifying hardware and system
requirements and also helps in defining overall system architecture.
With inputs from system design, the system is first developed in small programs
Implementation 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.
All the units developed in the implementation phase are integrated into a system
Integration and Testing after testing of each unit. Post integration the entire system is tested for any faults
and failures.
Once the functional and non-functional testing is done, the product is deployed in the
Deployment of system customer environment or released into the market.
There are some issues which come up in the client environment. To fix those issues
Maintenance patches are released. Also to enhance the product some better versions are released.
Maintenance is done to deliver these changes in the customer environment.

Chapter 1 Introduction and Software Processes 18


The waterfall model

 All phases are cascaded to each other in which progress is seen as flowing
steadily downwards (like a waterfall) through the phases.
 The next phase is started only after the defined set of goals are achieved for
previous phase and it is signed off, so the name "Waterfall Model".
 In this model phases do not overlap.

Chapter 1 Introduction and Software Processes 19


Waterfall Model Application

Chapter 1 Introduction and Software Processes 20


Waterfall Model Advantages & Disadvantages

Advantages Disadvantages
No working software is produced until whole life cycle is
Simple and easy to understand and apply.
not completed.
Easy to manage due to fix boundaries each phase with Not a good model for complex and object-oriented
specific deliverables. projects.

Phases are processed and completed one at a time. Poor model for long and ongoing projects.
Works well for smaller projects where requirements are Not suitable for the projects where requirements are
very well understood. changing frequently.

Process and results are well documented. It is difficult to measure progress within stages.

Adjusting scope during the life cycle can end a project

Chapter 1 Introduction and Software Processes 21


1.10.2 Incremental Development Model

Chapter 1 Introduction and Software Processes 22


Incremental Development Model

Figure 1.3: Incremental Development Model 

Chapter 1 Introduction and Software Processes 23


Incremental Development Model

Chapter 1 Introduction and Software Processes 24


Incremental Model Application

Chapter 1 Introduction and Software Processes 25


Incremental Model Advantages & Disadvantages

Advantages Disadvantages
At the end of each build, working product is produced that
More resources (manpower) may be required.
facilitates customer evaluation and feedback.
Although cost of change is lesser in this model, but
Results are obtained periodically.
changing requirements itself is not very suitable.
Parallel development can be planned and measured. More management attention is required.

Less costly to change the scope/requirements. Not suitable for smaller projects.
Defining increments (builds) may require definition of the
Testing and debugging during smaller iteration is easy.
complete system.
System architecture or design issues may arise, all
Risks are identified and resolved during iteration; and
requirements are not gathered at the beginning of life
each iteration is an easily managed milestone.
cycle.
Ending of project is not very obvious.
Project’s progress is highly dependent upon the risk
analysis phase.

Chapter 1 Introduction and Software Processes 26


1.10.3 Reuse-oriented Model

Chapter 1 Introduction and Software Processes 27


Reuse-oriented Model

Figure1.4: Reuse-oriented software engineering 

Chapter 1 Introduction and Software Processes 28


Explanation of Reuse-Oriented Model Phases

Phase Description
After getting user requirements a search is made for components to be implemented
Component Analysis that are available in library as it is or with small variations. Usually, there is no exact
match and already available components only provide some of the required functionality.
During this stage, the requirements are analyzed using information about the
Requirements components that have been discovered. They are then modified to reflect the available
Modification components. Where modifications are impossible, the component analysis activity may
be re-entered to search for alternative solutions.
During this phase, the framework of the system is designed or an existing framework is
System Design with reused. The designers take into account the components that are reused and organize
Reuse the framework to cater for this. Some new software may have to be designed if reusable
components are not available.
Software that cannot be externally procured is developed, and the components and
Development and COTS (commercial off-the-shelf) systems are integrated to create the new system.
Integration System integration, in this model, may be part of the development process rather than a
separate activity.

Chapter 1 Introduction and Software Processes 29


1.10.4 Boehm’s Spiral Model

Chapter 1 Introduction and Software Processes 30


Boehm’s spiral model of the software process

Figure 1.5: Boehm’s spiral model of the software process 


Chapter 1 Introduction and Software Processes 31
Explanation of Spiral Model Activities

Activity Description
Specific objectives for that phase of the projects are defined. Constraints on the process
Objective Setting and the product are identified and a detailed management plan is drawn up. Project risks
are identified. Alternative strategies, depending on these risks, may be planned.
For each of the identified project risks, a detailed analysis is carried out. Steps are taken
Risk Assessment and
to reduce the risk. For example, if there is a risk that the requirements are inappropriate,
Reduction
a prototype system may be developed.
After risk evaluation, a development model for the system is chosen. For example,
throwaway prototyping may be the best development approach if user interface risks are
Development and dominant. If safety risks are the main consideration, development based on formal
Validation transformations may be the most appropriate process, and so on. If the main identified
risk is sub-system integration, the waterfall model may be the best development model
to use.
The project is reviewed and a decision made whether to continue with a further loop of
Planning the spiral. If it is decided to continue, plans are drawn up for the next phase of the
project.

Chapter 1 Introduction and Software Processes 32


Spiral Model Application

Chapter 1 Introduction and Software Processes 33


Spiral Model Advantages & Disadvantages

Advantages Disadvantages
Changing requirements can be accommodated with the
Management is more complex.
help of extensive use of prototypes.

Requirements can be captured more accurately. End of project may not be known clearly.

Not suitable for small or low risk projects and could be


Users see the system early.
expensive for small projects.
Development can be divided into smaller parts and more
risky parts can be developed earlier which helps better Process is complex
risk management.
Large number of intermediate stages requires excessive
documentation

Chapter 1 Introduction and Software Processes 34


1.10.5 Agile methods

Chapter 1 Introduction and Software Processes 35


Agile methods

Figure 2.5: Graphical Illustration of the Agile Methods 


Chapter 1 Introduction and Software Processes 36
Agile Manifesto

 Individuals and interactions: In agile development, self-organization and


motivation are important, as are interactions like co-location and pair
programming.
 Working software: Demo working software is considered the best means of
communication with the customer to understand their requirement, instead of
just depending on documentation.
 Customer collaboration: As the requirements cannot be gathered
completely in the beginning of the project due to various factors, continuous
customer interaction is very important to get proper product requirements.
 Responding to change: Agile development is focused on quick responses
to change and continuous development.
Chapter 1 Introduction and Software Processes 37
Agile Methods Advantages & Disadvantages

Advantages Disadvantages
Very realistic approach for software development. Not suitable for handling complex projects.
More risk of sustainability, maintainability and
Promotes teamwork and cross training.
extensibility.
Functionality can be developed rapidly and Not suitable for small or low risk projects and could be
demonstrated. expensive for small projects.
Without an overall plan and in absence of agile project
Resource requirements are minimum.
manager practice may fail entirely.
Depends heavily on customer interaction, so if customer
Suitable for fixed or changing requirements.
is not clear, team can be driven in the wrong direction.
There is very high individual dependency, since there is
Minimal rules, documentation easily employed.
minimum documentation generated.
Enables concurrent development and delivery within an Transfer of technology to new team members may be
overall planned context. quite challenging due to lack of documentation.
Little or no planning required.
Easy to manage.
Gives flexibility to developers.

38
Chapter 1 Introduction and Software Processes
Key points (Summary of the Chapter – Already Discussed)

 Software engineering is an engineering discipline that is concerned with all


aspects of software production.
 Essential software product attributes are maintainability, dependability and
security, efficiency and acceptability.
 The high-level activities of specification, development, validation and
evolution are part of all software processes.
 The fundamental notions of software engineering are universally applicable to
all types of system development.
 There are many different types of system and each requires appropriate
software engineering tools and techniques for their development.

Chapter 1 Introduction and Software Processes 39
Key points

 The fundamental ideas of software engineering are applicable to all types of


software system.
 Software processes are the activities involved in producing a software
system. Software process models are abstract representations of these
processes.
 General process models describe the organization of software processes.
Examples of these general models include the ‘waterfall’ model, incremental
development, and reuse-oriented development.

Chapter 1 Introduction and Software Processes 40


Key points

 Requirements engineering is the process of developing a software


specification.
 Design and implementation processes are concerned with transforming a
requirements specification into an executable software system.
 Software validation is the process of checking that the system conforms to its
specification and that it meets the real needs of the users of the system.
 Software evolution takes place when you change existing software systems
to meet new requirements. The software must evolve to remain useful.

Chapter 1 Introduction and Software Processes 41


Key points

 The decision on whether to use a plan-driven approach or an agile methods


to development should depend on the type of software being developed, the
capabilities of the development team and the culture of the company
developing the system.
 Agile methods are incremental development methods that focus on rapid
development, frequent releases of the software, reducing process overheads
and producing high-quality code. They involve the customer directly in the
development process.

Chapter 1 Introduction and Software Processes 42

You might also like