Chapter 1 Flashcards
Why is software important?
Economies of ALL developed nations depend on it; more and more systems are software controlled.
What is the scope of software engineering?
Concerned with theories, methods, and tools for professional software development.
What is the definition of software engineering?
The establishment and use of sound engineering principles to obtain economically software that is reliable and works efficiently on real machines.
What is software?
The product that software professionals build and then support over the long term.
What are the components of software?
(1) Instructions (computer programs) providing features, function, performance; (2) Data structures for storing/manipulating information; (3) Documentation describing operation and use.
How do software costs compare to hardware costs?
Software costs often dominate computer system costs, frequently exceeding hardware costs (e.g., on a PC).
What is the difference between maintenance and development costs?
Software costs more to maintain than develop. Maintenance costs can be several times development costs over a system’s life.
What is the goal of software engineering regarding costs?
To achieve cost-effective software development.
What is a reason for software project failure related to complexity?
As techniques improve, demands change: larger, more complex systems needed quickly with new capabilities.
What is a reason for software project failure related to SE methods?
Writing programs without SE methods is easy initially, but leads to software that is often more expensive and less reliable than it should be.
What are the attributes of good software?
It should deliver the required functionality and performance to the user, and be maintainable, dependable, and usable.
What is the difference between software engineering (SE) and computer science (CS)?
CS focuses on theory and fundamentals. SE focuses on the practicalities of developing and delivering useful software.
What is the difference between software engineering (SE) and system engineering?
System engineering is concerned with all aspects of computer-based system development (hardware, software, process). SE is part of this broader process.
What are the key challenges facing software engineering?
Coping with increasing diversity, demands for reduced delivery times, and developing trustworthy software.
What are the costs of software engineering?
Roughly 60% development costs, 40% testing costs. For custom software, evolution costs often exceed development costs.
What are the best software engineering techniques and methods?
Different techniques are appropriate for different systems. No single method is best for all. (e.g., prototypes for games, formal specification for safety-critical systems).
What differences has the web made to software engineering?
Led to availability of software services, highly distributed service-based systems, and important advances in programming languages and software reuse.
What are generic software products?
Stand-alone systems marketed and sold to any customer wishing to buy them. Examples: PC graphics programs, project management tools, CAD software.
What are customized software products?
Software commissioned by a specific customer to meet their own needs. Examples: Embedded control systems, air traffic control software, traffic monitoring systems.
Who owns the product specification for generic software?
Owned by the software developer. Developer makes decisions on software changes.
Who owns the product specification for customized software?
Owned by the customer. Customer makes decisions on required software changes.
What is the attribute of good software related to maintainability?
Software should be written so it can evolve to meet changing customer needs (critical due to changing business environments).
What is the attribute of good software related to dependability and security?
Includes reliability, security, safety. Should not cause physical/economic damage on failure. Malicious users should not be able to access/damage.
What is the attribute of good software related to efficiency?
Should not make wasteful use of system resources (memory, processor cycles). Includes responsiveness, processing time, memory utilization, etc.