You are on page 1of 131

Process Framework

● A process framework makes 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.
● The process framework comprises a set of
umbrella activities that are applicable across
the entire software process.
Five Activities of a Generic Process
framework
• Communication: communicate with customer to understand objectives and
gather requirements
• Planning: creates a “map” defines the work by describing the tasks, risks and
resources, work products and work schedule.
• Modeling: Create a “sketch”, what it looks like architecturally, how the
constituent parts fit together and other characteristics.
• Construction: code generation and the testing.
• Deployment: Delivered to the customer who evaluates the products and
provides feedback based on the evaluation.

• For many software projects, these framework activities are applied iteratively
as a project progresses.

• Each iteration produces a software increment that provides a subset of overall


software features and functionality.
Umbrella Activities
● Complement the five process framework activities and help team manage
and control progress, quality, change, and risk.
● Project tracking and control: assess progress against the plan and take
actions to maintain the schedule.
● Risk management: assesses risks that may affect the outcome and quality.
● Software quality assurance: defines and conduct activities to ensure
quality.
● Technical reviews: assesses work products to uncover and remove errors
before going to the next activity.
● Measurement: define and collects process, project, and product measures
to ensure stakeholder’s needs are met.
● Software configuration management: manage the effects of change
throughout the software process.
● Reusability management: defines criteria for work product reuse and
establishes mechanism to achieve reusable components.
● Work product(doc) preparation and production: create work products 17 such

as models, documents, logs, forms and lists.


Adapting a Process Model
The process should be agile and adaptable to problems. Process adopted for
one project might be significantly different than a process adopted from another
project. (to the problem, the project, the team, organizational culture). Among
the differences are:

– the overall flow of activities, actions, and tasks and the


interdependencies among them
– the degree to which actions and tasks are defined within each
framework activity
– the degree to which work products are identified and required
– the manner which quality assurance activities are applied
– the manner in which project tracking and control activities are
applied
– the overall degree of detail and rigor with which the process is
described
– the degree to which the customer and other stakeholders are
involved with the project

Agile development
In software development, agile practices
involve discovering requirements and
developing solutions through the collaborative
effort of self-organizing and cross-functional
teams and their customer/end user
CMM Capability Maturity Model
• software Engg institution developed a
standard CMM
• to improve or access the quality of work
developed by an organization
• so SEI will access and grant it a CMM level
• the SEI accesses an organization on two
points
– capability evaluation
• provides a way to access the software capability
– s/w process accessment
• looks into a process of an organzation inorder to
Methods of SEICMM
Capability Evaluation: Capability evaluation provides a way to
assess the software process capability of an organization. The
results of capability evaluation indicate the likely contractor
performance if the contractor is awarded a work. Therefore, the
results of the software process capability assessment can be used
to select a contractor.
Software Process Assessment: Software process assessment is
used by an organization to improve its process capability. Thus,
this type of evaluation is for purely internal use.
CMM
CMM was developed by the Software Engineering Institute (SEI) at
Carnegie Mellon University in 1987.
● It is not a software process model. It is a framework which is used to
analyse the approach and techniques followed by any organization to
develop software products.
● It also provides guidelines to further enhance the maturity of the process
used to develop those software products.
● It is based on profound feedback and development practices adopted by
the most successful organizations worldwide.
● This model describes a strategy for software process improvement that
should be followed by moving through 5 different levels.
● Each level of maturity shows a process capability level. All the levels
except level-1 are further described by Key Process Areas (KPA’s).
CMM
Key Process Areas (KPA’s):
Each of these KPA’s defines the basic requirements that should be
met by a software process in order to satisfy the KPA and achieve
that level of maturity.
Conceptually, key process areas form the basis for management
control of the software project and establish a context in which
technical methods are applied, work products like models,
documents, data, reports, etc. are produced, milestones are
established, quality is ensured and change is properly managed.
CMM levels
SEI CMM classifies software development
industries in 5 maturity levels
• Level One :Initial - The software process is characterized as
inconsistent, and occasionally even chaotic. Defined processes
and standard practices that exist are abandoned during a crisis.
Success of the organization majorly depends on an individual
effort, talent, and heroics. The heroes eventually move on to
other organizations taking their wealth of knowledge or lessons
learnt with them
CMM levels
SEI CMM classifies software development
industries in 5 maturity levels
• Level Two: Repeatable - This level of Software Development
Organization has a basic and consistent project management
processes to track cost, schedule, and functionality. The process is
in place to repeat the earlier successes on projects with similar
applications. Program management is a key characteristic of a level
two organization.
CMM levels
SEI CMM classifies software development
industries in 5 maturity levels
• Level Three: Defined - The software process for both
management and engineering activities are documented,
standardized, and integrated into a standard software process
for the entire organization and all projects across the
organization use an approved, tailored version of the
organization's standard software process for
developing,testing and maintaining the application.
CMM levels
SEI CMM classifies software development
industries in 5 maturity levels
• Level Four: Managed - Management can effectively control
the software development effort using precise measurements. At
this level, organization set a quantitative quality goal for both
software process and software maintenance. At this maturity
level, the performance of processes is controlled using statistical
and other quantitative techniques, and is quantitatively
predictable.
CMM levels
Level Five: Optimizing - The Key characteristic of this level is
focusing on continually improving process performance through
both incremental and innovative technological improvements. At
this level, changes to the process are to improve the process
performance and at the same time maintaining statistical
probability to achieve the established quantitative process-
improvement objectives.
CMM Levels
Advanced Trends in Software Engineering
• Block chain
– As everything is going around decentralized and distributed environment
– System demands/expects an exceptional level of security and transparency for various
transactions, and can be applicable to many business sectors

• Cloud computing Facilitates collaboration


– Demand for cloud services and tools has grown due to the necessity to facilitate
remote work. Companies have had to implement the appropriate infrastructure
and support employees in creating a work environment in their home offices
– There are software products and services hosted in public, private, or hybrid
clouds.
– They are infrastructure-agnostic and can run on multiple servers, so any
company can easily adopt them.
– Based on containers and microservices, cloud-native software solutions provide
flexibility and scalability, and improve the productivity of software development
teams.
Advanced Trends in Software Engineering
• Python popularity
– It seems Python’s growing popularity will continue well into 2023 and
beyond, as it is the favorite language of developers creating software
solutions with AI- and ML-based features
• Tensor flow in AI Development
– TensorFlow is an open-source deep learning framework developed by
Google.
– It is the leading platform for building and training neural networks.
– The framework is flexible and user-friendly, making it easy for developers
to build advanced software
– Supports several programming languages, including Java, C++, and Python.
– Runs on multiple CPUs, GPUs, and mobile operating systems.
– Can be deployed to the cloud, locally, in a browser, or on a device.
– Has built-in intuitive APIs.
– Ensures immediate model iteration and easy debugging.
– Allows for conducting complex research experiments.
Advanced Trends in Software Engineering
• Infrastructure as a Code(IaC) and DevOps
– Modern application development environments are intricate, with all the
clusters, microservices, containers, APIs, serverless functions, and
interdependencies that developers should keep track of.
– DevOps teams are turning to IaC — a method of using code to manage,
automate, configure, and drive continuous improvement on dynamic
computing resources. Traditionally, organizations relied on a few highly
skilled individuals who understood what their code depended on and
how it was delivered, which resulted in bottlenecks and dependencies.
– Using IaC, the DevOps team can create a single, trusted code base for an
organization that will be used to track that apps are deployed according
to security standards.
– Implementing IaC also allows teams to track inconsistencies in code,
making it easier to fix vulnerabilities. This approach makes it possible to
implement the best configuration practices within the organization’s
security policies and rules.
Advanced Trends in Software Engineering

• Outsourcing
– The demand for software development
outsourcing is experiencing significant growth.
– custom software projects and within budget.
– Outsourcing software providers can give such
businesses access to a rich pool of talent at a
reasonable price.
– Source of good revenue
Advanced Trends in Software Engineering

• LCNC(Low Code No code)


– Simplified SE approach
– LCNC platforms enable practically anyone to develop
software without traditional coding via graphical user
interfaces and configuration. Such programming
environments have great potential because they allow people
to implement their ideas into digital solutions with limited or
no software development skills
• React Native
– Tools for Mobile developers
– Tool for hybrid development since this is a painless method
to create apps with rich functionality and excellent
performance for multiple platforms using a single code base.
Advanced Trends in Software Engineering
• Progressive Web Applications
– If you think about platform-specific apps and web apps in terms of
capabilities and reach, platform-specific apps represent the best of
capabilities whereas web apps represent the best of reach. So where
do Progressive Web Apps fit in?
– Progressive Web Apps (PWA) are built and enhanced with modern
APIs to deliver enhanced capabilities, reliability, and installability
while reaching anyone, anywhere, on any device with a single
codebase.

• IoT
– edge computing.
– Over the past year, more organizations have been moving their
analytics and decision-making from centralized cloud platforms to
the edge, i.e., closer to the data source.
Advanced Trends in Software Engineering
• Internet Of Behaviour
– The IoB concept implies the collection of the so-called “digital dust” —
various data about people’s lives and behavior patterns. Information can be
collected from different sources, including social networks, face recognition
systems, as well as personal and medical wearables.
– IoB is a logical continuation of IoT. But if the Internet of Things unites
devices into one network, the Internet of Behavior will collect data about
people into a single database

• Web 3.0
– The Web 3.0 concept is a set of the latest technologies (artificial intelligence,
machine learning, cryptocurrencies, NFT, the metaverse) that create
comfortable conditions for working on the internet and reliably protect user
data.
• Microservices Architecture
– the rising adoption of microservices and containers powered by Kubernetes
— an open-source container orchestration platform.
Advanced Trends in Software Engineering

• 5G Technology
– 5G connectivity implementation is among the top trends for 2023.
– The major reason for this is that the technology helps companies
realize the full potential of IoT ecosystems. The more reliable the
connectivity is, the better the performance demonstrated by
connected devices.
• Augmented Reality
– he demand for online shopping has increased significantly.
– With AR, eCommerce mobile apps can provide more detailed
information on products, transferring them from the digital space
to the real world. For example, shoppers can see how the clothes
will fit their body type or configure furniture according to their
room parameters. This allows customers to make their purchasing
decisions with greater confidence.
Prescriptive Process Model
● Prescriptive process models advocate an orderly
approach to software engineering
● these models have brought a certain amount of useful
structure to software engg works and an effective road
map for software teams
● If prescriptive process models strive for structure and
order, are they inappropriate for a software world that
thrives on change?
● Yet, if we reject traditional process models (and the order
they imply) and replace them with something less
structured, do we make it impossible to achieve
coordination and coherence in software work?
Process models
• Water Fall model
• V model
• Incremental Model
• Evolutionary Process Model
• spiral Model
• Concurrent Model
• Incremental Model
• Agile model
• RAD model
Waterfall Model
Waterfall Model
● Each phase is carried out completely (for all
requirements) before proceeding to the next.
● The process is strictly sequential - no backing up or
repeating phases.
● Highly structured, therefore good for beginners.
● After specification is complete, low customer
involvement required.
Waterfall Model
Advantages
● It avoids overlapping of phases because each phase is completed
at once.
● This model works for small projects because the requirements
are understood very well.
● the quality is more important as compared to the cost of the
project.
● The waterfall model is simple and easy to understand,
implement, and use.
● All the requirements are known at the beginning of the project,
hence it is easy to manage.
Waterfall Model
Disadvantages
● the cost of the project is high
● not good for complex and object oriented projects.
● poor model for long projects.
● The problems with this model are uncovered, until the software
testing.
● Inflexible - can't adapt to changes in requirements.
● The amount of risk is high.
Incremental Model
● The incremental model combines the elements of waterfall
model and they are applied in an iterative fashion.
● The first increment in this model is generally a core
product.
● Provides a needed functionality sooner while delivering
optional components later
● Each increment builds the product and submits it to the
customer for any suggested modifications.
● This process is repeated until the product is finished.
Incremental Model
• Useful also when staffing is too short for a full-scale
development
• Increments can be planned to manage technical risks
• The incremental process model, like prototyping and other
evolutionary approaches, is iterative in nature
• But unlike prototyping, the incremental model focuses on the
delivery of an operational product with each increment
● For example, the word-processing software
Incremental model
Incremental Model
Advantages
● This model is flexible because the cost of development is
low
● product delivery is faster.
● It is easier to test and debug during the smaller iteration.
● The customers can respond to its functionalities after every
increment.
Incremental Model
Disadvantages
● The cost of the final product may cross the cost
estimated initially.
● A very clear and complete planning of design is
required before the whole system is broken into
small increments.
● The demands of customer for the additional
functionalities after every increment causes problem
during the system architecture.
V model
● Verification or Validation Model
● It is extension of the waterfall model
● process steps are bent upwards after the coding phase,
to form V shape.
● The V-Model demonstrates the relationships between
development life cycle and testing.
● Testing phase parallel to each development phase.
● The horizontal and vertical axes represent time or
project completeness (left-to-right) and level of
abstraction (coarsest-grain abstraction uppermost),
respectively.
V Model
Evolutionary Model:Spiral
Spiral model
The spiral model guides a team to adopt elements of one or more process
models such as incremental, waterfall or evolutionary prototyping. Each
phase in spiral model begins with a design goal and ends with the client
reviewing the progress.
Spiral Model is used in the following circumstances:
● In cases where the software requires continuous risk assessment or
evaluation.
● When the project is huge.
● The requirements are complex and require continuous clarification.
● where releases are required to be frequent.
● Where software requires significant changes.
● Where there is too much time to collect and analyze end-user experience.
Spiral model phases
Planning Phase

In this phase, requirements are gathered, reviewed and necessary resources and work
environment identified. The output will be system requirement specification and business
requirement documents.

Risk Analysis

The focus of this phase is to analyze risk and alternative solutions; the risk strategy is then
drawn and finalized.

Engineering Phase

In this phase, the actual product is made and it entails development and testing. The output for
the engineering phase will be source code, design documents, test cases, test summary and
defect report etc.

Evaluation Phase

This phase involves the customer. The customer evaluates the product and ensures that the
product meets all the requirements. It is usually important to get the feedback of the customer
before releasing the product.
Advantages of spiral model
1.The process of development is fast.
2.There is control towards all phases of development.
3.Customer feedback is taken into consideration and
changes implemented as soon as possible.
4.Many and more features are added systematically.
5.Most ideal for large and risky projects.
6.Continuous assessment helps in risk management.
7.It is the most ideal model in cases where
requirements are changing more frequently.
Disadvantages of spiral model
1.It is very much costly for smaller projects.
2.The requirements documentation could be
lengthy as it has intermediate phases.
3.The risk analysis phase requires an expert
authority to make the analysis.
4.There is a high chance of not meeting the
schedule or budget.
5.For effective delivery, spiral model protocol
ought to be followed strictly.
RAD Model
● RAD is a Rapid Application Development model.
● Using the RAD model, software product is
developed in a short period of time.
● The initial activity starts with the communication
between customer and developer.
● Planning depends upon the initial requirements and
then the requirements are divided into groups.
● Planning is more important to work together on
different modules.
RAD Model
RAD Model phases
Business Modeling

● Business modeling consist of the flow of information between various functions in the
project.
● For example what type of information is produced by every function and which are the
functions to handle that information.
● A complete business analysis should be performed to get the essential business
information.

Data modeling

● The information in the business modeling phase is refined into the set of objects and it
is essential for the business.
● The attributes of each object are identified and define the relationship between objects.

Process modeling

● The data objects defined in the data modeling phase are changed to fulfil the
information flow to implement the business model.
● The process description is created for adding, modifying, deleting or retrieving a data
RAD Model phases
Application generation
● In the application generation phase, the actual system is built.
● To construct the software the automated tools are used.

Testing and turnover


● The prototypes are independently tested after each iteration so that the
overall testing time is reduced.
● The data flow and the interfaces between all the components are are
fully tested. Hence, most of the programming components are already
tested.
When to use RAD Model
● When a system needs to be produced in a short span of
time (2-3 months)
● When the requirements are known
● When the user will be involved all through the life cycle
● When technical risk is less
● When there is a necessity to create a system that can be
modularized in 2-3 months of time
● When a budget is high enough to afford designers for
modeling along with the cost of automated tools for code
generation
Advantages of RAD Model Disadvantages of RAD Model

● Flexible and adaptable to changes ● It can't be used for smaller projects

● It is useful when you have to reduce the ● Not all application is compatible with RAD
overall project risk
● When technical risk is high, it is not suitable

● If developers are not committed to


delivering software on time, RAD projects
can fail
● Due to code generators and code reuse,
there is a reduction of manual coding

● Due to prototyping in nature, there is a ● Reduced scalability occurs because a RAD


possibility of lesser defects developed application begins as a prototype
and evolves into a finished application
● Each phase in RAD delivers highest priority ● Progress and problems accustomed are
functionality to client hard to track as such there is no
documentation to demonstrate what has
been done
● With less people, productivity can be ● Requires highly skilled designers or
increased in short time developers
Project risk
1. Scope Risks
Scope risks are tasks that endanger project objectives, deliverables, or timeline.
Create consistent concrete goals and task dates for each phase and team member working on a given
project. .

2. Cost Risks
This type of risk is the most common as it shows the biggest threat to businesses and their financials.
Staying within budget is crucial for business owners to make a sufficient profit of their client’s
projects while still making them happy.
To avoid going into the red, have your team stagger their work by moving non-essential tasks to
different weeks, months, or years to best suit your businesses project focus.

3. Time Risks
If you and your team think there is enough time to complete your project comfortably, or even with a
touch of time to spare, you most likely aren’t scheduling your tasks effectively.
Have you or your management team take on a couple more projects or simply wrap up projects sooner
rather than later if you think there is too much time to put towards one given project. That way, if
something were to take a turn for the worse on a deadline, you were allocated enough time to take
control and get it back on track
Project Risk
4. Technology Risks
Technology can get confusing and frustrating at times. studies show that only 30% of IT project
implementations are successful. Keep your projects in the green by scheduling extra time to brace
yourself for implementation delays.

5. Resource Risks
Your team is one of the key factors in getting your business goals met, but they aren’t in control of the
resources that are provided to them or what life may throw at them

6. Communication Risks
In a world filled with technology, sometimes effective communication gets put to the side. Make sure
your team is communicating any delays or shifts in any given project to ensure the reallocation or
changes are being made to best suit your deliverable.

7. Procurement Risks
You most likely are relying on other businesses to meet their goals too, in turn, helping you meet
yours.
Agile Model
● Iterative Waterfall model was very popular for completing a
project—--But handling customer change requests during
project development and the high cost and time required to
incorporate these changes.
● To overcome these drawbacks of the Waterfall model, in the
mid-1990s the Agile Software Development model was
proposed.
● 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.
Agile principles
1. Satisfy the customer through early and continuous
delivery
2. Welcome changing requirements, even late in
development
3. Deliver working software frequently
4. Business people and developers must work together
daily throughout the project
5. Build projects around motivated individuals
6. Face-to-face conversations
Agile principles
7. Working software is the primary measure of progress
8. Agile processes promote sustainable development
9. Continuous attention to technical excellence and good
design enhances agility
10. Simplicity
11. Self-organizing teams
12. Adjust ways of working in regular intervals to be
more effective
Agile Process
• Agile process 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.
• 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
Agile Process
• An agile process
reduces the cost of
change because
software is released
in increments and
change can be better
controlled within an
increment.
Phases
1. Requirements gathering: In this phase, you must
define the requirements, explain business opportunities,
plan the time and effort needed to build the project.
2. Design the requirements: In this, You can use the user
flow diagram or the high-level UML diagram to show
the new features and show how it will apply to your
existing system.
3. Construction: When the team defines the requirements,
the work begins. Designers and developers start working
on their project, which aims to deploy a working
product.
Agile Model phases
4. Testing: In this, 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.
Agile Model uses:
Agile Model can be used when:
• 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.
Agile Model Advantages
Benefits of using agile model is summarized as
follows:
1. Frequent Delivery
2. Face-to-Face Communication with clients.
3. Efficient design and fulfils the business requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.
6. It allows for a greater level of control around the
software that is delivered.
Agile/iterative Model

Agile Model Iterative Model

The Iterative Model of software


The Agile Model of software
development is a type of model in which
development is a type of model in which
implementation starts with small
specifications and solutions enhance
elements, and iteratively evolves to the
through the continuous collaboration of
final solution through a collaboration of
functional teams.
functional teams.

The process of development in this The process of development in this


model is called Sprint. model is called an Iteration.

With the completion of a sprint, a With the completion of an iteration, a


meeting is carried out. meeting is carried out.

The preceding sprint affects the The preceding iteration affects the
subsequent sprint. subsequent iteration.

Collaborating teams can review Collaborating teams can review


products during a Sprint. products on the baseline of iteration.
Agile/iterative Model
Agile Model Iterative Model
There are two main roles in this model Scrum Master There are two roles in this model Project Manager
and Team member. and Team Member.
Scrum Master is responsible for the facility and team The Project Manager is responsible for the estimation
members do the estimation. and completion of each iteration.
Test cases are prepared, identified, and executed by Test cases are prepared, identified, and executed by
team members. Testers.
Deploying and Demonstration of software are done at Deploying and Demonstration of software are done at
end of each sprint. end of an iteration.
In case of agile model, if a valued work product is not
A work product is obtained after every iteration that
obtained after iteration then it is basically a failure
can be mapped to something of value.
within the iteration.
When to use- When to use-

● It is suitable to use when each ● It is suitable to use in case a required


component’s development is separate in change affects the large numbers of
terms of coding or as a change task. components as major changes are needed
● For quick and frequent changes by relevant features.
Module 1.3
Extreme Programming (XP)

► It is the most widely used approach to agile


software development.
►XP is a lightweight, efficient, low-risk, flexible,
predictable, scientific, and fun way to develop a
software.
►This type of methodology is used when customers
are constantly changing demands or requirements,
or when they are not sure about the system's
performance.
Scrum
• SCRUM is an agile development process focused
primarily on ways to manage tasks in team-based
development conditions.
• Scrum is broken into small consistent time intervals
called Sprint.
• Sprint can be as short as a few days and generally
no longer than 3 – 4 weeks.
Scrum
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 meeting
►Scrum meetings are short (typically 15-minute)
meetings held daily by the Scrum team.
►Scrum meeting helps the team to uncover potential
problems as early as possible.
►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?
The XP Process
XP contains a set
of rules and
practices that
occur within the
context of four
framework
activities:
Planning,
Design, Coding,
Testing
The XP Process
Key XP activities are summarized as follow:
1. Planning: In this, the customer meets the
development team and presents
the requirements in the form of user stories to
describe the desired result. The team then
estimates the stories and creates a release plan
broken down into iterations. If one or more of the
stories can’t be estimated, so-called spikes can be
introduced which means that further research is
needed.
The XP Process
2. Design: XP encourages the use of CRC cards
which identify and organize the object oriented
classes that are relevant to the current software
increment. If a difficult design problem is
encountered as part of the design of a story, XP
recommends the immediate creation of an
operational prototype of that portion of the
design. Called a spike solution, the design
prototype is implemented and evaluated.
The XP Process
3. Coding: A key concept during the coding activity is pair
programming. XP recommends that two people work
together at one computer workstation to create code for
a story. This provides a mechanism for real-time
problem solving and real-time quality assurance.
4. Testing: The unit tests that are created should be
implemented using a framework that enables them to be
automated. XP acceptance tests, also called customer
tests, are specified by the customer and focus on overall
system features and functionality that are visible and
reviewable by the customer.
Kanban model
►Kanban - which is the Japanese word for
“billboard” - was developed by Toyota in the
1940s.
►Agile Kanban is Agile Software Development
with Kanban approach.
►In Agile Kanban, Kanban board is used to
depict the flow of tasks across the value stream.
Kanban model
►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.
►Today, kanban boards are used in nearly every
industry, most notably software development.
Kanban model
The aim is to
control and
manage the flow
of features
(represented by
Kanban cards)
so that the
number of
features entering
the process
matches those
being https://www.projectmanager.com/kanban

completed.
Module 1
Software engg and programming
Software Engineer Vs Programmer
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 editing, 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.
Software costs
• Software costs often dominate computer
system costs. The costs of software on a PC
are often greater than the hardware cost.
• Software costs more to maintain than it does
to develop. For systems with a long life,
maintenance costs may be several times
development costs.
• Software engineering is concerned with cost-
effective software development.
Bathtub curve
Bath tub curve
• Failure rate as a function of time for hardware.
• The relationship, often called the “bathtub curve,”
indicates that hardware exhibits relatively high failure
rates early in its life (these failures are often attributable
to design
• or manufacturing defects); defects are corrected and the
failure rate drops to a steady-state level for some period
of time.
• As time passes,however, the failure rate rises again as
hardware components suffer from the cumulative
effects of dust, vibration, abuse, temperature extremes,
and many other environmental maladies.
Wear vs. Deterioration

8
9
Essential attributes of good software
Product characteristic Description

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

Dependability and Software dependability includes a range of characteristics including


security reliability, security and safety. Dependable software should not cause
physical or economic damage in the event of system failure. Malicious
users should not be able to access or damage the system.

Efficiency Software should not make wasteful use of system resources such as
memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilisation, etc.

Acceptability Software must be acceptable to the type of users for which it is


designed. This means that it must be understandable, usable and
compatible with other systems that they use.

90
Software Categories
System software
• For desktop computers, laptops and tablets:
– Microsoft Windows
– Mac (for Apple devices)
– Linux
• For smartphones:
– Apple’s iOS
– Google’s Android
– Windows Phone OS
Programming software
• Programming software is used by software
programmers as translator programs.
– Java, C++, Python, PHP, BASIC, etc)
• Different programming language editors, debuggers,
compilers and IDEs are examples of programming
software.
• For example:
– Eclipse – a Java language editor
– Coda – programming language editor for Mac
– Notepad++ – an open-source editor for windows
– Sublime Text – a cross-platform code editor for Mac,
Windows, and Linux
Driver Software
• Driver software is often classified as one of the types of system
software.
• They operate and control devices and peripherals plugged into a
computer. Drivers are important because they enable the devices to
perform their designated tasks.
• They do this by translating commands of an Operating System for
the Hardware or devices, assigning duties.
• Therefore, each device connected with your computer requires at
least one device driver to function.

• Printer Driver
• Mouse Driver
• Network Card
Software-additional categories
• five additional subcategories of software and
understand them using examples of trendy
software.
• These are:
– Freeware
– Shareware
– Open Source Software
– Closed Source Software
– Utility Software
Freeware
• Freeware software is any software that is available
to use for free. They can be downloaded and
installed over the internet without any cost. Some
well-known examples of freeware are:
– Google Chrome
– Skype
– Instagram
– Snapchat
– Adobe reader
Shareware
• Shareware, on the other hand, are software applications that
are paid programs, but are made available for free for a
limited period of time known as ‘trial period’.
• You can use the software without any charges for the trial
period but you will be asked to purchase it for use after the
trial ends.
• Shareware allows you to test drive the software before you
actually invest in purchasing it. Some examples of
Shareware that you must be familiar with are:
– Adobe PhotoShop
– Adobe Illustrator
– Netflix App
– Matlab
– McAfee Antivirus
Open Source Software
• This is a type of software that has an open-
source code that is available to use for all
users.
• It can be modified and shared with anyone for
any purpose. Common examples of open
source software used by programmers are:
– LibreOffice
– PHP
– GNU Image Manipulation Program (GIMP)
Closed source software
• The source code is the intellectual property of software
publishers.
• It is also called ‘proprietary software’ since only the
original authors can copy, modify and share the
software.
• Following are some of the most common examples of
closed-source software:
– .NET
– Java
– Android
– Microsoft Office
– Adobe PhotoShop
Utility software
• Utility software is considered a subgroup of
system software.
• They manage the performance of your hardware
and application software installed on your
computer, to ensure they work optimally.
• Some features of utility software include:
– Antivirus and security software
– File compressor
– Disk cleaner
– Disk defragmentation software
– Data backup software
Software Applications
• System software
• 1.
• such as compilers, editors, file management utilities
• Application software
• stand-alone programs for specific needs.
• Engineering/scientific software
• Characterized by “number crunching”algorithms. such
as automotive stress analysis, molecular biology, orbital
dynamics etc
• Embedded software
• resides within a product or system.
• (key pad control of a microwave oven, digital function
of dashboard display in a car) 8
Software Applications
• Product-line software
• 1. • focus on a limited marketplace to address mass consumer
market. (word processing, graphics, database management)
• WebApps (Web applications)
• network centric software.
• As web 2.0 emerges, more sophisticated computing
environments is supported integrated with remote database
and business applications.
• AI software
• uses non-numerical algorithm to solve complex problem.
Robotics, expert system, pattern recognition game playing
8
Software—New Categories
• Open world computing—pervasive, ubiquitous, distributed
computing due to wireless networking. How to allow mobile
devices, personal computer, enterprise system to
communicate across vast network.
• Netsourcing—the Web as a computing engine. How to
architect simple and sophisticated applications to target end-
users worldwide.
• Open source—”free” source code open to the computing
community (a blessing, but also a potential curse!)
• Also …
• Data mining
• Grid computing
9
• Cognitive machines
• Software for nanotechnologies
Software Engineering Definition
The seminal definition:
[Software engineering is] the establishment and use of
sound engineering principles in order to obtain
economically software that is reliable and works
efficiently on real machines.

The IEEE definition:


Software Engineering: The application of a systematic,
disciplined, quantifiable approach to the development,
operation, and maintenance of software; that is, the
application of engineering to software.
Importance of Software Engineering
• More and more, individuals and society rely on advanced
software systems. We need to be able to produce reliable and
trustworthy systems economically and quickly.
• It is usually cheaper, in the long run, to use software
engineering methods and techniques for software systems
rather than just write the programs as if it was a personal
programming project.
• For most types of system, the majority of costs are the costs of
changing the software after it has gone into use.

105
Software Engineering
A Layered Technology
tools

methods process model

a “quality” focus
● Any engineering approach must rest on organizational commitment to quality which fosters a continuous
process improvement culture.
● Process layer as the foundation defines a framework with activities for effective delivery of software
engineering technology. Establish the context where products (model, data, report, and forms) are
produced, milestone are established, quality is ensured and change is managed.
● Method provides technical how-to’s for building software. It encompasses many tasks including
communication, requirement analysis, design modeling, program construction, testing 14and support.
● Tools provide automated or semi-automated support for the process and methods.
Layered Approach
A quality Process
● Degree of goodness
● correctness
● maintainability
● usability
● Any engineering approach must rest on an quality.
● The "Bed Rock" that supports software Engineering is
Quality Focus.
Layered Approach
Process :-
● Deals with activities, actions and task
● What to do
● comes out with “How to”questions
● Foundation for SE is the Process Layer
● SE process is the GLUE that holds all the technology layers
together and enables the timely development of computer
software.
● It forms the base for management control of software project.
Layered Approach
Methods :-
● SE methods provide the "Technical Questions" for building Software.
● Deals with “How to “ development
● Methods contain a broad array of tasks that include communication
requirement analysis, design modeling, program construction testing and
support.

Tools :-
● Environment
● helping hand of process
● SE tools provide automated or semi-automated support for the "Process" and
the "Methods".
● Tools are integrated so that information created by one tool can be used by
another.
Software Process
• A process is a collection of activities, actions and tasks that are
performed when some work product is to be created.
• It is not a rigid prescription for how to build computer
software.
• It is an adaptable approach that enables the people doing the
work to pick and choose the appropriate set of work actions
and tasks.
• Purpose of process is to deliver software in a timely manner
and with sufficient quality to satisfy those who have sponsored
its creation and those who will use it.
Software engg practice
1.Understand the problem
(communication and analysis).
2.Plan a solution (modeling and software
design).
3.Carry out the plan (code generation).
4.Examine the result for accuracy (testing
and quality assurance).
understanding the problem
• Who has a stake in the solution to the problem? That is, who
are the stakeholders?
• What are the unknowns? What data, functions, and
features are required to properly solve the problem?
• Can the problem be compartmentalized? Is it possible to
represent smaller problems that may be easier to
understand?
• Can the problem be represented graphically? Can an analysis
model be created?
Plan the solution
• Have you seen similar problems before? Are there patterns that are
recognizable in a potential solution? Is there existing software that
implements the data, functions, and features that are required?
• Has a similar problem been solved? If so, are elements of the solution
reusable?
• Can subproblems be defined? If so, are solutions readily apparent for
the subproblems?
• Can you represent a solution in a manner that leads to effective
implementation? Can a design model be created?
Carry out the plan
• Does the solutions conform to the plan? Is source code
traceable to the design model?
• Is each component part of the solution provably correct? Has
the design and code been reviewed, or better, have
correctness proofs been applied to algorithm?
Examine the result
• Is it possible to test each component part of the solution? Has
a reasonable testing strategy been implemented?
• Does the solution produce results that conform to the data,
functions, and features that are required? Has the software
been validated against all stakeholder requirements?
Case Studies
• A personal insulin pump
• An embedded system in an insulin pump used by diabetics to
maintain blood glucose control.
• A mental health case patient management system
• A system used to maintain records of people receiving care for
mental health problems.
• A wilderness weather station
• A data collection system that collects data about weather
conditions in remote ar
Insulin pump control system

• Collects data from a blood sugar sensor and calculates the


amount of insulin required to be injected.
• Calculation based on the rate of change of blood sugar levels.
• Sends signals to a micro-pump to deliver the correct dose of
insulin.
• Safety-critical system as low blood sugars can lead to brain
malfunctioning, coma and death; high-blood sugar levels
have long-term consequences such as eye and kidney
damage.

117
Insulin pump hardware
architecture

118
Activity model of the
insulin pump

119
Essential high-level
requirements

• The system shall be available to deliver insulin when required.


• The system shall perform reliably and deliver the correct
amount of insulin to counteract the current level of blood
sugar.
• The system must therefore be designed and implemented to
ensure that the system always meets these requirements.

120
Process Model
• A process model provides a specific roadmap
for software engineering work.
• It defines 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.
Process Model
● Each framework activity is populated by a set
of software engineering actions.
● Each software engineering action is defined
by a task set that identifies 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.
Generic Process Framework
A generic process framework for software
engineering defines five framework activities—
communication, planning , modeling ,
construction , and deployment.
In addition, a set of umbrella activities—
project
tracking and control, risk management, quality
assurance, confi guration management,
technical reviews, and others—are applied
throughout the process.
Process Flow
It describes how the framework activities
and the actions and tasks that occur within
each framework activity are organized
with respect to sequence and time
Process Flow
•Describes how the framework activities and the actions
and tasks that occur within each activity are organized
with respect to sequence and time.
•The flows:
1.Linear – execute the framework activities in sequence.
2.Iterative – repeats one or more of the activities before
proceeding to the next.
3.Evolutionary – execute the activities in a ‘circular’ manner.
4.Parallel – executes one or more activities simultaneously with
other activities.
Process Flow
Identifying a task set
❖ A task set defines the actual work to be done
to accomplish the objectives of a software
engineering action.
➢ A list of the task to be accomplished
➢ A list of the work products to be produced
➢ A list of the quality assurance filters to be applied
Factors-Software Process
Factors in Choosing a Software Process
• Customer involvement
• Stable requirements
• Team size / proximity
• Developer experience
• Familiarity with technology
• Familiarity with domain
• Severity of impact of incorrect analysis
• Anticipated changes in technology
Process Assessment and
Improvement
● Standard CMMI Assessment Method for Process
Improvement(SCAMPI)
○ provides a five step process assessment model that
incorporates five phases: initiating, diagnosing,
establishing, acting and learning.
● CMM-Based Appraisal for Internal Process Improvement
(CBAIPI)
○ provides a diagnostic technique for assessing the relative
maturity of a software organization; uses the SEI CMM as
the basis forthe assessment
Process Assessment and
Improvement
● SPICE
○ The SPICE (ISO/IEC15504) standard defines a set of
requirements for software process assessment. The intent
of the standard is to assist organizations in developing an
objective evaluation of the efficacy of any defined
software process.
● ISO 9001:2000 for Software
○ a generic standard that applies to any organization that
wants to improve the overall quality of the products,
systems, or services that it provides. Therefore, the
standard is directly applicable to software organizations
and companies.

You might also like