Lecture 1 - 2024

Download as pdf or txt
Download as pdf or txt
You are on page 1of 30

Faculty of Computers and Artificial Intelligence

Master of Computer Science

Advanced Software Engineering


(Software Engineering 2)
Dr. Lamia Abo Zaid ‫ لمياء أبوزيد‬. ‫د‬

Course Code: CS
l.abozaid@fci -cu.edu.eg

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


What do you learn in this course?
❑ This course will introduce you to the fundamental Design and Architectural concepts and common
principles for software testing.
❑ During the course you will learn the following topics:
❑ Software design process models (e.g., transformational, plan/architecture-driven).
❑Architecture/Design representation (What should be represented, information representation of
design, examples of design notations, formal representation of design, domain specific architecture
descriptions). Design documentation.
❑Design verification (design reviews, scenarios, and test cases, testing of executable design
representations).
❑Software testing principles

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Software Design And Architecture: TOC
❖Introduction to the Architecture design process, and types of Architecture design.
❖Software Architecture design process models.
❖Architecture/Design representation
❖ Design Plans/architecture for common types of software systems (translators,
embedded, real-time, user interface)
❖Design strategies and methods (object modelling technique, structured design, real-
time, user interfaces, methods for design with off-the-shelf components.
❖Design assessment and validation
❖Software testing principles: acceptance testing, integration testing and unit testing

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Course Material
❑ Lecture Slides
❑ Selected papers from the literature
❑ Text books:
❑Other sources
❑Software Engineering Body of Knowledge
SWBOK
❑Miscellaneous papers /online sources

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Course Material
❑ Course available on Google classroom
❑Course name: Advanced Software Engineering
2024-2025
❑ Course code: r7vjh6n

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Grading System
Written Exam (60%)
Class Assignments (40%)
◦ Individual Assignments (5) + Lecture Quiz (5)

◦ Midterm (15)
Tentative start 10/10

◦ Project (15) on one of the research topics in Software Engineering

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Problems of Software Engineering Projects
▪Over Budget
▪Late delivery
▪Low Quality
▪Under estimated resources

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


What are Software Engineering projects
problems?

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Software Engineering Projects Challenges
❑ NIST (National Institute of Standards and Technology) has published a
comprehensive (309 pages) and very interesting report on project statistics and
experiences based on data from a large number of software projects
▪ 70% of the defects are introduced in the specification phase
▪ 30% are introduced later in the technical solution process
▪ Only 5% of the specification inadequacies are corrected in the specification phase
▪ 95% are detected later in the project or after delivery where the cost for correction on
average is 22 times higher compared to a correction directly during the specification effort
▪ The NIST report concludes that extensive testing is essential, however testing detects the
dominating specification errors late in the process
Based on presentations by G. Mussbacher, G.V Bochmann, N. Niu
[1] http://www.nist.gov/public_affairs/releases/n02-10.htm (May 2002)LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING
Software Maintenance

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


What is a Good Software ?
Good Software vs. Good code

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


What is a Good Software ?
Good Software vs. Good code

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


What do you already know ?
• Requirements • Agile
analysis • Waterfall
• Quality Attributes • OO principles
• Use case – User • UML models/modelling
Scenario – User • Abstraction
Stories • Mapping UML models to
• SOLID code and vice versa
• Software • Relationship between UML
Architecture diagrams – e.g. sequence
diagram and class diagram
• Design Patterns
• Entity/Boundary/Control
• Refactoring Objects
• Version control – git • System design methods
• Testing • Design Evaluation/
Lecture 1: Advanced Topics in Software Engineering walkthrough
The Software Life Cycle

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


The Software Development Process
Commonly has these activities:
1. Requirements Engineering
2. Architecture and Design
3. Coding/Construction
4. Testing,
5. Delivery

Different models perform them in different manner!

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


What is Requirements Engineering?

Raimundas Matulevičius, Requirements Engineering, 2016


LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING
Many Sources of Requirements
❑ Stakeholder requirements: also known as user requirements, are requirements specified from
the point-of-view of system stakeholders.
❑ System requirements: are more detailed specifications of requirements which may be expressed
as an abstract model of the system.
❑ Functional requirements: describe what the system should do, i.e. it defines functions of the
system under development.
❑ Non-functional requirements: place constraints on how these functional requirements are
implemented. High-level non-functional requirements are often decomposed into functional
system requirements.

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Software Requirement Analysis
State the problem precisely!
Forms the basis of agreement between user and developer
Specifies “what” not “how”
Hard task - needs often not understood well
Requirement specifications of even medium systems can be many
hundreds of pages
Traditionally Output is the SW Requirements Spec (SRS) document

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Some Types of Requirements Information (1)
Term Definition
Business requirement A high-level business objective of the organization that builds a
product or of a customer who procures it.
Business rule A policy, guideline, standard, or regulation that defines or constrains
some aspect of the business. Not a software requirement in itself, but
the origin of several types of software requirements.

Constraint A restriction that is imposed on the choices available to the developer


for the design and construction of a product.
External interface A description of a connection between a software system and a user,
requirement another software system, or a hardware device.
Feature One or more logically related system capabilities that provide value to
a user and are described by a set of functional requirements.

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Some Types of Requirements Information (2)
Term Definition
A description of a behaviour that a system will exhibit under
Functional requirement
specific conditions.
A description of a property or characteristic that a system must
Non-functional requirement exhibit or a constraint that it must respect. These include the
system’s availability, usability, security, and performance
A kind of nonfunctional requirement that describes a service or
Quality attribute
performance characteristic of a product.
A top-level requirement for a product that contains multiple
System requirement
subsystems, which could be all software or software and hardware.

User requirement A goal or task that specific classes

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


UML Models

We talk UML

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Requirements
Specification
What is Software Design?
(Architectural) Design
Decisions
The design process consists mainly 4 activities
1. Suggest a solution
2. Build a model of the solution Logical Design Details
3. Evaluate the model against original requirements
4. Elaborate the model to produce to produce a detailed specification of
the solution Detailed Design
Decisions
5. Refine your model, go to step 3
6. Accept the solution

Physical Design Details


LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING
LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING
Factors that Influence System Design
Nonfunctional Requirements
=> Definition of Design Goals

Functional model
=> Subsystem Decomposition

Object model
=> Hardware/Software Mapping, Persistent Data Management

Dynamic model
=> Identification of Concurrency, Global Resource Handling, Software Control

Finally: Hardware/Software Mapping


=> Boundary conditions

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Coupling and Coherence
Goal: Reduce system complexity while allowing change
Coherence measures dependency among classes
◦ High coherence: Classes in a subsystem perform similar tasks and are related to each other via many
associations
◦ Low coherence: Lots of miscellaneous and auxiliary classes, almost no associations

Coupling measures dependency among subsystems


◦ High coupling: Changes to one subsystem will have high impact on other subsystems
◦ Low coupling: A change in one subsystem does not affect any other subsystem

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


What is Software Architecture?
“Software architecture encompasses the set of significant decisions about the organization of a
software system including the selection of the structural elements and their interfaces by which
the system is composed; behaviour as specified in collaboration among those elements;
composition of these structural and behavioural elements into larger subsystems; and an
architectural style that guides this organization. Software architecture also involves functionality,
usability, resilience, performance, reuse, comprehensibility, economic and technology
constraints, trade-offs and aesthetic concerns.”

Philippe Kruchten, Grady Booch, Kurt Bittner, and Rich Reitman derived and refined a definition of
architecture based on work by Mary Shaw and David Garlan (Shaw and Garlan 1996).
LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING
What is Software Architecture?
“The software architecture of a program or computing system is the structure or structures of
the system, which comprise software elements, the externally visible properties of those
elements, and the relationships among them. Architecture is concerned with the public side of
interfaces; private details of elements—details having to do solely with internal
implementation—are not architectural.”

Software Architecture in Practice, Bass, Clements, and Kazman

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Assignment 1
What is a System?
What is a Software?
What is a Good Software ?

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Readings
Software Architecture in practice
◦ Chapter 1

Software Architecture: Foundations, Theory, and Practice


◦ Chapter 1

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Questions ?

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING

You might also like