Module 1a - 23 - 24
Module 1a - 23 - 24
Module 1a - 23 - 24
• For many software projects, these framework activities are applied iteratively
as a project progresses.
• 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
• 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.
● 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
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
The preceding sprint affects the The preceding iteration affects the
subsequent sprint. subsequent iteration.
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.
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.
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.
105
Software Engineering
A Layered Technology
tools
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
117
Insulin pump hardware
architecture
118
Activity model of the
insulin pump
119
Essential high-level
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.