1.8. Software Technologies
In this section, we discuss a number of software engineering
buzzwords that you'll hear in the software development community. We've created
Resource Centers on most of these topics, with many more on the way. You can
find our complete list of Resource Centers at www.deitel.com/ResourceCenters.html.
Agile Software
Development is a set of methodologies that
try to get software implemented quickly with fewer resources than previous
methodologies. Check out the Agile Alliance (www.agilealliance.org) and the Agile Manifesto (www.agilemanifesto.org).
Refactoring involves reworking code to make it clearer and easier to
maintain while preserving its functionality. It's widely employed with agile
development methodologies. Many refactoring tools are available to do major
portions of the reworking automatically. Check out our Resource Center on
refactoring.
Design patterns are proven architectures for constructing flexible
and maintainable object-oriented software. The field of design patterns tries to
enumerate those recurring patterns, encouraging software designers to reuse them
to develop better quality software with less time, money and effort.
Game programming. The computer game business is larger than the first-run
movie business. College courses and even majors are now devoted to the
sophisticated software techniques used in game programming. Check out our
Resource Centers on Game Programming, C++ Game Programming and Programming
Projects.
Open source software is a style of developing software in contrast to
proprietary development that dominated software's early years. With open source
development, individuals and companies contribute their efforts in developing,
maintaining and evolving software in exchange for the right to use that software
for their own purposes, typically at no charge. Open source code generally gets
scrutinized by a much larger audience than proprietary software, so bugs get
removed faster. Open source also encourages more innovation. Sun recently
announced that it is open sourcing Java. Some organizations you'll hear a lot
about in the open source community are the Eclipse Foundation (the Eclipse IDE
is popular for C++ and Java software development), the Mozilla Foundation
(creators of the Firefox browser), the Apache Software Foundation (creators of
the Apache web server) and SourceForge (which provides the tools for managing
open source projects and currently has over 150,000 open source projects under
development).
Linux is an open source operating system and one of the
greatest successes of the open source movement. MySQL is an open source database management
system. PHP is the most popular open source
server-side "scripting" language for developing Internet-based applications.
LAMP is an acronym
for the set of open source technologies that many developers used to build web
applications—it stands for Linux, Apache, MySQL and PHP (or Perl or Python—two
other languages used for similar purposes).
Software has generally been viewed
as a product; most software still is offered this way. If you want to run an
application, you buy a software package from a software vendor. You then install
that software on your computer and run it as needed. As new versions of the
software appear, you upgrade your software, often at significant expense. This
process can become cumbersome for organizations with tens of thousands of
systems that must be maintained on a diverse array of computer equipment. With
Software as a Service
(SaaS) the software runs on servers elsewhere on
the Internet. When those servers are updated, all clients worldwide see the new
capabilities; no local installation is needed. You access the service through a browser—these are quite portable, so you
can run the same applications on different kinds of computers from anywhere in
the world. Salesforce.com, Google, and
Microsoft's Office Live and Windows Live all offer SaaS.