• 沒有找到結果。

FAQs about software lengineering

在文檔中 Engineering Software (頁 30-33)

Supporting resources

1.1 FAQs about software lengineering

This section is designed to answer some fundamental questions about software engi-neering and to give you some impression of my views of the discipline. The for-mat that I have used here is the 'FAQ (Frequently Asked Questions) list'. This approach is commonly used in Internet news.groupsIto provide newcomers with answers to frequently asked questions. I think that it is a very effective way to give a succinct introduction to the subject of software engineering.

Figure 1.1 summarises the answ,ers to the questions in this section.

1.1.1

What is software?

Many people equate the term software with computer programs. However, I prefer a broader definition where software is not just the programs but also all associated doc-umentatlon and configuration data that is needed to make these programs operate cor-rectly. A software system usually consists of a number of separate programs, configuration files, which are used to set up these programs, system documentation, which describes the structure of the system, and user documentation, which explains how to use the system and web sites for users to download recent product information.

Soft\\iare engineers are concerned with developing software products, i.e., soft-ware which can be sold to a customer. There are two fundamental types of softsoft-ware product

1. Generic productsThese are stand-alone systems that are produced by a devel-opment organisation and sold on the open market to any customer who is able to buy them. Examples of this type of product include software for pes such as databases, word processors, drawing packages and project management tools.

2. CuslOmised (or bespoke) productsThese are systems which are commissioned by a particular customer. A software contractor develops the software especially for that customer. Examples of this type of software include control systems for electronic devices, systems written to support a particular business process and air traffic control systems.

6 Chapter 1 D Introduction

Question Answer

What is software7

What is software engineering?

What is the difference between software engineering and computer science?

What is the difference between software engineering and system engineering?

What is a software process?

What is a software process model?

What are the costs of software engineering?

What are software engineering methods?

What is CASE (Computer-Aided Software Engineering)?

What are the attributes of good software?

What are the key challenges facing software engineering?

Computer programs and associated documentation. software products may be developed for a particular customer or maybedeveloped for a general market

Software engineering is an engineering discipline which is concerned with all aspects of software production.

Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.

System engineering is concerned with all aspects of computer-based systems development, including hardware, software and process engineering. Software engineering is part of this process.

A set of activities whose goal is the development or evolution of software.

A simplified representation of a software process, presented from a specific perspective.

Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs.

Structured approaches to software development which include system models, notations, rules, design advice and process guidance.

Software systems which are intended to provide automated support for software process activities. CASE systemsare often used for method support.

The software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable.

Coping with increasing diversity, demands for reduced delivery times and developing trustworthy software.

Figure 1.1 Frequently asked questions about software engineering

An

important difference between these types of software is that, in generic prod-ucts, the organisation that develops the software controls the software specification.

For custom products, the specification is usually developed and controlled by the organisation that is buying the software. The software developers must work to that specification.

However, the line between these types of products is becoming increasingly blurred.

More and more software companies are starting with a generic system and custQmising it to the needs of a particular customer. Enterprise Resource Planning (ERP) sys-tems, such as the SAP system, are the best examples of this approach. Here, a large and complex system is adapted for a company by incorporating information about business rules and processes, reports required, and so on.

1.1 8 FAQs about software engineering 7

1.1.2

What is software engineering?

Software engineering is an engineeling discipline that is concerned with all aspects of software production from the eady stages of system specification to maintaining the system after it has gone into use. In this definition, there are two key phrases:

1. Engineering discipline Engineers make things work. They apply theories, meth-ods and tools where these are appropriate,. but they use them selectively and always tryto discover solutions to problems even when there are no applicable theories and methods. Engineers also recognise that they must work to organisational and financial constraints, so they look for solutions within these constraints.

2. All aspects of software production Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, meth-ods and theories to support software production.

In general, software engineers adopt a systematic and organised approach to their work, as this is often the most effective way to produce high-quality software. However, engineering is all about selecting the most appropriate method for a set of circum-stances ,md a more creative, less fOlmal approach to development may be effective in some circumstances. Less formal development is particularly appropriate for the development of web-based systems. which requires a blend of software and graph-ical design skills.

1.1.3

What's the difference between software engineering and computer science?

-Essentially, computer science is concerned with the theories and methods that under-lie computers and software systems, whereas software engineering is concerned with the practical problems of producing software. Some knowledge of computer sci-ence is (~ssential for software engineers in the same way that some knowledge of physicsISessential for electrical engineers.

Ideally, all of software engineering should be underpinned by theories of com-puter science, but in reality thisIS not the case. Software engineers must often use ad hocapproaches to developing the software. Elegant theories of computer science cannot always be applied to real, complex problems that require a software solution.

1.1.4

What is the difference betwE!en software engineering and system

engi~~ring?

_

System engineering is concerned wilth all aspects of the development and evolution of complex systems where software plays a major role. System engineering is there-fore concerned with hardware development, policy and process design and system

8 Chapter 1 • Introduction

deployment as well as software engineering. System engineers are involved in spec-ifying the system, defining its overall architecture and then integrating the different parts to create the finished system. They are less concerned with the engineering of the system components (hardware, software, etc.).

System engineering is an older discipline than software engineering. People have

在文檔中 Engineering Software (頁 30-33)