ALPHA UNIVERSITY JAMACA ALPHA
Department of IT and Cybersecurity Engineering
Course Title: Software Engineering
Chapter- One
Introduction
Lecturer: Dahir Ibrahim: (diploma cyber security, BSc in Computer Science, and MSc in Computer Science)
Contact: tahiribro12@[Link] or 0634543173 or +251915049648
1
What is Software?
• Software is :
⚫ Computer programs and associated documentation
⚫ 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
2
⚫ Bespoke (custom) - developed for a single customer according to their
Why Software Engineering ?
• 1950s and 1960s, Systems Development was
• unstructured & unorganized
⚫ Leap-year bug
Those that lead to error conditions, such as exceptions, error return codes, uninitialized variables, or
endless loops.
⚫ Interface misuse
On April 10, 1990, in London, an underground train left the station without its driver.
⚫ Security
On November 2, 1988, a self-propagating program, subsequently called the Internet Worm,
An estimated 10% of all Internet nodes were affected. The infection took several days to
eradicate.
3
….
⚫Late and over budget
⚫On-time delivery
⚫Unnecessary complexity
4
…
• SE introduced first in 1968 – conference about “software crisis” when
the introduction of third generation computer hardware led more
complex software systems then before
Early approaches based on informal methodologies leading to
• Delays in software delivery
• Higher costs than initially estimated
• Unreliable, difficult to maintain software
• Need for new methods and techniques to manage the production of
complex software.
5
Software Crisis
Software failure is a software project that has one or more of the
following.
• Over budget
• Late / Delays in software delivery
• Does not satisfy user needs or expectations
• Does not meet functional or performance requirements
• Does not meet quality requirements
• Unreliable,
• Difficult to maintain software
6
Causes of software crisis
–Software requirements do not adequately describe user needs or customer
expectations
– Project planning is frequently unrealistic, incomplete, or ignored
–Project cost and schedule estimates are underestimated or
established by management edict
– Software quality is difficult to specify, design, and build-to
–Software development progress is difficult to see, progress is often unknown
–Changes in requirements are not accompanied by changes in software
plans
– Design is changed without changing requirements
– Standards are not used or documented
7
Important progress
– Ability to produce more complex software has increased
– New technologies have led to new SE approaches
–A better understanding of the activities involved in software
development
–Effective methods to specify, design and implement software have
been developed
– New notations and tools have been produced
8
What is Software Engineering?
• Software engineering is an engineering discipline that is concerned with all
aspects of software production.
• The establishment and use of sound engineering principles in order to
obtain economically software that is reliable and works efficiently on real
machines.
– Software engineering is a modeling activity.
– Software engineering is a problem-solving activity.
– Software engineering is a knowledge acquisition activity.
– Software engineering is a rationale-driven activity.
9
Modeling Activity
–A model is an abstract representation of a system that enables us to answer
questions about the system.
–Software engineers deal with complexity through modeling, by focusing
at any one time on only the relevant details and ignoring everything else.
–Models are useful when dealing with systems that are too large, too small,
too complicated, or too expensive
– To experience firsthand.
10
Problem solving
• Engineering is a problem-solving activity.
• It is not algorithmic.
• In its simplest form, the engineering method includes five steps:
1. formulate the problem
2. analyze the problem
3. search for solutions
4. decide on the appropriate solution
5. specify the solution
11
Knowledge acquisition
–In modeling the application and solution domain, software
engineers collect data, organize it into information, and
formalize it into knowledge.
–Knowledge acquisition is nonlinear, as a single piece of data can
invalidate complete models.
–A common mistake that software engineers and managers make
is to assume that the acquisition of knowledge needed to develop
a system is linear.
12
Rationale management
• When acquiring knowledge and making decisions about the
system or its application domain, software engineers also need
to capture the context in which decisions were made and the
rationale behind these decisions.
• enables software engineers to understand the implication of a
proposed change when revisiting a decision.
13
What is the difference between software
engineering and computer science?
14
Software Engineering Body of Knowledge
15
What is a software process?
⚫SP is a set of activities whose goal is the development
or evolution of software
⚫Fundamental activities in all software processes are:
⚫ Specification - what the system should do
• and its development constraints
⚫ Development - production of the software system
• (design and implementation)
⚫ Validation - checking that the software is what the customer
wants
⚫ Evolution - changing the software in response to changing demands
16
What is a software process model?
17
Example of Model
18
Software myths
• Software myths are misleading attitudes that have caused serious problems for
managers and technical people alike. Software myths propagate misinformation
and confusion. They can be solved by
– Management myths
• Standards and procedures for building software
• Add more programmers if behind the schedule
– Customer myths
• A general description of objectives enough to start coding
• Requirements may change as the software is flexible
– Practitioner myths
• Task accomplished when the program works
• Quality assessment when the program is running
• Working program the only project deliverable
19
CASE (Computer-Aided Software Engineering)
Software systems which are intended to provide automated support for
software process activities, such as requirements analysis, system
modelling, debugging and testing
• 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?
• The software should deliver the required functionality and performance to the user
and should be maintainable, dependable and usable
• Maintainability
• Software must evolve to meet changing needs
• Dependability
• Software must be trustworthy.
• Efficiency
• Software should not make wasteful use of system resources
• Usability
• Software must be usable by the users for which it was designed
• (Software should have an appropriate user interface and documentation) 21
Assignment one
What are the key challenges facing software engineering ?
22
Thank You !!!
QUESTION?
23