0% found this document useful (0 votes)
2 views24 pages

Software Engineering Notes Unit1

Software engineering is a discipline focused on the production of high-quality software, encompassing all stages from development to maintenance. It includes various software process models such as the Waterfall model, Evolutionary development model, and Component-based software engineering, each with its own advantages and disadvantages. Key attributes of good software include maintainability, dependability, efficiency, and acceptability, while ethical considerations and security are also crucial in the software development process.

Uploaded by

Deepthi Rm
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views24 pages

Software Engineering Notes Unit1

Software engineering is a discipline focused on the production of high-quality software, encompassing all stages from development to maintenance. It includes various software process models such as the Waterfall model, Evolutionary development model, and Component-based software engineering, each with its own advantages and disadvantages. Key attributes of good software include maintainability, dependability, efficiency, and acceptability, while ethical considerations and security are also crucial in the software development process.

Uploaded by

Deepthi Rm
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

SOFTWARE ENGINEERING

INTRODUCTION:
SOFTWARE: A program is a set of instructions that performs a specific task. Software is a

set of programs that accomplish a collective functionality.

SOFTWARE ENGINEERING:
Software engineering is a Engineering discipline that is concerned with all the aspects of
software production from the early stage of development to maintaining the system after it has
gone to use.

It is a discipline whose aim is the production of high quality software, software delivered on

time within budget and satisfies its requirement.

WHAT SOFTWARE SYSTEM CONSISTS OF?

Software system consists of set of programs, configuration files, system documentation and

user documentation.

Configuration files: used to set these programs.

System documentation: describes the structure of the system.

User documentation: Explain how to use the system and website for users.

SOFTWARE PRODUCTS:

Software engineers develop software products that are to be sold to the customers:

Software products can be categorized into:

1. Generic products: These are 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.

DAVAN NUTAN COLLEGE


2. Customized products: Software that is commissioned by a specific customer
to meet their own needs. Such products are generally used to solve a problem in a
specific domain.

The attributes of good software are:

Maintainability –Every software developed should be able to meet the changing needs
of customers.

Dependability and security- Software developed for any situation should not cause
physical or economic damage in the event of system failure. Care should be taken that
malicious users should not be able to access or damage the system.

Efficiency – Depending on the context, the developed software would be evaluated based

on its responsiveness, processing time and memory utilization

Acceptability- Any software developed should be understandable, usable and compatible

with other systems in the context that work in unison with it.

Software crisis:

It is obvious to note that it is very difficult to write efficient software within the right time

specified. This could be due to various reasons such as

1. Heterogeneity –increasingly, systems are required to operate as


distributed systems across networks that include different types of computer and
mobile devices.

2. 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 also plays a very important role in developing a software module. As
software is intertwined with all aspects of our lives, it is essential that we can trust that
DAVAN NUTAN COLLEGE
software. Hence appropriate security measures need to be taken to safeguard the software
from external attack.

Software Engineering Ethics

Software development does not just involve technical skills, but also includes ethics. The
team involved in the software development is expected to be honest and ethically
responsible for the software at all times. The following factors need to be addressed
during, before and after software development.

a) Confidentiality: It is the employers‟ responsibility to maintain


confidentiality of the employee information and it is the employee responsibility
to maintain the secrecy and confidentiality involved in the development of
software.

b) Competence: It is the ethical responsibility of an employee to accept


work that matches his technical skills. He should be competent enough
to carry out the task assigned to him.

c) IPR (Intellectual Property Rights) – Very tricky, but very essential. It


has to be taken care that when reusing existing components for software
development, the components is available for use as per IPR.

d) Computer misuse- Using the computer provided by the employer for


personal use is misconduct and misuse of the system. Watching videos, playing

songs, browsing social networking sites all mark the misuse of computer.

SOFTWARE PROCESS:

A set of activities who goal is the development of software.

Software process activities

Any software developed generally follows the following software process activities:

DAVAN NUTAN COLLEGE


1. Software specification – Involves gathering requirements for the

development of software

2. Software development- involves the implementation of the software.

3. Software validation – verifying if the software developed meets its

requirements.

4. Software evolution- making sure that the software can be modified with

respect to change in requirements over time.

SOFTWARE PROCESS MODELS:

A simplified representation of a software process presented from a specified perspective.

It is an abstract representation of software process.

THE PROCESS MODELS ARE:

1. Waterfall model.

2. Evolutionary development model.

3. Component based software engineering.

DAVAN NUTAN COLLEGE


[Link] MODEL:

This is a plan-driven model. There are separate and distinct phases of specification
and development.

The phases of Waterfall model depicted in Fig 8 are:

a) Requirements analysis and definition – Gathering the requirements and


defining the functionality of each requirement. This could be done through
various techniques discussed in the next section.

b) System and software design- Design and architecting the software as a


whole. The components involved, the interface between them and other design
considerations are depicted as diagrams. UML diagrams are most frequently used
design representations.

c) Implementation and unit testing – Developing the system and testing


each module one by one as a single unit. Every component developed or reused
are individually tested.

d) Integration and system testing- The components are integrated together


and the system is tested as a whole. The interfaces and communication modules
between the systems are tested here.

e) Operation and maintenance- Once the system is put into use, the
functionality of the system in the operational domain needs to be taken care of.
The maintenance and operation of the system at the client end is important.

DAVAN NUTAN COLLEGE


Advantages of Waterfall Model:
➢ simple to implement.
➢ start and end point of each phase is fixed,which makes it easy to cover
progress.
➢ release data,final cost can be determined before development.
➢ easy to control and clarity to customer due to strict reporting system.
Disadvantages of Waterfall Model:
➢ high risk factor→not suitable for most significant and complex projects.
➢ cannot accept the changes in requirements during development.
➢ it becomes tough to go back to the phase.

[Link] development model:

Evolutionary development is based on the idea of developing an initial implementation, exposing


this to user comment and refining it through many versions until an adequate system has been
developed.

Specification, development and validation activities are interleaved rather than separate, with

rapid feedback across activities. There are two fundamental types of evolutionary development:

1. Exploratory development where the objective of the process is to work with the customer to

explore their requirements and deliver a final system. The development starts with the parts of

the system that are understood. The system evolves by adding new features proposed by the

customer.

2. Throwaway prototyping where the objective of the evolutionary development process is to

understand the customer’s requirements and hence develop a better requirements definition for

the system. The prototype concentrates on experimenting with the customer requirements that

are poorly understood. An evolutionary approach to software development is often more

effective than the waterfall approach in producing systems that meet the immediate needs of

customers.

DAVAN NUTAN COLLEGE


The advantage of a software process that is based on an evolutionary approach Concurrent

activities Validation Final version Development Intermediate versions Specification Initial

version Outline description Evolutionary development 4.1

■ Software process models is that the specification can be developed incrementally.

As users develop a better understanding of their problem, this can be reflected in the software

system. However, from an engineering and management perspective, the evolutionary

approach has two problems:

1. The process is not visible Managers need regular deliverables to measure progress. If systems

are developed quickly, it is not cost-effective to produce documents that reflect every version

of the system.

2. Systems are often poorly structured Continual change tends to corrupt the software structure.

Incorporating software changes becomes increasingly difficult and costly.

Fig: EVOLUTIONARY DEVOLPMENT

DAVAN NUTAN COLLEGE


Advantages of evolutionary development model:
➢ Software process that is based on an evolutionary approach is that
specification can be developed incrementally.
➢ As users develop a better understanding of their problem,this can be
reflected in the software system.

Disadvantages of evolutionary development model:


➢ The process is not [Link] needs regular deliverables to measure
[Link] systems are developed quickly,it is not cost-effective to produce
document that reflect every system.
➢ Software are often poorly structured,continual changes tends to corrupt the
software structure .Incorporating software changes becomes increasingly
difficult and costly.

DAVAN NUTAN COLLEGE


[Link] BASED SOFTWARE MODEL:

This reuse-oriented approach relies on a large base of reusable software components and some

integrating framework for these components. Sometimes, these components are systems in

their own right (COTS or commercial off-the-shelf systems) that may provide specific

functionality such as text formatting or numeric calculation.

The generic process model for CBSE is shown in Figure 4.3.

While the initial requirements specification stage and the validation stage are comparable with

other processes, the intermediate stages in a reuse-oriented process are different. These stages

are:

1. Component analysis Given the requirements specification; a search is made for

components to implement that specification. Usually, there is no exact match, and the

components that may be used only provide some of the functionality required.

2. Requirements modification During this stage, the requirements are analyzed using

information about the components that have been discovered. They are then modified to reflect

the available components. Where modifications are impossible, the component analysis activity

may be re-entered to search for alternative solutions.

DAVAN NUTAN COLLEGE


3. System design with reuse During this phase, the framework of the system is designed

or an existing framework is reused. The designers take into account the components that are

reused and organize the framework to cater to this. Some new software may have to be designed

if reusable components are not available.

4. Development and integration Software that cannot be externally procured is developed,

and the components and COTS systems are integrated to create the new system. System

integration, in this model, may be part of the development process rather than a separate

activity.

Component-based software engineering has the obvious advantage of reducing the amount of

software to be developed and so reducing cost and risks. It usually also leads to faster delivery

of the software. However, requirements compromises are inevitable and this may lead to a

system that does not meet the real needs of users. Furthermore, some control over the system

evolution is lost as new versions of the reusable components are not under the control of the

organization using them.

PROCESS ACTIVITIES:
Software processes are a integral part of software process models. Various process activities

that are carried out during every phase of development form the software activities. To define

technically, A software process is a structured set of activities required to develop a software

system. The activities by and large include:

1. Specification – defining what the system should do;

2. Design and implementation – defining the organization of the system

and implementing the system;


DAVAN NUTAN COLLEGE
3. Validation – checking that it does what the customer wants;

4. Evolution – changing the system in response to changing customer

needs.

Requirements engineering process consists of the following activities:

a) Feasibility study – Technical and Financial feasibility of the project

needs to be considered.

b) Requirements elicitation and analysis – Expectation from the system.

The functionalities that the system is expected to provide.

c) Requirements specification – Defining requirements for every activity

performed by the user or set of users and the expected outcome for each

of these activities.

d) Requirements validation – Checking validity of the requirements.

Verifying if the requirements specification contains the functionalities

that the system is expected to perform.

DAVAN NUTAN COLLEGE


Once the feasibility study has been completed a feasibility report is generated. It is observed

that the requirements elicitation and analysis, requirements specification and requirements

validation are iterative activities. Based on the analysis it is required to decide on a system

model that needs to be incorporated as a part of requirements document. The requirements

specification activity gives the complete user and system requirements. The requirements

validation process checks if the system performs the required functions and the requirement

specification covers all functionalities to be provided by the system. The outcome of each

activity is an input to the requirements document.

Software design and implementation

Once the requirements for specific software have been gathered the next activity is to design

and develop the software. These activities could be performed individually or in parallel

depending on the project. Each of these activities have a set of process activities to be carried

out. They are described in detail below:

Software design

DAVAN NUTAN COLLEGE


The major aim of this phase of software development is to design a software structure that

realizes the specification as given by the requirements specification document.

Design activities involve Architectural design, interface design and component design. The

system architecture and its components need to be defined and specified as a part of

architectural design. The interface design involves the specification and working of interfaces

for enables inter and intra component communication.

Implementation

Translate this structure into an executable program. This requires the use of a programming

language. The choice of programming language is based on the complexity of the software, the

requirements specification of the software, the reusability of components in the software etc.

Software validation

Validating the software involve checking for conformation of the system to its specification.

This also involves checking and review processes and system testing. System testing involves

executing the system with test cases. The system testing involves Component testing and

DAVAN NUTAN COLLEGE


acceptance testing. Component testing involves testing of each component that is used to build

the software. The interfaces between the components and the working of components with the

existing system code needs to be tested. The process activities involved in testing and its

iterations are shown in Fig 5. Every individual component is tested and then system is tested

as a whole. Acceptance testing is done to determine if the system is functioning well in the

domain of its application.

The various phases of testing are depicted below in Fig 6. It is a wrong notion that testing only

begins after implementation is complete. As a fact, testing is carried out throughout the

development process. The figure below depicts the outcome of each activity in the phase of

testing.

Testing phases

DAVAN NUTAN COLLEGE


Fig 6: Phases of testing

As and when the requirements specification is complete the acceptance test plan is also parallel

written because the acceptance testing involves testing of the software in its working domain.

Acceptance test cases are written at this stage. The test plan gets its input from both

requirements specification as well as system specification activities. The system integration

test plan is an output of system specification and design. Workings of individual components,

testing for interfaces between them are all a part of system integration testing. Once the detailed

design is available the sub system integration test plan is also drafted. Later on the tests are

accomplished by making use of the test plan.

This is also called as V-model for test plan driven software development process.

Software Evolution

DAVAN NUTAN COLLEGE


Fig 7: Activities in software evolution

It is obvious that software is inherently flexible and can change. As requirements change

through changing business circumstances, the software that supports the business must also

evolve and change. Although there has been a demarcation between development and evolution

(maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new.

Fig 7 depicts the activities involved in software evolution. Existing system is continuously

assessed based on the system requirements. If any change has been proposed the system needs

to be modified and a new system is then released. This is an iterative process and continues

until the required outcome has been obtained.

COPING WITH CHANGES:

Prototyping:

DAVAN NUTAN COLLEGE


The objective of prototype should be made explicit from the start of the process. If the

objectives are left unstated management are end user may misunderstood the function of the

prototype.

The next stage is to what to put into and more important is what to be leave out of the prototype

system.

The objective of the prototype is to concentrate on some important functionalities and to decide

to relax on non-functional requirements.

The final stage of the process is prototype evolution provisions must be made during this stage

for user training and prototype objectives should be used to derive a plan for evolution.

Advantages:

➢ This model is good where requirements are changing.


➢ Customers are actively involved in development prototype can be changed and even
discarded.
➢ Flexibility in design, so that we can easily detect errors.

Disadvantages:

➢ Client involvement is more.


➢ Too many changes can disturb the development team.
➢ It is expensive and time consuming.

INCREEMENTAL DELIVERY:

Incremental development involves developing the system in increments and


evaluating each increment before proceeding to the development of the next
increment. This is the normal approach used in agile methods. The evaluation of
software developed using incremental approach is done by user/customer proxy.

Incremental delivery involves deploying an increment for use by end-users. This


is a more realistic evaluation about practical use of software. It is difficult to
DAVAN NUTAN COLLEGE
implement for replacement systems as increments have less functionality than the
system being replaced.

Advantages and disadvantages

➢ Cost of accommodating changing customer requirements is reduced.


Customer feedback on the development is obtained as and when an
increment is ready to be released. Rapid delivery and deployment of useful
software can be accomplished by making use of this approach.
➢ The Problems with this approach is that the process is not visible. Also, it is inevitable

that system structure tends to degrade as new increments are added.

Fig:Incremental delievery

Spiral model:

DAVAN NUTAN COLLEGE


Here the process is represented as a spiral rather than as a sequence of activities with
backtracking. Each loop in the spiral represents a phase in the process. There are no fixed
phases such as specification or design. The loops in the spiral are chosen depending on what is
required. Risks are explicitly assessed and resolved throughout the process. Spiral model has
been very influential in helping people think about iteration in software processes and
introducing the risk-driven approach to development. In practice, however, the model is rarely
used as published for practical software development.

Sectors of spiral model

The following are the sectors of the spiral model:

1. Objective setting -Specific objectives for the phase are identified.

2. Risk assessment and reduction-Risks are assessed and activities put in

place to reduce the key risks.

3. Development and validation-A development model for the system is

chosen which can be any of the generic models.


4. Planning-The project is reviewed and the next phase of the spiral is

planned.

DAVAN NUTAN COLLEGE


AGILE DEVOLOPMENT:

Unlike other software development models, assumes that the change is constant so adapt to

change rather than control change

This is very practical and major movement away from conventional software development
models which assume that Requirements will not rapidly change ones we specify them and
Object Oriented models that work with objective of need to design for the future and need to
design for reuse Agile Manifesto and Four Key Ideas in Agile

To produce better software product by reducing the time gap between doing some activity and

gaining feedback.

In order to implement agile manifesto, agile development approach uses four key ideas:

• Individuals and interactions are preferred over processes and tools

• Working software is preferred over comprehensive Documentation

• Customer collaboration is preferred over contract negotiation

• Responding to change is preferred over following a plan

And agile manifesto and agile software development uses following Key Principles.

Key Principles of Agile Manifesto and Agile Software Development

Agile manifesto and agile software development uses following Key Principles.

• #1 Principle: Customer Involvement: Customer Should be Closely involved


throughout the Development Process Their role is provide and priorities new
system requirements and to evaluate the iterations of the system.

• #2 Principle: Incremental Delivery: The Software Developed in Increments

with the customer specifying the requirements to be included in each increment.

DAVAN NUTAN COLLEGE


• #3 Principle: People Not Process: The Skills of Development Team should be
recognized and exploited. Team member should be left to develop their own
ways of working without prescriptive process.

• #4 Principle: Embrace Change: Expect the System Requirements to Change

and so design system to accommodate these changes.

• #5 Principle: Maintain Simplicity: Focus on Simplicity in both the software


being developed and in the development process. Wherever possible, actively
work to eliminate the complexity from the system.

Agile Methods: Where is it Working Well?

Agile methods work very well in small and medium scale software development and teams.

Agile methods are found be effective under situations mentioned below:

• Product Development where software company is developing a small or

medium sized product for sale

• Customer System Development within an organization where there is clear


commitment from the customer involved in the development process and where
there are not a lot of external rules and regulations that affect the software Agile
methods seems to be less effective in project, teams, and software that are large
in size, and also, where systems are safety and mission critical. Agile methods
face issues and failures when

• Putting in a fixed price contract where managing cost & effort becomes more
important over business value. Agile methods since focus on value more than
cost and effort frequently fail to stick to cost and effort.

• Expecting all of the scope to be delivered: Agile methods focus on workable


product and on-time delivery. Hence in agile we can notice negotiating with
scope by reducing or increasing scope when it is found to be of value can be
quite a common characteristic.

DAVAN NUTAN COLLEGE


• Pushing the team hard – making unrealistic demands: Agile uses group
creativity and co-creation and as such team motivation is critical for success.
When we push the team hard by putting unrealistic demands, we can see that it
may result in demotivated team. Demotivated team frequently fails to deliver
value and innovation.

• Focusing on project execution efficiency as against product value delivered:


Project efficiency is all about sticking to scope, effort, schedule, and budget.
Agile accepts changes and hence scope always undergoes change even in later
stages of the software development life cycle and it may consume more effort
and budget. Hence agile methods may not of great value in fixed-budget and
fixed scope projects.

Advantages:

➢ Any time changes are accepted.


➢ Very realistic approach.
➢ Reduces total development time.
➢ Little planning is required.
➢ Updated version of functioning software are released every week or month.
➢ Supports customer involvement and satisfaction.

DAVAN NUTAN COLLEGE


Disadvantage of Agile model:

➢ Due to lack of proper documentation,once the project completes and the


developers are allotted to another project,maintenance of finished project
may become difficult.

Plan Driven And Agile Development:

Learning Objectives

By studying Plan-driven and Agile Development:

• You will understand and appreciate the differences between Agile Development

and Plan-driven Approaches

• You will understand on range of questions to be answered so as to effectively

balance Agile Development and Plan-driven Approaches

DAVAN NUTAN COLLEGE


Introduction

Plan-driven development focuses on sticking to scope, using allocated effort and budget,
sticking to on-time delivery, and compliance with process. It believes that quality product is
result of plan-driven project management and process management.

When compared with plan-driven approach, agile development focuses on providing value and
delivering workable product. Accepting changes and varying scope, using more effort and cost
than allocated are seen frequently in agile development. However agile believes in fixed
schedule ensuring on-time delivery. In brief, agile development believes in workable product
by willingly accepting changes with higher value against that of plan-driven development
wherein ones plan including processes is accepted then changes are discouraged. In this section,
we study the differences between Agile Development and Plan-driven Approaches, and
understand on range of questions to be answered so as to effectively balance Agile
Development and Plan-driven Approaches.

DAVAN NUTAN COLLEGE

You might also like