i - introduction Flashcards
essential for the functioning of national and international
societies.
software engineering
abstract and intangible
Software systems
2 factors that are consequences to so-called software failures
- increasing demads
- low expectations
Systems have to be built and delivered more quickly; larger, even more complex systems are required;
which factor of consequence of software failures
increasing demands
They do not use software engineering methods in their everyday work. Consequently, their software is often more expensive and less reliable than it should be.
which factor of consequence of software failures
low expectations
The notion of ‘software engineering’ was first proposed in [1] at a conference held to discuss what was then
called the ‘[2]’ ([3]).
fill in the blanks
- 1968
- ‘software crisis’
- (Naur and Randell, 1969)
Throughout the [1] and [2], a variety of new software engineering techniques and methods were
developed, such as structured programming, information hiding and object-oriented development
fill in the blanks
- 1970s
- 1980s
[1], intended for use by someone apart from its developer, is usually developed by teams rather than individuals.
fill in the blanks
- Professional
software
intended to support professional software development,
rather than individual programming
Software engineering
includes techniques that support program specification, design, and evolution, none of which are normally relevant for personal software development.
software engineering
not just the programs themselves but also all associated documentation and configuration data that is required to make these programs operate correctly
software
enumeration
what does a system typically include of?
- system documentation
- user documentation
- websites for users to download product information
Computer programs and associated documentation.
Software products may be developed for a particular
customer or may be developed for a general market.
software
enumerate
attributes of good software
Good software should deliver the required functionality and performance to the user and should be maintainable, dependable, and usable.
[1] is an engineering discipline that is concerned with all aspects of software production.
- Software engineering
enumerate
fundamental software engineering activities
- Software specification
- software development
- software validation
- software evolution.
[1] focuses on theory and
fundamentals; [2] is concerned
with the practicalities of developing and delivering
useful software.
- Computer science
- software engineering
[1] is concerned with all aspects of
computer-based systems development including
hardware, software, and process engineering. [2] is part of this more general process.
- System engineering
- Software
engineering
key challenges facing software engineering?
Coping with increasing diversity, demands for reduced
delivery times, and developing trustworthy software.
costs of software engineering
Roughly __60%__ of software costs are __development
costs__
__40%__ are __testing costs__.
For __custom software__, evolution costs often exceed development costs.
What are the best software engineering techniques
and methods?
While all software projects have to be professionally
managed and developed, different techniques are
appropriate for different types of system. For example,
games should always be developed using a series of
prototypes whereas safety critical control systems
require a complete and analyzable specification to be
developed. You can’t, therefore, say that one method
is better than another.
What differences has the Web made to software engineering?
The Web has led to the availability of software
services and the possibility of developing highly
distributed service-based systems. Web-based
systems development has led to important advances
in programming languages and software reuse.
2 kinds of software products
- generic products
- customized (or bespoke) products
These are stand-alone systems that are produced by a development organization and sold on the open market to any customer who is able to buy them.
generic products
example of generic product software
databases, word processors, drawing packages, and project-management tools; __vertical applications__ designed for some specific purpose such as library information systems, accounting systems, or systems for maintaining dental records.
These are systems that are commissioned by a particular customer.
customized products
example of customized product
control systems for electronic devices, systems written to support a particular business process, and air traffic control systems.
what are the software product characteristics
- maintainability
- dependability and security
- efficiency
- acceptability
Software should be written in such a way so that it can evolve to meet the changing needs of customers. This is a critical attribute because software change is an inevitable requirement of a changing business environment.
maintainability
includes a range of characteristics including reliability, security, and safety. Dependable software should not cause physical or economic damage in the event of
system failure. Malicious users should not be able to access or damage the system.
dependability and security
Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, memory utilization, etc.
efficiency
Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable, and compatible with other systems that they use.
acceptability
2 reasons why SWE is important
- more individuals and society rely on advanced software systems
- cheaper in the long run to use engineering methods and techniques
[fundamental activity] where customers and engineers define the software that is to be produced and the constraints on its operation.
software specification
[fundamental activity] where the software is designed and programmed.
software development
[fundamental activity] where the software is checked to ensure that it is what the
customer requires.
software validation
[fundamental activity] where the software is modified to reflect changing customer and market requirements.
software evolution
3 general issues that affect many different types of software:
- heterogeneity
- business and social change
- security and trust
systems are required to operate as distributed systems
across networks that include different types of computer and mobile devices.
issue affecting diff types of software
heterogeneity
need to be able to change their existing software and to rapidly develop new software.
issue affecting diff types of software
business and social change
make sure that malicious users cannot attack our software and that information security is maintained.
issue affecting diff types of software
security and trust
8 types of application
- stand-alone applications
- interactive transaction-based applications
- embedded control systems
- batch processing systems
- entertainment systems
- systems for modeling and simulation
- data collection systems
- systems of systems
These are application systems that run on a local computer, such as a PC.
stand-alone applications
These are applications that execute on a remote computer and that are accessed by users from their own PCs or terminals; e-commerce, business systems, etc.
interactive transaction-based applications
software control systems that control and
manage hardware devices; software in cellphone, microwave oven.
embedded control systems
business systems that are designed to
process data in large batches; periodic billing systems.
batch processing systmes
systems that are primarily for personal use and which are intended to entertain the user
entertainment systems
systems that are developed by scientists and engineers to model physical processes or situations, which include many, separate, interacting objects
systems for modeling and simulation
systems that collect data from their environment using a set of sensors and send that data to other systems for processing.
data collection systems
systems that are composed of a number of other software systems.
systems of systems
4 standards of acceptable behavior not bounded by laws:
- confidentiality
- competence
- intellectual property rights
- computer misuse
respect the confidentiality of your employers or clients irrespective of whether or not a formal confidentiality agreement has been signed.
confidentiality
should not misrepresent your level of competence
competence
be aware of local laws governing the use of intellectual property such as patents and copyright
intellectual property rights
should not use your technical skills to misuse other people’s computers.
computer misuse
8 principles of Software Engineering Code of Ethics and Professional Practice
- public
- client and employer
- product
- judgment
- management
- profession
- colleagues
- self
Software engineers shall act consistently with the public interest.
public
Software engineers shall act in a manner that is in the
best interests of their client and employer consistent with the public interest
client and employer
Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.
product
Software engineers shall maintain integrity and independence in their professional judgment.
judgment
Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.
management
Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
profession
Software engineers shall be fair to and supportive of their colleagues.
colleagues
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
self
published a code of professional conduct or code of ethics
ACM
IEEE (Institute of Electrical and Electronic Engineers)
the British Computer Society