| Software
engineering
The economies of ALL developed nations are dependent on software.
More and more systems are software controlled
Software engineering is concerned with theories, methods and tools for
professional software development
Software engineering spending represents a significant fraction of GNP
in all developed countries
Software
costs
Software costs often dominate system costs. The costs of software on
a PC are often greater than the hardware cost
Software costs more to maintain than it does to develop. For systems
with a long life, maintenance costs may be several times development costs
Software engineering is concerned with cost-effective software development
FAQs
about software engineering
What is software?
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?
What
is software?
Computer programs and associated documentation
Software products may be developed for a particular customer or
may be developed for a general market
Software products may be
Generic - developed to be
sold to a range of different customers
Bespoke (custom) - developed
for a single customer according to their specification
What
is software engineering?
Software engineering is an engineering discipline which is concerned
with all aspects of software production
Software engineers should adopt a systematic and organised approach
to their work and use appropriate tools and techniques depending on the
problem to be solved, the development constraints and the resources available
What
is the difference between software engineering and computer science?
Computer science is concerned with theory and fundamentals; software
engineering is concerned with the practicalities of developing and delivering
useful software
Computer science theories are currently insufficient to act as a complete
underpinning for software engineering
What
is the difference between software engineering and system engineering?
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
System engineers are involved in system specification, architectural
design, integration and deployment
What
is a software process?
A set of activities whose goal is the development or evolution of software
Generic activities in all software processes are:
Specification - what the
system should do and its development constraints
Development - production
of the software system
Validation - checking that
the software is what the customer wants
Evolution - changing the
software in response to changing demands
What
is a software process model?
A simplified representation of a software process, presented from a
specific perspective
Examples of process perspectives are
Workflow perspective - sequence
of activities
Data-flow perspective - information
flow
Role/action perspective - who does
what
Generic process models
Waterfall
Evolutionary development
Formal transformation
Integration from reusable components
What
are the costs of software engineering?
Roughly 60% of costs are development costs, 40% are testing costs. For
custom software, evolution costs often exceed development costs
Costs vary depending on the type of system being developed and the requirements
of system attributes such as performance and system reliability
Distribution of costs depends on the development model that is used
What
are software engineering methods?
Structured approaches to software development which include system models,
notations, rules, design advice and process guidance
Model descriptions
Descriptions of graphical
models which should be produced
Rules
Constraints applied to system
models
Recommendations
Advice on good design practice
Process guidance
What activities to follow
What
is CASE (Computer-Aided Software Engineering)
Software systems which are intended to provide automated support for
software process activities. CASE systems are often used for method support
Upper-CASE
Tools to support the early process
activities of requirements and design
Lower-CASE
Tools to support later activities
such as programming, debugging and testing
What
are the attributes of good software?
The software should deliver the required functionality and performance
to the user and should be maintainable, dependable and usable
Maintainability
Software must evolve to meet changing
needs
Dependability
Software must be trustworthy
Efficiency
Software should not make wasteful
use of system resources
Usability
Software must be usable by the
users for which it was designed
What
are the key challenges facing software engineering?
Coping with legacy systems, coping with increasing diversity and coping
with demands for reduced delivery times
Legacy systems
Old, valuable systems must
be maintained and updated
Heterogeneity
Systems are distributed and
include a mix of hardware and software
Delivery
There is increasing pressure
for faster delivery of software
Professional
and ethical responsibility
Software engineering involves wider responsibilities than simply the
application of technical skills
Software engineers must behave in an honest and ethically responsible
way if they are to be respected as professionals
Ethical behaviour is more than simply upholding the law.
Issues
of professional responsibility
Confidentiality
Engineers should normally respect the
confidentiality of their employers or clients irrespective of
whether or not a formal confidentiality agreement has been signed.
Competence
Engineers should not misrepresent their level
of competence. They should not knowingly accept work which is outwith
their competence.
Issues
of professional responsibility
Intellectual property rights
Engineers should be aware of local laws
governing the use of intellectual property such as patents, copyright,
etc. They should be careful to ensure that the intellectual property of
employers and clients is protected.
Computer misuse
Software engineers should not use their
technical skills to misuse other peoples computers. Computer misuse ranges
from relatively trivial (game playing on an employers machine, say) to
extremely serious (dissemination of viruses).
ACM/IEEE
Code of Ethics
The professional societies in the US have cooperated to produce a code
of ethical practice.
Members of these organisations sign up to the code of practice when
they join.
The Code contains eight Principles related to the behaviour of and decisions
made by professional software engineers, including practitioners, educators,
managers, supervisors and policy makers, as well as trainees and students
of the profession.
Code
of ethics - preamble
Preamble
The short version of the code summarizes aspirations
at a high level of the abstraction; the clauses that are included in the
full version give examples and details of how these aspirations change
the way we act as software engineering professionals. Without the aspirations,
the details can become legalistic and tedious; without the details, the
aspirations can become high sounding but empty; together, the aspirations
and the details form a cohesive code.
Software engineers shall commit themselves to making
the analysis, specification, design, development, testing and maintenance
of software a beneficial and respected profession. In accordance with
their commitment to the health, safety and welfare of the public, software
engineers shall adhere to the following Eight Principles:
Code
of ethics - principles
1. PUBLIC
Software engineers shall act consistently with
the public interest.
2. CLIENT AND EMPLOYER
Software engineers shall act in a manner that
is in the best interests of their client and employer consistent with
the public interest.
3. PRODUCT
Software engineers shall ensure that their products
and related modifications meet the highest professional standards possible.
4. JUDGMENT
Software engineers shall maintain integrity and independence
in their professional judgment.
5. MANAGEMENT
Software engineering managers and leaders shall subscribe
to and promote an ethical approach to the management of software development
and maintenance.
6. PROFESSION
Software engineers shall advance the integrity and
reputation of the profession consistent with the public interest.
7. COLLEAGUES
Software engineers shall be fair to and supportive
of their colleagues.
8. SELF
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.
Ethical
dilemmas
Disagreement in principle with the policies of senior management
Your employer acts in an unethical way and releases a safety-critical
system without finishing the testing of the system
Participation in the development of military weapons systems or nuclear
systems
|