Software Engineering - Chapter 1

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 28

Software Engineering

Chapter 1 : Introduction To Software Engineering and Process Models

Software Application Domains


- System software
- Application software
- Engineering/scientific software
- Embedded software
- Product-line software
- Web/Mobile applications
- Artificial intelligence software

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Software engineering

Software engineering is a layered technology

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
The Process Framework
A process framework establishes the foundation for a complete software engineering process by identifying a
small number of framework activities that are applicable to all software projects, regardless of their size or
complexity. In addition, the process framework encompasses a set of umbrella activities that are applicable
across the entire software process.

A generic process framework for software engineering encompasses five activities:

Communication - Before any technical work can commence, it is critically important to communicate and
collaborate with the customer (and other stakeholders). The intent is to understand stakeholders’ objectives
for the project and to gather requirements that help define software features and functions.

Planning- A software project is a complicated journey, and the planning activity creates a “map” that helps
guide the team as it makes the journey. The map—called a software project plan—defines the software
engineering work by describing the technical tasks to be conducted, the risks that are likely, the resources that
will be required, the work products to be produced, and a work schedule.

Modeling- Whether you’re a landscaper, a bridge builder, an aeronautical engineer, a carpenter, or an


architect, you work with models every day. You create a “sketch” of the thing so that you’ll understand the big
picture—what it will look like architecturally, how the constituent parts fit together, and many other
characteristics. If required, you refine the sketch into greater and greater detail in an effort to better
understand the problem and how you’re going to solve it. A software engineer does the same thing by
creating models to better understand software requirements and the design that will achieve those
requirements.

Construction- What you design must be built. This activity combines code generation (either manual or
automated) and the testing that is required to uncover errors in the code.

Deployment- The software (as a complete entity or as a partially completed increment) is delivered to the
customer who evaluates the delivered product and provides feedback based on the evaluation.
and establishes mechanisms to achieve reusable components. Work product preparation and
production—encompass the activities required to create work products such as models, documents, logs,
forms, and lists.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Umbrella Activities
Software engineering process framework activities are complemented by a number of umbrella activities. In
general, umbrella activities are applied throughout a software project and help a software team manage and
control progress, quality, change, and risk.

Typical umbrella activities include:


Software project tracking and control—allows the software team to assess progress against the project plan
and take any necessary action to maintain the schedule.

Risk management—assesses risks that may affect the outcome of the project or the quality of the product.
Software quality assurance—defines and conducts the activities required to ensure software quality.

Technical reviews—assess software engineering work products in an effort to uncover and remove errors
before they are propagated to the next activity.

Measurement—defines and collects process, project, and product measures that assist the team in
delivering software that meets stakeholders’ needs; can be used in conjunction with all other framework and
umbrella activities.

Software configuration management—manages the effects of change throughout the software process.

Reusability management—defines criteria for work product reuse (including software components) and
establishes mechanisms to achieve reusable components.

Work product preparation and production—encompass the activities required to create work products
such as models, documents, logs, forms, and lists.

SOFTWARE PROCESS
When you work to build a product or system, it’s important to go through a series of predictable steps—a road
map that helps you create a timely, high-quality result. The road map that you follow is called a “software
process.”

The hierarchy of technical work within the software process is activities, encompassing actions, populated by
tasks.

Process was defined as a collection of work activities, actions, and tasks that are performed when some work
product is to be created. Each of these activities, actions, and tasks resides within a framework or model that
defi nes their relationship with the process and with one another.

Each software engineering action is defi ned by a task set that identifi es the work tasks that are to be
completed, the work products that will be produced, the quality assurance points that will be required, and the
milestones that will be used to indicate progress.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Software process framework

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Process flow

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Capability Maturity Model (CMM) :

The Capability Maturity Model (CMM) is a procedure used to develop and refine an organization's software
development process.

The model defines a five-level evolutionary stage of increasingly organized and consistently more mature
processes.

CMM was developed and is promoted by the Software Engineering Institute (SEI), a research and
development center promote by the U.S. Department of Defense (DOD).

Capability Maturity Model is used as a benchmark to measure the maturity of an organization's software
process.

1. Initial Level
The initial level, as the name suggests, is the starting point for the utilization of an undocumented or new
repeat process. Processes at the initial level are generally not documented and tend to be in a state of active
change.
The processes also tend to be operated by events and/or users in an uncontrolled manner. The result is that
processes are unstable. Success in the initial level is not expected to be repeatable because processes are
not adequately documented or defined.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
2. Repeatable Level
Processes at the repeatable level, as the name suggests, are repeatable and tend to generate constant
results. At this level, general project management strategies exist, and successes may be replicated when the
appropriate measures and processes have been developed, identified, and recorded.

3. Defined Level
Processes at the defined level are usually defined and recorded (documented). Standard processes are also
defined and developed and can be improved as time passes. Hence, process validation for various scenarios
may be possible. Essentially, processes at the defined level are expected to be in the development stage, and
they can be enhanced to the next level.

4. Managed Level
At the managed level, organizations tend to exercise control over their processes and can monitor them.
Process capability is defined, process sustainability is tested across various environments, and processes are
normally improved and in use. Additionally, the process maturity at the managed stage allows for them to be
used in certain environments or projects without quality deterioration or specification alteration.

5. Optimizing Level
The optimizing level tends to encompass continuous upgrades of processes via feedback obtained from
monitoring activities and through the development of new and creative processes that will increase
organizational efficiency. The optimizing stage focuses heavily on process performance improvement.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Advanced Trends in Software Engineering :

The future for software development is, as they say, very bright (and exciting) indeed.
Attempting to predict the future of anything is notoriously tricky, but there are some emerging fields that
look like good bets for the future of software engineering. If you are considering a career in this already
fast-developing and exciting field, now is a good a time as any to get on the bandwagon.

What are the latest trends in software engineering?

1. The cloud will only get bigger in overtime

2. Artificial Intelligence will only get better over the next few years

3.The Internet of Things (IoT) is set to grow and grow

4.Big Data will only get bigger and bigger

5.Never underestimate the potential of blockchain

6.Mixed Reality might be something to keep an eye on

7.Have you heard of continuous integration and continuous deployment (CI/CD)?

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
PRESCRIPTIVE PROCESS MODELS :
A process model provides a specific roadmap for software engineering work. It defi nes the flow of all
activities, actions and tasks, the degree of iteration, the work products, and the organization of the
work that must be done.

The purpose of process models is to try to reduce the chaos present in developing new software
products.

Prescriptive process models define a prescribed set of process elements and a predictable process workflow.

The Waterfall Model :

The waterfall model is a sequential, plan driven-process where you must plan and schedule all your
activities before starting the project. Each activity in the waterfall model is represented as a separate
phase arranged in linear order.

The waterfall model, sometimes called the classic life cycle, suggests a systematic, sequential
approach to software development that begins with customer specification of requirements and
progresses through planning, modeling, construction, and deployment, culminating in ongoing
support of the completed software.

Each of these phases produces one or more documents that need to be approved before the next
phase begins. However, in practice, these phases are very likely to overlap and may feed
information to one another.

The waterfall model is easy to understand and follow. It doesn’t require a lot of customer involvement
after the specification is done. Since it’s inflexible, it can’t adapt to changes. There is no way to see
or try the software until the last phase.

The waterfall model has a rigid structure, so it should be used in cases where the requirements are
understood completely and unlikely to radically change.

A variation in the representation of the waterfall model is called the V-model.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
V Model :

The V model (Verification and Validation model) is an extension of the waterfall model.
All the requirements are gathered at the start and cannot be changed.
You have a corresponding testing activity for each stage. For every phase in the development cycle,
there is an associated testing phase.

The corresponding testing phase of the development phase is planned in parallel, as you can see above.

The V model is highly disciplined, easy to understand, and makes project management easier. But it
isn’t good for complex projects or projects that have unclear or changing requirements.

This makes the V model a good choice for software where downtimes and failures are
unacceptable.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Incremental Process Models :

The incremental model divides the system’s functionality into small increments that are delivered one
after the other in quick succession. The most important functionality is implemented in the initial
increments.

The subsequent increments expand on the previous ones until everything has been updated and
implemented.

Incremental development is based on developing an initial implementation, exposing it to user


feedback, and evolving it through new versions. The process’ activities are interwoven by feedback.

The incremental model combines the elements’ linear and parallel process flows.

Each iteration passes through the requirements, design, coding, and testing stages.

The incremental model lets stakeholders and developers see results with the first increment.
The incremental model delivers a series of releases, called increments, that provide progressively more
functionality for the customer as each increment is delivered.

If the stakeholders don’t like anything, everyone finds out a lot sooner. It is efficient as the developers only
focus on what is important and bugs are fixed as they arise, but you need a clear and complete definition of
the whole system before you start.

The incremental model is great for projects that have loosely-coupled parts and projects with complete and
clear requirements.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Evolutionary Process Models :
Evolutionary models are iterative. They are characterized in a manner that enables you to develop
increasingly more complete versions of the software.

Prototyping : Often, a customer defines a set of general objectives for software, but does not
identify detailed requirements for functions and features. In other cases, the developer may be
unsure of the efficiency of an algorithm, the adaptability of an operating system, or the form that
human-machine interaction should take. In these, and many other situations, a prototyping paradigm
may offer the best approach.

You meet with other stakeholders to define the overall objectives for the software, identify whatever
requirements are known, and outline areas where further definition is mandatory.

A prototyping iteration is planned quickly, and modeling (in the form of a “quick design”) occurs. A
quick design focuses on a representation of those aspects of the software that will be visible to end
users (e.g., human interface layout or output display formats).

The quick design leads to the construction of a prototype. The prototype is deployed and evaluated
by stakeholders, who provide feedback that is used to further refine requirements. Iteration occurs as
the prototype is tuned to satisfy the needs of various stakeholders, while at the same time enabling
you to better understand what needs to be done.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Iterative Model

The iterative development model develops a system through building small portions of all the
features. This helps to meet initial scope quickly and release it for feedback.

In the iterative model, you start off by implementing a small set of the software requirements. These
are then enhanced iteratively in the evolving versions until the system is completed. This process
model starts with part of the software, which is then implemented and reviewed to identify further
requirements.

Like the incremental model, the iterative model allows you to see the results at the early
stages of development. This makes it easy to identify and fix any functional or design
flaws. It also makes it easier to manage risk and change requirements.

The deadline and budget may change throughout the development process, especially for
large complex projects. The iterative model is a good choice for large software that can be
easily broken down into modules.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
RAD Model

The Rapid Application Development (RAD model) is based on iterative development and
prototyping with little planning involved. You develop functional modules in parallel
for faster product delivery. It involves the following phases:

1. Business modeling
2. Data modeling
3. Process modeling
4. Application generation
5. Testing and turnover

The RAD concept focuses on gathering requirements using focus groups and workshops,
reusing software components, and informal communication.

The RAD model accommodates changing requirements, reduces development time, and
increases the reusability of components. But it can be complex to manage. Therefore, the
RAD model is great for systems that need to be produced in a short time and have known
requirements.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Spiral Model

The spiral model is a risk driven iterative software process model. The spiral model
delivers projects in loops. Unlike other process models, its steps aren’t activities but
phases for addressing whatever problem has the greatest risk of causing a failure.
It was designed to include the best features from the waterfall and introduces
risk-assessment.
The spiral development model is a risk-driven process model generator that is used to
guide multi-stakeholder concurrent engineering of software intensive systems. It has
two main distinguishing features. One is a cyclic approach for incrementally growing a
system’s degree of definition and implementation while decreasing its degree of risk.
The other is a set of anchor point milestones for ensuring stakeholder commitment to
feasible and mutually satisfactory system solutions.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
You have the following phases for each cycle:

1. Address the highest-risk problem and determine the objective and alternate
solutions
2. Evaluate the alternatives and identify the risks involved and possible solutions
3. Develop a solution and verify if it’s acceptable
4. Plan for the next cycle

You develop the concept in the first few cycles, and then it evolves into an
implementation. Though this model is great for managing uncertainty, it can be difficult
to have stable documentation. The spiral model can be used for projects with unclear
needs or projects still in research and development.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Agile process model:
The meaning of Agile is swift or versatile."Agile process model" refers to a software development
approach based on iterative development.

Agile methods break tasks into smaller iterations, or parts do not directly involve long term planning.
The project scope and requirements are laid down at the beginning of the development process.
Plans regarding the number of iterations, the duration and the scope of each iteration are clearly
defined in advance.

Each iteration is considered as a short time "frame" in the Agile process model, which typically lasts
from one to four weeks. The division of the entire project into smaller parts helps to minimize the
project risk and to reduce the overall project delivery time requirements. Each iteration involves a
team working through a full software development life cycle including planning, requirements
analysis, design, coding, and testing before a working product is demonstrated to the client.

Phases of Agile Model:


Following are the phases in the Agile model are as follows:
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback
—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
1. Requirements gathering: In this phase, you must define the requirements. You should explain
business opportunities and plan the time and effort needed to build the project. Based on this
information, you can evaluate technical and economic feasibility.

2. Design the requirements: When you have identified the project, work with stakeholders to define
requirements. You can use the user flow diagram or the high-level UML diagram to show the work of
new features and show how it will apply to your existing system.

3. Construction/ iteration: When the team defines the requirements, the work begins. Designers and
developers start working on their project, which aims to deploy a working product. The product will
undergo various stages of improvement, so it includes simple, minimal functionality.

4. Testing: In this phase, the Quality Assurance team examines the product's performance and looks
for the bug.

5. Deployment: In this phase, the team issues a product for the user's work environment.

6. Feedback: After releasing the product, the last step is feedback. In this, the team receives
feedback about the product and works through the feedback.

When to use the Agile Model?


● When frequent changes are required.

● When a highly qualified and experienced team is available.

● When a customer is ready to have a meeting with a software team all the time.

● When project size is small.

Advantage(Pros) of Agile Method:

1. Frequent Delivery

2. Face-to-Face Communication with clients.

3. Efficient design and fulfills the business requirement.

4. Anytime changes are acceptable.

5. It reduces total development time.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Disadvantages(Cons) of Agile Model:

1. Due to the shortage of formal documents, it creates confusion and crucial decisions taken
throughout various phases can be misinterpreted at any time by different team members.

2. Due to the lack of proper documentation, once the project completes and the developers
allotted to another project, maintenance of the finished project can become a difficulty.

Extreme Programming (XP)


Extreme programming (XP) is one of the most important software development frameworks
of Agile models.
It is used to improve software quality and responsiveness to customer requirements. The
extreme programming model recommends taking the best practices that have worked well in
the past in program development projects to extreme levels. Good practices need to be
practiced in extreme programming: Some of the good practices that have been
recognized in the extreme programming model and suggested to maximize their use are
given below:
● Code Review: Code review detects and corrects errors efficiently. It suggests pair
programming as coding and reviewing of written code carried out by a pair of
programmers who switch their works between them every hour.
● Testing: Testing code helps to remove errors and improves its reliability. XP
suggests test-driven development (TDD) to continually write and execute test
cases. In the TDD approach test cases are written even before any code is written.
● Incremental development: Incremental development is very good because
customer feedback is gained and based on this development team comes up with
new increments every few days after each iteration.
● Simplicity: Simplicity makes it easier to develop good quality code as well as to
test and debug it.
● Design: Good quality design is important to develop good quality software. So,
everybody should design daily.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
● Integration testing: It helps to identify bugs at the interfaces of different
functionalities. Extreme programming suggests that the developers should achieve
continuous integration by building and performing integration testing several times a
day.

The Extreme Programming process

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Scrum :

SCRUM is an agile development process focused primarily on ways to manage tasks in team-based
development conditions.

Scrum uses an iterative and incremental development model, with shorter duration of iterations.
Scrum is relatively simple to implement and focuses on quick and frequent deliveries.

There are three roles in it, and their responsibilities are:

● Scrum Master: The scrum can set up the master team, arrange the meeting and remove
obstacles for the process

● Product owner: The product owner makes the product backlog, prioritizes the delay and is
responsible for the distribution of functionality on each repetition.

● Scrum Team: The team manages its work and organizes the work to complete the sprint or
cycle.

Scrum Process Framework / Scrum process flow

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Sprint
The heart of Scrum is a Sprint, a time-box of two weeks or one month during which a potentially

releasable product increment is created. A new Sprint starts immediately after the conclusion of the

previous Sprint. Sprints consist of the Sprint planning, daily scrums, the development work, the

Sprint review, and the Sprint retrospective.

● In Sprint planning, the work to be performed in the Sprint is planned collaboratively by

the Scrum Team.

● The Daily Scrum Meeting is a 15-minute time-boxed event for the Scrum Team to

synchronize the activities and create a plan for that day.

● A Sprint Review is held at the end of the Sprint to inspect the Increment and make

changes to the Product Backlog, if needed.

● The Sprint Retrospective occurs after the Sprint Review and prior to the next Sprint

Planning. In this meeting, the Scrum Team is to inspect itself and create a plan for

improvements to be enacted during the subsequent Sprint.


—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Backlog : a prioritized list of project requirements or features that provide business value for the
customer. Items can be added to the backlog at any time (this is how changes are introduced). The
product manager assesses the backlog and updates priorities as required.

Scrum meetings : are short (typically 15-minute) meetings held daily by the Scrum team. Three
key questions are asked and answered by all team members
• What did you do since the last team meeting?
• What obstacles are you encountering?
• What do you plan to accomplish by the next team meeting?

Demos : deliver the software increment to the customer so that functionality that has been
implemented can be demonstrated and evaluated by the customer. It is important to note that the
demo may not contain all planned functionality, but rather those functions that can be delivered
within the time-box that was established.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Kanban - Agile :
Agile Kanban is Agile Software Development with Kanban approach. In Agile Kanban, the Kanban

board is used to visualize the workflow. The Kanban board is normally put up on a wall in the

project room. The status and progress of the story development tasks is tracked visually on the

Kanban board with flowing Kanban cards.

Kanban Board
Kanban board is used to depict the flow of tasks across the value stream. The Kanban board −

● Provides easy access to everyone involved in the project.

● Facilitates communication as and when necessary.

● Progress of the tasks are visually displayed.

● Bottlenecks are visible as soon as they occur.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Advantages of Kanban board
The major advantages of using a Kanban board are −

● Empowerment of Team − This means −

○ Team is allowed to take decisions as and when required.

○ Team collaboratively resolves the bottlenecks.

○ Team has access to the relevant information.

○ Team continually communicates with customers.

● Continuous Delivery − This means −

○ Focus on work completion.

○ Limited requirements at any point of time.

○ Focus on delivering value to the customer.

○ Emphasis on the whole project.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
The tasks and stories are represented by Kanban cards. The current status of each task is known by

displaying the cards in separate columns on the board. The columns are labeled as To Do, Doing,

and Done. Each task moves from To Do to Doing and then to Done.

Kanban Board is updated on a daily basis as the team progresses through the development.

WIP Limit
The label in the Doing column also contains a number, which represents the maximum number of

tasks that can be in that column at any point of time. i.e., the number associated with the Doing

column is the WIP (Work-In-Progress) Limit.

Pull Approach
Pull approach is used as and when a task is completed in the Doing column. Another card is pulled

from the To Do column.

Self-directing
In Agile Development, the team is responsible for planning, tracking, reporting and communicating

in the project. Team is allowed to make decisions and is accountable for the completion of the

development and product quality. This is aligned to the characteristic of empowerment of the team

in Kanban.

Continuous Flow
In Agile development, there is no gate approach and the work flows across the different functions

without wait-time. This contributes to minimizing the cycle time characteristic of Kanban.

Visual Metrics
In Agile Kanban, the metrics are tracked visually using −

● Kanban Board

● Burndown Chart

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel
Uses of Kanban board
Kanban Board is used to −

● Measure the cycle times that can be used to optimize average cycle time.

● Track WIP limit to eliminate waste.

● Track resource utilization to eliminate waste.

Uses of Burndown chart


Burndown chart is used to capture −

● The current status of the tasks and stories.

● The rate of progress of completing the remaining tasks.

As Kanban Board is updated daily, it contains all the information that is required by the Burndown

charts.

—-----------------------------------------------------------------------------------------------------------------------------------------------
Software Engineering - Dr.A.K.Magore,Computer Engineering Department,GIT,Lavel

You might also like