SlideShare a Scribd company logo
1 of 100
Download to read offline
Module 1: Introduction to Software Engineeering
Software Engineering
Computer Science
Academic Year 2023/2024
Gerard Albà Soler
1
Contents
1. What’s Software Engineering
2. Software Quality
3. The Software Process (Software Development Life Cycle)
4. Modeling techniques and Programming paradigms
5. Software Requirements
1. What’s Software Engineering
• Motivation
• Software Engineering definitions
• What will we learn
• References Module 1
1. What’s software engineering
1. What’s software engineering
1. What’s software engineering
Sundar Pichai
The Future: AI is reworking software engineering
1. What’s software engineering
• More and more, individuals and the society rely on advanced software
Systems. We need to be able to produce reliable and trustworthy systems,
economically and quickly.
• Use software engineering methods and techniques for software systems,
rather than just write the programs as if it was a personal programming
project.
Importance of software
1. What’s software engineering
• Software crisis was a term used in the early days of computer science. It was
was coined by some attendees at the first NATO Software Engineering
Conference in 1968 in Germany.
- Projects running over-budget
- Projects running over-time
- Software was very inefficient
- Software was of low quality
- Software often did not meet requirements
- Projects were unmanageable and code difficult to maintain
Software crisis and the begining of Software Engineering
1. What’s software engineering
E. Dijkstra in 1972’s Turing award lecture:
“The major cause of the software crisis is that the
machines have become several orders of magnitude
more powerful! To put it quite bluntly: as long as
there were no machines, programming was no
problem at all; when we had a few weak computers,
programming became a mild problem, and now we
have gigantic computers, programming has become
an equally gigantic problem.”
1. What’s software engineering
1. What’s software engineering
Question Answer
What is software? Computer programs and associated documentation.
Software products may be developed for a particular
customer or may be developed for a general market.
What are the attributes of good software? Good software should deliver the required functionality and
performance to the user and should be maintainable,
dependable and usable.
What is software engineering? Software engineering is an engineering discipline that is
concerned with all aspects of software production.
What are the fundamental software
engineering activities?
Software specification, software development, software
validation and software evolution.
What is the difference between software
engineering and computer science?
Computer science focuses on theory and fundamentals;
software engineering is concerned with the practicalities of
developing and delivering useful software.
1. What’s software engineering
• Software engineering is an engineering discipline that is concerned with all
aspects of software production from the early stages of System specification
through to maintaining the System after it has gone into use.
• Engineering discipline
ü Using appropiate theories and methods to solve problems bearing in mind
organizational and financial constraints.
• All aspects of software production
ü Not just technical process of development. Also project management and
the development of tools, methods...to suport software production.
ü Includes many aspects, some of them will not be covered in this
introductory course: user interface, usability, database design, security...
1. What’s software engineering
What will we learn?
OOA/D
UML notation
Iterative
development,
agile and UP
Principles,
guidelines,
patterns
Requirement
analysis
1. What’s software engineering
• Analyse and Design before coding
• Define the users and use cases for
the System
• Define a contract diagram that
specificies the name, data assets,
funcions and rules of execution
• Use a finite state machine UML
diagram
• Design smart contracts in OP
Solidity
Case Study: Micropayment Dapp in Blockchain Web3
1. What’s software engineering
Class diagram Sequence diagram
1. What’s software engineering
https://youtu.be/kYCZPXSVvOQ?si=eAR4RaUxUraeueEV
1. What’s software engineering
• Book References
ü Software Engineering. A Practitioner’s approach. R. Pressman et al. Ed
McGrawHill
ü Software Engineering. I. Sommerville. Ed Addison-Wesley
ü Applying UML and Patterns. An Introduction to Object-Oriented Analysis
and Design and Iterative Development. C. Larman. Ed Prentice Hall
ü Software Engineering at Google. T. Winter. Ed O’Reilly
Contents
1. What’s Software Engineering
2. Software Quality
3. The Software Process
4. Modeling techniques and Programming paradigms
5. Software Requirements
2. Software Quality
• Software crisis. Process, methods and tools
• McCall’s Quality model
• Quality Assurance
2. Software Quality
• Software engineering is a set of processes, methods and tools used for obtaining reliable,
reusable and efficient software that accomplishes specific goals.
• By following established software engineering principles and techniques, the software can
be developed with improved quality: fewer bugs and higher reliability.
• Through this course, we will focus on the foundational (the processes) and technical (the
methods) layers, but software engineering must always rest on an organizational
commitment to quality.
2. Software Quality
PROCESS METHODS TOOLS
• The way we organise
the activities for
creating, using and
maintaining software
• It defines a framework
• It guides the engineer
through the necessary
tasks to build software
• Assist the engineer in
modelling the software
design: here we can use
different diagrams,
notations…
• Principles and
guidelines for a broad
array of tasks that
include communication,
requirements analysis,
design modeling,
program construction,
testing, and support.
• Traditional Computer-
Aided Software
Egineering (CASE) tools
provide support for
processes and methods.
• Currently, many
integrated development
environments (IDEs)
provide comprehensive
facilities for software
development (ex UML
from code)
2. Software Quality
• Traditionally, a high-quality product is outlined in terms of its fitness of
purpose. That is, a high-quality product will specifically be what the end-
users need.
• For code products (software), fitness of purpose isn’t a completely
satisfactory definition of quality. In the most general sense, software quality
can be defined as:
An effective software process applied in a manner
that creates a useful product that provides measurable value for those who
produce it and those who use it.
2. Software Quality
• Software quality factors of this model focus on three software product
aspects: its operation characteristics, its ability to undergo change, and its
adaptability to new environments.
Mc Call’s Quality model
2. Software Quality
Quality factor High-quality software includes several quality factors like the following
Correctness Software is correct if completely different needs are properly enforced.
Usability A software has smart usability if completely different users (i.e. knowledgeable and
novice users) will simply invoke the functions of the product.
Portability A software is claimed to be transportable, if it works in several package
environments, in several machines, with other programs, etc.
Maintainability A software is reparable, if errors may be simply corrected as and once they show
up, new functions may be simply added, and therefore the functionalities may be
easily changed, etc.
Efficiency The more efficient software is, the less it uses of CPU-time, memory, disk space,
network bandwidth, and other resources.
Reliability Software is more reliable if it has fewer failures.
Reusability A software has smart reusability if different modules can be smoothly reused to
develop new versions.
2. Software Quality
• There are several software quality models (qualitative and quantitative) and standards (like
ISO 9001).
• But a Quality Management System is one of the the main methods used by organizations.
Quality systems have increasingly evolved over time:
• Initially, the function was to inspect the finished products to remove defective ones.
• Then, the first product inspection task led to quality control. Thus, quality control aims
at correcting the reasons for bugs and not just rejecting the products.
• The next breakthrough was the development of quality assurance. If an organization's
processes are proper and are followed rigorously, then the products will be of good
quality.
• Total quality management (TQM) advocates that the procedure followed by an
organization must be continuously improved through process measurements. TQM
aims at frequently process improvement.
2. Software Quality
• Evolution: from product inspection to process assurance
• Reference book: Software Engineering at Google, Ed O’Reilly
2. Software Quality
https://youtu.be/xtQpNdGK6WI?si=ZsW_KHks5TyU_fel
Contents
1. What’s Software Engineering
2. Software Quality
3. The Software Process
4. Modeling techniques and Programming paradigms
5. Software Requirements
3. The Software Process
• Software Development Life Cycle
• Predictive and Adaptative methodologies
• Waterfall
• Prototype
• Agile
• Scrum
• Unified Process (UP)
3. The Software Process
• The Software Process, sometimes also called the Software Development
Life Cycle is a framework for the activities, actions, and tasks required to
build high-quality software.
• A generic process framework:
1. Software specification: the functionality of the software and
constraints on its operation must be defined.
2. Software design and implementation: the software to meet the
specification must be produced.
3. Software validation: the software must be validated to ensure that it
does what the customer wants.
4. Software evolution: must evolve to meet changing customer needs.
3. The Software Process
• Short-term programming differ from producing code with a much longer
expected life span
• Imagine Google Search being stuck on a version of the initial OS from the
1990s..!!
3. The Software Process
• Software development phases
Planning
Analysis
Design
Development
Testing
Deployment
Maintenance
3. The Software Process
• Additionally, those phases can follow a process flow, that describes how the framework
activities and the actions and tasks that occur within each framework activity are
organized with respect to sequence and time. We will discuss it later in more detail
Linear
Iterative
Evolutionary
Paral.lel
3. The Software Process
• Plan-driven processes are processes where all of the process activities are
planned in advance and progress is measured against this plan.
• In agile processes, planning is incremental and it is easier to change the
process to reflect changing customer requirements.
• In practice, most practical processes include elements of both plan-driven
and agile approaches.
• There are no right or wrong software processes.
Plan-driven vs Agile
3. The Software Process
• First stage where the project is initiated
• The team examines key aspects of the project to see if it’s doable or not
• In this stage, it’s important to consider:
ü Communication: make contact with stakeholder and discuss high-level requirements
ü Business: the business value of the project. Why this project? Why this way?
ü Economic: What’s the budget? Is it reasonable?
ü Schedule: How many time can we work on it? It’s reasonable?
ü Technical: Can we build it? It’s possible?
ü Resources: What do we need? (tools, technology, people…)
• At the end of this phase we may have deliverables (depending on the paradigm): cost plan,
working plan, risk assessment plan, etc
Planning
3. The Software Process
• First Requirement gathering: relevant information is collected from the client, in order to
know exactly what it needs to be done and start thinking how.
• We are defining all the needs that the project will have to solve and what do we need to do
it. Critical step due to the implications if there is a misunderstanding with the customer.
• We can find two levels of definition here:
• User requirements [close to the client]: “we want the user to buy in a secure manner”
• Specification/Functional requirements [close to the tech team]: “activate login session
once the customer pushes enter after introducing mail and password. If the session
remains inactive for 60 seconds, delete the session”
• The documentation after this phase will depend on the paradigm. For Use Cases driven
development use cases textual definition is an additional deliverable.
Analysis
3. The Software Process
• How the system will achieve what is needed?
• Requirements are translated into: “how will it be implemented?”
• We produce plenty of design documents:
ü Physical design: UI, UX, Data Design, etc
ü Logical design: abstract representation of the system via modelling
• This documents are usually submitted to be approved by the whole team or higher
stakeholders of the project
Design
3. The Software Process
• In this phase, we also take decisions about code architecture. Software architecture is about
breaking large systems into sub-systems:
ü That are Independent with some business logic
ü That can be integrated with other components
ü That can be created separately
• At the end of this phase, design system requirements are transformed into a detailed,
software ready description
ü Graphical mock-ups or wireframes
ü Formal descriptions including UML diagrams
• During design, we must avoid technology-specific specifications
Design
3. The Software Process
• This is the longest phase (and way more longer if previous steps are not well defined).
• The team uses the design documents and diagrams to build the project correctly.
• In addition to the working software deliverables, for this phase we generate:
ü Unit tests for each one of the implemented modules
ü Build scripts to compile and link software into executable components
ü Code documentation inside the code
ü Test cases or testing flow for the application
Development
3. The Software Process
• Testing is intended to show that a program does what it is intended to do and to discover
program defects before it is put into use. When you test software, you execute a program
using artificial data. You check the results of the test run for errors, anomalies, or
information about the program’s non-functional attributes.
• Two distinct goals:
1. Validation: To demonstrate to the developer and the customer that the software meets its
requirements. “Are we building the right product?”
2. Verification: or defect testing. To discover situations in which the behavior of the software
is incorrect, undesirable, or does not conform to its specification. These are a consequence
of software defects. “Are we building the product right?”
Testing
3. The Software Process
• Traditional testing process, as used in plan-driven development. Test cases are specifications
of the inputs to the test and the expected output from the system (the test results), plus a
statement of what is being tested.
Testing
3. The Software Process
• Typically, a software system has to go through three stages of testing:
1. Development testing, where the system is tested during development to discover bugs
and defects. System designers and programmers are likely to be involved
in the testing process.
2. Release testing, where a separate testing team tests a complete version of the
system before it is released to users. The aim of release testing is to check that
the system meets the requirements of system stakeholders.
3. User testing, where users or potential users of a system test the system in their own
environment. Acceptance testing is one type of user testing where the customer formally
tests a system to decide if it should be accepted from the system supplier or if further
development is required.
Testing
3. The Software Process
• Development testing is primarily a defect testing process, where the aim of testing
is to discover bugs in the software.
• During development, testing may be carried out at three levels of granularity:
1. Unit testing, where individual program units or object classes are tested. Should focus
on testing the functionality of objects or methods.
2. Component testing, where several individual units are integrated to create composite
components. Should focus on testing component interfaces.
3. System testing, where some or all of the components in a system are integrated
and the system is tested as a whole. Should focus on testing component interactions.
Testing
3. The Software Process
https://engineering.fb.com/2018/05/02/developer-tools/sapienz-intelligent-automated-software-testing-at-scale/
Testing
• Meta (Facebook) AI testing system
3. The Software Process
https://youtu.be/v3Qxf1PG0fo?si=sZ2QYBiXkJiVB3xz
Testing
Quality Assurance
3. The Software Process
• The SDLC deployment phase involves customer acceptance and releasing the software
• Deployment and recovery plan must be ready before starting
• Deployment plan must consider :
ü Hardware and environment
ü Database related activities
ü Documentation for new software
ü Training activities
ü Third party software's
Deployment
3. The Software Process
• The Documentation is key in this phase, to support users and administrators
ü Manual explaining how to use features and functions
ü Installation manual or quick start guides
• Development team leads with most knowledge about the system will remain involved to:
ü Troubleshoot issues found in early deployment
ü Assist in training and documentation
ü Help transition to the new support team
Maintenance
3. The Software Process
• How to manage all this phases of the software development process, will depend on the
methodology, and the chosen one is often related with the enterprise culture, way of
working and project needs and goals. We have two big groups:
• Predictive methodologies:
• Customer has clear requirements
• Once approved the requirements do not change
• Development always follows the process: design —> develop —> test
• Software is build in only one shot at the end
• Adaptative methodologies:
• Customer has an idea of what he wants to build
• Development team builds the software by small chunks
• We talk about iterations, and at the end of each one we receive customer feedback
• The final product may not be the first idea, but it’s what the customer really wants
Process methodologies (also called models or paradigms)
3. The Software Process
Predictive Adaptative
The predictive method is a Waterfall methodology Adaptive method is an Agile methodology
This is a traditional approach to developing This is an iterative process of development
Changes can not be made easily throughout the
development of the project
The process allows for easy changes during any
stage of the process
Testing can only be done at the implementation
stage
Testing can be done at any stage
Clients are involved only during selected stages such
as requirement, scope change, and implementation
Clients are involved throughout different
development stages
Suitable for projects that are fully understood are
less complex
Suitable for less certain and complex projects
The methodology is process-oriented The methodology is people-oriented
The Predictive method can be implemented as an
individual by a team
The Adaptive method requires partnership or
collaboration by all stakeholders
3. The Software Process
3. The Software Process
Waterfall (Predictive methodologies)
3. The Software Process
• There are separate identified phases in the waterfall model:
ü Requirements analysis and definition
ü System and software design
ü Implementation and unit testing
ü Integration and system testing
ü Operation and maintenance
• The main drawback is the difficulty of accommodating change after the process is underway.
A phase has to be complete before moving onto the next.
• Inflexible partitioning into distinct stages makes it difficult to respond to changing customer
requirements. This model is only appropriate when the requirements are well-understood
and changes will be fairly limited. But few business systems have stable requirements.
• The waterfall model is mostly used for large systems engineering projects where a system is
developed at several sites. The plan-driven nature of the waterfall model helps coordinate.
Waterfall (Predictive methodologies)
3. The Software Process
https://youtu.be/5RocT_OdQcA?si=87ucYP0RKUDdXeG2
3. The Software Process
• In the waterfall model:
• Feedback not obtained until testing phase .
• That implies thinking that no errors were made while producing all design documents.
• This increases dramatically the risk of project failure.
• To overcome this issues, the prototype methodology was proposed.
• The application will be build based on approved prototype.
• A prototype it’s a fast build software that will allow the user to validate and establish
requirements for the final system. A prototype is a working software that only contains the
key features we want to try at a certain moment.
Prototype (Adaptative methodologies)
3. The Software Process
• Although problems can occur, prototyping can
be an effective paradigm.
• The key is to define the rules of the game at
the beginning; that is, all stakeholders should
agree that the prototype is built in part to
serve as a mechanism for defining
requirements.
• It is often desirable to design a prototype so it
can be evolved into the final product. The
reality is developers may need to discard (at
least in part) a prototype to better meet the
evolving needs.
Prototype (Adaptative methodologies)
3. The Software Process
Incremental or Evolutionary (Adaptative methodologies)
• The spiral model is an evolutionary software process model that couples the iterative
nature of prototyping with the controlled and systematic aspects of the waterfall model.
3. The Software Process
• Rapid development and delivery is now often the most important
requirement for software systems
ü Businesses operate in a fast –changing requirement and it is
practically impossible to produce a set of stable software
requirements.
ü Software has to evolve quickly to reflect changing business needs.
• Rapid software development
ü Specification, design and implementation are inter-leaved.
ü System is developed as a series of versions with stakeholders
involved in version evaluation.
Agile (Adaptative methodologies)
3. The Software Process
• Dissatisfaction with the overheads involved in software design methods (of
the 1980s and 1990s) led to the creation of agile methods.
• These methods:
ü Focus on the code rather than the design.
ü Are based on an iterative approach.
ü Are intended to deliver working software quickly and evolve to meet
changing requirements.
• The aim of agile methods is to reduce overheads in the software process
(e.g. by limiting documentation) and to be able to respond quickly to
changing requirements without excessive rework.
Agile (Adaptative methodologies)
3. The Software Process
https://agilemanifesto.org/
3. The Software Process
• Dissatisfaction
Agile (Adaptative methodologies)
Principle Description
Customer involvement Customers should be closely involved throughout the development process.
Their role is provide and prioritize new system requirements and to evaluate
the iterations of the system.
Incremental delivery The software is developed in increments with the customer specifying the
requirements to be included in each increment.
People not process The skills of the development team should be recognized and exploited. Team
members should be left to develop their own ways of working without
prescriptive processes.
Embrace change Expect the system requirements to change and so design the system to
accommodate these changes.
Maintain simplicity Focus on simplicity in both the software being developed and in the
development process. Wherever possible, actively work to eliminate
complexity from the system.
3. The Software Process
• Product development where a software company is developing a small or
medium-sized product for sale.
• Custom system development within an organization, where there is a clear
commitment from the customer to become involved in the development
process and where there are not a lot of external rules and regulations that
affect the software.
• Because of their focus on small, tightly-integrated teams, there are
problems in scaling agile methods to large systems.
Agile (Adaptative methodologies)
3. The Software Process
3. The Software Process
• Scrum it’s an agile methodology that iterates over sprints.
• This sprints have a fixed duration, between 1 and 4 weeks.
• The tasks for the project are created and added into a list called backlog.
• In this backlog we can find big tasks, that needs to be more defined (epic
stories) and smaller tasks ready to develop.
• This backlog is permanently reviewed and prioritised by the Product Owner
and estimated by the team.
Scrum (Agile)
3. The Software Process
3. The Software Process
https://youtu.be/9TycLR0TqFA?si=SPpKezU13yz8egYS
3. The Software Process
• We can find different roles:
• Product Owner: responsible for defining the product backlog, communicating the
product vision, and making decisions about which features should be developed next
to ensure the satisfaction of stakeholders and the success of the project.
• Team: delivering incremental, usable increments of the product, through self-
organization and collaboration, within the constraints of each sprint. In fact, the team
decides what they will be working on on each sprint and they commit to it.
• Scrum Master: helping the development team, removing obstacles to progress, and
ensuring that the Scrum framework and Agile Principles are understood and
followed.
Scrum (Agile)
3. The Software Process
• And meetings:
• Sprint planning: the entire team gather around and start estimating tasks from the
backlog, and selecting the ones that the team will work on during the sprint. After this
meeting, all the team commits to the sprint backlog.
• Daily meeting: each day, before starting work, the team meets, in a daily standup
meeting, where each one of them answers three questions: what i’ve been working on?
what i’ll be working on? is there any blocking point for me? The maximum duration is 15
minutes, and often a clock is used to not overpass this time.
• Sprint review: the development team demonstrates the completed product increments
to stakeholders, discusses the progress and lessons learned, and collaborates to plan
future improvements and work for the next sprint.
• Sprint retrospective: the development team thinks about the past sprint, identifies
areas for improvement, and collaboratively agrees on actions to make those
improvements, in order to continuously increase effectiveness and efficiency.
3. The Software Process
• Extreme programming (XP) is a well-known agile method that integrates a
range of good programming practices such as frequent releases of the
software, continuous software improvement and customer participation in
the development team.
• Extreme Programming takes an ‘extreme’ approach to iterative
development.
ü New versions may be built several times per day.
ü Increments are delivered to customers every 2 weeks.
ü All tests must be run for every build and the build is only accepted if
tests run successfully.
Extreme programming XP (Agile)
3. The Software Process
• Incremental development is supported
through small, frequent system releases.
• Customer involvement means full-time
customer engagement with the team.
• People not process through pair
programming, collective ownership and a
process that avoids long working hours.
• Change supported through regular system
releases.
• Maintaining simplicity through constant
refactoring of code.
Extreme programming XP (Agile)
3. The Software Process
Principle XP Description
Incremental planning Requirements are recorded on story cards and the stories to be included in a
release are determined by the time available and their relative priority. The
developers break these stories into development ‘Tasks’.
Small releases The minimal useful set of functionality that provides business value is developed
first. Releases of the system are frequent and incrementally add.
Simple design Enough design is carried out to meet the current requirements and no more.
Test-first development An automated unit test framework is used to write tests for a new piece of
functionality before that functionality itself is implemented.
Refactoring All developers are expected to refactor the code continuously as soon as possible
code improvements are found. This keeps the code simple and maintainable.
3. The Software Process
Principle XP Description
Pair programming Developers work in pairs, checking each other’s work and providing the
support to always do a good job.
Collective ownership The pairs of developers work on all areas of the system, so that no islands of
expertise develop and all the developers take responsibility for all of the
code. Anyone can change anything.
Continuous integration As soon as the work on a task is complete, it is integrated into the whole
system. After any such integration, all the unit tests in the system must pass.
Sustainable pace Large amounts of overtime are not considered acceptable as the net effect
is often to reduce code quality and medium term productivity.
On-site customer A representative of the end-user of the system (the customer) should be
available full time for the use of the XP team. In an extreme programming
process, the customer is a member of the development team.
3. The Software Process
UP (Adaptative methodologies)
• The Unified Process (UP) is a process model that
represents the development of the software as a four-
phase iterative activity: inception, elaboration,
construction, transition and production
ü Inception establishes a business case for the system
ü Elaboration defines the architecture
ü Construction implements the system
ü Transition deploys the system
ü Production ongoing use of the software is
monitored
• Book Reference: “Applying UML and Patterns. An
Introduction to Object-Oriented Analysis and Design and
Iterative Development”. C Larman, Ed Prentice Hall
3. The Software Process
• In some ways the Unified Process (UP) is an attempt to draw on the best features and
characteristics of traditional software process models but characterize them in a way that
implements many of the best principles of agile software development.
• The Unified Process recognizes the importance of customer communication and
streamlined methods for describing the customer’s view of a system (the use case).
• It emphasizes the important role of software architecture and helps the architect focus
on the right goals, such as understandability, reliance to future changes, and reuse.
• It suggests a process flow that is iterative and incremental, providing the evolutionary
feel that is essential in modern software development.
UP (Adaptative methodologies)
3. The Software Process
• The UML, the unified modeling language, was developed to support the
UP process implementation.
• UML contains a robust notation for the modeling and development of
object-oriented systems and has became a de facto industry standard for
modeling software of all types (see for example the Case Study: UML for
Blockchain).
• UML is used throughout this course to represent both requirements and
design models.
UP (Adaptative methodologies)
3. The Software Process
• The inception phase of the UP is where customer communication and planning takes
place. Fundamental business requirements are described through a set of preliminary use
cases that describe which features and functions each major class of users desires.
Planning identifies resources, assesses major risks, and defines a preliminary schedule for
the software increments.
• The elaboration phase encompasses the planning and modeling activities of the generic
process model. Elaboration refines and expands the preliminary use cases and creates an
architectural baseline that includes five different views of the software—the use case
model, the analysis model, the design model, the implementation model, and the
deployment model.
UP (Unified Process)
3. The Software Process
• The construction phase of the UP is the construction activity defined for the generic
software process. All necessary and required features and functions for the software
increment (i.e., the release) are then implemented in source code. As components are
being implemented, unit tests are designed and executed for each. In addition,
integration activities (component assembly and integration testing) are conducted. Use
cases are used to derive a suite of acceptance tests that are executed prior to the
initiation of the next UP phase.
• The transition phase of the UP encompasses the latter stages of the generic construction
activity and the first part of the generic deployment (delivery and feedback) activity.
Software and supporting documentation is given to end users for beta testing, and user
feedback reports both defects and necessary changes. At the conclusion of the transition
phase, the software increment becomes a usable software release.
UP (Unified Process)
3. The Software Process
• The UP describes:
ü Disciplines: a set of
activities in one subject
area (such as requirement
analysis, design,
deployment, etc)
ü Artifacts: a general term for
any work product:
diagrams, models, code,
web, database schema, text
documents, etc
• In this course, we will mainly focus on these three disciplines: Business modeling (the Domain
model artifact), Requirements (the Use-Case model and Supplementary Specification) and
Design (design artifacts to design software objects)
Contents
1. What’s Software Engineering
2. Software Quality
3. The Software Process (Software Development Life Cycle)
4. Modeling techniques and Programming paradigms
5. Software Requirements
4. Modeling techniques and Paradigms
• Unified Modelling Language (UML)
• Programming Paradigms: Imperative and Declarative
• Procedural
• Object-Oriented Programming
• Functional
4. Modeling techniques and Programming paradigms
• Models are abstraction that help us to communicate what is important on
the system and help to deal with complexity.
• Modelling techniques are used to represent and visualise different aspects
of software system: requirements, architecture, behaviour and data.
• The goal of modelling is to help understand and communicate the system’s
design and requirements, to facilitate its development and maintenance.
• Techniques used for modeling will also depend on the programming
paradigm. In this course, we will apply those techniques mainly to OOA/D.
• The Unified Modelling Language (UML) is the most popular and
successfull standard for modelling software products.
4. Modeling techniques and Programming paradigms
• As we will see in the next Modules, some modelling techniques include:
ü Use case: for functional requirements, interactions between actors and the system
ü Class modelling: structure and relationships between classes and objects .
ü State machine: to represent the behaviour of a system in response to events and inputs.
ü Data modelling: to represent data structures, relationships and constraints of a system.
ü Architecture: high level structure and relationships between components in a system.
• In the phases of Analysis and Design in OOA/D, models will be build from different perspectives:
ü Domain modelling: identify key concepts for a specific domain to solve a specific problem.
ü Specification modelling: elements that compose the solution and high-level description of
the services provided.
ü Design modelling: describes the software itself, its behaviour to external events and the
different responsibilities for each element of the system .
4. Modeling techniques and Programming paradigms
• A programming paradigm is a
style to write computer
programs that defines the
structure, organisation and
nature of the code.
• Sometimes, it is also used as a
classification of programming
languages based on their
features. But most popular
languages support multiple
paradigms (C++, Python etc).
Programming paradigms
4. Modeling techniques and Programming paradigms
• In the Imperative style, the programmers instruct the machine How to
perform a task by writing step-by-step instructions including variables,
conditions, loops etc.).
• Algorithms as a sequence of steps .
• Often used synonymously: procedural programming (emphasizing the
concept of using procedure calls(functions) to structure the programing
modular fashion).
• Object-Oriented Programming (OOP) is usually considered a subcategory.
Imperative
4. Modeling techniques and Programming paradigms
• Example: you want to search for an element in an array of numbers, you
write all the instructions to perform the search such as taking input, iterating
the array, checking if the element is found or not, returning the results, etc.
Imperative
4. Modeling techniques and Programming paradigms
• The imperative paradigm is further classified into two types: Procedural and
Object Oriented.
• Procedural oriented: procedural language breaks down a task into a
collection of procedures (subroutines, functions) to perform a task. It
maintains global variables to manage the state of the system. C, BASIC, etc.
• Object-oriented (OOP) breaks down a task into objects that expose
behaviour (method) and data (member or attribute), objects communicate
with each other through message-passing techniques to accomplish a given
task. C++, Java, C#, Kotlin etc belong to the object-oriented paradigm.
Imperative
4. Modeling techniques and Programming paradigms
Procedural
• Example: linear
search in C
4. Modeling techniques and Programming paradigms
Object-Oriented
• Example: linear
search in Java
4. Modeling techniques and Programming paradigms
• The declarative paradigm is classified into two types: Functional and Logical.
• Functional: Functional programming contains only functions without mutating the state or
data. It means that there are no global data/variables. Composing and applying function is
the main driving force in this paradigm. A function can take another as an argument and
return a new function. The first high-level functional programming language, developed in
the 1950s, was LISP. This language laid the foundation for modern functional languages.
• Logical: has its foundations in mathematical logic in which program statements express facts
and rules. Rules are written as logical clauses. The engine infers the answer to the user’s
query by using unification and backtracking techniques. The set of facts and rules forms a
knowledge base, allowing the system to reason. Prolog, Datalog etc are examples of logical
programming. Logical programming helps in major areas such as Natural language
processing, Database management, Pattern matching, and Predictive analysis.
Declarative
4. Modeling techniques and Programming paradigms
Functional
• Example: factorial
program using
LISP
4. Modeling techniques and Programming paradigms
Logical
• Example: Prolog program to
infer relationship match of
two people from their food
interest knowledge base.
• LP can be made available
with libraries, e.g. For
Python: Pyke (inspired by
Prolog), pyDatalog (inspired
by Datalog)
Contents
1. What’s Software Engineering
2. Software Quality
3. The Software Process (Software Development Life Cycle)
4. Modeling techniques and Programming paradigms
5. Software Requirements
5. Software Requirements
• Functional and Non-funcional
• Software Requirements Specification
5. Software Requirements
• Software Requirements: the process of establishing the services that the
customer requires from a system and the constraints under which it operates
and is developed.
• The requirements themselves are the descriptions of the system services
and constraints that are generated during the requirements engineering
process.
• It may range from a high-level abstract statement of a service or of a system
constraint to a detailed mathematical functional specification.
5. Software Requirements
• Functional: expresses the relation between input and output of the system
and its processes
• We answer this questions: what does the software need to do? What’s the
problem we need to solve? What’s the necessary features and capabilities?
• Non functional: defines the quality or restriction that we impose to a system
to realise its function:
ü Performance: how many users should the app support simultaneously?
ü Law: what do we need to do in terms of data protection?
ü Support: how the app should perform when there is an issue?
ü Security, budget…
5. Software Requirements
• First, perform a previous analysis or problem comprehension: understand user needs and
understand the associated problematic. How?
ü Ask users: meetings, surveys…
ü Compare to other existing systems and select the equal parts
ü Prototype building
ü Brainstorming
• And thereater, do an analysis or requirements specification: define what the client wants
and generate a document (Software Requirement Specification or SRS) :
https://www.utdallas.edu/~chung/RE/Presentations07S/Team_1_Doc/Documents/SRS4.0.doc
• The software requirements document is the official statement of what is required of the
system developers. Should include both a definition of user requirements and a
specification of the system requirements. It is not a design document. As far as possible, it
should set of What the system should do rather than How it should do it.
5. Software Requirements
• In order to correctly do the SRS, it must be:
ü Correct: the requirement are the ones the software must do (not “nice to have” features).
ü Unambiguous: every statement has only one interpretation, and leaves no room to other.
ü Complete: contain all significant requirements relating to functionality, performance,
design constraints, attributes and external interfaces.
ü Modifiable: structure and style may allow any changes done easily and completely while
retaining the structure and style.
ü Consistent: the document must agree with all other documentation, specially the higher-
level one, usually made before.
ü Verifiable: all statements must be verifiable by third persons and the team.
ü Traceable: the origin of each requirement must be clear and facilitates the referencing of
each requirement.
5. Software Requirements
• We can classify requirements according to:
ü Functionality: features of the system.
ü Usability: everything that will affect the final user (easy to use,
intuitive…).
ü Reliability: availability, failure rate, predictability (downtime
accepted, for example).
ü Performance: speed, efficiency, scalability, resource consumption…
ü Support: testability, configurability, extensibility…
5. Software Requirements
• Many agile methods argue that producing a requirements document is a
waste of time as requirements change so quickly. The document is
therefore always out of date.
• Methods such as XP use incremental requirements engineering and
express requirements as ‘user stories’ (discussed in Chapter 3).
• This is practical for business systems but problematic for systems that
require a lot of pre-delivery analysis (e.g. critical systems) or systems
developed by several teams.
5. Software Requirements
SRS Chapter (1/2) Description
Preface This should define the expected readership of the document and describe
its version history, including a rationale for the creation of a new version and
a summary of the changes made in each version.
Introduction This should describe the need for the system. It should briefly describe the
system’s functions and explain how it will work with other systems. It should
also describe how the system fits into the overall business or strategic
objectives of the organization commissioning the software.
Glossary This should define the technical terms used. You should not make
assumptions about the experience or expertise of the reader.
User requirements
definition
Here, you describe the services provided for the user. The nonfunctional
system requirements should also be described in this section. This
description may use natural language, diagrams, or other notations that are
understandable to customers. Product and process standards that must be
followed should be specified.
System architecture A high-level overview of the anticipated system architecture, showing the
distribution of functions across system modules.
5. Software Requirements
SRS Chapter (2/2) Description
System requirements
specification
Describe the functional and nonfunctional requirements in more detail.
Further detail may also be added to the nonfunctional requirements.
Interfaces to other systems may be defined.
System models This might include graphical system models showing the relationships
between the system components and the system and its environment.
Examples of possible models are object models, data-flow models, or
semantic data models.
System evolution This should describe the fundamental assumptions on which the system is
based, and any anticipated changes due to hardware evolution, changing
user needs, and so on. This section is useful for system designers as it may
help them avoid design decisions that would constrain likely future changes
to the system.
Appendices These should provide detailed, specific information that is related to the
application being developed; for example, hardware and database
descriptions.

More Related Content

Similar to Module1 - Introduction to Software Engineering.pdf

Week_01-Intro to Software Engineering-1.ppt
Week_01-Intro to Software Engineering-1.pptWeek_01-Intro to Software Engineering-1.ppt
Week_01-Intro to Software Engineering-1.ppt23017156038
 
Unit 1 importance ofsoftengg_b.tech iii year
Unit 1  importance ofsoftengg_b.tech iii yearUnit 1  importance ofsoftengg_b.tech iii year
Unit 1 importance ofsoftengg_b.tech iii yearPreeti Mishra
 
Unit 1 introduction tosoftengg_mba tech ii year
Unit 1  introduction tosoftengg_mba tech ii yearUnit 1  introduction tosoftengg_mba tech ii year
Unit 1 introduction tosoftengg_mba tech ii yearPreeti Mishra
 
Software Engineering PPT Unit I.pptx
Software Engineering PPT Unit I.pptxSoftware Engineering PPT Unit I.pptx
Software Engineering PPT Unit I.pptxomgadekar25
 
Software engineering (Unit-1 Introduction)
Software engineering (Unit-1 Introduction)Software engineering (Unit-1 Introduction)
Software engineering (Unit-1 Introduction)YamunaP6
 
Introduction of software engineering
Introduction of software engineeringIntroduction of software engineering
Introduction of software engineeringBhagyashriMore10
 
Oose unit 1 ppt
Oose unit 1 pptOose unit 1 ppt
Oose unit 1 pptDr VISU P
 
Software engineering study materials
Software engineering study materialsSoftware engineering study materials
Software engineering study materialssmruti sarangi
 
OOSE Unit 1 PPT.ppt
OOSE Unit 1 PPT.pptOOSE Unit 1 PPT.ppt
OOSE Unit 1 PPT.pptitadmin33
 
Java learn from basic part chapter_01 short notes to understand the java quic...
Java learn from basic part chapter_01 short notes to understand the java quic...Java learn from basic part chapter_01 short notes to understand the java quic...
Java learn from basic part chapter_01 short notes to understand the java quic...GaytriMate
 
Introduction of Software Engineering
Introduction of Software EngineeringIntroduction of Software Engineering
Introduction of Software EngineeringMuhammadTalha436
 
Software Engineering Unit-1
Software Engineering Unit-1Software Engineering Unit-1
Software Engineering Unit-1Samura Daniel
 
Software process model
Software process modelSoftware process model
Software process modelUmar Farooq
 
Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering MethodologiesNesrine Shokry
 
Soft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptxSoft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptxKalpna Saharan
 

Similar to Module1 - Introduction to Software Engineering.pdf (20)

Lecture 1 SE.pptx
Lecture 1 SE.pptxLecture 1 SE.pptx
Lecture 1 SE.pptx
 
Week_01-Intro to Software Engineering-1.ppt
Week_01-Intro to Software Engineering-1.pptWeek_01-Intro to Software Engineering-1.ppt
Week_01-Intro to Software Engineering-1.ppt
 
Unit 1 importance ofsoftengg_b.tech iii year
Unit 1  importance ofsoftengg_b.tech iii yearUnit 1  importance ofsoftengg_b.tech iii year
Unit 1 importance ofsoftengg_b.tech iii year
 
Unit 1 introduction tosoftengg_mba tech ii year
Unit 1  introduction tosoftengg_mba tech ii yearUnit 1  introduction tosoftengg_mba tech ii year
Unit 1 introduction tosoftengg_mba tech ii year
 
Software Engineering PPT Unit I.pptx
Software Engineering PPT Unit I.pptxSoftware Engineering PPT Unit I.pptx
Software Engineering PPT Unit I.pptx
 
Software engineering (Unit-1 Introduction)
Software engineering (Unit-1 Introduction)Software engineering (Unit-1 Introduction)
Software engineering (Unit-1 Introduction)
 
Introduction of software engineering
Introduction of software engineeringIntroduction of software engineering
Introduction of software engineering
 
Unit 1
Unit 1Unit 1
Unit 1
 
UNIT-I.pptx
UNIT-I.pptxUNIT-I.pptx
UNIT-I.pptx
 
Oose unit 1 ppt
Oose unit 1 pptOose unit 1 ppt
Oose unit 1 ppt
 
Software engineering study materials
Software engineering study materialsSoftware engineering study materials
Software engineering study materials
 
OOSE Unit 1 PPT.ppt
OOSE Unit 1 PPT.pptOOSE Unit 1 PPT.ppt
OOSE Unit 1 PPT.ppt
 
Lecture 1.pptx
Lecture 1.pptxLecture 1.pptx
Lecture 1.pptx
 
Java learn from basic part chapter_01 short notes to understand the java quic...
Java learn from basic part chapter_01 short notes to understand the java quic...Java learn from basic part chapter_01 short notes to understand the java quic...
Java learn from basic part chapter_01 short notes to understand the java quic...
 
Introduction of Software Engineering
Introduction of Software EngineeringIntroduction of Software Engineering
Introduction of Software Engineering
 
Software Engineering Unit-1
Software Engineering Unit-1Software Engineering Unit-1
Software Engineering Unit-1
 
Software process model
Software process modelSoftware process model
Software process model
 
SE
SESE
SE
 
Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering Methodologies
 
Soft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptxSoft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptx
 

More from Gerard Alba

TV2 - OOAD Case Study- Flight Systems.pdf
TV2 - OOAD Case Study- Flight Systems.pdfTV2 - OOAD Case Study- Flight Systems.pdf
TV2 - OOAD Case Study- Flight Systems.pdfGerard Alba
 
Module3 - Object Oriented Analysis & Functional Model.pdf
Module3 - Object Oriented Analysis & Functional Model.pdfModule3 - Object Oriented Analysis & Functional Model.pdf
Module3 - Object Oriented Analysis & Functional Model.pdfGerard Alba
 
Aprendizaje automático I - Tema 6 Aprendizaje Automático K-Means.pdf
Aprendizaje automático I - Tema 6 Aprendizaje Automático K-Means.pdfAprendizaje automático I - Tema 6 Aprendizaje Automático K-Means.pdf
Aprendizaje automático I - Tema 6 Aprendizaje Automático K-Means.pdfGerard Alba
 
Aprendizaje automático I - Tema 5 Aprendizaje Automático No-Supervisado.pdf
Aprendizaje automático I - Tema 5 Aprendizaje Automático No-Supervisado.pdfAprendizaje automático I - Tema 5 Aprendizaje Automático No-Supervisado.pdf
Aprendizaje automático I - Tema 5 Aprendizaje Automático No-Supervisado.pdfGerard Alba
 
Aprendizaje automático I - Sesión 4 Árboles de Decisión.pdf
Aprendizaje automático I - Sesión 4 Árboles de Decisión.pdfAprendizaje automático I - Sesión 4 Árboles de Decisión.pdf
Aprendizaje automático I - Sesión 4 Árboles de Decisión.pdfGerard Alba
 
Aprendizaje automático I - Tema 3 Aprendizaje Automático Supervisado.pdf
Aprendizaje automático I - Tema 3 Aprendizaje Automático Supervisado.pdfAprendizaje automático I - Tema 3 Aprendizaje Automático Supervisado.pdf
Aprendizaje automático I - Tema 3 Aprendizaje Automático Supervisado.pdfGerard Alba
 
Aprendizaje automático I - Sesión 2 Caso Práctico.pdf
Aprendizaje automático I - Sesión 2 Caso Práctico.pdfAprendizaje automático I - Sesión 2 Caso Práctico.pdf
Aprendizaje automático I - Sesión 2 Caso Práctico.pdfGerard Alba
 
Aprendizaje automático I - Sesión 1 Intro.pdf
Aprendizaje automático I - Sesión 1 Intro.pdfAprendizaje automático I - Sesión 1 Intro.pdf
Aprendizaje automático I - Sesión 1 Intro.pdfGerard Alba
 
Algoritmos y Estructuras de Datos I - Sesión 1.pptx
Algoritmos y Estructuras de Datos I - Sesión 1.pptxAlgoritmos y Estructuras de Datos I - Sesión 1.pptx
Algoritmos y Estructuras de Datos I - Sesión 1.pptxGerard Alba
 
Master class Fintech
Master class FintechMaster class Fintech
Master class FintechGerard Alba
 
Machine Learning en Inversiones 20210414
Machine Learning en Inversiones 20210414Machine Learning en Inversiones 20210414
Machine Learning en Inversiones 20210414Gerard Alba
 
EFPA ESG Advisor - summary
EFPA ESG Advisor - summaryEFPA ESG Advisor - summary
EFPA ESG Advisor - summaryGerard Alba
 
Gestión de Carteras Óptimas - Roboadvisors
Gestión de Carteras Óptimas - RoboadvisorsGestión de Carteras Óptimas - Roboadvisors
Gestión de Carteras Óptimas - RoboadvisorsGerard Alba
 
Agenda lecture GA PETD digital transformation financial services 20190524
Agenda lecture GA PETD digital transformation financial services 20190524Agenda lecture GA PETD digital transformation financial services 20190524
Agenda lecture GA PETD digital transformation financial services 20190524Gerard Alba
 
Machine Learning in Investment Management March 2018
Machine Learning in Investment Management March 2018Machine Learning in Investment Management March 2018
Machine Learning in Investment Management March 2018Gerard Alba
 
Cinquanta anys d'Star Trek: un futur amb tipus d'interès negatius ja no és ci...
Cinquanta anys d'Star Trek: un futur amb tipus d'interès negatius ja no és ci...Cinquanta anys d'Star Trek: un futur amb tipus d'interès negatius ja no és ci...
Cinquanta anys d'Star Trek: un futur amb tipus d'interès negatius ja no és ci...Gerard Alba
 
Specialized Functions in Finance 201605
Specialized Functions in Finance 201605Specialized Functions in Finance 201605
Specialized Functions in Finance 201605Gerard Alba
 
ANDBANK Microfinance Fund
ANDBANK Microfinance FundANDBANK Microfinance Fund
ANDBANK Microfinance FundGerard Alba
 
2015 July 1st: launching of Sigma-Andbank European Equities for Israel investors
2015 July 1st: launching of Sigma-Andbank European Equities for Israel investors2015 July 1st: launching of Sigma-Andbank European Equities for Israel investors
2015 July 1st: launching of Sigma-Andbank European Equities for Israel investorsGerard Alba
 
Plan pensiones Andbank
Plan pensiones AndbankPlan pensiones Andbank
Plan pensiones AndbankGerard Alba
 

More from Gerard Alba (20)

TV2 - OOAD Case Study- Flight Systems.pdf
TV2 - OOAD Case Study- Flight Systems.pdfTV2 - OOAD Case Study- Flight Systems.pdf
TV2 - OOAD Case Study- Flight Systems.pdf
 
Module3 - Object Oriented Analysis & Functional Model.pdf
Module3 - Object Oriented Analysis & Functional Model.pdfModule3 - Object Oriented Analysis & Functional Model.pdf
Module3 - Object Oriented Analysis & Functional Model.pdf
 
Aprendizaje automático I - Tema 6 Aprendizaje Automático K-Means.pdf
Aprendizaje automático I - Tema 6 Aprendizaje Automático K-Means.pdfAprendizaje automático I - Tema 6 Aprendizaje Automático K-Means.pdf
Aprendizaje automático I - Tema 6 Aprendizaje Automático K-Means.pdf
 
Aprendizaje automático I - Tema 5 Aprendizaje Automático No-Supervisado.pdf
Aprendizaje automático I - Tema 5 Aprendizaje Automático No-Supervisado.pdfAprendizaje automático I - Tema 5 Aprendizaje Automático No-Supervisado.pdf
Aprendizaje automático I - Tema 5 Aprendizaje Automático No-Supervisado.pdf
 
Aprendizaje automático I - Sesión 4 Árboles de Decisión.pdf
Aprendizaje automático I - Sesión 4 Árboles de Decisión.pdfAprendizaje automático I - Sesión 4 Árboles de Decisión.pdf
Aprendizaje automático I - Sesión 4 Árboles de Decisión.pdf
 
Aprendizaje automático I - Tema 3 Aprendizaje Automático Supervisado.pdf
Aprendizaje automático I - Tema 3 Aprendizaje Automático Supervisado.pdfAprendizaje automático I - Tema 3 Aprendizaje Automático Supervisado.pdf
Aprendizaje automático I - Tema 3 Aprendizaje Automático Supervisado.pdf
 
Aprendizaje automático I - Sesión 2 Caso Práctico.pdf
Aprendizaje automático I - Sesión 2 Caso Práctico.pdfAprendizaje automático I - Sesión 2 Caso Práctico.pdf
Aprendizaje automático I - Sesión 2 Caso Práctico.pdf
 
Aprendizaje automático I - Sesión 1 Intro.pdf
Aprendizaje automático I - Sesión 1 Intro.pdfAprendizaje automático I - Sesión 1 Intro.pdf
Aprendizaje automático I - Sesión 1 Intro.pdf
 
Algoritmos y Estructuras de Datos I - Sesión 1.pptx
Algoritmos y Estructuras de Datos I - Sesión 1.pptxAlgoritmos y Estructuras de Datos I - Sesión 1.pptx
Algoritmos y Estructuras de Datos I - Sesión 1.pptx
 
Master class Fintech
Master class FintechMaster class Fintech
Master class Fintech
 
Machine Learning en Inversiones 20210414
Machine Learning en Inversiones 20210414Machine Learning en Inversiones 20210414
Machine Learning en Inversiones 20210414
 
EFPA ESG Advisor - summary
EFPA ESG Advisor - summaryEFPA ESG Advisor - summary
EFPA ESG Advisor - summary
 
Gestión de Carteras Óptimas - Roboadvisors
Gestión de Carteras Óptimas - RoboadvisorsGestión de Carteras Óptimas - Roboadvisors
Gestión de Carteras Óptimas - Roboadvisors
 
Agenda lecture GA PETD digital transformation financial services 20190524
Agenda lecture GA PETD digital transformation financial services 20190524Agenda lecture GA PETD digital transformation financial services 20190524
Agenda lecture GA PETD digital transformation financial services 20190524
 
Machine Learning in Investment Management March 2018
Machine Learning in Investment Management March 2018Machine Learning in Investment Management March 2018
Machine Learning in Investment Management March 2018
 
Cinquanta anys d'Star Trek: un futur amb tipus d'interès negatius ja no és ci...
Cinquanta anys d'Star Trek: un futur amb tipus d'interès negatius ja no és ci...Cinquanta anys d'Star Trek: un futur amb tipus d'interès negatius ja no és ci...
Cinquanta anys d'Star Trek: un futur amb tipus d'interès negatius ja no és ci...
 
Specialized Functions in Finance 201605
Specialized Functions in Finance 201605Specialized Functions in Finance 201605
Specialized Functions in Finance 201605
 
ANDBANK Microfinance Fund
ANDBANK Microfinance FundANDBANK Microfinance Fund
ANDBANK Microfinance Fund
 
2015 July 1st: launching of Sigma-Andbank European Equities for Israel investors
2015 July 1st: launching of Sigma-Andbank European Equities for Israel investors2015 July 1st: launching of Sigma-Andbank European Equities for Israel investors
2015 July 1st: launching of Sigma-Andbank European Equities for Israel investors
 
Plan pensiones Andbank
Plan pensiones AndbankPlan pensiones Andbank
Plan pensiones Andbank
 

Recently uploaded

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 

Recently uploaded (20)

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 

Module1 - Introduction to Software Engineering.pdf

  • 1. Module 1: Introduction to Software Engineeering Software Engineering Computer Science Academic Year 2023/2024 Gerard Albà Soler 1
  • 2. Contents 1. What’s Software Engineering 2. Software Quality 3. The Software Process (Software Development Life Cycle) 4. Modeling techniques and Programming paradigms 5. Software Requirements
  • 3. 1. What’s Software Engineering • Motivation • Software Engineering definitions • What will we learn • References Module 1
  • 4. 1. What’s software engineering
  • 5. 1. What’s software engineering
  • 6. 1. What’s software engineering Sundar Pichai The Future: AI is reworking software engineering
  • 7. 1. What’s software engineering • More and more, individuals and the society rely on advanced software Systems. We need to be able to produce reliable and trustworthy systems, economically and quickly. • Use software engineering methods and techniques for software systems, rather than just write the programs as if it was a personal programming project. Importance of software
  • 8. 1. What’s software engineering • Software crisis was a term used in the early days of computer science. It was was coined by some attendees at the first NATO Software Engineering Conference in 1968 in Germany. - Projects running over-budget - Projects running over-time - Software was very inefficient - Software was of low quality - Software often did not meet requirements - Projects were unmanageable and code difficult to maintain Software crisis and the begining of Software Engineering
  • 9. 1. What’s software engineering E. Dijkstra in 1972’s Turing award lecture: “The major cause of the software crisis is that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem.”
  • 10. 1. What’s software engineering
  • 11. 1. What’s software engineering Question Answer What is software? Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market. What are the attributes of good software? Good software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable. What is software engineering? Software engineering is an engineering discipline that is concerned with all aspects of software production. What are the fundamental software engineering activities? Software specification, software development, software validation and software evolution. What is the difference between software engineering and computer science? Computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.
  • 12. 1. What’s software engineering • Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of System specification through to maintaining the System after it has gone into use. • Engineering discipline ü Using appropiate theories and methods to solve problems bearing in mind organizational and financial constraints. • All aspects of software production ü Not just technical process of development. Also project management and the development of tools, methods...to suport software production. ü Includes many aspects, some of them will not be covered in this introductory course: user interface, usability, database design, security...
  • 13. 1. What’s software engineering What will we learn? OOA/D UML notation Iterative development, agile and UP Principles, guidelines, patterns Requirement analysis
  • 14. 1. What’s software engineering • Analyse and Design before coding • Define the users and use cases for the System • Define a contract diagram that specificies the name, data assets, funcions and rules of execution • Use a finite state machine UML diagram • Design smart contracts in OP Solidity Case Study: Micropayment Dapp in Blockchain Web3
  • 15. 1. What’s software engineering Class diagram Sequence diagram
  • 16. 1. What’s software engineering https://youtu.be/kYCZPXSVvOQ?si=eAR4RaUxUraeueEV
  • 17. 1. What’s software engineering • Book References ü Software Engineering. A Practitioner’s approach. R. Pressman et al. Ed McGrawHill ü Software Engineering. I. Sommerville. Ed Addison-Wesley ü Applying UML and Patterns. An Introduction to Object-Oriented Analysis and Design and Iterative Development. C. Larman. Ed Prentice Hall ü Software Engineering at Google. T. Winter. Ed O’Reilly
  • 18. Contents 1. What’s Software Engineering 2. Software Quality 3. The Software Process 4. Modeling techniques and Programming paradigms 5. Software Requirements
  • 19. 2. Software Quality • Software crisis. Process, methods and tools • McCall’s Quality model • Quality Assurance
  • 20. 2. Software Quality • Software engineering is a set of processes, methods and tools used for obtaining reliable, reusable and efficient software that accomplishes specific goals. • By following established software engineering principles and techniques, the software can be developed with improved quality: fewer bugs and higher reliability. • Through this course, we will focus on the foundational (the processes) and technical (the methods) layers, but software engineering must always rest on an organizational commitment to quality.
  • 21. 2. Software Quality PROCESS METHODS TOOLS • The way we organise the activities for creating, using and maintaining software • It defines a framework • It guides the engineer through the necessary tasks to build software • Assist the engineer in modelling the software design: here we can use different diagrams, notations… • Principles and guidelines for a broad array of tasks that include communication, requirements analysis, design modeling, program construction, testing, and support. • Traditional Computer- Aided Software Egineering (CASE) tools provide support for processes and methods. • Currently, many integrated development environments (IDEs) provide comprehensive facilities for software development (ex UML from code)
  • 22. 2. Software Quality • Traditionally, a high-quality product is outlined in terms of its fitness of purpose. That is, a high-quality product will specifically be what the end- users need. • For code products (software), fitness of purpose isn’t a completely satisfactory definition of quality. In the most general sense, software quality can be defined as: An effective software process applied in a manner that creates a useful product that provides measurable value for those who produce it and those who use it.
  • 23. 2. Software Quality • Software quality factors of this model focus on three software product aspects: its operation characteristics, its ability to undergo change, and its adaptability to new environments. Mc Call’s Quality model
  • 24. 2. Software Quality Quality factor High-quality software includes several quality factors like the following Correctness Software is correct if completely different needs are properly enforced. Usability A software has smart usability if completely different users (i.e. knowledgeable and novice users) will simply invoke the functions of the product. Portability A software is claimed to be transportable, if it works in several package environments, in several machines, with other programs, etc. Maintainability A software is reparable, if errors may be simply corrected as and once they show up, new functions may be simply added, and therefore the functionalities may be easily changed, etc. Efficiency The more efficient software is, the less it uses of CPU-time, memory, disk space, network bandwidth, and other resources. Reliability Software is more reliable if it has fewer failures. Reusability A software has smart reusability if different modules can be smoothly reused to develop new versions.
  • 25. 2. Software Quality • There are several software quality models (qualitative and quantitative) and standards (like ISO 9001). • But a Quality Management System is one of the the main methods used by organizations. Quality systems have increasingly evolved over time: • Initially, the function was to inspect the finished products to remove defective ones. • Then, the first product inspection task led to quality control. Thus, quality control aims at correcting the reasons for bugs and not just rejecting the products. • The next breakthrough was the development of quality assurance. If an organization's processes are proper and are followed rigorously, then the products will be of good quality. • Total quality management (TQM) advocates that the procedure followed by an organization must be continuously improved through process measurements. TQM aims at frequently process improvement.
  • 26. 2. Software Quality • Evolution: from product inspection to process assurance • Reference book: Software Engineering at Google, Ed O’Reilly
  • 28. Contents 1. What’s Software Engineering 2. Software Quality 3. The Software Process 4. Modeling techniques and Programming paradigms 5. Software Requirements
  • 29. 3. The Software Process • Software Development Life Cycle • Predictive and Adaptative methodologies • Waterfall • Prototype • Agile • Scrum • Unified Process (UP)
  • 30. 3. The Software Process • The Software Process, sometimes also called the Software Development Life Cycle is a framework for the activities, actions, and tasks required to build high-quality software. • A generic process framework: 1. Software specification: the functionality of the software and constraints on its operation must be defined. 2. Software design and implementation: the software to meet the specification must be produced. 3. Software validation: the software must be validated to ensure that it does what the customer wants. 4. Software evolution: must evolve to meet changing customer needs.
  • 31. 3. The Software Process • Short-term programming differ from producing code with a much longer expected life span • Imagine Google Search being stuck on a version of the initial OS from the 1990s..!!
  • 32. 3. The Software Process • Software development phases Planning Analysis Design Development Testing Deployment Maintenance
  • 33. 3. The Software Process • Additionally, those phases can follow a process flow, that describes how the framework activities and the actions and tasks that occur within each framework activity are organized with respect to sequence and time. We will discuss it later in more detail Linear Iterative Evolutionary Paral.lel
  • 34. 3. The Software Process • Plan-driven processes are processes where all of the process activities are planned in advance and progress is measured against this plan. • In agile processes, planning is incremental and it is easier to change the process to reflect changing customer requirements. • In practice, most practical processes include elements of both plan-driven and agile approaches. • There are no right or wrong software processes. Plan-driven vs Agile
  • 35. 3. The Software Process • First stage where the project is initiated • The team examines key aspects of the project to see if it’s doable or not • In this stage, it’s important to consider: ü Communication: make contact with stakeholder and discuss high-level requirements ü Business: the business value of the project. Why this project? Why this way? ü Economic: What’s the budget? Is it reasonable? ü Schedule: How many time can we work on it? It’s reasonable? ü Technical: Can we build it? It’s possible? ü Resources: What do we need? (tools, technology, people…) • At the end of this phase we may have deliverables (depending on the paradigm): cost plan, working plan, risk assessment plan, etc Planning
  • 36. 3. The Software Process • First Requirement gathering: relevant information is collected from the client, in order to know exactly what it needs to be done and start thinking how. • We are defining all the needs that the project will have to solve and what do we need to do it. Critical step due to the implications if there is a misunderstanding with the customer. • We can find two levels of definition here: • User requirements [close to the client]: “we want the user to buy in a secure manner” • Specification/Functional requirements [close to the tech team]: “activate login session once the customer pushes enter after introducing mail and password. If the session remains inactive for 60 seconds, delete the session” • The documentation after this phase will depend on the paradigm. For Use Cases driven development use cases textual definition is an additional deliverable. Analysis
  • 37. 3. The Software Process • How the system will achieve what is needed? • Requirements are translated into: “how will it be implemented?” • We produce plenty of design documents: ü Physical design: UI, UX, Data Design, etc ü Logical design: abstract representation of the system via modelling • This documents are usually submitted to be approved by the whole team or higher stakeholders of the project Design
  • 38. 3. The Software Process • In this phase, we also take decisions about code architecture. Software architecture is about breaking large systems into sub-systems: ü That are Independent with some business logic ü That can be integrated with other components ü That can be created separately • At the end of this phase, design system requirements are transformed into a detailed, software ready description ü Graphical mock-ups or wireframes ü Formal descriptions including UML diagrams • During design, we must avoid technology-specific specifications Design
  • 39. 3. The Software Process • This is the longest phase (and way more longer if previous steps are not well defined). • The team uses the design documents and diagrams to build the project correctly. • In addition to the working software deliverables, for this phase we generate: ü Unit tests for each one of the implemented modules ü Build scripts to compile and link software into executable components ü Code documentation inside the code ü Test cases or testing flow for the application Development
  • 40. 3. The Software Process • Testing is intended to show that a program does what it is intended to do and to discover program defects before it is put into use. When you test software, you execute a program using artificial data. You check the results of the test run for errors, anomalies, or information about the program’s non-functional attributes. • Two distinct goals: 1. Validation: To demonstrate to the developer and the customer that the software meets its requirements. “Are we building the right product?” 2. Verification: or defect testing. To discover situations in which the behavior of the software is incorrect, undesirable, or does not conform to its specification. These are a consequence of software defects. “Are we building the product right?” Testing
  • 41. 3. The Software Process • Traditional testing process, as used in plan-driven development. Test cases are specifications of the inputs to the test and the expected output from the system (the test results), plus a statement of what is being tested. Testing
  • 42. 3. The Software Process • Typically, a software system has to go through three stages of testing: 1. Development testing, where the system is tested during development to discover bugs and defects. System designers and programmers are likely to be involved in the testing process. 2. Release testing, where a separate testing team tests a complete version of the system before it is released to users. The aim of release testing is to check that the system meets the requirements of system stakeholders. 3. User testing, where users or potential users of a system test the system in their own environment. Acceptance testing is one type of user testing where the customer formally tests a system to decide if it should be accepted from the system supplier or if further development is required. Testing
  • 43. 3. The Software Process • Development testing is primarily a defect testing process, where the aim of testing is to discover bugs in the software. • During development, testing may be carried out at three levels of granularity: 1. Unit testing, where individual program units or object classes are tested. Should focus on testing the functionality of objects or methods. 2. Component testing, where several individual units are integrated to create composite components. Should focus on testing component interfaces. 3. System testing, where some or all of the components in a system are integrated and the system is tested as a whole. Should focus on testing component interactions. Testing
  • 44. 3. The Software Process https://engineering.fb.com/2018/05/02/developer-tools/sapienz-intelligent-automated-software-testing-at-scale/ Testing • Meta (Facebook) AI testing system
  • 45. 3. The Software Process https://youtu.be/v3Qxf1PG0fo?si=sZ2QYBiXkJiVB3xz Testing Quality Assurance
  • 46. 3. The Software Process • The SDLC deployment phase involves customer acceptance and releasing the software • Deployment and recovery plan must be ready before starting • Deployment plan must consider : ü Hardware and environment ü Database related activities ü Documentation for new software ü Training activities ü Third party software's Deployment
  • 47. 3. The Software Process • The Documentation is key in this phase, to support users and administrators ü Manual explaining how to use features and functions ü Installation manual or quick start guides • Development team leads with most knowledge about the system will remain involved to: ü Troubleshoot issues found in early deployment ü Assist in training and documentation ü Help transition to the new support team Maintenance
  • 48. 3. The Software Process • How to manage all this phases of the software development process, will depend on the methodology, and the chosen one is often related with the enterprise culture, way of working and project needs and goals. We have two big groups: • Predictive methodologies: • Customer has clear requirements • Once approved the requirements do not change • Development always follows the process: design —> develop —> test • Software is build in only one shot at the end • Adaptative methodologies: • Customer has an idea of what he wants to build • Development team builds the software by small chunks • We talk about iterations, and at the end of each one we receive customer feedback • The final product may not be the first idea, but it’s what the customer really wants Process methodologies (also called models or paradigms)
  • 49. 3. The Software Process Predictive Adaptative The predictive method is a Waterfall methodology Adaptive method is an Agile methodology This is a traditional approach to developing This is an iterative process of development Changes can not be made easily throughout the development of the project The process allows for easy changes during any stage of the process Testing can only be done at the implementation stage Testing can be done at any stage Clients are involved only during selected stages such as requirement, scope change, and implementation Clients are involved throughout different development stages Suitable for projects that are fully understood are less complex Suitable for less certain and complex projects The methodology is process-oriented The methodology is people-oriented The Predictive method can be implemented as an individual by a team The Adaptive method requires partnership or collaboration by all stakeholders
  • 50. 3. The Software Process
  • 51. 3. The Software Process Waterfall (Predictive methodologies)
  • 52. 3. The Software Process • There are separate identified phases in the waterfall model: ü Requirements analysis and definition ü System and software design ü Implementation and unit testing ü Integration and system testing ü Operation and maintenance • The main drawback is the difficulty of accommodating change after the process is underway. A phase has to be complete before moving onto the next. • Inflexible partitioning into distinct stages makes it difficult to respond to changing customer requirements. This model is only appropriate when the requirements are well-understood and changes will be fairly limited. But few business systems have stable requirements. • The waterfall model is mostly used for large systems engineering projects where a system is developed at several sites. The plan-driven nature of the waterfall model helps coordinate. Waterfall (Predictive methodologies)
  • 53. 3. The Software Process https://youtu.be/5RocT_OdQcA?si=87ucYP0RKUDdXeG2
  • 54. 3. The Software Process • In the waterfall model: • Feedback not obtained until testing phase . • That implies thinking that no errors were made while producing all design documents. • This increases dramatically the risk of project failure. • To overcome this issues, the prototype methodology was proposed. • The application will be build based on approved prototype. • A prototype it’s a fast build software that will allow the user to validate and establish requirements for the final system. A prototype is a working software that only contains the key features we want to try at a certain moment. Prototype (Adaptative methodologies)
  • 55. 3. The Software Process • Although problems can occur, prototyping can be an effective paradigm. • The key is to define the rules of the game at the beginning; that is, all stakeholders should agree that the prototype is built in part to serve as a mechanism for defining requirements. • It is often desirable to design a prototype so it can be evolved into the final product. The reality is developers may need to discard (at least in part) a prototype to better meet the evolving needs. Prototype (Adaptative methodologies)
  • 56. 3. The Software Process Incremental or Evolutionary (Adaptative methodologies) • The spiral model is an evolutionary software process model that couples the iterative nature of prototyping with the controlled and systematic aspects of the waterfall model.
  • 57. 3. The Software Process • Rapid development and delivery is now often the most important requirement for software systems ü Businesses operate in a fast –changing requirement and it is practically impossible to produce a set of stable software requirements. ü Software has to evolve quickly to reflect changing business needs. • Rapid software development ü Specification, design and implementation are inter-leaved. ü System is developed as a series of versions with stakeholders involved in version evaluation. Agile (Adaptative methodologies)
  • 58. 3. The Software Process • Dissatisfaction with the overheads involved in software design methods (of the 1980s and 1990s) led to the creation of agile methods. • These methods: ü Focus on the code rather than the design. ü Are based on an iterative approach. ü Are intended to deliver working software quickly and evolve to meet changing requirements. • The aim of agile methods is to reduce overheads in the software process (e.g. by limiting documentation) and to be able to respond quickly to changing requirements without excessive rework. Agile (Adaptative methodologies)
  • 59. 3. The Software Process https://agilemanifesto.org/
  • 60. 3. The Software Process • Dissatisfaction Agile (Adaptative methodologies) Principle Description Customer involvement Customers should be closely involved throughout the development process. Their role is provide and prioritize new system requirements and to evaluate the iterations of the system. Incremental delivery The software is developed in increments with the customer specifying the requirements to be included in each increment. People not process The skills of the development team should be recognized and exploited. Team members should be left to develop their own ways of working without prescriptive processes. Embrace change Expect the system requirements to change and so design the system to accommodate these changes. Maintain simplicity Focus on simplicity in both the software being developed and in the development process. Wherever possible, actively work to eliminate complexity from the system.
  • 61. 3. The Software Process • Product development where a software company is developing a small or medium-sized product for sale. • Custom system development within an organization, where there is a clear commitment from the customer to become involved in the development process and where there are not a lot of external rules and regulations that affect the software. • Because of their focus on small, tightly-integrated teams, there are problems in scaling agile methods to large systems. Agile (Adaptative methodologies)
  • 62. 3. The Software Process
  • 63. 3. The Software Process • Scrum it’s an agile methodology that iterates over sprints. • This sprints have a fixed duration, between 1 and 4 weeks. • The tasks for the project are created and added into a list called backlog. • In this backlog we can find big tasks, that needs to be more defined (epic stories) and smaller tasks ready to develop. • This backlog is permanently reviewed and prioritised by the Product Owner and estimated by the team. Scrum (Agile)
  • 64. 3. The Software Process
  • 65. 3. The Software Process https://youtu.be/9TycLR0TqFA?si=SPpKezU13yz8egYS
  • 66. 3. The Software Process • We can find different roles: • Product Owner: responsible for defining the product backlog, communicating the product vision, and making decisions about which features should be developed next to ensure the satisfaction of stakeholders and the success of the project. • Team: delivering incremental, usable increments of the product, through self- organization and collaboration, within the constraints of each sprint. In fact, the team decides what they will be working on on each sprint and they commit to it. • Scrum Master: helping the development team, removing obstacles to progress, and ensuring that the Scrum framework and Agile Principles are understood and followed. Scrum (Agile)
  • 67. 3. The Software Process • And meetings: • Sprint planning: the entire team gather around and start estimating tasks from the backlog, and selecting the ones that the team will work on during the sprint. After this meeting, all the team commits to the sprint backlog. • Daily meeting: each day, before starting work, the team meets, in a daily standup meeting, where each one of them answers three questions: what i’ve been working on? what i’ll be working on? is there any blocking point for me? The maximum duration is 15 minutes, and often a clock is used to not overpass this time. • Sprint review: the development team demonstrates the completed product increments to stakeholders, discusses the progress and lessons learned, and collaborates to plan future improvements and work for the next sprint. • Sprint retrospective: the development team thinks about the past sprint, identifies areas for improvement, and collaboratively agrees on actions to make those improvements, in order to continuously increase effectiveness and efficiency.
  • 68. 3. The Software Process • Extreme programming (XP) is a well-known agile method that integrates a range of good programming practices such as frequent releases of the software, continuous software improvement and customer participation in the development team. • Extreme Programming takes an ‘extreme’ approach to iterative development. ü New versions may be built several times per day. ü Increments are delivered to customers every 2 weeks. ü All tests must be run for every build and the build is only accepted if tests run successfully. Extreme programming XP (Agile)
  • 69. 3. The Software Process • Incremental development is supported through small, frequent system releases. • Customer involvement means full-time customer engagement with the team. • People not process through pair programming, collective ownership and a process that avoids long working hours. • Change supported through regular system releases. • Maintaining simplicity through constant refactoring of code. Extreme programming XP (Agile)
  • 70. 3. The Software Process Principle XP Description Incremental planning Requirements are recorded on story cards and the stories to be included in a release are determined by the time available and their relative priority. The developers break these stories into development ‘Tasks’. Small releases The minimal useful set of functionality that provides business value is developed first. Releases of the system are frequent and incrementally add. Simple design Enough design is carried out to meet the current requirements and no more. Test-first development An automated unit test framework is used to write tests for a new piece of functionality before that functionality itself is implemented. Refactoring All developers are expected to refactor the code continuously as soon as possible code improvements are found. This keeps the code simple and maintainable.
  • 71. 3. The Software Process Principle XP Description Pair programming Developers work in pairs, checking each other’s work and providing the support to always do a good job. Collective ownership The pairs of developers work on all areas of the system, so that no islands of expertise develop and all the developers take responsibility for all of the code. Anyone can change anything. Continuous integration As soon as the work on a task is complete, it is integrated into the whole system. After any such integration, all the unit tests in the system must pass. Sustainable pace Large amounts of overtime are not considered acceptable as the net effect is often to reduce code quality and medium term productivity. On-site customer A representative of the end-user of the system (the customer) should be available full time for the use of the XP team. In an extreme programming process, the customer is a member of the development team.
  • 72. 3. The Software Process UP (Adaptative methodologies) • The Unified Process (UP) is a process model that represents the development of the software as a four- phase iterative activity: inception, elaboration, construction, transition and production ü Inception establishes a business case for the system ü Elaboration defines the architecture ü Construction implements the system ü Transition deploys the system ü Production ongoing use of the software is monitored • Book Reference: “Applying UML and Patterns. An Introduction to Object-Oriented Analysis and Design and Iterative Development”. C Larman, Ed Prentice Hall
  • 73. 3. The Software Process • In some ways the Unified Process (UP) is an attempt to draw on the best features and characteristics of traditional software process models but characterize them in a way that implements many of the best principles of agile software development. • The Unified Process recognizes the importance of customer communication and streamlined methods for describing the customer’s view of a system (the use case). • It emphasizes the important role of software architecture and helps the architect focus on the right goals, such as understandability, reliance to future changes, and reuse. • It suggests a process flow that is iterative and incremental, providing the evolutionary feel that is essential in modern software development. UP (Adaptative methodologies)
  • 74. 3. The Software Process • The UML, the unified modeling language, was developed to support the UP process implementation. • UML contains a robust notation for the modeling and development of object-oriented systems and has became a de facto industry standard for modeling software of all types (see for example the Case Study: UML for Blockchain). • UML is used throughout this course to represent both requirements and design models. UP (Adaptative methodologies)
  • 75. 3. The Software Process • The inception phase of the UP is where customer communication and planning takes place. Fundamental business requirements are described through a set of preliminary use cases that describe which features and functions each major class of users desires. Planning identifies resources, assesses major risks, and defines a preliminary schedule for the software increments. • The elaboration phase encompasses the planning and modeling activities of the generic process model. Elaboration refines and expands the preliminary use cases and creates an architectural baseline that includes five different views of the software—the use case model, the analysis model, the design model, the implementation model, and the deployment model. UP (Unified Process)
  • 76. 3. The Software Process • The construction phase of the UP is the construction activity defined for the generic software process. All necessary and required features and functions for the software increment (i.e., the release) are then implemented in source code. As components are being implemented, unit tests are designed and executed for each. In addition, integration activities (component assembly and integration testing) are conducted. Use cases are used to derive a suite of acceptance tests that are executed prior to the initiation of the next UP phase. • The transition phase of the UP encompasses the latter stages of the generic construction activity and the first part of the generic deployment (delivery and feedback) activity. Software and supporting documentation is given to end users for beta testing, and user feedback reports both defects and necessary changes. At the conclusion of the transition phase, the software increment becomes a usable software release. UP (Unified Process)
  • 77. 3. The Software Process • The UP describes: ü Disciplines: a set of activities in one subject area (such as requirement analysis, design, deployment, etc) ü Artifacts: a general term for any work product: diagrams, models, code, web, database schema, text documents, etc • In this course, we will mainly focus on these three disciplines: Business modeling (the Domain model artifact), Requirements (the Use-Case model and Supplementary Specification) and Design (design artifacts to design software objects)
  • 78. Contents 1. What’s Software Engineering 2. Software Quality 3. The Software Process (Software Development Life Cycle) 4. Modeling techniques and Programming paradigms 5. Software Requirements
  • 79. 4. Modeling techniques and Paradigms • Unified Modelling Language (UML) • Programming Paradigms: Imperative and Declarative • Procedural • Object-Oriented Programming • Functional
  • 80. 4. Modeling techniques and Programming paradigms • Models are abstraction that help us to communicate what is important on the system and help to deal with complexity. • Modelling techniques are used to represent and visualise different aspects of software system: requirements, architecture, behaviour and data. • The goal of modelling is to help understand and communicate the system’s design and requirements, to facilitate its development and maintenance. • Techniques used for modeling will also depend on the programming paradigm. In this course, we will apply those techniques mainly to OOA/D. • The Unified Modelling Language (UML) is the most popular and successfull standard for modelling software products.
  • 81. 4. Modeling techniques and Programming paradigms • As we will see in the next Modules, some modelling techniques include: ü Use case: for functional requirements, interactions between actors and the system ü Class modelling: structure and relationships between classes and objects . ü State machine: to represent the behaviour of a system in response to events and inputs. ü Data modelling: to represent data structures, relationships and constraints of a system. ü Architecture: high level structure and relationships between components in a system. • In the phases of Analysis and Design in OOA/D, models will be build from different perspectives: ü Domain modelling: identify key concepts for a specific domain to solve a specific problem. ü Specification modelling: elements that compose the solution and high-level description of the services provided. ü Design modelling: describes the software itself, its behaviour to external events and the different responsibilities for each element of the system .
  • 82. 4. Modeling techniques and Programming paradigms • A programming paradigm is a style to write computer programs that defines the structure, organisation and nature of the code. • Sometimes, it is also used as a classification of programming languages based on their features. But most popular languages support multiple paradigms (C++, Python etc). Programming paradigms
  • 83. 4. Modeling techniques and Programming paradigms • In the Imperative style, the programmers instruct the machine How to perform a task by writing step-by-step instructions including variables, conditions, loops etc.). • Algorithms as a sequence of steps . • Often used synonymously: procedural programming (emphasizing the concept of using procedure calls(functions) to structure the programing modular fashion). • Object-Oriented Programming (OOP) is usually considered a subcategory. Imperative
  • 84. 4. Modeling techniques and Programming paradigms • Example: you want to search for an element in an array of numbers, you write all the instructions to perform the search such as taking input, iterating the array, checking if the element is found or not, returning the results, etc. Imperative
  • 85. 4. Modeling techniques and Programming paradigms • The imperative paradigm is further classified into two types: Procedural and Object Oriented. • Procedural oriented: procedural language breaks down a task into a collection of procedures (subroutines, functions) to perform a task. It maintains global variables to manage the state of the system. C, BASIC, etc. • Object-oriented (OOP) breaks down a task into objects that expose behaviour (method) and data (member or attribute), objects communicate with each other through message-passing techniques to accomplish a given task. C++, Java, C#, Kotlin etc belong to the object-oriented paradigm. Imperative
  • 86. 4. Modeling techniques and Programming paradigms Procedural • Example: linear search in C
  • 87. 4. Modeling techniques and Programming paradigms Object-Oriented • Example: linear search in Java
  • 88. 4. Modeling techniques and Programming paradigms • The declarative paradigm is classified into two types: Functional and Logical. • Functional: Functional programming contains only functions without mutating the state or data. It means that there are no global data/variables. Composing and applying function is the main driving force in this paradigm. A function can take another as an argument and return a new function. The first high-level functional programming language, developed in the 1950s, was LISP. This language laid the foundation for modern functional languages. • Logical: has its foundations in mathematical logic in which program statements express facts and rules. Rules are written as logical clauses. The engine infers the answer to the user’s query by using unification and backtracking techniques. The set of facts and rules forms a knowledge base, allowing the system to reason. Prolog, Datalog etc are examples of logical programming. Logical programming helps in major areas such as Natural language processing, Database management, Pattern matching, and Predictive analysis. Declarative
  • 89. 4. Modeling techniques and Programming paradigms Functional • Example: factorial program using LISP
  • 90. 4. Modeling techniques and Programming paradigms Logical • Example: Prolog program to infer relationship match of two people from their food interest knowledge base. • LP can be made available with libraries, e.g. For Python: Pyke (inspired by Prolog), pyDatalog (inspired by Datalog)
  • 91. Contents 1. What’s Software Engineering 2. Software Quality 3. The Software Process (Software Development Life Cycle) 4. Modeling techniques and Programming paradigms 5. Software Requirements
  • 92. 5. Software Requirements • Functional and Non-funcional • Software Requirements Specification
  • 93. 5. Software Requirements • Software Requirements: the process of establishing the services that the customer requires from a system and the constraints under which it operates and is developed. • The requirements themselves are the descriptions of the system services and constraints that are generated during the requirements engineering process. • It may range from a high-level abstract statement of a service or of a system constraint to a detailed mathematical functional specification.
  • 94. 5. Software Requirements • Functional: expresses the relation between input and output of the system and its processes • We answer this questions: what does the software need to do? What’s the problem we need to solve? What’s the necessary features and capabilities? • Non functional: defines the quality or restriction that we impose to a system to realise its function: ü Performance: how many users should the app support simultaneously? ü Law: what do we need to do in terms of data protection? ü Support: how the app should perform when there is an issue? ü Security, budget…
  • 95. 5. Software Requirements • First, perform a previous analysis or problem comprehension: understand user needs and understand the associated problematic. How? ü Ask users: meetings, surveys… ü Compare to other existing systems and select the equal parts ü Prototype building ü Brainstorming • And thereater, do an analysis or requirements specification: define what the client wants and generate a document (Software Requirement Specification or SRS) : https://www.utdallas.edu/~chung/RE/Presentations07S/Team_1_Doc/Documents/SRS4.0.doc • The software requirements document is the official statement of what is required of the system developers. Should include both a definition of user requirements and a specification of the system requirements. It is not a design document. As far as possible, it should set of What the system should do rather than How it should do it.
  • 96. 5. Software Requirements • In order to correctly do the SRS, it must be: ü Correct: the requirement are the ones the software must do (not “nice to have” features). ü Unambiguous: every statement has only one interpretation, and leaves no room to other. ü Complete: contain all significant requirements relating to functionality, performance, design constraints, attributes and external interfaces. ü Modifiable: structure and style may allow any changes done easily and completely while retaining the structure and style. ü Consistent: the document must agree with all other documentation, specially the higher- level one, usually made before. ü Verifiable: all statements must be verifiable by third persons and the team. ü Traceable: the origin of each requirement must be clear and facilitates the referencing of each requirement.
  • 97. 5. Software Requirements • We can classify requirements according to: ü Functionality: features of the system. ü Usability: everything that will affect the final user (easy to use, intuitive…). ü Reliability: availability, failure rate, predictability (downtime accepted, for example). ü Performance: speed, efficiency, scalability, resource consumption… ü Support: testability, configurability, extensibility…
  • 98. 5. Software Requirements • Many agile methods argue that producing a requirements document is a waste of time as requirements change so quickly. The document is therefore always out of date. • Methods such as XP use incremental requirements engineering and express requirements as ‘user stories’ (discussed in Chapter 3). • This is practical for business systems but problematic for systems that require a lot of pre-delivery analysis (e.g. critical systems) or systems developed by several teams.
  • 99. 5. Software Requirements SRS Chapter (1/2) Description Preface This should define the expected readership of the document and describe its version history, including a rationale for the creation of a new version and a summary of the changes made in each version. Introduction This should describe the need for the system. It should briefly describe the system’s functions and explain how it will work with other systems. It should also describe how the system fits into the overall business or strategic objectives of the organization commissioning the software. Glossary This should define the technical terms used. You should not make assumptions about the experience or expertise of the reader. User requirements definition Here, you describe the services provided for the user. The nonfunctional system requirements should also be described in this section. This description may use natural language, diagrams, or other notations that are understandable to customers. Product and process standards that must be followed should be specified. System architecture A high-level overview of the anticipated system architecture, showing the distribution of functions across system modules.
  • 100. 5. Software Requirements SRS Chapter (2/2) Description System requirements specification Describe the functional and nonfunctional requirements in more detail. Further detail may also be added to the nonfunctional requirements. Interfaces to other systems may be defined. System models This might include graphical system models showing the relationships between the system components and the system and its environment. Examples of possible models are object models, data-flow models, or semantic data models. System evolution This should describe the fundamental assumptions on which the system is based, and any anticipated changes due to hardware evolution, changing user needs, and so on. This section is useful for system designers as it may help them avoid design decisions that would constrain likely future changes to the system. Appendices These should provide detailed, specific information that is related to the application being developed; for example, hardware and database descriptions.