0% found this document useful (0 votes)
8 views

Chapter 1 Software Engineering

software engineering

Uploaded by

birhanulantu
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views

Chapter 1 Software Engineering

software engineering

Uploaded by

birhanulantu
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 31

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

Figure 1.1 Software engineering activity cost distribution 14


Cont’d...
Activity cost distribution

Figure 1.1 Software engineering activity cost distribution 15


Cont’d...
Product development costs

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

notation used to define these models.


Example
✔ Object models, data-flow models, state machine models, etc.
 Rules

Constraints which always apply to system models.
Example:

Every entity in a system model must have a unique name.
18
Cont’d...

Recommendations

Heuristics which characterise good design practice in this method.
Following these recommendations should lead to a well-organised system
model.
Example

No object should have more than seven sub-objects associated with it.

Process guidance

Descriptions of the activities which may be followed to develop the system
models and the organisation of these activities.
Example

Object attributes should be documented before defining the operations
associated with an object.
19
What is CASE (Computer-Aided Software
Engineering)
 Software systems that 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.
20
What are the attributes of good software?
As well as the services that it provides, software products have a number of
other associated attributes that reflect the quality of that software.
 Maintainability

Software must evolve to meet changing needs;
 Dependability

Software must be trustworthy;

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...

Code of ethics - principles


 Public

Software engineers shall act consistently with the public interest.
 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.
 Product

Software engineers shall ensure that their products and related
modifications meet the highest professional standards possible.
28
Cont’d...
Code of ethics - principles
 Judgment

Software engineers shall maintain integrity and independence in their
professional judgment.
 Management
➔ Software engineering managers and leaders shall subscribe to and promote an
ethical approach to the management of software development and
maintenance.
 Profession
➔ Software engineers shall advance the integrity and reputation of the
profession consistent with the public interest.
29
Cont’d...
Code of ethics - principles
 Colleagues

Software engineers shall be fair to and supportive of their colleagues.
 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.

30
Thank You !

31

You might also like