Uploaded by Bright Devis

LECTURE 01- An Introduction to Software Engineering

advertisement
An Introduction to Software
Engineering
Mr. Nelson H. Lyimo
SW Engineering Intro


According to (B., Bruegge & A. H., Dutoit 2010),
they introduced the concept of Software
Engineering which was coined in 1968 as a
reaction to the desolate state of the art of
developing a quality software on time and within
the organization or individual budget. Key issues
here SW developers were unable to come up
with concrete objectives, predicting the results
necessary to accomplish those objectives and in
the end manage customers expectations
SW Engineering Intro. Cont.

Useful Software are complex, in order to remain
potential it requires that, they evolve (grow,
Change) to be more precious with the end users’
need or requirements to the targeted
environment
Objectives



To introduce software engineering and to explain
its importance
To set out the answers to key questions about
software engineering
To introduce ethical and professional issues and
to explain why they are of concern to software
engineers
Topics covered


FAQs about software engineering
Professional and ethical responsibility
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.
Expenditure on software represents a
significant fraction of GNP in all developed
countries.
Software costs



Software costs often dominate computer 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 costeffective 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?
FAQs about software engineering





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 such
as requirements, design models and user manuals.
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
e.g. PC software such as Excel or Word.
Bespoke (custom) - developed for a single customer according
to their specification.
New software can be created by developing new
programs, configuring generic software systems or
reusing existing software.
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.
1.1. DEFINITIONS
What is software engineering? Generally
Software engineering is the profession
concerned with creating and maintaining
software applications by applying
technologies and practices from computer
science, project management, engineering,
application domains, and other fields.
However, there are variety of definitions,
1.1. DEFINITIONS (Cont.)
Software engineering covers not only the
technical aspects of building software
systems, but also management issues, such
as directing programming teams,
scheduling, and budgeting. Thus, many
roles are needed to accomplish any project
such as project manager, client, technical
writer and many other.
SOFTWARE CRISIS

The software crisis was a term used in the early days of
software engineering, before it was a well-established
subject. The term was used to describe the impact of
rapid increases in computer power and the complexity of
the problems which could be tackled. In real meaning, it
refers to the difficulty of writing correct, understandable
and verifiable computer programs. The roots of the
software crisis are complexity, expectations, and change.
SOFTWARE CRISIS (Cont.)
The causes of the software crisis were linked to
the overall complexity of the software process and
the relative immaturity of software engineering as
a profession. The crisis manifested itself in several ways:
•
•
•
•
•
Projects running over-budget.
Projects running over-time.
Software was of low quality.
Software often did not meet requirements.
Projects were unmanageable and code difficult to maintain.
Group Activity:
What issues should be addressed during software
development so that problems like this will be prevented in
the future.
Software Engineering Failures
Refer to the “Object-Oriented Software
Engineering”. 2nd Edition. Page 4-5, 3rd Edition. Pg. 38-39
(examples from Neumann ., 1995)
Explore on the causes of such failures originated fro the
dimension of leap year bug, year 1900 bug, interface
misuse, Security (incidents, vulnerability, security know
how), late and over budget etc.
Individual activity: Finnd out current SW Engineering failures,
summarizing by citing its source the major failure and
causes of failure
SOFTWARE ENGINEERING

According to (Bernd Bruegge and Allen H. Dutoit
in Object-Oriented software engineering 2010)
defines the term software engineering on the
basis of activities it performs; as a modeling
activity, problem solving activity, a knowledge
acquisition and rationale- driven activity.
As a Modeling activity
The purpose of modeling is to describe and
understand complex systems.
•
A model is an abstract representation of a system that enables
us to answer questions about the system.
Models are useful when dealing with
a.
Too large, or too small systems.
b.
Complicated or too expensive systems
c.
Exploring existing and non-existing systems
The aim is to understand both application and
solution domains.
As a Problem solving activity
Engineering method include five steps in search
for solutions:
1.
2.
3.
4.
5.
Formulating the problem
Analyzing the problem
Searching for solution
Deciding on the appropriate solution
Specifying the solution
All these steps are done in the FIVE development
activities.
As a Knowledge Acquisition


In modeling the application and solution
domains, SW engineers collect data, organize it
into information, and formalize it into knowledge.
This process is non-linear! Adding a new piece of
information may invalidate all the knowledge
acquired for understanding the system. You
need to prepare yourself mentally to start from
scratch!
Group discussion: Discuss on Risk-based SW
development and Issue-based SW development
Based on waterfall model of SW development.
As a rational-driven activity




When acquiring knowledge and making decisions about the system
or its application domain, SW engineers need to capture the context
in which decisions were made and the rationale behind these
decisions.
This is because assumptions that developers make about a system
change constantly.
e.g., Design and implementation faults discovered during testing and
usability problems discovered during user evaluation trigger changes
to the solution models, changes arise by new technology. NOTE:
The system used by Mwendokasi at DAR, now operates manually
find out why.
Group discussion: Find out the Major challenges faced by GePG
system developers in its implications and way forward.
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 still insufficient to
act as a complete underpinning for software
engineering (unlike e.g. physics and electrical
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 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.
Modeling
(Bernd Bruegge and Allen H. Dutoit in ObjectOriented software engineering 2010) talked about
the purpose of science is to describe and
understand complex systems such as the system of
atoms, a society of human beings, or a solar
system.
Group discussion: Discuss the distinction between
natural science and social science and give
examples of each type of science. Distinguish the
two from the artificial system with examples as well.
Modeling Cont..
By looking at the other science, we can learn quite a
bit. One of the basic methods of science is
modeling.
At this point, we can define modeling as an abstract
representation of a system that enables us to
answer questions about a particular system.
The key issue here about modeling is when dealing
with systems that are too large, too small, too
complicated
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;
Iterative development;
Component-based software engineering.
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.
Activity cost distribution
Waterfall mo del
0
25
Specificatio n
Design
50
100
75
Develo pment
In tegratio n an d testing
Iterative develo pment
0
25
Specificatio n
75
Iterative develo pment
Co mpo nent-based software eng
0
25
Specificatio n
50
Sy stem testin g
in eering
50
75
Develo pment
10
Sy stem develo pment
1 00
In tegratio n an d testing
Develo pment an d evo lution costs for lon g-lifetime syst
0
1 00
ems
20 0
30
Sy stem ev olutio n
400
Product development costs
0
Specificatio n
25
Develo pment
50
75
Sy stem testin g
100
What are software engineering methods?


Structured approaches to software development which
include system models, notations, rules, design advice
and process guidance. Aimed at facilitating the
production of high quality software in cost-effective way
Model descriptions
•

Rules
•

Constraints applied to system models; everything in the system
model must have a unique name
Recommendations
•

Descriptions of graphical models which should be produced;
Advice on good design practice;
Process guidance
•
What activities to follow and organization of these activities .
What is CASE (Computer-Aided Software
Engineering)



Software systems that are intended to provide automated
support for software process activities such as
requirements analysis, system modelling, debugging an
testing.
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.
SOFTWARE PRODUCT
CHARACTERISTICS
A Successful software...
...provides the required functionality
...is usable by real (i.e. naive) users
...is predictable, reliable and dependable
...functions efficiently
...has a "life-time" (measured in years)
...provides an appropriate user interface
...is accompanied by complete documentation
...may have different configurations
...can be "easily" maintained
SOFTWARE CHARACTERISTICS
These characteristics are on a particular
Software product like its:

Software requirements

Hardware requirements

Minimum advised configuration

Maximum volumetry (theoretical)

Text analysis, and

Language
SOFTWARE COMPONENTS
A software component is a system element offering a
predefined service and able to communicate with other
components. Clemens Szyperski and David Messerschmitt
give the following five criteria for what a software
component shall be to fulfill the definition:
•
•
•
•
•
Multiple-use
Non-context-specific
Composable with other components
Encapsulated i.e., non-investigable through its interfaces
A unit of independent deployment and versioning
What the software consumer wants?
The want software which is:
…Cheap to buy, …Easy to learn, …Easy to use,
…Solves the
problem,…Reliable,…Powerful,…Fast,…
Flexible, …Available and gives peace of mind
What the software developer wants?
They want a software which are:
a.
b.
c.
d.
e.
f.
g.
h.
Cheap to produce
Well-defined behavior
Easy to "sell"
Easy to maintain
Reliable
Easy to use
Flexible
Available (quick to produce)
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 acceptable.
Maintainability
•

Dependability
•

Software must be trustworthy, reliable, secure and safety; its should
not cause physical or economical damage in the event of system
failure.
Efficiency
•

Software must evolve to meet changing needs of the custromers;
Software should not make wasteful use of system resources i.e
responsiveness, processing time, memory utilization;
Acceptability/Usability
•
Software must accepted by the users for which it was designed. This
means it must be understandable, usable and compatible with other
systems having appropriate user interface and adequate documents.
What are the key challenges facing software
engineering?


Heterogeneity, delivery, environment and trust.
Heterogeneity
•

Delivery
•

Developing techniques for building software that can cope with
heterogeneous platforms and execution environments;
Developing techniques that lead to faster delivery of software;
Environment
•
Software engineers need to understand the environment in
which the system has to have to operate
• E.g for a train traffic control system, software engineers need to know train
signalling procedures
• For a stock trading system, software engineers need to know trading rules
Here software engineers does not need to become a fully certified
train dispatcher or a stock broker; they only need to learn the
application domain concepts that are relevant to the system. This is
to say they need to build a model of the application domain.

Trust
•

Develop techniques that demonstrate that software can be
trusted by its users.
Software engineers needs understand the system they
could built
•
This helps them to evaluate different solutions and trade-offs.
Most systems are too complex to be understood by any one
person, and most systems are expensive to build. To address
these challenges, software engineers describes important
aspects of the alternative systems they investigate. In other
words, they need to build a model of the solution domain.
Modeling Cont...

Object-oriented methods combine the application
domain and solution domain modeling activities
into one. The application domain is first modeled
as a set of objects and relationships. This model
is then used by the system to represent the realworld concepts it manipulates.
•
•
A train traffic control system includes train objects
representing the trains it monitors.
A stock trading system includes transaction objects
representing the buying and selling of commodities
Modeling Cont.



Then, solution domain concepts are also modeled as
objects. The set of lines used to depict a train or financial
transaction are objects that are part of the solution
domain.
The idea object-oriented methods is that, the solution
domain model is the transformation of the application
domain model.
Developing software translates into the activities
necessary to identify and describe a system as a set of
models that addresses the end user’s problem. Read
chapter 2 (modeling with UML) by Bernd Bruegge and
Allen H. Dutoit in Object-Oriented software engineering
2010.



Individual task: What do you understand by the term
“rationale of the system” in software engineering
concept..
Individual work: After highlight high-level view of
software engineering from the perspective of
modeling, problem solving, knowledge acquisition
and rationale. Discus software system as a project.
Note: Read page 44 from the same book indicated
on the previous slide
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 people’s computers. Computer misuse ranges
from relatively trivial (game playing on an employer’s 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

PUBLIC
•

CLIENT AND EMPLOYER
•

Software engineers shall act consistently with the public
interest.
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.
Code of ethics - principles

JUDGMENT
•

MANAGEMENT
•

Software engineers shall maintain integrity and independence
in their professional judgment.
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.
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.
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.
Key points




Software engineering is an engineering discipline that is
concerned with all aspects of software production.
Software products consist of developed programs and
associated documentation. Essential product attributes
are maintainability, dependability, efficiency and usability.
The software process consists of activities that are
involved in developing software products. Basic activities
are software specification, development, validation and
evolution.
Methods are organised ways of producing software. They
include suggestions for the process to be followed, the
notations to be used, rules governing the system
descriptions which are produced and design guidelines.
Key points



CASE tools are software systems which are designed to
support routine activities in the software process such as
editing design diagrams, checking diagram consistency
and keeping track of program tests which have been run.
Software engineers have responsibilities to the
engineering profession and society. They should not
simply be concerned with technical issues.
Professional societies publish codes of conduct which set
out the standards of behaviour expected of their
members.
CLASS ACTIVITY ONE



What is the purpose of modeling (Use atlest
three sources e.g. books, articles etc, in
answering this question)
What is meant by “Knowledge acquisition is not
sequential”? Provide a concrete example of
knowledge acquisition that illustrate this.
Explain why system testing costs are particularly
high for generic software products that are sold
to a very wide market
END OF LECTURE ONE
Read Chapter 1- Software Engineering Fourth
Edition by Shari Lawrence & Joanne M. Atlee
Answer all questions on pg.70
(Get the books from the library)
Discussion in groups is recommended.


Download