The future is never easy to predict - pundits, talking heads, and industry experts not withstanding. The road ahead is littered with the carcasses of exciting new technologies that never really made it (despite the hype) and is often shaped by more modest technologies that somehow modify the direction and width of the thoroughfare. These resources discuss some of the issues that you'll need to consider to understand how software and software engineering will change in the years ahead. The following topic categories are presented:
Test-Driven Development (TDD)
Model-Driven Development (MDD)
Pervasive Computing Reading List
Links to worthwhile papers and articles.
Points to many useful resources
A useful introduction at Wikipedia
pdf: Systems Directions for Pervasive Computing
"In this paper, we argue that existing approaches to distributed computing are flawed along three axes when applied to pervasive computing; we sketch out alternativesthat are better suited for this space."
Video: Pervasive & Ubiquitous Computing
A video lecture on the subject.
Video: Pervasive Computing
A superficial but still informative TV report on the subject. (1:45)
The Technological Singularity
A worthwhile introduction at Wikipedia.
What is the singularity?
An overview provided by The Singularity Institute for AI.
What is The Singularity?
A commentary by Vernor Vinge, computer scientist and noted science fiction author, written, interestingly, in 1993!
Articles, news stories and papers that discuss the singularity.
A short discussion of a key element of singularity technologies (first steps).
Will computers ever think like us? A fascinating article, published by IBM, on the subject. Recommended.
Video: The Singularity Summit
A lecture by noted futurist, Ray Kurzweil, author of "The Singularity is Near." (49:52)
Video: Context Aware Computing: Understanding Human Intention
One of the first steps along the road to a singularity. (1:15)
Post-Modern Software Development
pdf: Notes on Postmodern Programming
A manifesto with commentary.
pdf: Networked: Postmodern Software Development
A discussion of "post-modern" software development.
Signs of the Next Paradigm Shift: Part I
Signs of the Next Paradigm Shift: Part II
"Design techniques good and bad come and go in the industry, often more quickly than educators can foresee. This 'blog looks whimsically at a possible resurgence in Multi-paradigm Design, and Part II reflects on how educators can prepare students for industry design whims"
Collaborative software development
A description of the IBM Jazz project that "opens up software development to a community of designers, partners, and customers to build the next generation of Rational(r) software and other commercial products."
Software Development as a Collaborative Game
"Provides companies with solutions for Collaborative Software Development (CSD) by combining a Web-based software application with a suite of consulting services."
High Performing Teams And Software Development: Research Findings
Examining the core beliefs of high performing, collaborative teams.
Social Software Development Environments
"Distributed development, IDE extensibility, and social software are taking us to a development process that is not only more productive, but also an enjoyable social experience."
pdf: Towards a Framework for Collaborative Software Development of Business Application Systems
"This paper discusses the current practice in business information and office automation systems in particular with respect to collaborative development."
pdf: Facilitating Collaboration in a Distributed Software Development Environment Using P2P Architecture
"This paper describes efforts to facilitate collaborative work in a distributed environment by providing infrastructure that facilitates the understanding of inter-connected processes involved and how they interact.
pdf: Analysis of Work Practices of a Collaborative Software Development Team
This paper reports preliminary results of a field study of a software development team. This team develops a suite of tools called CTAS, designed to help air traffic controllers manage complex air traffic flows at large airports.
Detecting Coordination Problems in Collaborative Software Development Environments
"We propose a method and a tool that a project manager can use in order to detect the socio-technical coordination problems. We test the method and tool in a case study of a small and innovative software product company."
Test-Driven Development (TDD)
A lengthy discussion at Wikipedia. Recommended.
Introduction to Test Driven Design (TDD)
An excellent overview. Recommended.
Test Driven Development Wiki
Discussion and pointers to useful resources
Test-Driven Development ("TDD") Links
Presents many useful links to TDD resources.
Test Driven Development, a Portable Methodology
Argues that TDD is becoming a mainstream approach for software engineering.
Guidelines for Test-Driven Development
Guidelines provided at MSDN.
Scaling Test-Driven Development
"Test-driven development is an important agile software development technique that lets you specify and validate functionality at a finely detailed level."
How Test-Driven Development Increases Overall Usability
"By writing tests before developing, developers increase the speed and resourcefulness of the development process. The impact is profound. By being more robust, applications themselves can become paragons of usability, and user-experience professionals can derive benefit."
Test-Driven Development Isn't Testing
"There's a common misconception that test-driven development is a testing technique when in fact it's a design technique."
Video: Test Driven Development Introduction
A short, informal video that introduces the subject nicely.
Video: Beyond Test Driven Development
A more lengthy discussion of TDD and its extensions into behavior driven development.
Model-Driven Development (MDD)
A worthwhile introduction at MSDN. Recommended.
The Holy Grail of model-driven development
This article "offers an overview of MDD, as well as some advice for those considering this type of approach."
A discussion at Wikipedia.
An introduction to Model Driven Architecture
This article "examines the importance of models and modeling, introduces four key principles of MDA ..." Recommended.
10 Misperceptions and challenges of Model Driven Development
Examines the "challenges and misperceptions related to the adoption of MDD."
Application Lifecycle Management Meets Model-Driven Development
Suggests that the two are an "unbeatable" combination.
Formal Model-Driven Development Methodology
A brief article offering a stepwise approach for IT applications.
pdf: Patterns for Model-Driven Software-Development
Offers many MDD patterns. Recommended.
pdf: Model Driven Development with Interactive Use Cases and UML Models
"This research investigates an alternative approach to model driven development using dynamic models developed interactively with existing code."
pdf: Model-driven Development of Context-Aware Web Applications
MDD applied in one of the intriguing areas of software development.
Beyond the Bleeding Edge
A useful blog by Andrew Hansen.
Software Engineering: A Look Back and Forward
An interesting paper by Nancy Leveson of MIT.
Future Computing Environments
Projects by researchers at Georgia Tech.
Mobile Computing: Past, Present And Future
An in-depth discussion of this important computing technology
Future of Computing (Optical & Biological Possibilities)
A in-depth paper discusses these important technologies. A bit dated but still contains useful insights.
Seven Future Computing Challenges
"Seven grand challenges" facing IT over the next quarter of a century have been identified by analyst Gartner.
Global Computer Statistics - The Computer Almanac
A excellent source of numerical data on many important aspects of computing has been assembled at this site..
"Future of Computing" Bibliography - 1
"Future of Computing" Bibliography - 2
Two excellent sources of "future of computing " books (over 70 each ).
Global Trends - 2015
A detailed CIA report focusing on technology drivers and alternative futures.
Video: A Possible Future of Software Development
Adobe's view of a software future. (1:01:32)
Books that discuss the road ahead for software and computing span a vast array of technical, scientific, economic, political, and social issues.
The Age of Spiritual Machines by Ray Kurzweil argues that within 20 years, hardware technology will have the capacity to fully model the human brain.
The Singularity Is Near: When Humans Transcend Biology is Kurweil's follow-on book and a best seller that raises profound issues about the future of computing, software, and the human race. Highly recommended.
Radical Evolution explores how accelerating changes in technology and biology will effect human evolution
Faster: The Acceleration of Just About Everything discusses the ever-accelerating rate of technological change and its impact on every aspect of modern life.
The Evolution of Wired Life presents a counterpoint by arguing that human thought and interaction transcend the importance of technology.
Pervasive/ubiquitous computing has already arrived. The following books consider the topic and technologies related to it:
Everyware: The Dawning Age of Ubiquitous Computing
Pervasive Computing: The Mobile World
Context-Aware Pervasive System
Ubiquitous Computing: Design, Implementation and Usability
World Without Secrets: Business, Crime and Privacy in the Age of Ubiquitous Computing
Books that address postmodern design, collaborative development, TDD and MDD are only beginning to emerge. The following titles are representative:
Designing Information Technology in the Postmodern Age
Adaptive Software Development: A Collaborative Approach to Managing Complex Systems
Innovation Games: Creating Breakthrough Products Through Collaborative Play
Model-Driven Software Development: Technology, Engineering, Management
Model Driven Architecture: Applying MDA to Enterprise Computing
Model-Driven Design Using Business Patterns
Model-Driven Development with Executable UML
Model-Driven Software Development
Test Driven Development: By Example (Addison-Wesley Signature Series)
Model-Driven Testing: Using the UML Testing Profile
Test-Driven Development: A Practical Guide
Test-Driven Development: A J2EE Example (Expert's Voice)
Among the dozens of books that look at the future of technology, computing and software are the folowing titles:
Tomorrow Now reminds us that real progress is rarely orderly and efficient.
Technology and the Future presents thoughtful essays on the societal impact of technology and how changing culture shapes technology.
High Tech/High Touch note that many of us have become intoxicated with high technology and that the great irony of the high-tech age is that we've become enslaved to devices that were supposed to give us freedom.
The Future Factor discusses five forces that will shape human destiny during this century
Technofutures discusses how technology will transform business in the 21st century.
The New Renaissance: Computers and the Next Level of Civilization argues that the computer revolution may be the single most significant advance in the history of civilization.
The Spike discusses the impact of emerging technologies.
What Will Be: How the New World of Information Will Change Our Lives provides a thoughtful discussion of some of the directions that information technologies may take in the first few decades of this century.
Valueware: Technology, Humanity and Organization presents an intriguing discussion of an ideas economy and how economic value will be created as cyber-business evolves.
Being Digital was a best seller in the mid-1990s and continues to provide an interesting view of computing and its overall impact.
Digital Delirium is a controversial collection of essays, poems, and humor that examines the impact of digital technologies on people and society.
The Transparent Society: Will Technology Force Us to Choose Between Privacy and Freedom? revisits the continuing debate associated with the inevitable loss of personal privacy that accompanies the growth of information technologies.
Data Smog: Surviving the Information Glut discusses the problems associated with an information-infested society that is suffocating from the volume of information that information technologies produce.
The Next Fifty Years and
21st Century Technologies: Promises and Perils of a Dynamic Future are both collectiosn of papers and essays on the impact of technology on social, business, and economic structures.
As software becomes part of the fabric of virtually every facet of our lives, "cycberethics" has evolved as an important topic of discussion. The following books address the topic:
Cyberethics: Morality and Lw in Cyberspace
Cyberethics: Social and Moral Issues in the Computer Age
The U.S Government has published a voluminous report on CD-ROM (21st Century Guide to Cybercrime that considers all aspects of computer crime, intellectual property issues and the National Infrastructure Protection Center (NIPC).