Lecturenote - 1938410780chapter 9 - Emerging Trends in Software Engineering (Lecture 15)
Lecturenote - 1938410780chapter 9 - Emerging Trends in Software Engineering (Lecture 15)
By Yohannes S.
Contents
Introduction
Trends
Managing Complexity
Pervasive Computing
Cloud Computing
Emergent Requirements
Open source
Process Trends
The Grand Challenge
Collaborative Development
Requirements Engineering
Model-Driven Development
Test-driven development
Tools Trends
Introduction
Unlike ‘Engineering industries’, software
industry is about 50 years old
Practitioners and researchers have developed
an array of process models, technical methods,
and automated tools in an effort to foster
fundamental change in the way we build
computer software
However, past experience indicates that there
is a tacit desire to find the “silver
bullet”
the magic process or transcendent technology that
will allow us to build large, complex, software
based systems easily, without confusion, without
mistakes, without delay, without the many problems
Trends
No one can predict the future with absolute
certainty
But it is possible to assess trends in the
software engineering area and from those
trends to suggest possible directions for the
technology
Software intensive systems (SIS) have become
the foundation of virtually every modern
technology
Software content in virtually every product and
service will continue to grow —in some cases
dramatically
Software must be demonstrably safe, secure, and
reliable
Requirements will emerge as systems evolve
Trends…
The trends that have an effect on software
engineering technology often come from the
business, organizational, market, and cultural
arenas.
These “soft trends” can guide the direction
of research and the technology that is derived
as a consequence of research
Soft Trends
The broad characteristics of the new systems we
build
The anthropological and sociological
characteristics of the new generation of people
who do software engineering work
Hard Trends
The technical aspects of next generation
Soft Trends…
Connectivity and collaboration (enabled by
high bandwidth communication)
has already led to a software teams that do not
occupy the same physical space (telecommuting
and part-time employment in a local context)
Globalization
leads to a diverse workforce (in terms of
language, culture, problem resolution,
management philosophy, communication priorities,
and person-to-person interaction).
An aging population
implies that many experienced software engineers
and managers will be leaving the field over the
coming decade.
The software engineering community must respond
Soft Trends…
Consumer spending in emerging economies will
double to well over $9 trillion.
a non-trivial percentage of this spending will
be applied to products and services that have a
digital component—that are software-based or
software-driven
open-world software
software that is designed to adapt to a
continually changing environment ‘by self-
organizing its structure and self-adapting its
behavior
Pervasive Computing (PvC)…
First stage (PvC-1) [today]
Device mobility and ad hoc networking
Simple context awareness
Soon: smart objects implemented in devices that have
the potential to communicate with one another
Testing issues
Considerable environmental variation
Complex communication issues
Cloud Computing
Cloud Computing is a paradigm in which
information is permanently stored in
servers on the Internet and cached
temporarily on clients that include
desktops, entertainment centers, table
computers, notebooks, wall computers,
handhelds, sensors, monitors, etc.
Provides software as a service (SaaS)
Device and location independence
enables users to access systems
regardless of their location or device
Multi-tenancy enables sharing of
resources (and costs) among a large pool
of users
Demands reliability, scalability, security,
sustainability (Green IT)
Emergent Requirements
As systems become more complex, requirements
will emerge as everyone learns more about it,
The system’s interoperable elements
The environment in which it is to reside, and
The objects that interact with it
This reality implies a number of software
engineering trends.
Process models must be designed to embrace
change and adopt the basic tenets of the agile
philosophy
Methods that yield engineering models (e.g.,
requirements and design models) must be used
judiciously because those models will change
repeatedly as more knowledge about the system is
acquired
Open source
Open source is a development method for
software that harnesses the power of
distributed peer review and transparency of
process. The promise of open source is better
quality, higher reliability, more flexibility,
lower cost, and an end to predatory vendor
lock-in.