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

Lecture 2-2022 - Introduction To Software Engineering

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

Lecture 2-2022 - Introduction To Software Engineering

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

LECTURE TWO:

INTRODUCTION TO SOFTWARE ENGINEERING

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


1
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE ENGINEERING, what is it?


▪ Software engineering is an engineering discipline that is
concerned with all aspects of software production from the
early stages of system specification through to maintaining
the system after it has gone into use.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


2
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE ENGINEERING, what is it?

IEEE’s Comprehensive Definition of software engineering:


▪ Software Engineering is the application of a systematic,
disciplined, quantifiable approach to the development,
operation and maintenance of software,
▪ i.e., the application of engineering to software.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


3
INTRODUCTION TO SOFTWARE ENGINEERING

▪ WHY SOFTWARE ENGINEERING?


Software engineering is important for two reasons:
1. Individuals and society’s heavy reliance on advanced
software systems.
▪ The need to produce reliable and trustworthy systems
economically and quickly.

2. It is usually cheaper, in the long run, to use software


engineering methods and techniques for software
systems rather than just write the programs as if it was a
personal programming project.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


4
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE-ENGINEERING PRINCIPLES
▪ The two software engineering principles are:
1. Process of software engineering and
2. The final Product.

▪ The right process will help produce the right product, but
the desired product will also affect the choice of which
process to use

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


5
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE-ENGINEERING PRINCIPLES
▪ To apply these principles, appropriate methods and
specific techniques are needed to produce the desired
processes and products features.
▪ Methods are general guidelines that govern the execution
of some activity; they are rigorous, systematic, and
disciplined approaches.
▪ Techniques are more technical and mechanical than
methods; often, they also have more restricted
applicability.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


6
INTRODUCTION TO SOFTWARE ENGINEERING

▪ KEY FEATURES OF SOFTWARE


1. Most software is custom-built, rather than assembled from
existing components
2. Software is developed or engineered; it is not
manufactured in the classical sense.
3. Software is flexible
▪ can be developed to do almost anything.
▪ It allows change as often as needed
▪ Both the algorithms and data structures can all be
reused

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


7
INTRODUCTION TO SOFTWARE ENGINEERING
▪ KEY FEATURES OF SOFTWARE…
4. Software doesn’t wear out.
▪ it doesn’t suffer any wear with time, as it is with
hardware products
▪ Softwares rather become reliable over time
▪ It becomes obsolete though, if the environment for
which it was developed changes
▪ It becomes retired though

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


8
INTRODUCTION TO SOFTWARE ENGINEERING

▪ KEY FEATURES OF SOFTWARE…


▪ Hardware rather wear out.
▪ There is a well-known “bath-tub curve” in reliability
studies for hardware products which depicts the failure
rate as a function of time for hardware.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


9
INTRODUCTION TO SOFTWARE ENGINEERING

▪ KEY FEATURES OF SOFTWARE…


▪ Hardware rather wear out….
▪ Phases of a hardware product:
1. Initial phase (burn-in phase)
▪ Very high failure intensity
2. Useful life phase
▪ Constant failure or Useful life stage
3. Wear-out phase
▪ After some few years, the failure intensity will
increase again due to wearing out of
components

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


10
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE CRISIS
▪ These are the problems that are raised during the
development of softwares.

▪ According to one IBM report, about “31% of projects get


cancelled before they are completed, 53% over-run their
cost-estimates by an average of 189% and for every 100
projects, there are 94 restarts.”

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


11
INTRODUCTION TO SOFTWARE ENGINEERING

SOFTWARE CRISIS PROBLEMS


Programmer’s Point-of-View User’s Point-of-View

• Compatibility. • High cost of software


• Portability. • Hardware goes down.
• Documentation. • Lack of specialization in
• Piracy of software. development.
• Coordination of work of • Different versions of
different people. software.
• Proper maintenance. • Problem of views.
• Problem of bugs.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH 12


INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE CRISES CAUSES

• Poor Software quality


• Delays
• Communication breakdown
• Change management issue

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH 13


INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE MYTHS
▪ These are the misconceptions that surrounds software
and its development.
▪ They include:
▪ Once we write the program and get it to work, our job is
done
▪ Software with more features is better software.
▪ The only deliverable work product for a successful
project is the working program.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


14
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE MYTHS
▪ …
▪ Until we get the program running, we have no way of
assessing its quality.
▪ Software engineering create voluminous and
unnecessary documentation and will invariably slow
down progress.
▪ If we get behind schedule, we can add more
programmers and catch up.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


15
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE-ENGINEERING PROCESSES
▪ What is a Process?
▪ Series of steps involving activities, constraints, and
resources that produce an intended output of some kind.
▪ Features of a process:
▪ Every process has a set of guiding principles that explain
the goals of each activity.
▪ Each process activity has entry and exit criteria, so that we
know when the activity begins and ends.
▪ The activities are organized in a sequence, so that it is clear
when one activity is performed relative to the other activities.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


16
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE-ENGINEERING PROCESSES…
▪ Features of a process…:
▪ The process prescribes all of the major process
activities
▪ The process uses resources, subject to a set of
constraints (such as a schedule), and produces
intermediate and final products.
▪ Constraints or controls may apply to an activity,
resource, or product.
▪ The process may be composed of sub-processes that
are linked in some way
▪ Made up of hierarchy of processes

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


17
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE-ENGINEERING PROCESSES…
▪ What is a Software Process?
▪ Related set of activities and processes that are
involved in developing and evolving a software system.
▪ A set of activities and associated results, which
produce a software product.
▪ A set of activities whose goal is the development or
evolution of software.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


18
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE-ENGINEERING PROCESSES…
▪ Fundamental process activities
1. Software specifications: The functionality of the
software and constraints on its operation must be
defined.
2. Software development: Software that meets the
specifications must be produced.
3. Software validation: The software must be validated
to ensure that it does what the customer wants.
4. Software evolution: The software must evolve to
meet changing customer needs.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


19
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE EVOLUTION
▪ This describes the progress and generation of software
engineering/development.
▪ The development of software can be divided into four eras,
▪ Early Era,
▪ Second Era,
▪ Third Era, and
▪ Fourth Era.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


20
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE EVOLUTION…
▪ Early Era:
▪ This era was from 1950 to 1960, and it was characterized
by:
▪ Limited software distribution,
▪ Customized softwares
▪ Batch-oriented systems.
▪ Most softwares were developed and ultimately used by the
same person or organization.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


21
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE EVOLUTION…
▪ Second Era
▪ This era was from 1960 to 1972 and includes:
▪ Multi-users
▪ Databases
▪ Real-time software
▪ Customized softwares
▪ Product software
▪ Multi-programming
▪ Introduction of new concepts of human-machine
interaction.
▪ Interactive techniques and new levels of hardware and
software sophistication.
SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH
22
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE EVOLUTION…
▪ Third Era
▪ This era was from 1973 to 1985 and includes:
▪ Embedded intelligence
▪ Consumer impact
▪ Distributed systems
▪ Low-cost hardware

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


23
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE EVOLUTION…
▪ Fourth Era
▪ This era is from 1985 to present and includes:
▪ Powerful desktop systems
▪ Expert systems
▪ Artificial intelligence
▪ Network computers
▪ Parallel computing
▪ Object-oriented technology

▪ A shift from individual computers and computer programs, toward


the collective impact of computers and software

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


24
INTRODUCTION TO SOFTWARE ENGINEERING

▪ TERMINOLOGIES IN SOFTWARE ENGINEERING


▪ Deliverables and Milestones
▪ Deliverables includes source codes, user manuals,
operating procedure manuals, etc., that are generated
during software development
▪ Milestones are the events that are used to ascertain
the status of the project. For instance:
▪ Finalization of specifications is a milestone
▪ Completion of design documentation is another
milestone

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


25
INTRODUCTION TO SOFTWARE ENGINEERING

▪ TERMINOLOGIES IN SOFTWARE ENGINEERING…


▪ Product and Process
▪ Products are a set of deliverables.
▪ They may include source-code specification documents,
manuals, documentation.
▪ A process is the way in which we produce software. It is the
collection of activities that leads to (a part of) a product.
▪ An efficient process is required to produce good quality
products.
▪ If the process is weak, the end product will surely suffer, but an
obsessive over-reliance on process is also dangerous.. So
there is the need for balancing

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


26
INTRODUCTION TO SOFTWARE ENGINEERING

▪ TERMINOLOGIES IN SOFTWARE ENGINEERING…


▪ Measures, Metrics, and Indicators
▪ Measures provide a quantitative indication of
amount, dimension, capacity, or size of a given
attribute of a product
▪ It occurs as the result of the collection of one or
more data points
▪ Metrics are derived from measures
▪ Usually a fraction or ratio, by comparing two
measures
▪ An indicator is a combination of metrics

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


27
INTRODUCTION TO SOFTWARE ENGINEERING

▪ TERMINOLOGIES IN SOFTWARE ENGINEERING…


▪ Programs and Software products…
▪ A program is a subset of software and it becomes software
only if documentation and operating procedure manuals are
prepared
▪ It is the combination of source code and object code
▪ (Program = source code + object code)

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


28
INTRODUCTION TO SOFTWARE ENGINEERING

▪ TERMINOLOGIES IN SOFTWARE ENGINEERING…


▪ Programs and Software products…
▪ A software product consists not only of the program code
but also of all the associated documents, such as:
▪ the requirements specification documents,
▪ the design documents,
▪ the test documents, and
▪ the operating procedures
▪ user manuals and operational manuals.
▪ (Software product = Programs + Documentation +
Operating Procedures)

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


29
INTRODUCTION TO SOFTWARE ENGINEERING
▪ TERMINOLOGIES IN SOFTWARE ENGINEERING
▪ Programs and Software products

Programs Software Products


Single developer Team of developers
Have limited functionality Exhibit more functionality
Usually small in size Usually large in size
Lack proper Good documentation support
documentation
Adhoc development Systematic development

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


30
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE ENGINEERING ETHICS


▪ Professional societies and institutions have an important role to play in
setting ethical standards.
▪ the ACM (Association for Computing Machinery)
▪ the IEEE (Institute of Electrical and Electronic Engineers),
▪ the British Computer Society
▪ Members of these societies/organizations undertake to follow their
ethical standards when they sign up for membership
▪ These codes of conduct are generally concerned with fundamental
ethical behavior.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


31
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE ENGINEERING ETHICS…


▪ The ACM/IEEE Code of Ethics (© IEEE/ACM 1999)
▪ Software engineers shall adhere to the following Eight Principles:
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.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


32
INTRODUCTION TO SOFTWARE ENGINEERING
▪ SOFTWARE ENGINEERING ETHICS…

▪ The ACM/IEEE Code of Ethics (© IEEE/ACM 1999)


▪ Software engineers shall adhere to the following Eight Principles…:
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.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


33
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE ENGINEERING ETHICS…


▪ The ACM/IEEE Code of Ethics (© IEEE/ACM 1999)
▪ Software engineers shall adhere to the following Eight Principles…:

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.

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


34
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE ENGINEERING ETHICS…


▪ There are areas where standards of acceptable behaviour are
not bound by laws but by the more tenuous notion of
professional responsibility. Some of these are:
▪ Confidentiality:
▪ You should normally respect the confidentiality of your
employers or clients irrespective of whether or not a formal
confidentiality agreement has been signed.
▪ Competence
▪ Never misrepresent your level of competence. Never knowingly
accept work that is outside your competence

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


35
INTRODUCTION TO SOFTWARE ENGINEERING

▪ SOFTWARE ENGINEERING ETHICS…


▪ Some of these are:
▪ Intellectual property rights
▪ Be aware of local laws governing patents and copyright
▪ Computer misuse
▪ Never use your technical skills to misuse other people’s
computers

SOFTWARE ENGINEERING LECTURER: MATTHEW COBBINAH


36
T FOR THANKS
ANY QUESTION

You might also like