chapter 3 computer software - tsinghua university

22
Chapter 3 Computer Software The relationship of sections in this chapter is shown below (Figure 3-1). Chapter 3 3.1 Overview 3.2 Software Categories 3.4 Security Software System Software Application Software Anti-spyware Anti-virus Development Software 3.3 Installing Software Firewall Figure 3-1 The relationship chart of Chapter 3 3.1 An Overview of the Computer Software 3.1.1 Software Aspects There are a number of areas where the evolution of software engineering is notable: Emergence as a profession: By the early 1980s, software engineering had already emerged as a bona fide profession, to stand beside computer science and traditional engineering. See also software engineering professionalism. Role of women: In the 1940s, 1950s, and 1960s, men often filled the more prestigious and better paying hardware engineering roles, but often delegated the writing of software to women. Grace Hopper, Jamie Fenton and many other unsung women filled many computer programming jobs during the first several decades of software engineering. Today, fewer women work in software engineering than in other professions, a situation whose cause is not clearly identified. It is often attributed to sexual discrimination, cyber culture or bias in education. Many academic and professional organizations consider this situation unbalanced and are trying hard to solve it.

Upload: others

Post on 05-Jan-2022

0 views

Category:

Documents


0 download

TRANSCRIPT

Chapter 3 Computer Software

The relationship of sections in this chapter is shown below (Figure 3-1).

Chapter 3

3.1 Overview

3.2 Software Categories 3.4 Security Software

System

Software

Application

Software

Anti-spyware Anti-virus Development

Software

3.3 Installing Software

Firewall

Figure 3-1 The relationship chart of Chapter 3

3.1 An Overview of the Computer Software

3.1.1 Software Aspects

There are a number of areas where the evolution of software engineering is notable:

Emergence as a profession: By the early 1980s, software engineering had already

emerged as a bona fide profession, to stand beside computer science and traditional

engineering. See also software engineering professionalism.

Role of women: In the 1940s, 1950s, and 1960s, men often filled the more prestigious

and better paying hardware engineering roles, but often delegated the writing of software

to women. Grace Hopper, Jamie Fenton and many other unsung women filled many

computer programming jobs during the first several decades of software engineering.

Today, fewer women work in software engineering than in other professions, a situation

whose cause is not clearly identified. It is often attributed to sexual discrimination, cyber

culture or bias in education. Many academic and professional organizations consider this

situation unbalanced and are trying hard to solve it.

计算机基础与实践(英文版)第 2 版

56

Processes: Processes have become a big part of software engineering and are hailed for

their potential to improve software and sharply criticized for their potential to constrict

programmers.

Cost of hardware: The relative cost of software versus hardware has changed

substantially over the last 50 years. When mainframes were expensive and required large

support staffs, the few organizations buying them also had the resources to fund large,

expensive custom software engineering projects. Computers are now much more

numerous and much more powerful, which has several effects on software. The larger

market can support large projects to create commercial off the shelf software, as done by

companies such as Microsoft. The cheap machines allow each programmer to have a

terminal capable of fairly rapid compilation. The programs in question can use

techniques such as garbage collection, which make them easier and faster for the

programmer to write. On the other hand, many fewer organizations are interested in

employing programmers for large custom software projects, instead using commercial

off the shelf software as much as possible.

3.1.2 Software Development

Looking up the origins of software evolution, there are 6 stages below:

The Pioneering Era

The most important development was that new computers were coming out almost every year or

two, rendering existing ones obsolete. Software people had to rewrite all their programs to run

on these new machines. Programmers did not have computers on their desks and had to go to the

“machine room”. Jobs were run by signing up for machine time or by operational staff. Jobs

were run by putting punched cards for input into the machine’s card reader and waiting for

results to come back on the printer.

The field was so new that the idea of management by schedule was non-existent. Making

predictions of a project’s completion date was almost impossible. Computer hardware was

application-specific. Scientific and business tasks needed different machines. Due to the need to

frequently translate old software to meet the needs of new machines, high-order languages like

FORTRAN, COBOL, and ALGOL were developed. Hardware vendors gave away systems

software for free as hardware could not be sold without software. A few companies sold the

service of building custom software but no software companies were selling packaged software.

The notion of reuse flourished. As software was free, user organizations commonly gave it

away. Groups like IBM’s scientific user group SHARE offered catalogs of reusable components.

Academia did not yet teach the principles of computer science. Modular programming and data

abstraction were already being used in programming.

1945 to 1965: The Origins

The term software engineering first appeared in the late 1950s and early 1960s. Programmers

境 Computer Software

57

Ch

ap

ter 3

have always known about civil, electrical, and computer engineering and debated what

engineering might mean for software.

The NATO Science Committee sponsored two conferences on software engineering in 1968

(Garmisch, Germany) and 1969, which gave the field its initial boost. Many believe these

conferences marked the official start of the profession of software engineering.

1965 to 1985: The Software Crisis

Software engineering was spurred by the so-called software crisis of the 1960s, 1970s, and 1980s,

which identified many of the problems of software development. Many software projects ran

over budget and schedule. Some projects caused property damage. A few projects caused loss of

life. The software crisis was originally defined in terms of productivity, but evolved to

emphasize quality. Some used the term software crisis to refer to their inability to hire enough

qualified programmers.

Cost and Budget Overruns: The OS/360 operating system was a classic example. This

decade-long project from the 1960s eventually produced one of the most complex software

systems at the time. OS/360 was one of the first large (1000 programmers) software projects.

Fred Brooks claims in The Mythical Man Month that he made a multi-million dollar mistake of

not developing a coherent architecture before starting development.

Property Damage: Software defects can cause property damage. Poor software security

allows hackers to steal identities, costing time, money, and reputations.

Life and Death: Software defects can kill. Some embedded systems used in radiotherapy

machines failed so catastrophically that they administered lethal doses of radiation to patients.

The most famous of these failures is the Therac-25 incident.

Peter G. Neumann has kept a contemporary list of software problems and disasters. The

software crisis has been fading from view, because it is psychologically extremely difficult to

remain in crisis mode for a protracted period (more than 20 years). Nevertheless, software—

especially real-time embedded software—remains risky and is pervasive, and it is crucial not to

give in to complacency. Over the last 10-15 years Michael A. Jackson has written extensively

about the nature of software engineering, has identified the main source of its difficulties as lack

of specialization, and has suggested that his problem frames provide the basis for a “normal

practice” of software engineering, a prerequisite if software engineering is to become an

engineering science.

1985 to 1989: No Silver Bullet

For decades, solving the software crisis was paramount to researchers and companies producing

software tools. The cost of owning and maintaining software in the 1980s was twice as

expensive as developing the software. During the 1990s, the cost of ownership and maintenance

increased by 30% over the 1980s. In 1995, statistics showed that half of surveyed development

projects were operational, but were not considered successful. The average software project

overshoots its schedule by half. Three-quarters of all large software products delivered to the

计算机基础与实践(英文版)第 2 版

58

customer are failures that are either not used at all, or do not meet the customer’s requirements.

Seemingly, every new technology and practice from the 1970s to the 1990s was trumpeted

as a silver bullet to solve the software crisis. Tools, discipline, formal methods, process, and

professionalism were touted as silver bullets:

Tools: Especially emphasized were tools: structured programming, object-oriented

programming, CASE tools such as ICL’s CADES CASE system, Ada, documentation,

and standards were touted as silver bullets.

Discipline: Some pundits argued that the software crisis was due to the lack of discipline

of programmers.

Formal methods: Some believed that if formal engineering methodologies would be

applied to software development, then production of software would become as

predictable an industry as other branches of engineering. They advocated proving all

programs correct.

Process: Many advocated the use of defined processes and methodologies like the

Capability Maturity Model.

Professionalism: This led to work on a code of ethics, licenses, and professionalism.

1990 to 1999: Prominence of the Internet

The rise of the Internet led to very rapid growth in the demand for international information

display/E-mail systems on the World Wide Web. Programmers were required to handle

illustrations, maps, photographs, and other images, plus simple animation, at a rate never before

seen, with few well-known methods to optimize image display/storage.

The growth of browser usage, running on the HTML language, changed the way in which

information-display and retrieval was organized. The widespread network connections led to the

growth and prevention of international computer viruses on MS Windows computers, and the

vast proliferation of spam E-mail became a major design issue in E-mail systems, flooding

communication channels and requiring semi-automated pre-screening. Keyword-search systems

evolved into web-based search engines, and many software systems had to be re-designed, for

international searching, depending on search engine optimization (SEO) techniques. Human

natural-language translation systems were needed to attempt to translate the information flow in

multiple foreign languages, with many software systems being designed for multi-language

usage, based on design concepts from human translators. Typical computer-user bases went from

hundreds, or thousands of users, to, often, many-millions of international users.

2000 to Present: Lightweight Methodologies

With the expanding demand for software in many smaller organizations, the need for

inexpensive software solutions led to the growth of simpler, faster methodologies that developed

running software, from requirements to deployment, quicker & easier. The use of

rapid-prototyping evolved to entire lightweight methodologies, such as Extreme Programming

(Windows XP), which attempted to simplify many areas of software engineering, including

境 Computer Software

59

Ch

ap

ter 3

requirements gathering and reliability testing for the growing, vast number of small software

systems. Very large software systems still used heavily-documented methodologies, with many

volumes in the documentation set; however, smaller systems had a simpler, faster alternative

approach to managing the development and maintenance of software calculations and algorithms,

information storage/retrieval and display.

Current Trends in Software Engineering

Software engineering is a young discipline, and is still developing. The directions in which

software engineering is developing include:

Aspects help software engineers to deal with quality attributes by providing tools to add

or remove boilerplate code from many areas in the source code. Aspects describe how all

objects or functions should behave in particular circumstances. For example, aspects can

add debugging, logging, or locking control into all objects of particular types.

Researchers are currently working to understand how to use aspects to design

general-purpose code. Related concepts include generative programming and templates.

Agile software development guides software development projects that evolve rapidly

with changing expectations and competitive markets. Proponents of this method believe

that heavy, document-driven processes (like TickIT, CMM and ISO 9000) are fading in

importance. Some people believe that companies and agencies export many of the jobs

that can be guided by heavy-weight processes. Related concepts include extreme

programming, scrum, and lean software development.

Experimental software engineering is a branch of software engineering interested in

devising experiments on software, in collecting data from the experiments, and in

devising laws and theories from this data. Proponents of this method advocate that the

nature of software is such that we can advance the knowledge on software through

experiments only.

Model-driven design develops textual and graphical models as primary design artifacts.

Development tools are available that use model transformation and code generation to

generate well-organized code fragments that serve as a basis for producing complete

applications.

Software product line is a systematic way to produce families of software systems,

instead of creating a succession of completely individual products. This method

emphasizes extensive, systematic, formal code reuse, to try to industrialize the software

development process.

The Future of Software Engineering conference (FOSE), held at ICSE 2000, documented

the state of the art of software engineering in 2000 and listed many problems to be solved over

the next decade. The FOSE tracks at the ICSE 2000 and the ICSE 2007 conferences also help

identify the state of the art in software engineering.

In 2006, Money Magazine and Salary.com rated software engineering as the best job in

America in terms of growth, pay, stress levels, flexibility in hours and working environment,

计算机基础与实践(英文版)第 2 版

60

creativity, and how easy it is to enter and advance in the field.

3.2 Software Categories

Computer software can be put into categories based on common function, type, or field of use.

There are three broad classifications: Application software is the general designation of computer

programs for performing user tasks. Application software contrast with System software, a

generic term referring to the computer programs used to start and run computer systems and

networks; and Computer programming tools, such as compilers and linkers, used to translate and

combine computer program source code and libraries into executable programs (programs that

will belong to one of the three said categories). The KM chart of software categories is shown in

Figure 3-2.

System software Development software

Operation system Utilities Devices driver

Computer software

Application software

Programming language

Development tools

Office Music Database Video Web browser…

Figure 3-2 KM chart of software categories

3.2.1 System Software

System software is a generic phrase referring to the computer programs used to start and run

computer systems and networks. System software contrasts with application software,

programming tools and malware. System software includes Operating systems, Device drivers,

Utility software, and Middleware (sometimes it is included into Operating Systems).

Operating Systems

An operating system (OS) is a collection of software that manages computer hardware resources

and provides common services for computer programs. The operating system is an essential

component of the system software in a computer system. Application programs usually require

an operating system to function. OS can play an interface role between hardware and application

software as shown in Figure 3-3.

境 Computer Software

61

Ch

ap

ter 3

Figure 3-3 Operating system

Time-sharing operating systems schedule tasks for efficient use of the system and may also

include accounting software for cost allocation of processor time, mass storage, printing, and

other resources.

For hardware functions such as input and output and memory allocation, the operating

system acts as an intermediary between programs and the computer hardware, although the

application code is usually executed directly by the hardware and will frequently make a system

call to an OS function or be interrupted by it. Operating systems can be found on almost any

device that contains a computer—from cellular phones and video game consoles to

supercomputers and web servers.

Examples of popular modern operating systems include Android, BSD, iOS, Linux, OS X,

QNX, Microsoft Windows, Windows Phone, and IBM z/OS. All these, except Windows,

Windows Phone and z/OS, share roots in UNIX.

Device Drivers

In computing, a device driver (commonly referred to as simply a driver) is a computer program

that operates or controls a particular type of device that is attached to a computer. A driver

provides a software interface to hardware devices, enabling operating systems and other

computer programs to access hardware functions without needing to know precise details of the

hardware being used.

A driver typically communicates with the device through the computer bus or

communications subsystem to which the hardware connects. When a calling program invokes a

routine in the driver, the driver will issue commands to the device. Once the device sends data

back to the driver, the driver may invoke routines in the original calling program. Drivers are

hardware-dependent and operating-system-specific. They usually provide the interrupt handling

required for any necessary asynchronous time-dependent hardware interface.

计算机基础与实践(英文版)第 2 版

62

Utility Software

Utility software is system software designed to help analyze, configure, optimize or maintain a

computer.

Utility software usually focuses on how the computer infrastructure (including the computer

hardware, operating system, application software and data storage) operates. Due to this focus,

utilities are often rather technical and targeted at people with an advanced level of computer

knowledge—in contrast to application software, which allows users to do things like creating

text documents, playing video games, listening to music or viewing websites.

Utility software categories:

Anti-virus utilities scan for computer viruses.

Archivers output a stream or a single file when provided with a directory or a set of files.

Archive utilities, unlike archive suites, usually do not include compression or encryption

capabilities. Some archive utilities may even have a separate un-archive utility for the

reverse operation.

Backup software can make copies of all information stored on a disk and restore either

the entire disk (e.g. in an event of disk failure) or selected files (e.g. in an event of

accidental deletion).

Clipboard managers expand the clipboard functionality of an operating system.

Cryptographic utilities encrypt and decrypt streams and files.

Data compression utilities output a shorter stream or a smaller file when provided with

a stream or file.

Data synchronization utilities establish consistency among data from a source to a

target data storage and vice versa. There are several branches of this type of utility.

File synchronization utilities maintain consistency between two sources. They may be

used to create redundancy or backup copies but are also used to help users carry their

digital music, photos and video in their mobile devices.

Revision control utilities are intended to deal with situations where more than one user

attempts to simultaneously modify the same file.

Disk checkers can scan operating hard drive.

Disk cleaners can find files that are unnecessary to computer operation, or take up

considerable amounts of space. Disk cleaner helps the user to decide what to delete when

their hard disk is full.

Disk compression utilities can transparently compress/uncompress the contents of a disk,

increasing the capacity of the disk.

Disk defragmenters can detect computer files whose contents are broken across several

locations on the hard disk, and move the fragments to one location to increase efficiency.

Disk partitions can divide an individual drive into multiple logical drives, each with its

own file system which can be mounted by the operating system and treated as an

境 Computer Software

63

Ch

ap

ter 3

individual drive.

Disk space analyzers for the visualization of disk space usage by getting the size for

each folder (including sub folders) & files in folder or drive. showing the distribution of

the used space.

Disk storage utilities.

File managers provide a convenient method of performing routine data management

tasks, such as deleting, renaming, cataloging, uncataloging, moving, copying, merging,

generating and modifying data sets.

Hex editors directly modify the text or data of a file. These files could be data or an

actual program.

Memory testers check for memory failures.

Network utilities analyze the computer’s network connectivity, configure network

settings, check data transfer or log events.

Registry cleaners clean and optimize the Windows registry by removing old registry

keys that are no longer in use.

Screensavers were desired to prevent phosphor burn-in on CRT and plasma computer

monitors by blanking the screen or filling it with moving images or patterns when the

computer is not in use. Contemporary screensavers are used primarily for entertainment

or security.

System monitors for monitoring resources and performance in a computer system.

System profilers provide detailed information about the software installed and hardware

attached to the computer.

Middleware

Middleware is computer software that provides services to software applications beyond those

available from the operating system. It can be described as “software glue”. Middleware makes it

easier for software developers to perform communication and input/output, so they can focus on

the specific purpose of their application.

The distinction between operating system and middleware functionality is, to some extent,

arbitrary. While core kernel functionality can only be provided by the operating system itself,

some functionality previously provided by separately sold middleware is now integrated in

operating systems. A typical example is the TCP/IP stack for telecommunications, nowadays

included in virtually every operating system. At the other end of the scale, the boundary between

middleware and application has also moved. Digital TV middleware for example usually

provides enough functionality so that no “application” is needed for end-users to be able to use

the TV services.

3.2.2 Application Software

Application software is the general designation of computer programs for performing user tasks.

计算机基础与实践(英文版)第 2 版

64

Application software may have a general purpose (word processing, web browsers) or have a

specific purpose (accounting, truck scheduling).

This guide is provided to assist locating those categories appropriate for an application

software article:

Access control: Biometrics, Identity management, Password managers.

Business: Administrative, Business simulation, Customer Relationship Management

(CRM), Enterprise Resource Planning (ERP), Enterprise application integration,

Message-oriented middleware, Extract Transform Load (ETL), Financial, Accounting,

Investment Club, Office, Content management systems (CMS), Blog, Collaborative,

Document Management, Version control, Video Hosting, Widget management, Wiki,

Office suites, Presentation, Spreadsheets, Typing, Word processors, Project Management,

Mind-Mapping, Reporting, Risk Management, Technical Analysis, Workflow

Technology.

Childhood.

Communication: Amateur Radio, Bluetooth, Bulletin Board, E-mail, Instant Messaging

Clients, Electronic mailing Lists, Technical Communication Tools, Diagramming,

Documentation generators, Online help, Web Browsers.

Digital Typography.

Desktop publishing.

Editing, Audio editors, Font editors, Formula editors, Hex editors, Outliners, Raster

graphics editors, Raster to Vector Conversion, Spell checkers, TeX Editors, Text editors,

Collaborative real-time editors, HTML editors, JavaScript-based HTML editors, Vector

Graphics Editors.

Typesetting, EPUB readers (e-books), Page description, PDF, PostScript, TeX, Troff.

Education: Edu-Ware educational, Educational operating systems, Educational

Programming Languages, Interactive geometry, Learning Management, Notetaking,

Pedagogic integrated development environments, Renaissance Learning, Virtual learning

environments.

Entertainment: Video Games, Gambling, Draughts, Computer Chess, Go, Poker,

Role-playing Games, Novelty, Demos, Sports.

Genealogy.

Government.

Computer Graphics: 3D Graphics, Animation, 2D Animation, Data visualization,

Diagramming, Image organizers, Image Viewers, Digital Photography, Panorama, Photo

stitching, Raster Graphics, Raster to Vector Conversion, Screencasting (capture), Vector

Graphics editors.

境 Computer Software

65

Ch

ap

ter 3

Health: Dental, Disability, Screen readers, Speech synthesis, Healthcare, Neuroimaging.

Industry: Production and manufacturing, Computer-aided engineering, Building

information modeling, Computer-aided design, Computer-aided engineering,

Geotechnical engineering, Optical, Electronic Design Automation (EDA), Electronic

circuit simulators, Computer-aided manufacturing, Film production, Screenwriting,

Robotics.

Knowledge Representation: Concept Mapping, Mind-mapping, Ontology editors, Rule

engines, Expert systems.

Language: Computational linguistics, Computer-assisted translation, Machine

translation.

Legal.

Library and Information Science: Dictionary, Digital library, Institutional Repository,

Library Automation, Reference management, BibTex.

Multimedia: Audio, Audio codecs, Audio editors, Digital audio recording, Compositing,

Media players, Media readers, Multimedia frameworks, Optical disc authoring, PDF,

Podcasting, Tag editors, Video editing, Video conversion.

Music: Audio trackers, Guitar, Scorewriters, Synthesizers, Drum machines.

Personal information managers: Calendaring, Personal digital assistant.

Religion.

Science: Artificial intelligence, Agent-based, Chatterbots, Computer vision, Expert systems,

Face recognition, Natural language, Neural network, Optical character recognition,

Speech recognition.

Astronomy.

Bioinformatics, Molecular modelling, Molecular dynamics.

Cheminformatics, Chemistry, Computational chemistry, Molecular modelling,

Molecular dynamics, Mass spectrometry.

Computational science.

Earth science, Earth sciences graphics, Virtual globes, Environmental science,

Geographic information system (GIS), Environmental Systems Research Institute

(ESRI), Integrated Hydrologic Modelling, Numerical climate and weather models,

Remote sensing.

Geology.

Laboratory.

Linguistic research.

Mathematics, Computer algebra, Formal methods, Model checkers, Theorem proving,

Formula editors, Interactive geometry, Numerical, Finite element, Mathematical

optimization, Statistical, Data Analysis, Econometrics, Spreadsheets, Cryptographic.

计算机基础与实践(英文版)第 2 版

66

Physics, Computational physics, Optics.

Plotting.

Simulation: Computer-aided Engineering, Geotechnical engineering, Optical, Scientific

Simulation, Outer space/Space flight.

Transportation: Route planning, Satellite navigation, Transport simulation.

Below are just a few types of applications you might use:

Word Processing Software

Word processors: A word processor allows you to write a letter, design a flyer, and create many

other kinds of documents. The most well-known word processor is Microsoft Word shown in

Figure 3-4.

Figure 3-4 Examples of Word Processing Programs: Lotus Word Pro 97, Microsoft Word 97, Corel WordPerfect, Microsoft Word 2007

Spreadsheets

The best software for working with piles of numbers is a spreadsheet program. Such a program is

境 Computer Software

67

Ch

ap

ter 3

designed to make it easy to arrange and analyze numbers, like listing columns of numbers,

sorting, doing calculations, and making charts from the numbers Figure 3-5 shows the spread-

sheet software: Microsoft Excel.

Figure 3-5 Worksheets and Charts (Excel 2010)

Personal finance: Personal finance software, such as Quicken, allows you to keep track of your

income and expenses, create a budget, and more. Most personal finance programs can

automatically download information from your bank so you don’t have to manually add your

transactions.

Web browsers: A web browser is the tool you use to access the Web. Most computers come

with a web browser pre-installed, but you can also download a different one if you prefer.

Examples of browsers include Internet Explorer, Firefox, Google Chrome, and Safari shown in

Figure 3-6.

Games: There are many different games you can play on your computer. They range from card

games such as Solitaire to action games like Halo 2. Many action games require a lot of

computing power, so they may not work unless you have a newer computer.

计算机基础与实践(英文版)第 2 版

68

Figure 3-6 Kinds of Web browsers

Media players: If you want to listen to MP3s or watch movies you’ve downloaded, you’ll need

to use a media player. Windows Media Player (shown in Figure 3-7) and iTunes are popular

media players.

Figure 3-7 Watching a movie in Windows Media Player

Gadgets: Sometimes called widgets, these are simple applications you can place on your

desktop (or on the Dashboard if you’re using a Mac). There are many different types of gadgets,

and they include calendars, calculators, maps, and news headlines.

境 Computer Software

69

Ch

ap

ter 3

3.2.3 Development Software

A programming tool or software development tool is a program or application that software

developers use to create, debug, maintain, or otherwise

support other programs and applications. The term

usually refers to relatively simple programs, that can be

combined together to accomplish a task, much as one

might use multiple hand tools to fix a physical object.

The ability to use a variety of tools productively is one

hallmark of a skilled software engineer. Figure 3-8

shows a software development scene.

The most basic tools are a source code editor

and a compiler or interpreter, which are used ubiquitously and continuously. Other tools are used

more or less depending on the language, development methodology, and individual engineer, and

are often used for a discrete task, like a debugger or profiler. Tools may be discrete programs,

executed separately—often from the command line—or may be parts of a single large program,

called an integrated development environment (IDE). In many cases, particularly for simpler use,

simple ad hoc techniques are used instead of a tool, such as print debugging instead of using a

debugger, manual timing (of overall program or section of code) instead of a profiler, or tracking

bugs in a text file or spreadsheet instead of a bug tracking system.

The distinction between tools and applications is murky. For example, developers use

simple databases (such as a file containing a list of important values) all the time as tools.

However a full-blown database is usually thought of as an application or software in its own

right. For many years, computer-assisted software engineering (CASE) tools were sought after.

Successful tools have proven elusive. In one sense, CASE tools emphasized design and

architecture support, such as for UML. But the most successful of these tools are IDEs.

Software tools come in many forms:

Binary compatibility analysis: icheck, ABI Compliance Checker.

Bug databases: Comparison of issue tracking systems—Including bug tracking systems.

Build tools: Build automation, List of build automation software.

Code coverage: Code coverage#Software code coverage tools. Software Diagnostics.

Code sharing sites: Freshmeat, Krugle, Sourceforge, GitHub. See also Code search

engines.

Compilation and linking tools: GNU toolchain, gcc, Microsoft Visual Studio,

CodeWarrior, Xcode, ICC.

Debuggers: Debugger#List of debuggers. See also Debugging.

Disassemblers: Generally reverse-engineering tools.

Documentation generators: Comparison of documentation generators, Help2man, Plain

Old Documentation, ASCII Doc.

Figure 3-8 A software developer at work

计算机基础与实践(英文版)第 2 版

70

Formal methods: Mathematically-based techniques for specification, development and

verification.

GUI interface generators.

Library interface generators: SWIG.

Integration tools.

Memory debuggers are frequently used in programming languages (such as C and C++)

that allow manual memory management and thus the possibility of memory leaks and

other problems. They are also useful to optimize efficiency of memory usage. Examples:

dmalloc, Electric Fence, Duma, Insure++, Valgrind.

Parser generators: Parsing#Parser development software.

Performance analysis or profiling: List of performance analysis tool.

Refactoring browser.

Revision control: List of revision control software, Comparison of revision control

software.

Scripting languages: PHP, Awk, Perl, Python, REXX, Ruby, Shell, Tcl.

Search: grep, find.

Source code Clones/Duplications Finding: Duplicate code#Tools.

Source code formatting: indent.

Source code editor.

Text editors: List of text editors, Comparison of text editors.

Source code generation tools: Automatic programming#Implementations.

Static code analysis: lint, List of tools for static code analysis.

Tools to simplify work with set of projects TBox.

Unit testing: List of unit testing frameworks.

3.3 Installing Software

How to install a software program can depend on the operating system being used and the

program being installed. Because of all the different possibilities, we have created the steps

below as guidelines for installing programs in each of the major operating systems.

3.3.1 Installation on Windows

You can do a lot with the programs and features included in Windows, but you might want to

install other programs.

How you add a program depends on where the installation files for the program are located.

Typically, programs are installed from a CD or DVD, from the Internet, or from a network. If

you want to uninstall or make changes to a program already installed on your computer, see

Uninstall or change a program (shown in Figure 3-9).

境 Computer Software

71

Ch

ap

ter 3

Figure 3-9 Windows add and remove programs

To Install a Program from a CD or DVD

Insert the disc into your computer, and then follow the instructions on your screen.

Administrator permission required if you’re prompted for an administrator password or

confirmation, type the password or provide confirmation.

Many programs installed from CDs or DVDs open an installation wizard for the program

automatically. In these cases, the AutoPlay dialog box appears and you can choose to run the

wizard. For more information, see AutoPlay: frequently asked questions.

If a program doesn’t begin installation automatically, check the information that came with

the program. This information will likely provide instructions for installing the program

manually. If you can’t access the information, you can also browse through the disc and open the

program setup file, usually called Setup.exe or Install.exe. If your program was written for an

earlier version of Windows, see Make older programs run in this version of Windows.

To Install a Program from the Internet

1. In your web browser, click the link to the program.

2. Do one of the following:

To install the program immediately, click Open or Run, and then follow the instructions

on your screen. Administrator permission required if you’re prompted for an

administrator password or confirmation, type the password or provide confirmation.

To install the program later, click Save, and then download the installation file to your

computer. When you’re ready to install the program, double-click the file, and then

follow the instructions on your screen. This is a safer option because you can scan the

计算机基础与实践(英文版)第 2 版

72

installation file for viruses before you proceed.

Note: When downloading and installing programs from the Internet, be sure you trust the

publisher of the program and the website that’s offering the program.

To Install a Program from a Network

If you connect your computer to a domain (such as an internal corporate network) that has

programs that you can add, you can install programs from Control Panel.

1. Open Get Programs by clicking the Start button Picture of the Start button, clicking

Control Panel, clicking Programs, clicking Programs and Features, and then, in the left pane,

clicking Install a program from the network.

2. Click a program in the list, and then click Install.

3. Follow the instructions on your screen. Administrator permission required If you’re

prompted for an administrator password or confirmation, type the password or provide

confirmation.

3.3.2 Installation on UNIX/Linux

Traditionally, software applications for UNIX is packaged as .tar files of source code. This code

must be converted into a binary format specific to the UNIX OS on which it will run. This source

code can be downloaded once, and compiled for any UNIX OS including Linux, Solaris and the

BSD operating systems, among others. The source code is simply copied to each system and

compiled on that system.

Each UNIX will have its own package manager for distributing software. However,

compiling from source code will work on any UNIX based system.

A program that is in *.tar format has been archived using the UNIX tar command. An

archived file is one file that contains many files. To install a program that is in *.tar format, you

must first separate, or unpack, the individual files. To do so, at the prompt, enter the following

command:

tar -xvf filename.tar

Replace filename with the name of the program you are installing.

In most cases this will create a directory called filename (the name of your program) which

includes all of the source files for the program. To go into this directory, enter the following

command, replacing filename with the name of your program directory:

cd filename

Most free UNIX programs are distributed as source files. These are text files containing the

program file. In most cases you will need to compile the program for the system on which you

are installing the program. Most free UNIX programs will come with a text file called README

or INSTALL with specific instructions. Usually you will need to complete the following steps:

1. Configure the software: Some programs come with a shell script called configure. This

shell script will scan your computer to determine the location of files necessary for the program

境 Computer Software

73

Ch

ap

ter 3

to work. If you are installing the program on a shared UNIX system, you will want to install the

files in your home directory. To do so, enter the following command:

./configure --prefix=$HOME

For programs that don’t have a configure script, you may need to edit a file called a

Makefile in order to install the software. The README or INSTALL file will explain how to do

this.

2. Compile the program: Compiling the program creates an executable file. To compile the

program for most UNIX packages, from the program’s directory, enter

make.

3. Install the program: In some cases you may be able to install the program in your home

directory by entering the command:

make install

4. For other packages you may need to move the executable files to your home directory. To

do so, use the following command:

mv filename ~/bin

Replace filename with the name of the executable file you are moving.

3.4 Security Software

Today’s threats are varied, sophisticated, and continue to adapt in order to get past your defenses.

And that means that going online without essential protection in place on your computer is no

longer an option. Figure 3-10 shows Microsoft Security Essentials.

Figure 3-10 Microsoft Security Essentials

计算机基础与实践(英文版)第 2 版

74

The best ways to stay secure online are to prepare your PC with the right tools, and to use

caution and common sense whenever you use the Internet. Updated spyware and virus protection

with real-time monitoring are important tools in keeping spyware and malware from infecting

your computer. An up-to-date firewall is another security must-have. These three elements

provide fundamental security to your PC, and are essential to protect your information and your

privacy.

What exactly are these tools and why are they necessary?

Anti-spyware Software

Spyware attaches itself to individual computers to perform functions like monitoring Internet

navigation and stealing information. Spyware can track your personal data and then send it to

cyber criminals. Anti-Spyware software can protect your computer by providing real-time

protection against malware, spyware, and adware installations, as well as by detecting and

removing such programs that are already installed on your computer. Figure 3-11 shows

Anti-Spyware.

Figure 3-11 Anti-Spyware

Antivirus Software

A virus is code that recursively replicates a possibly evolved copy of itself. Viruses use

computers to spread from one to another. They often perform a function that can erase files and

processes from your computer. Antivirus software (such as that shown in Figure 3-12) can

protect your computer from a range of cyber threats like viruses, worms, rootkits, and phishing

attacks. The software keeps you protected by scanning files to look for known viruses, and by

using what is known as heuristics to identify suspicious behavior which may indicate a threat.

境 Computer Software

75

Ch

ap

ter 3

Figure 3-12 Antivirus software

Firewall

A firewall works as a barrier between your PC and cyber space. When you are connected to the

Internet, you are constantly sending and receiving information in small units called packets. The

firewall filters these packets to see if they meet certain criteria set by a series of rules, and

thereafter blocks or allows the data. A firewall (such as that shown in Figure 3-13) provides

critical protection to keep your PC safe from unauthorized access, yet it cannot remove malware

from a system that has already been infected; therefore it should be used in conjunction with

anti-spyware and anti-virus software.

Figure 3-13 Firewall

计算机基础与实践(英文版)第 2 版

76

Note:

The contents of computer software can be concluded into this KM chart of Figure 3-14.

Office

Web browser

Media player

Messager

Computer

software

System

software

Application

software

Operating system

Device driver

Utility software

Middleware (sometimes omitted)

Programming language

Compilation and linking tools

Development software

Word Processor

Spreadsheet

PPT

Figure 3-14 KM chart of computer software

Exercises

Fill in blanks.

1. System software can help you track down and fix disk errors, repair corrupted files,

and improve device performance.

2. A(n) driver is designed to help a peripheral device establish communication with a

computer.

3. The three main categories of software are software, software, and software.

For each question, choose the appropriate answer.

(1) The software application that is used the most often is _____.

A. word processing B. desktop publishing

C. database D. graphical presentation

(2) Using a word processor you can change _____.

A. the size of the font B. the size of the margins

C. the spacing between lines D. all of the above