Week1 Chapter2
Week1 Chapter2
Week 1 - Chapter 2
Introduction to Software Engineering
Dr. Abdulfatah Farawila
Email : [email protected]
[email protected]
Mobile: 01015382683
Slides are adopted from “Software Engineering: A Practitioner’s Approach,
by R. S. Pressman and Bruce R. Maxim; 9th edition, 2019”
Chapter 2
Software Engineering
Slide Set to accompany
Software Engineering: A Practitioner’s
Approach, 8/e
by R. S. Pressman and Bruce R. Maxim
All copyright information MUST appear if these slides are posted on a website for student
use.
Software Engineering
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill 2019). Slides
copyright 2019 by R. Pressman. 5
A Process
Framework
A process is a collection of activities, actions, and tasks that
are performed when some work product is to be created.
• An activity strives to achieve a broad objective (e.g.,
communication with stakeholders) and is applied regardless
of the application domain, size of the project, complexity of
the effort with which software engineering is to be applied.
•An action (e.g., architectural design) encompasses a set of
tasks that produce a major work product (e.g., an
architectural design model).
•A task focuses on a small, but well-defined objective (e.g.,
conducting a unit test) that produces a tangible outcome.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill 2019). Slides 6
copyright 2019 by R. Pressman.
The 5 Process Framework
Activities
Communication (with the customer and other
stakeholders)
Planning (using maps to simplify the project)
Modeling
Analysis of requirements
Design
Construction
Code generation
Testing
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill 2019). Slides 10
copyright 2019 by R. Pressman.
Understand the
Problem
Who has a stake in the solution to the problem?
That is, who are the stakeholders?
What are the unknowns?
What data, functions, and features are required to properly
solve the problem?
Can the problem be compartmentalized?
Is it possible to represent smaller problems that may be easier
to understand?
Can the problem be represented graphically?
Can an analysis model be created?
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill 2019). Slides 11
copyright 2019 by R. Pressman.
Plan the Solution
Have you seen similar problems before?
Are there patterns that are recognizable in a potential
solution?
Is there existing software that implements the data, functions,
and features that are required?
Has a similar problem been solved?
If so, are elements of the solution reusable?
Can subproblems be defined?
If so, are solutions readily apparent for the subproblems?
Can you represent a solution in a manner that leads to
effective implementation?
Can a design model be created?
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill 2019). Slides 12
copyright 2019 by R. Pressman.
Carry Out the Plan
Does the solution produce results that conform to the data, functions,
and features that are required?
Has the software been validated against all stakeholder
requirements?
17
David Hooker’s 7 General Principles of
software engineering practice
Maintain the Vision: A clear vision is essential to the
success of a software project.
As Brooks states: “Conceptual integrity is the most
important consideration in system design. It is better
to have a system omit certain unusual features and
improvements, but to reflect one set of design ideas,
than to have one that contains many good but
independent and uncoordinated ideas. Conceptual
integrity in turn dictates that the design must proceed
from one mind, or from a very small number of
agreeing Conceptual Integrity”
18
David Hooker’s 7 General Principles of
software engineering practice :
What You Produce, Others Will Consume:
Seldom is a software system constructed and used in a
vacuum. In some way or other, someone else will use,
maintain, document. So, always someone else will have to
understand what you are doing.
Specify with an eye to the users.
Design, keeping the implementers in mind.
Code with concern for those that must debug, maintain and
extend the system. Making their job easier adds value to the
system.
19
David Hooker’s 7 General Principles of
software engineering practice
Be Open to the Future:
A system with a long lifetime has more value. In today's
computing environments, specifications change on a
moment's notice and hardware platforms are obsolete after
few months, software lifetimes are typically measured in
years.
Systems must be ready to adapt to changes and they must be
designed this way from the start.
Always prepare for creating systems that solve a general
problem, not just the specific one. This could very possibly
lead to the reuse of an entire system. 20
David Hooker’s 7 General Principles of
software engineering practice :
21
David Hooker’s 7 General Principles of
software engineering practice :
Think!:
Placing clear, complete thought before action always
produces better results.
If you do think about something and still do it
wrong, it becomes valuable experience. When clear
thought has gone into a system, value comes out.
22
Software
Myths
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill 2019). Slides 23
copyright 2019 by R. Pressman.
Software
Myths
Affect managers, customers (and other non-
technical stakeholders) and practitioners
Are believable because they often have elements
of truth,
but …
Invariably lead to bad decisions,
therefore …
Insist on reality as you navigate your way through
software engineering
These slides are designed to accompany Software Engineering: A
Practitioner’s Approach, 8/e (McGraw-Hill 2019). Slides copyright 2019 by R.
Pressman. 24
Software Myths: Example
Management Myth
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 8/e (McGraw-Hill 2019). Slides 28
copyright 2019 by R. Pressman.
Dictionary
seminal رسمي
sound engineering principles مبادئ هندسية معروفة
framework إطار
milestones & deliverables معالم وإنجازات
Umbrella مظلة
interdependencies الترابط
rigor صرامة
stakeholders أصحاب المصلحة
autonomy الحكم الذاتي
essence جوهر
stake ركيزة أساسية
compartmentalized مجزأة
Erroneous myths أساطير خاطئة
Insidious غدر
Precipitated متسرع
Strive to يسعى جاهدًا 29