Chapter 1 Software Engineering
Chapter 1 Software Engineering
[ECEg-4204 ]
Chapter One:
Software Engineering Overview
2016 E.C
Compiled by Amanuel Z.
Outline
Frequently asked questions(FAQs) about software engineering
Professional and ethical responsibility
2
1.1 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?
3
Cont’d...
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?
4
What is software?
Software is a set of items or objects that form a “configuration” that
includes
➔
Programs
➔
Documents
➔
Data
5
Cont’d...
Or you may want to say:
Software consists of
➔
Instructions (computer programs)
✔
that when executed provided desired features, function, and
performance,
➔
Data structures
✔
that enable the programs to adequately manipulate information
➔
Documents
✔
that describe the operation and use of the programs.
6
Cont’d...
There are two fundamental types of software product:
➔
Generic product
✔
Developed to be sold to a range of different customers
✔
Examples PC software such as databases, word processors, drawing
packages and project management tools.
➔
Customised (or bespoke) products
✔ Developed for a single customer according to their specification.
✔ Examples of this type of software include control systems for
electronic devices and air traffic control systems.
7
What is software engineering?
Software engineering is an engineering discipline that 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.
8
What is the difference between software engineering
and computer science?
Computer science is concerned with the theories and methods that
underlie computers and software systems, whereas
Software engineering is concerned with the practical problems of
producing software.
Some knowledge of computer science is essential for software engineers in
the same way that some knowledge of physics is essential for electrical
engineers.
9
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 concerned with developing
the software infrastructure, control, applications and databases in the
system.
System engineers are involved in system specification, architectural
design, integration and deployment.
10
What is a software process?
A set of activities whose goal is the development or evolution of software.
There are four fundamental process activities that are common to all
software processes. These are:
➔
Software specification - where customers and engineers define the software
to be produced and the constraints on its operation.
➔
Development - where the software is designed and programmed.
➔
Validation - where the software is checked to ensure that it is what the
customer requires.
➔
Evolution - where the software is modified to adapt it to changing customer
and market requirements.
11
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;
➔
Iterative development;
➔
Component-based software engineering. 12
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.
13
Cont’d...
Activity cost distribution
16
What are software engineering methods?
Structured approaches to software development.
➔ Aim is to facilitate the production of high-quality software in a cost-
effective way.
Methods such as Structured Analysis, JSD, and object-oriented (OO)
These different approaches have now been integrated into a single unified
approach built around the Unified Modeling Language (UML)
There is no ideal method
All methods are based on the idea of developing models of a system that
may be represented graphically and using these models as a system
specification or design.
17
Cont’d...
Methods include a number of different components:
System model descriptions
➔ Descriptions of the system models which should be developed and the
21
Cont’d...
Efficiency
➔
Software should not make wasteful use of system resources;
Usability
➔ Software must be usable, without undue effort, by the type of user for
whom it is designed.
➔ This means that it should have an appropriate user interface and
adequate documentation.
22
What are the key challenges facing software engineering?
Software engineering in the 21st century faces three key challenges:
Heterogeneity
➔
Developing techniques for building software that can cope with
heterogeneous platforms and execution environments;
Delivery
➔
Developing techniques that lead to faster delivery of software;
Trust
➔
Developing techniques that demonstrate that software can be trusted by
its users.
23
1.2 Professional and ethical responsibility
Software engineering involves wider responsibilities than simply the
application of technical skills.
Software engineers must also behave in an ethical and morally
responsible way if they are to be respected as professionals.
Ethical behaviour is more than simply upholding the law.
24
Cont’d...
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.
25
Cont’d...
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
people’s computers.
➔
Computer misuse ranges from relatively trivial (game playing on an
employer’s machine, say) to extremely serious (dissemination of viruses).
26
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.
https://ethics.acm.org/code-of-ethics/software-engineering-code/
27
Cont’d...
30
Thank You !
31