Chapter 1 - Introduction To Software Engineering
Chapter 1 - Introduction To Software Engineering
Chapter 1 - Introduction To Software Engineering
Software Engineering
Question Answer
Question Answer
What are the key challenges facing Coping with increasing diversity, demands for reduced
software engineering? delivery times and developing trustworthy software.
What are the costs of software Roughly 60% of software costs are development costs,
engineering? 40% are 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
techniques and methods? 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 The web has led to the availability of software services
software engineering? 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.
1. 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.
2. 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.
1. Generic products
The specification of what the software should do is owned by the
software developer and decisions on software change are made
by the developer.
2. Customized products
The specification of what the software should do is owned by the
customer for the software and they make decisions on software
changes that are required.
Engineering discipline
Using appropriate theories and methods to solve problems bearing in
mind organizational and financial constraints.
For most types of system, the majority of costs are the costs
of changing the software after it has gone into use.
1. Heterogeneity
Increasingly, systems are required to operate as distributed systems
across networks that include different types of computer and mobile
devices.
4. Scale
Software has to be developed across a very wide range of
scales, from very small embedded systems in portable or
wearable devices through to Internet-scale, cloud-based
systems that serve a global community.
Stand-alone applications
These are application systems that run on a local computer,
such as a PC. They include all necessary functionality and do
not need to be connected to a network.
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.
Software reuse
Software reuse is the dominant approach for constructing web-
based systems.
When building these systems, you think about how you can
assemble them from pre-existing software components and
systems.
Service-oriented systems
Software may be implemented using service-oriented software
engineering, where the software components are stand-alone
web services.
Service-oriented architecture (SOA) is a method of software
development that uses software components called services to
create business applications. E.g: AWS (Amazon Web Services)
Rich interfaces
Interface development technologies such as AJAX and HTML5
have emerged that support the creation of rich interfaces within
a web browser.
1. Confidentiality
Engineers should normally respect the confidentiality of their
employers or clients irrespective of whether or not a formal
confidentiality agreement has been signed.
2. Competence
Engineers should not misrepresent their level of competence.
They should not knowingly accept work which is out with their
competence.
4. Computer misuse
Software engineers should not use their technical skills to
misuse other people’s computers. Computer misuse ranges from
relatively trivial (game playing on an employer’s machine, say) to
extremely serious (dissemination of viruses).
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.
There are many different types of system and each requires appropriate
software engineering tools and techniques for their development.
Professional societies publish codes of conduct which set out the standards
of behaviour expected of their members.