Software Analysis
and Design
Lecturer: Dr. Igli Hakrama
Email: ihakrama@[Link]
Software Analysis and Design 1
Who am I?
• 2004-2008 – (BA+MSc)
– UT Winner of 3rd place in world for SIFE
– Member of SEEGRID 2006-2008 CERN FP6 Project
– Several Trainings in Software Engineering and Information
Systems
• 2009-2010 – Bamberg University (MSc in Economics)
• 2010-2011 – MND in Computer Engineering
• 2008-Now : Lecturer
Dr. Igli Hakrama
– 2008-2013: Information Systems Manager (SE)
– 2011-2013: Academic Program Coordinator of BINF
– 2021-2022: Academic Program Coordinator of SWE
– 2022-2023: Academic Program Coordinator of SWE and AI
• worked and finished my PhD for building (AI) Intelligent Agent
Systems for economic modeling that mimic real world
economic transactions and entities for simulation purposes
and to predict new outcomes.
– It uses SE+OR+AI Algorithms and makes use of MAS
• Now Head of Innovation Center and co-supervisor of AI Lab at
Metropolitan University
Software Analysis and Design 2
Course Introduction
Software Analysis and Design 3
Unit outline
• Objectives
• Assessment
• Passing the unit
• Lectures, practice classes, the lecturer and consultation
• Recommended reading
• Assignment work
• Web pages
Software Analysis and Design 4
Objectives (1)
• Knowledge on the difficulties of specifying and
engineering requirements for producing large software
products, leading to
– an appreciation of the need for requirements engineering
methodologies
– understanding of the distinction between software analysis
and design process and programming a software.
Software Analysis and Design 5
Objectives (2)
• An understanding of, and ability to apply, the methods of
analysis and design, including:
– structured analysis and design using Yourdon notation
• Context Diagram, Event Lists, Data-Flow Diagrams, Entity-
Relationship Diagram, State Transition Diagrams, Process
Specifications, Data Dictionary, Structure Chart
– object-oriented analysis and design using UML
• Use Cases, Class Diagrams, Interaction Diagrams, State
Diagrams, Package Diagrams, Activity Diagrams
Software Analysis and Design 6
Objectives (3)
• Knowledge of, and the ability to apply the principles of
design patterns and to make use of them in design
process for building proper class structures and solid
software components. (A dive into Software Architecture)
• Knowledge of , and the ability to apply, principles of user
interface design such as affordances, awareness of mental
models, visibility, mapping and feedback.
Software Analysis and Design 7
Assessment and Passing
• There are two assessment components:
– Examinations through:
• Final Exam (60 points)
There will be a practical project:
• A group project with assignments worth 30 points
Software Analysis and Design 8
Assessment and Passing
• You need to participate in at least 75% of lectures in order
to pass.
• You need to achieve 45% in exams and the assignments
and achieve an overall mark of 50%, as a example:
– You must get at least 25 points out of 55 for the exams
– You must get at least 15 points out of 45 for the projects
– You must get at least 55 points out of 100
Software Analysis and Design 9
Lectures
• Lectures will be held at:
– Please check the timetable…
• Lecture slides for each week will be made available on
LMS web site
– Lecture slides are not “lecture notes”. Notes are what you write
during lectures.
• All lecture material, worksheets and assignment work is
examinable
– It is your responsibility to ensure that you have copies of all such
materials
Software Analysis and Design 10
Practice Classes
• There will be one practice class (lab) each week
• Students are expected to attend at practice class (lab)
• During a practice class, students are expected to work
on practice problems and/or activities, which will be
distributed via the LMS web site, or on their
assignments
• Practice classes (labs) start in week 2
Software Analysis and Design 11
Recommended Reading
• The following book cover the basic material and you may use it as
main book:
– Software modeling and design_ UML, use cases, patterns, and software
architectures, Hassan Gomma (2011)
– Head First Design Patterns Building Extensible and Maintainable Object-
Oriented Software, Eric Freeman, Elisabeth Robson, O’Reilly Media (2021)
Other secondary books:
– Software Engineering, A practitioner's approach, 9th Ed., Pressman&Maxim
(2020)
– Software Engineering, A methodical Approach, 2nd Ed., Foster&Towle (2022)
– System Analysis & Design, An Object-Oriented Approach with UML, 5th Ed,
Dennis, Wixon & Tegarden (2015)
– Software Requirements: Best Practices, 3rd Ed., Wiegers&Beatty (2013)
• A list of further useful books will be provided in the lessons. Copies
of the main book you may find in photocopy room.
Software Analysis and Design 12
What is Software Engineering?
Group Exercise
• Break into groups of 3 or 4 (i.e. your neighbours, don’t
move around the room)
• Take 5 minutes to write down a definition of software
engineering - this can be in point form
• After 5 minutes, we will collect definitions from the class
Software Analysis and Design 13
What is Software Modeling?
• Modeling → Ancient Egypt, Rome, and Greece
to provide small-scale plans in art and architecture.
• Modeling is used in Science and Engineering
to provide abstractions of a system at some level of
precision and detail.
Software Analysis and Design 14
Software Design
• What is design?
– noun: mental plan, preliminary sketch or outline
– verb: to conceive in the mind; to invent
• What is software design?
– As a product
• Output of design process
– As a process
• Approach to doing design
• Context of Software Design
• o
Software Analysis and Design 15
Software Design Process
• Software life cycle (a.k.a. software process)
– Phased approach to software development
• Software life cycle (a.k.a. process) models
– Waterfall – limitations of Waterfall Model
– Incremental - evolutionary prototyping
– Exploratory - throwaway prototyping
– Spiral model – risk driven process model
Software Analysis and Design 16
Software Life Cycle Model
• Requirements Analysis and Specification
– Analysis of user's problem
– Specification of "what" system shall provide user
• Architectural Design
– Specification of "how" system shall be structured into components
– Specification of interfaces between components
• Detailed Design
– Internal design of individual components
• Design of logic and data structures
• Coding
– Map component design to code
• Software Testing
– Unit, Integration, System and Acceptance
• Software Maintenance
– Modifications (Fixes, Improvements, Changes, Redesigns)
Software Analysis and Design 17
Software Processes
Software Analysis and Design 18
Process
Flow
Software Analysis and Design 19
The Waterfall Model
Communication
project initiation Planning
requirement gathering estimating
scheduling
Modeling
tracking
analysis Construction
design code Deployment
test delivery
support
feedback
Software Analysis and Design 20
The V-Model
Software Analysis and Design 21
The Incremental Model
increment #n
Communi c a t i on
Pl a nni ng
M ode l i ng
analysis Cons t ruc t i on
design code De pl oy me nt
t est de l i v e ry
f e e dba c k
delivery of
increment # 2 nth increment
Communi c a t i on
Pl a nni ng
M ode l i ng
analysis Cons t ruc t i on
design code De pl oy me nt
t est de l i v e ry
f e e dba c k
delivery of
increment # 1 2nd increment
Communi c a t i on
Pl a nni ng
M ode l i ng
analysis Cons t ruc t i on
delivery of
design code De pl oy me nt
t est de l i v e ry
1st increment
f e e dba c k
project calendar time
Software Analysis and Design 22
Evolutionary Models: Prototyping
Quick plan
Quick
Communication plan
communication
MModeling
odeling
Quick design
Quick design
Deployment Construction
Deployment
Delivery
delivery &
& Feedback of prototype
Construction
feedback Construction
of
of prototype
prototype
Software Analysis and Design 23
Evolutionary Models: The Spiral
planning
estimation
scheduling
risk analysis
communication
modeling
analysis
design
start
deployment
delivery construction
code
feedback test
Software Analysis and Design 24
Evolutionary Models: Concurrent
none
Modeling activity
represents the state
Under of a software engineering
development activity or task
Awaiting
changes
Under review
Under
revision
Baselined
Done
Software Analysis and Design 25
The Unified Process (UP)
Elaboration
elaboration
Inception
inception
construction
Release
software increment
transition
production
Software Analysis and Design 26
UP Phases
UP Phases
Inception Elaboration Construction Transition Production
Workflows
Requirements
Analysis
Design
Implementation
Test
Support
Iterations #1 #2 #n-1 #n
Software Analysis and Design 27
UP Work Products
Inception phase
Vision document
Elaboration phase
Initial use-case model
Initial project glossary Use-case model
Construction phase
Initial business case Supplementary requirements
Initial risk assessment. including non-functional Design model Transition phase
Project plan, Analysis model Software components
phases and iterations. Software architecture Integrated software Delivered software increment
Business model, Description. increment Beta test reports
if necessary. Executable architectural Test plan and procedure General user feedback
One or more prototypes prototype. Test cases
Incept io
n Preliminary design model Support documentation
Revised risk list user manuals
Project plan including installation manuals
iteration plan description of current
adaptedworkflows increment
milestones
technical work products
Preliminary user manual
Software Analysis and Design 28
THE END
Software Analysis and Design 29