Ch1 Introduction-Cust
Ch1 Introduction-Cust
Chapter 1 Introduction 1
Software engineering
Question Answer
Question Answer
What are the key challenges facing Coping with increasing diversity, demands for reduced delivery times
software engineering? and developing trustworthy software.
What are the costs of software Roughly 60% of software costs are development costs, 40% are
engineering? testing costs. For custom software, evolution costs often exceed
development costs.
What are the best software engineering While all software projects have to be professionally managed and
techniques and methods? 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 The web has led to the availability of software services and the
software engineering? possibility of developing highly distributed service-based systems.
Web-based systems development has led to important advances in
programming languages and software reuse.
Generic products
Stand-alone systems that are marketed and sold to any customer who
wishes to buy them.
Examples – PC software such as graphics programs, project
management tools; CAD software; software for specific markets such as
appointments systems for dentists.
Customized products
Software that is commissioned by a specific customer to meet their own
needs.
Examples – embedded control systems, air traffic control software, traffic
monitoring systems.
Maintainability 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.
Dependability and security Software dependability 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.
Efficiency Software should not make wasteful use of system resources such as memory and
processor cycles. Efficiency therefore includes responsiveness, processing time,
memory utilisation, etc.
Acceptability 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.
Engineering discipline
Using appropriate theories and methods to solve problems bearing in
mind organizational and financial constraints.
All aspects of software production
Not just technical process of development. Also project management and
the development of tools, methods etc. to support software production.
Stand-alone applications
These are application systems that run on a local computer, such as a
PC.
Interactive transaction-based applications
Applications that execute on a remote computer and are accessed by
users from their own PCs or terminals. These include web applications
such as E-commerce applications.
Embedded control systems
These are software control systems that control and manage hardware
devices. Numerically, there are probably more embedded systems than
any other type of system.
Systems of systems
These are systems that are composed of a number of other software
systems.
Where appropriate, you should reuse software that has already been
developed rather than write new software.
30/10/2014 Chapter 1 Introduction 15
Internet and web-based software engineering
Software reuse
When building these systems, you think about how you can assemble
them from pre-existing software components and systems.
Incremental and agile development
Web-based systems should be developed and delivered incrementally.
Service-oriented systems
Software may be implemented using service-oriented software
engineering, where the software components are stand-alone web
services.
Rich interfaces
Interface development technologies such as HTML5 have emerged that
support the creation of rich interfaces within a web browser.
30/10/2014 Chapter 1 Introduction 17
Software engineering ethics
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.
Intellectual property rights
Engineers should be aware of local laws governing the use of intellectual
property such as patents, copyright, etc.
Computer misuse
Software engineers should not use their technical skills to misuse other
people’s computers.
30/10/2014 Chapter 1 Introduction 19
Case studies
When the local systems have secure network access, they use
patient information in the database but they can download and
use local copies of patient records when they are
disconnected.
30/10/2014 Chapter 1 Introduction 26
The organization of the Mentcare system
Privacy
It is essential that patient information is confidential and is never
disclosed to anyone apart from authorised medical staff and the patient
themselves.
Safety
Some mental illnesses cause patients to become suicidal or a danger to
other people. Wherever possible, the system should warn medical staff
about potentially suicidal or dangerous patients.
The system must be available when needed otherwise safety may be
compromised and it may be impossible to prescribe the correct
medication to patients.