1
1 INTRODUCTION
Software Eng... 2
Software engineering is the branch of computer science that
deals with:
the analysis,
design,
development,
testing,
deployment
and maintenance of software applications.
It involves the applications of engineering principles and
knowledge of programming languages to build software
solutions for end users.
SDLC… 3
The systems development life cycle (SDLC):
is the process of understanding how an information system (IS) can
support business needs by designing a system, building it, and
delivering it to users.
SDLC improves the probability of success of development by
planning the overall process, cost and time of developing a
software product.
Several researches has reported:
Most IS projects were either overtime, overbudget, or built with less
functionalities…
SDLC basically focused on reducing the probability of occurrence of
such mischiefs.
… 4
SDLC has four fundamental phases:-
planning, analysis, design and
implementation.
Each phase rely upon techniques that
produce deliverables (specific
documents and files that provide
understanding about the project).
… 5
Understanding SDLC includes:
Understanding each and every phases of the cycle or (SDLC-phases)
and understanding the order in which the phases should be executed or (SDLC-
Methodologies)
• Plannin • Analysi • Design • Coding
g
Planning is s
Analysis
answers
phase
Design decides Implementation
understanding includes
• Who will use the • How the system
• Why an IS should be • The overall steps
system? operates?
built? of building the
• What will the • Architecture, UX,
• How the team will system involves
system do? Network
go built it? • Coding
• Where and when it infrastructure,
• What is required? Is • Testing
will be used? database design and
the request possible • Installing
• Analyze current program design.
to achieve? • And
system and ways
• If approved- a preparing
to design a new
workplan also support plan
system.
required for users.
• Requirement
analysis
SDLC-Methodologies 6
Understanding SDLC includes:
Understanding each and every phases of the cycle or (SDLC-phases)
and understanding the order in which the phases should be executed or (SDLC-
Methodologies)
A methodology is a formalized approach to implementing the SDLC (i.e., it is a list of steps
and deliverables).
SDLC-methodologies are different and unique, based on the order and focus it places on each
SDLC phase.
SDLC-Methodologies can be categorized:
1. based on the focus where the development should give more emphasis for
as:
Data-centered: focus is on defining and designing data storages as a core of the cycle.
Process-centered: focus is on defining and designing processes(business-rules) as a core of
the cycle.
and Object-Oriented methodologies: gives equal emphasis by integrating both into objects.
Object oriented system development methodology
7
• Object-oriented systems: - depicts a system as little modules, called objects,
that encompass both data and process together.
• Basic characteristics of object-oriented systems are:
• Classes and Objects:
• A class is the general template we use to defi ne and create specific instances,
or objects.
• An object is an instantiation of a class.
• Every object has its own attributes and behaviors. Attributes are data about the
object and behaviors are methods or functions an object can do.
• Methods and Messages:
• Methods implement an object’s behavior, so its an action that an object can
perform.
• Messages are information( function calls) sent to objects to trigger methods.
… 8
• Encapsulation and Abstraction:
• Encapsulation is simply the combination or binding of process and data into a
single entity.
• Abstraction is information hiding.
• The principle of information hiding suggests that only the information required to use a
software module be published to the user of the module.
• Inheritance:
• Enforces the arrangement of super classes, or general classes, at the top and the
subclasses, or specific classes, at the bottom.
• Subclasses inherit the appropriate attributes and methods from the super classes
above them. That is, each subclass contains attributes and methods from its
parent superclass.
• Polymorphism:
• Polymorphism means that the same message can be interpreted differently by
different classes of objects
… 9
2. based on sequence in which SDLC-phases are executed as:
Structured Design: is a step-by-step development approach to the SDLC-phases.
Rapid Application Development(RAD): more focus on delivering some parts of the SDLC-
phases.
E.g. design and implementation so users can suggest a revision based on that.
and Agile Development: an iterative application development that eliminates much of
modeling and documentation.
Structured… 10
• Most data-centered and process-centered approaches follows the most
commonly used structured development approaches:
• Waterfall development approach:
• Step by step development of SDLC-phases by delivering the expected key-deliverables
from each phase and get approval from the project manager/ sponsor/.
• Pros:
• Identifies user and system
requirements early.
• Minimizes a need to change
requirements later on progress.
• Cons:
• The design must be completed before
implementation begins. [*time
elapsing]
• Adapting changes is difficult.
… 11
• Parallel development approach:
• is still a step by step implementation of the SDLC-phases, but it attempts to address a
long delay in delivering the system:
• by dividing the design and implementation phases of the whole project into series of distinct
sub-projects,
• then, deals with the subproject parallelly and integrated them into a deliverable system.
• Pros:
• reduce time delays
• Cons:
• requires significant dividing and
integration effort.
RAD… 12
• Rapid Application Development: - addresses both the weaknesses of the
structured development methodologies by:
• get some part of the system developed quickly into the hands of the users.
• recommend using special techniques and computer tools to speed up the analysis,
design, and implementation phases. Example:
• computer-aided software engineering (CASE) tools,
• joint application design (JAD) sessions,
• fourth-generation or visual programming languages that simplify and speed up
programming,
• and code generators that automatically produce programs from design specifications.
… 13
• Phase-development methodology: - breaks an overall system into a series of
versions that are developed sequentially.
• Pros
• Users quickly get a
working system in to their
hands.
• Efficient in identifying
unanticipated
requirements.
• Cons
• Managing users
expectations.
… 14
• Prototype-development methodology: - performs the analysis, design, and
implementation phases concurrently, and all three phases are performed repeatedly
in a cycle until the system is completed.
A system prototypes are generated several times, until acceptable prototype is produced.
• Pros
• Focused more on
functional requirements.
• Cons
• Managing users
expectations.
… 15
• Throwaway prototype-development methodology:- similar to prototyping-based
methodologies since it includes the development of prototypes.
• However, throwaway prototypes are done at a different point in the SDLC.
• In throwaway prototype-development, instead of a system prototype, a design prototype is
recursively created.
• Pros
• Used to develop more
stable system.
• Cons
• Managing users
expectations.
Agile… 16
• Agile development methodologies are based on the agile manifesto and a set
of twelve principles.
1. early and continuously delivery to satisfy customers.
2. adapting requirement changes at any level.
3. Delivering a working software frequently to the customer.
4. Customers and developers work together.
5. individual based solutions.
6. face-to-face communication as an efficient and effective method of gathering
requirements.
7. The primary measure of progress is delivering executing software.
8. Both customers and developers should work at a pace that is sustainable. Equal burden.
9. Agility is heightened through attention to both technical excellence and good design.
10. Simplicity, the avoidance of unnecessary work, is essential.
11. Self-organizing teams develop the best architectures, requirements, and designs.
12. Development teams regularly reflect on how to improve their development processes.
… 17
• Agile development methodologies:- restructures the system-development process
• by eliminating much of the modeling and documentation overhead and the time spent on
those tasks.
• Agile criticized for:
• Outsourcing/ subcontracting is unrealistic in
Agile.
• Lack of actual documentation/ difficult for
auditability
• Not promising for large mission-critical systems.
• The two well-known agile methodologies
are:
• Extreme Programming(XP)-methodology
• Scrum-methodology
What methodology to use? 18
• Choosing a SDLC-methodology is not simple, because no methodology is
perfect in every domain.
The unified process 19
• The unified process:-
• is a specific methodology that maps out when and how to use the various UML
techniques in OOD.
• Its a two-dimensional systems development process described by a set of phases
and workflows.
… 20
• The phases of the unified process are:
• Inception:
• mainly concerns on specifying a scope of the project, developing a business plan and
feasibility analysis of the project.
• Elaboration:
• involves requirement analysis, system analysis and system design workflows
• Construction:
• focuses heavily on programming/implementing the evolving information system
• and Transition:
• focus is on the testing and deployment workflows.
… 21
• The workflows of the unified process are:
• Business Modeling Workflow:-
• Planning (time and resource), requirement identification and gathering, setting scope and
feasibility analysis are done.
• Requirements Workflow:-
• User requirement specification (as functional and non-functional)
• Analysis Workflow:
• UML specification of the behavior of the proposed system (use-case, sequence, activity
diagrams and etc.)
• Design Workflow:
• UML specification of the structure and layout of the information system.
• Implementation Workflow:
• Testing Workflow:
• Deployment Workflow
UML… 22
• Unified Modeling Language: - provides:
• a common vocabulary of object-oriented terms and diagramming techniques
• that are rich enough to model any system development project from analysis through
implementation.
• UML defines a set of fifteen diagramming techniques used to model a
system.
• The diagrams are broken into two major groupings:
• Structure diagram that depicts structure of a system.
• Structure diagrams provide a way to represent the data and static relationships in an
information system.
• Behavioral diagram that depicts behaviors of a system.
• Supports in modeling the dynamic behavior of individual objects throughout their
lifetime and the functional requirements of an evolving information system.
Structural diagrams 23
Behavioral diagrams 24