0% found this document useful (0 votes)
3 views

unit1 notes

Software Engineering is a discipline within Computer Science focused on the systematic development, operation, and maintenance of complex software systems. It encompasses various software types, characteristics, processes, and models, emphasizing the importance of understanding requirements, quality assurance, and effective communication. The document outlines different software application domains, process models like Waterfall and Incremental, and addresses common myths in software development.

Uploaded by

meenaljain855
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

unit1 notes

Software Engineering is a discipline within Computer Science focused on the systematic development, operation, and maintenance of complex software systems. It encompasses various software types, characteristics, processes, and models, emphasizing the importance of understanding requirements, quality assurance, and effective communication. The document outlines different software application domains, process models like Waterfall and Incremental, and addresses common myths in software development.

Uploaded by

meenaljain855
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 30

SOFTWARE ENGINEERING

Introduction

Software serves as the basis for modern scientific investigation and engineering
problem solving.

Software Engineering is the field of Computer Science that deals with the
building of software systems which are so large and complex that they are built by
a team or teams of engineers.

IEEE stands for Institute of Electrical and Electronics Engineers. It is a


professional association with a nonprofit organization with its headquarter in
New York in the United States of America. It is composed of engineers, scientists,
allied professionals, advancing innovation and technological excellence for the
benefit of humanity.

IEEE Definition of Software Engineering

Software Engineering is the application of a systematic , disciplined, quantifiable


approach to the development, operation and maintenance of software, i.e the
application of engineering to software.

Defining Software
Software is a set of programs, procedures, algorithms and its documentation
concerned with the operation of a data processing system.

A software product is a complete package of computer programs developed for


end-users to solve specific problems.

There are two types of Software Product


1. Generic Products - Generic products are stand-alone systems that are
developed by a production unit and sold on the open market to any
customer who can buy them. Example : Word Processors
2. Customized Products - Systems commissioned by a particular customer
and developed by a contractor . Example : Core Banking Solutions.
Characteristics of “Software” in Software Engineering
1. Software is developed or engineered; it is not manufactured
in the classical sense:
● Although some similarities exist between software
development and hardware manufacturing, few activities are
fundamentally different.
● In both activities, high quality is achieved through good
design, but the manufacturing phase for hardware can
introduce quality problems than software.
2. The software doesn’t “wear out.”:
● Hardware components suffer from the growing effects of many
other environmental factors. Stated simply, the hardware
begins to wear out.
● Software is not susceptible to the environmental maladies that
cause hardware to wear out.
● 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 the design was translated into
machine-executable code. Therefore, the software
maintenance tasks that accommodate requests for change
involve considerably more complexity than hardware
maintenance. However, the implication is clear—the software
doesn’t wear out. But it does deteriorate.
3. The software continues to be custom-built:
● A software part should be planned and carried out with the
goal that it tends to be reused in various projects.
● Current reusable segments encapsulate the two pieces of
information and the preparation that is applied to the
information, empowering the programmer to make new
applications from reusable parts.
● In the hardware world, component reuse is a natural part of
the engineering process.

Characteristics of the Software


● It is intangible, meaning it cannot be seen or touched.
● It is non-perishable, meaning it does not degrade over time.
● It is easy to replicate, meaning it can be copied and distributed easily.
● It can be complex, meaning it can have many interrelated parts and
features.
● It can be difficult to understand and modify, especially for large and
complex systems.
● It can be affected by changing requirements, meaning it may need to be
updated or modified as the needs of users change.
● It can be impacted by bugs and other issues, meaning it may need to be
tested and debugged to ensure it works as intended.

Legacy Software
The older programs which are developed decades ago that are still in use by
performing modifications in order to meet the business requirements. Many
legacy systems remain supportive to core business functions and are important to
business. Hence, legacy software is characterized by longevity and business
criticality.
Sometimes the additional characteristic that is present in legacy software is poor
quality. Legacy systems some times have inextensible designs, convoluted code,
testcases and result that were never archived, a poorly maintained change
history, lack of support and documentation make it difficult to troubleshoot the
issues and leaving the system to security threats.

SOFTWARE ENGINEERING - LAYERS


The Layers
1. Presentation Layer:
The highest layer directly interacting with the user interface is this one. Its
duties include presenting information to the user handling user input and
rendering the user interface elements. This layer comprises client side
JavaScript, HTML and CSS in web applications.
2. Application Layer:
The application's main functionality is contained in this layer which is
sometimes referred to as the business logic layer. It carries out calculations
and enforces business rules and also processes and manages data and
coordinates the interactions of many parts.
3. Domain Layer:
This layer encapsulates the business logic and rules specific to the domain
of the application. It defines the objects, entities and their relationships
often represented using models or classes. The domain layer is
independent of any specific implementation or technology.
4. Infrastructure Layer:
Low-level issues including database access, external service interaction and
system-to-system communication are handled by the infrastructure layer.
It offers the support required for the higher levels to operate efficiently.

SOFTWARE PROCESS

SOFTWARE PROCESS

Software Processes are Complex and include a very large number of activities.

A Software Process can be defined as the set of activities and associated results
that produce a software product.
Software Processes also have attributes or characteristics that include :

1. Understanding : How easy is it to understand the process definition?

2. Visibility: How visible are the results of the process activities?

3. Supportability : To what extent the process activities are supported by


Computer Aided Software Engineering tools?

4. Acceptability : Is the defined process acceptable and usable by the


engineers who produced the product?

5. Reliability : Can the process avoid errors?

6. Robustness: Can the process continue to work in spite of unexpected


problems?

7. Maintainability : Can the process cope with changing requirements or process


improvements?

8. Rapidity : How fast can the process of delivering the system be completed?

FUNDAMENTAL ACTIVITIES OF SOFTWARE PROCESS

1. SOFTWARE SPECIFICATION : Involves Feasibility study, Requirement


Analysis, Requirement Specification and Requirements Validation.
2. SOFTWARE DEVELOPMENT : Involves Designing and Programming of
the software.
3. SOFTWARE VALIDATION: Software is checked to make sure that it
matches the customer requirements.
4. SOFTWARE EVOLUTION: Software is modified to meet the changing
requirements of customer.

SOFTWARE APPLICATION DOMAINS

System Software: This category encompasses essential software


that manages computer resources. It includes operating
systems, compilers, editors.
Application Software: Application software is designed to
directly interact with users and meet their requirements. It can
be divided into two major categories: generic and customized.

Networking and Web Applications Software: Networking


Software is the backbone that facilitates seamless
communication between computers and data storage systems.

Embedded Software: Embedded Software is intricately woven


into hardware components.

Examples of embedded software applications span across


diverse domains, from washing machines and satellites to
microwaves, underlining its ubiquity in our daily lives.

Reservation Software: Reservation Systems play a pivotal role in


information storage, retrieval, and transaction management for
various activities, including air travel, car rentals, and hotel
accommodations.

Artificial Intelligence Software: Artificial Intelligence (AI)


Software encompasses a realm of sophistication, housing
systems like expert systems, decision support systems, pattern
recognition software, and artificial neural networks.

Scientific Software: Scientific and Engineering Software is


tailored to meet the specific needs of scientific and engineering
professionals, empowering them to perform industry-specific
tasks efficiently.
Notable examples include software like MATLAB, AUTOCAD.
SOFTWARE ENGINEERING PRACTICE - ESSENCE
OF PRACTICE AND SOFTWARE MYTHS

ESSENCE OF PRACTICE

It is the: The attempt to avoid repeating the errors of others by studying


those errors and identifying ways to avoid them.

SOFTWARE MYTHS
(i) Management Myths:

Myth 1:

We have all the standards and procedures available for software


development.

Fact:

● Software experts do not know all the requirements for the software

development.

● And all existing processes are incomplete as new software

development is based on new and different problem.

Myth 2:

The addition of the latest hardware will improve the software development.

● The role of the latest hardware is not very high on standard

software development; instead (CASE) Engineering tools help the


computer, they are more important than hardware to produce

quality and productivity.

(ii)Customer Myths:

Myth 1:

A general statement of intent is enough to start writing plans (software


development) and details of objectives can be done over time.

Fact:

● Official and detailed description of the database function, ethical

performance, communication, structural issues and the verification

process are important.

● Unambiguous requirements (usually derived iteratively) are

developed only through effective and continuous

communication between customer and developer.

Myth 2:

Software requirements continually change, but change can be easily

accommodated because software is flexible

Fact:

● It is true that software requirements change, but the impact of

change varies with the time at which it is introduced.


(iii)Practitioner’s Myths:

Myths 1:

They believe that their work has been completed with the writing of the

plan.

Fact:

● It is true that every 60-80% effort goes into the maintenance

phase (as of the latter software release).

SOFTWARE PROCESS

PROCESS MODELS

Software process models are convenient tools that developers


use to map every step of their projects. They help project
managers plan their processes, estimate costs, identify
challenges and communicate with teams and customers.

SOFTWARE PROCESS FRAMEWORK

Framework is a Standard way to build and deploy applications.


Software Process Framework is a foundation of complete
software engineering process. Software process framework
includes all set of umbrella activities. It also includes number of
framework activities that are applicable to all software projects.

Umbrella activities

Typical umbrella activities are:

1. Software project tracking and control

● In this activity, the developing team accesses project plan and compares

it with the predefined schedule.

● If these project plans do not match with the predefined schedule, then

the required actions are taken to maintain the schedule.

2. Risk management
● Risk is an event that may or may not occur.

● If the event occurs, then it causes some unwanted outcome. Hence,

proper risk management is required.

3. Software Quality Assurance (SQA)

● SQA is the planned and systematic pattern of activities which are

required to give a guarantee of software quality.

For example, during the software development meetings are conducted

at every stage of development to find out the defects and suggest

improvements to produce good quality software.

4. Formal Technical Reviews (FTR)

● FTR is a meeting conducted by the technical staff.

● The motive of the meeting is to detect quality problems and suggest

improvements.

● The technical person focuses on the quality of the software from the

customer point of view.

DEFINING A FRAMEWORK ACTIVITY

1. Communication: In this activity, heavy communication with customers and


other stakeholders, requirement gathering is done.

2. Planning: In this activity, we discuss the technical related tasks, work


schedule, risks, required resources etc.

3. Modeling: Modelling is about building representations of things in the


‘real world’.In modelling activity, a product’s model is created in order to
better understanding and requirements.
4. Construction: In software engineering, construction is the application of set
of procedures that are needed to assemble the product. In this activity, we
generate the code and test the product in order to make better product.

5. Deployment: In this activity, a complete or non-complete products or


software are represented to the customers to evaluate and give feedback. on
the basis of their feedback we modify the products for supply better product.

Prescriptive process models


Prescriptive Process Models are used in software engineering to describe
how to perform software development activities and in what order.

The Waterfall Model

The Waterfall Model is a classical software development methodology. It


was first introduced by Winston W. Royce in 1970. It is a linear and
sequential approach to software development that consists of several
phases. It must be completed in a specific order. This classical waterfall
model is simple and idealistic.

1. Requirements: The first phase involves gathering requirements

from stakeholders and analyzing them to understand the scope

and objectives of the project.

2. Design: Once the requirements are understood, the design phase

begins. This involves creating a detailed design document that

outlines the software architecture, user interface, and system

components.

3. Development: The Development phase include implementation

involves coding the software based on the design specifications.


This phase also includes unit testing to ensure that each

component of the software is working as expected.

4. Testing: In the testing phase, the software is tested as a whole to

ensure that it meets the requirements and is free from defects.

5. Deployment: Once the software has been tested and approved, it

is deployed to the production environment.

6. Maintenance: The final phase of the Waterfall Model is

maintenance, which involves fixing any issues that arise after the

software has been deployed and ensuring that it continues to

meet the requirements over time.


Advantages of Waterfall Model
● Easy to Understand: The Classical Waterfall Model is very simple

and easy to understand.

● Individual Processing: Phases in the Classical Waterfall model are

processed one at a time.

● Properly Defined: In the classical waterfall model, each stage in

the model is clearly defined.

● Clear Milestones: The classical Waterfall model has very clear

and well-understood milestones.

DISADVANTAGES OF WATERFALL MODEL


● Limited Flexibility: The Waterfall Model is a rigid and linear

approach to software development, which means that it is not

well-suited for projects with changing or uncertain requirements.

Once a phase has been completed, it is difficult to make changes

or go back to a previous phase.

● Limited Stakeholder Involvement: The Waterfall Model is a

structured and sequential approach, which means that

stakeholders are typically involved in the early phases of the

project (requirements gathering and analysis) but may not be

involved in the later phases


Incremental Process Model

First, a simple working system implementing only a few basic features is


built and then that is delivered to the customer. Then thereafter many
successive iterations/ versions are implemented and delivered to the
customer until the desired system is released.

A, B, and C are modules of Software Products that are incrementally


developed and delivered.
1. Requirement analysis: In Requirement Analysis At any time, the

plan is made just for the next increment and not for any kind of

long-term plan. Therefore, it is easier to modify the version as per

the needs of the customer.

2. Design & Development: At any time, the plan is made just for the

next increment and not for any kind of long-term plan. Therefore,

it is easier to modify the version as per the needs of the customer.

The Development Team first undertakes to develop core features

(these do not need services from other features) of the system.

Once the core features are fully developed, then these are refined

to increase levels of capabilities by adding new functions in


Successive versions. Each incremental version is usually

developed using an iterative waterfall model of development.

3. Deployment and Testing: After Requirements gathering and

specification, requirements are then split into several different

versions starting with version 1, in each successive increment, the

next version is constructed and then deployed at the customer

site. in development and Testing the product is checked and

tested for the actual process of the model.

4. Implementation: In implementation After the last version (version

n), it is now deployed at the client site.

Advantages of the Incremental Process Model


1. Prepares the software fast.

2. Clients have a clear idea of the project.

Disadvantages of the Incremental Process Model


1. A good team and proper planned execution are required.

2. Because of its continuous iterations the cost increases.

Evolutionary Process Model


The evolutionary model is based on the concept of making an initial
product and then evolving the software product over time with iterative
and incremental approaches with proper feedback. In this type of model,
the product will go through several iterations and come up when the final
product is built through multiple iterations. The development is carried
out simultaneously with the feedback during the development. This model
has a number of advantages such as customer involvement, taking
feedback from the customer during development, and building the exact
product that the user wants. Because of the multiple iterations, the
chances of errors get reduced and the reliability and efficiency will
increase.

Advantages of the Evolutionary Process Model


1. During the development phase, the customer gives feedback

regularly because the customer’s requirement gets clearly

specified.

2. After every iteration risk gets analyzed.


Disadvantages of the Evolutionary Process Model
1. It is not suitable for small projects.

2. The complexity of the spiral model can be more than the other

sequential models.

PROTOTYPING
Prototyping is defined as the process of developing a working replication
of a product or system that has to be engineered.

Steps of Prototyping Model


Step 1: Requirement Gathering and Analysis: This is the initial step in
designing a prototype model. In this phase, users are asked about what
they expect or what they want from the system.
Step 2: Quick Design: This is the second step in the Prototyping Model.
This model covers the basic design of the requirement through which a
quick overview can be easily described.

Step 3: Build a Prototype: This step helps in building an actual prototype


from the knowledge gained from prototype design.

Step 4: Initial User Evaluation: This step describes the preliminary testing
where the investigation of the performance model occurs, as the customer
will tell the strengths and weaknesses of the design, which was sent to
the developer.

Step 5: Refining Prototype: If any feedback is given by the user, then


improving the client’s response to feedback and suggestions, the final
system is approved.

Step 6: Implement Product and Maintain: This is the final step in the phase
of the Prototyping Model where the final system is tested and distributed
to production, here the program is run regularly to prevent failures.

Advantages of Prototyping Model


● The customers get to see the partial product early in the life

cycle. This ensures a greater level of customer satisfaction and

comfort.

● New requirements can be easily accommodated as there is scope

for refinement.

Disadvantages of the Prototyping Model


● Costly concerning time as well as money.
● There may be too much variation in requirements each time the

prototype is evaluated by the customer.

The iterative model is a software development approach that breaks down


projects into smaller, manageable chunks called iterations. Each iteration
involves planning, analysis, design, development, testing, and deployment.

The Spiral Model


The Spiral Model is one of the most important Software Development Life
Cycle models. The Spiral Model is a combination of the waterfall model
and the iterative model. It provides support for Risk Handling. The Spiral
Model was first proposed by Barry Boehm.
1. Objectives determination and identify alternative solutions:

Requirements are gathered from the customers and the

objectives are identified, elaborated, and analyzed at the start of

every phase. Then alternative solutions possible for the phase are

proposed in this quadrant.

2. Identify and resolve Risks: During the second quadrant, all the

possible solutions are evaluated to select the best possible


solution. Then the risks associated with that solution are

identified and the risks are resolved using the best possible

strategy. At the end of this quadrant, the Prototype is built for the

best possible solution.

3. Develop the next version of the Product: During the third

quadrant, the identified features are developed and verified

through testing. At the end of the third quadrant, the next version

of the software is available.

4. Review and plan for the next Phase: In the fourth quadrant, the

Customers evaluate the so-far developed version of the software.

In the end, planning for the next phase is started.

The spiral model supports coping with risks by providing the scope

to build a prototype at every phase of software development.


ADVANTAGES OF SPIRAL MODEL
1. Risk handling is one of important advantages of the Spiral model,

it is best development model to follow due to the risk analysis

and risk handling at every phase.

2. Strong approval and documentation control.

3. It is good for customer satisfaction.

4. It is good for large and complex projects.

Disadvantages of Spiral Model


These are the following disadvantages of Spiral Model

1. It is not suitable for small projects as it is expensive.

2. It is much more complex than other SDLC models.

3. Too much dependable on risk analysis and requires highly specific

expertise.
CONCURRENT MODEL

Project managers who track project status in terms of the major phases [of the classic
life cycle] have no idea of the status of their projects. These are examples of trying to
track extremely complex sets of activities using overly simple models.
For example, early in a project the customer communication activity (not shown in the
figure) has completed its first iteration and exists in the awaiting changes state. The
analysis activity (which existed in the none state while initial customer communication
was completed) now makes a transition into the under development state. If, however,
the customer indicates that changes in requirements must be made, the analysis
activity moves from the under development state into the awaiting changes state.

The concurrent process model defines a series of events that will trigger transitions
from state to state for each of the software engineering activities.

Advantages

● Task completion time: Concurrent models can minimize the time it takes to
complete a task.
● Ease of use: Concurrent models can be easy to understand and use.
● Ease of documentation: Concurrent models can be simple to document.

Disadvantages
● Increased risk of errors: Poor communication and collaboration between
team members can lead to more errors.
● Requires more planning time: The development team needs to spend more
time planning and organizing the project to implement concurrent
engineering properly.
● Software requires more maintenance: Software may require more
maintenance after using the concurrent model.
What is Agile Model?
The Agile Model was primarily designed to help a project adapt quickly to
change requests. So, the main aim of the Agile model is to facilitate quick
project completion. To accomplish this task, agility is required. Agility is
achieved by fitting the process to the project and removing activities that
may not be essential for a specific project. Also, anything that is a waste
of time and effort is avoided. The Agile Model refers to a group of
development processes. These processes share some basic characteristics
but do have certain subtle differences among themselves.
1. Requirement Gathering:- In this step, the development team must

gather the requirements, by interaction with the customer.

development team should plan the time and effort needed to build

the project. Based on this information you can evaluate technical

and economical feasibility.

2. Design the Requirements:- In this step, the development team will

use user-flow-diagram or high-level UML diagrams to show the

working of the new features and show how they will apply to the

existing software. Wireframing and designing user interfaces are

done in this phase.

3. Construction / Iteration:- In this step, development team members

start working on their project, which aims to deploy a working

product.

4. Testing / Quality Assurance:- Testing involves Unit Testing,

Integration Testing, and System Testing. A brief introduction of

these three tests is as follows:

● Unit Testing:- Unit testing is the process of checking small

pieces of code to ensure that the individual parts of a

program work properly on their own. Unit testing is used to

test individual blocks (units) of code.

● Integration Testing:- Integration testing is used to identify

and resolve any issues that may arise when different units

of the software are combined.


● System Testing:- Goal is to ensure that the software meets

the requirements of the users and that it works correctly in

all possible scenarios.

5. Deployment:- In this step, the development team will deploy the

working project to end users.

6. Feedback:- This is the last step of the Agile Model. In this, the team

receives feedback about the product and works on correcting bugs

based on feedback provided by the customer.

ADVANTAGES
● It reduces the total development time of the whole project.

● Agile development emphasizes face-to-face communication among

team members, leading to better collaboration and understanding of

project goals.

Disadvantages
● The agile model depends highly on customer interactions so if the

customer is not clear, then the development team can be driven in

the wrong direction.

● Agile development models require a high degree of expertise from

team members, as they need to be able to adapt to changing

requirements and work in an iterative environment. This can be

challenging for teams that are not experienced in agile development

practices and can lead to delays and difficulties in the project.

You might also like