11.07.2015 Views

Encyclopedia of Computer Science and Technology

Encyclopedia of Computer Science and Technology

Encyclopedia of Computer Science and Technology

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

s<strong>of</strong>tware engineering 443Padgham, Lin, <strong>and</strong> Michael Winik<strong>of</strong>f. Developing Intelligent AgentSystems: A Practical Guide. New York: Wiley, 2004.S<strong>of</strong>tware Agents Group (MIT Media Lab). Available online. URL:http://agents.media.mit.edu/. Accessed August 21, 2007.s<strong>of</strong>tware engineeringBy the late 1960s, large computer programs (such as theoperating systems for mainframe computers) consisted<strong>of</strong> thous<strong>and</strong>s <strong>of</strong> lines <strong>of</strong> computer code. In what becameknown as “the s<strong>of</strong>tware crisis,” managers <strong>of</strong> s<strong>of</strong>tware developmentwere facing great uncertainty about both programdevelopment schedules <strong>and</strong> the reliability <strong>of</strong> the resultingprograms.Programming had started out in the 1940s as an <strong>of</strong>fshoot<strong>of</strong> mathematics, just as the building <strong>of</strong> computers wasan <strong>of</strong>fshoot <strong>of</strong> electrical or electronic engineering. Increasingly,however, programmers were searching for a new pr<strong>of</strong>essionalidentity. What paradigm was truly appropriate?Should programmers strive to be more like mathematicians,seeking to rigorously prove the correctness <strong>of</strong> their programs?On the other h<strong>and</strong>, many programmers thought <strong>of</strong>their work as a craft, performed using individual experience<strong>and</strong> intuition, <strong>and</strong> not easily subject to st<strong>and</strong>ardization.Between the two poles <strong>of</strong> mathematics (or science) <strong>and</strong>craft came another possibility: engineering.The concept <strong>of</strong> s<strong>of</strong>tware engineering proved to be attractive.Mathematics (<strong>and</strong> science in general) are usually carriedon without being immediately <strong>and</strong> directly applied tocreating a particular device or process. Outside <strong>of</strong> researchprograms, however, computer applications were written toperform real-world tasks (such as flight control) that havereal-world consequences. Thus, although the notation <strong>of</strong>a computer program resembles that <strong>of</strong> mathematics, theoperation <strong>of</strong> a program more nearly resembles that <strong>of</strong> complexmechanical systems created by engineers. By attachingthe label <strong>of</strong> engineering to what programmers do, advocates<strong>of</strong> s<strong>of</strong>tware engineering hoped to develop a body <strong>of</strong>practices <strong>and</strong> st<strong>and</strong>ards comparable in some way to thoseused in engineering. Some critics, however, believe thatthis paradigm is inappropriate, either because they believeone should strive for the greater rigor <strong>of</strong> science or out <strong>of</strong> apreference for individual craft over st<strong>and</strong>ardization.Programming PracticesOne <strong>of</strong> the most pervasive contributions to s<strong>of</strong>tware engineeringhas been in computer language design <strong>and</strong> codingpractices. At about the same time that the concept <strong>of</strong> s<strong>of</strong>twareengineering was being promulgated, computer scientistswere advocating better facilities for defining <strong>and</strong> structuringprograms (see structured programming). These includedwell-defined control structures (see branching statements<strong>and</strong> loop), use <strong>of</strong> built-in <strong>and</strong> user-defined kinds <strong>of</strong> data (seedata types), <strong>and</strong> the breaking <strong>of</strong> programs into more manageablemodules (see procedures <strong>and</strong> functions).The next paradigm came in the late 1970s <strong>and</strong> hadtaken hold by the late 1980s (see object-oriented programming).The ability to “hide” details <strong>of</strong> function withinobjects that mirrored those in the real world provided a furtherway to make complex programs easier to underst<strong>and</strong><strong>and</strong> maintain. The growing use <strong>of</strong> well-tested collections<strong>of</strong> procedures or objects (see library, program) has beenessential for keeping up with the growing complexity <strong>of</strong>application programs.S<strong>of</strong>tware engineers are also concerned with developingtools that will better manage the programming process <strong>and</strong>help ensure that st<strong>and</strong>ards are being followed (see programmingenvironment). The use <strong>of</strong> CASE (<strong>Computer</strong>-Aided S<strong>of</strong>tware Engineering) tools such as sophisticatedprogram editors, documentation generators, class diagrammers,<strong>and</strong> version control systems has also steadilyincreased. Today many <strong>of</strong> these tools are available even onmodest desktop computing environments (see case).The Program Development ProcessPerhaps the most important task for s<strong>of</strong>tware engineeringhas been seeking to define <strong>and</strong> improve the process bywhich programs are developed. In general, the overall stepsin developing a program are:The Waterfall, or Cascade, model sees s<strong>of</strong>tware development as a more linear process going through the requirements, design, implementation,integration <strong>and</strong> testing, <strong>and</strong> maintenance phases. The results <strong>of</strong> each phase cascade down into the next.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!