KEMBAR78
Software Engineering Course Guide | PDF | System | Software
0% found this document useful (0 votes)
24 views51 pages

Software Engineering Course Guide

Uploaded by

chamikanimnajith
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views51 pages

Software Engineering Course Guide

Uploaded by

chamikanimnajith
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 51

University

University of Kelaniya,ofSriKelaniya
Lanka

Kesavan Selvarajah
BSc (UOK), MSc (Reading, UCSC)
Temporary Lecturer

Software Engineering Department

Faculty of Computing and Technology


skesa231@kln.ac.lk
<Your Department Name>, <Your Faculty Name>, University of Kelaniya – Sri Lanka
Software Engineering
CSCI 21042

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty ofofComputing
Kelaniya – Sri Lanka
and Technology, University of Kelaniya - Sri Lanka
Course Overview
• Course Code: CSCI 21042
• Course Name: Software Engineering
• Credit Value: 2
• Theory: 30 hours
• Independent Learning: 70 hours

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty ofofComputing
Kelaniya – Sri Lanka
and Technology, University of Kelaniya - Sri Lanka
Intended Learning Outcomes
• Describe the principles behind software engineering processes
and the strengths and weaknesses of various software
processes.
• Prepare simple analyses, designs, implementations, and test
suites for small systems.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty ofofComputing
Kelaniya – Sri Lanka
and Technology, University of Kelaniya - Sri Lanka
Assessment Strategy
• Continuous Assessment 40%
• Mid-term examination: 20%
• Group Project: 20%

• Final Assessment 60%


• Theory: 60%

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty ofofComputing
Kelaniya – Sri Lanka
and Technology, University of Kelaniya - Sri Lanka
References/Reading Materials
• Software Engineering 10th Edition by Ian Sommerville
• Software Engineering: A Practitioner's Approach 7th Edition by
Roger S. Pressman, Bruce Maxim
• Software Engineering: Principles and Practice 3rd Edition by
Hans van Vliet

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty ofofComputing
Kelaniya – Sri Lanka
and Technology, University of Kelaniya - Sri Lanka
What is Software?
• Software refers to the computer programs, procedures, and
possibly associated documentation and data pertaining to the
operation of a computer system.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty ofofComputing
Kelaniya – Sri Lanka
and Technology, University of Kelaniya - Sri Lanka
Why Software is important?
● Software is essential to run the modern world.
○ National infrastructures and utilities (Electricity, Water,
Telecommunication, etc)
○ Industrial manufacturing and distribution (Factories, Courier
services, etc)
○ Financial system (Banks, Stock market, etc)
○ Entertainment (Movies, TV, Music, Games, etc)

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty ofofComputing
Kelaniya – Sri Lanka
and Technology, University of Kelaniya - Sri Lanka
Types of Software products
● Generic software products
○ Developed and sold on the open market to anyone
○ Examples: Apps for mobile devices, software for PCs

● Customized software products


○ Developed for a particular customer.
○ A software contractor designs and implements the software
especially for that customer.
○ Examples: Control systems for electronic devices, systems
written to support a particular business process, and air traffic
control systems.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty ofofComputing
Kelaniya – Sri Lanka
and Technology, University of Kelaniya - Sri Lanka
Essential attributes of a
good software
● Acceptability
○ Software must be acceptable to the type of users for which
it is designed.
● Dependability and security
○ Good software is dependable and secure to prevent any
damage in case of system failure.
● Efficiency
○ Software should not make wasteful use of system resources.
● Maintainability
○ Software should be written in such a way that it can evolve
to meet the changing needs of customers.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty ofofComputing
Kelaniya – Sri Lanka
and Technology, University of Kelaniya - Sri Lanka
What is Software Engineering?

• Software Engineering is an engineering discipline that is


concerned with all aspects of software production from the
early stages of system specification to maintaining the system
after it has gone into use. It is concerned with the development
of high-quality software systems in a cost-effective manner.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty ofofComputing
Kelaniya – Sri Lanka
and Technology, University of Kelaniya - Sri Lanka
Why Software fails?
● Increasing system complexity
○ As the demands change,
■ Systems have to be built and delivered more quickly;
■ Larger, even more complex systems are required;
■ Systems need to have new capabilities that were
previously thought to be impossible;
■ New software engineering techniques have to be
developed to meet new the challenges

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty ofofComputing
Kelaniya – Sri Lanka
and Technology, University of Kelaniya - Sri Lanka
Why Software fails?
● Failure to use software engineering methods
○ It is fairly easy to write computer programs without using
software engineering methods and techniques.
○ Many companies have drifted into software development as
their products and services have evolved. They do not use
software engineering methods in their everyday work.
○ We need better software engineering education and
training to address this problem

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty ofofComputing
Kelaniya – Sri Lanka
and Technology, University of Kelaniya - Sri Lanka
What is Software Process?
● A Software Process is a sequence of activities that leads to the
production of a software product.
• Four fundamental activities are common to all software
processes.
• Software specification
• Software development
• Software validation
• Software evolution

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty ofofComputing
Kelaniya – Sri Lanka
and Technology, University of Kelaniya - Sri Lanka
General issues that affect
softwares
● Heterogeneity
○ Increasingly, systems are required to operate as distributed
systems across networks that include different types of
computer and mobile devices.
● Business and social change
○ Businesses and society are changing incredibly quickly as
emerging economies develop and new technologies
become available. They need to be able to change their
existing software and to rapidly develop new software.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty ofofComputing
Kelaniya – Sri Lanka
and Technology, University of Kelaniya - Sri Lanka
General issues that affect
softwares
● Security and trust
○ As software is intertwined with all aspects of our lives, it is
essential that we can trust that software.
● Scale
○ Software has to be developed across a very wide range of
scales, from very small embedded systems in portable or
wearable devices through to Internet-scale, cloud-based
systems that serve a global community.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty ofofComputing
Kelaniya – Sri Lanka
and Technology, University of Kelaniya - Sri Lanka
Types of Software Applications
● Stand-alone applications
○ These are application systems that run on a personal computer
or apps that run on a mobile device. They include all necessary
functionality and may not need to be connected to a network.
● Interactive transaction-based applications
○ These are applications that execute on a remote computer and
that are accessed by users from their own computers, phones, or
tablets.
● Embedded control systems
○ These are software control systems that control and manage
hardware devices

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Types of Software Applications
● Batch processing systems
○ These are business systems that are designed to process
data in large batches. They process large numbers of
individual inputs to create corresponding outputs.
● Entertainment systems
○ These are systems for personal use that are intended to
entertain the user.
● Systems for modeling and simulation
○ These are systems that are developed by scientists and
engineers to model physical processes or situations, which
include many separate, interacting objects.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Types of Software Applications
● Data collection and analysis systems
○ Data collection systems are systems that collect data from
their environment and send that data to other systems for
processing.
● Entertainment systems
○ These are systems for personal use that are intended to
entertain the user.
● Systems of systems
○ These are systems, used in enterprises and other large
organizations, that are composed of a number of other
software systems.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Software Engineering
fundamentals
● Systems should be developed using a managed and understood
development process. Of course, the specific process that you
should use depends on the type of software that you are
developing.
● Dependability and performance are important for all types of
system.
● Understanding and managing the software specification and
requirements (what the software should do) are important.
● We should reuse software that has already been developed
rather than write new software.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Internet Software Engineering
● Instead of writing software and deploying it on users' personal
computers, Web-based systems are deployed on a web server
and can be accessed using a web browser.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Internet Software Engineering
● Software reuse
○ Software reuse has become the dominant approach for
constructing web-based systems.
● Incremental and agile development
○ it is impractical to specify all the requirements for such
systems in advance. Web-based systems are always
developed and delivered incrementally.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Internet Software Engineering
● Service-oriented systems
○ Software may be implemented using service-oriented
software engineering, where the software components are
stand-alone web services.
● Rich interfaces
○ Newer interface development technologies such as React,
Angular, Vue.js, and Web Components have emerged, which
support the creation of highly interactive and dynamic
interfaces within a web browser.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Software Engineering ethics
● Software Engineering involves wider responsibilities than simply
the application of technical skills.
● Software Engineers must behave in an ethical and morally
responsible way if they are to be respected as a professional
engineer.
● Ethical behaviour is more than simply upholding the law, it
involves following set of principles that are morally correct.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Professional responsibilities
● Confidentiality
○ Engineers should normally respect the confidentiality of
their employers or clients regardless of whether or not a
formal confidentiality agreement has been signed.
● Competence
○ Engineers should not misrepresent their level of
competence. They should not knowingly accept work that is
outside their competence.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Professional responsibilities
● Intellectual property rights
○ Engineers should be aware of local laws governing the use
of intellectual property such as patents and copyright. They
should be careful to ensure that the intellectual property of
employers and clients is protected.
● Computer misuse
○ Engineers should not use their technical skills to misuse
other people’s computers. Computer misuse ranges from
relatively trivial (game playing on an employer’s machine) to
extremely serious (dissemination of viruses or other
malware).

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Software Process
● A software process is a set of related activities that leads to the
production of a software system.
● There is no universal software engineering method that is
applicable to all of them.
● The process used in a project depends on,
○ The type of software being developed
○ The requirements of the software customer
○ The skills of the people writing the software

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Software Process
● Although there are many different software processes, they all
must include, in some form, the four fundamental software
engineering activities.
○ Software specification: The functionality of the software and
constraints on its operation must be defined.
○ Software development: The software to meet the specification
must be produced.
○ Software validation: The software must be validated to ensure
that it does what the customer wants.
○ Software evolution: The software must evolve to meet changing
customer needs.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Software Process Model
● A Software Process Model (Software Development Life Cycle or
SDLC model) is a simplified representation of a software
process.
● It presents a description of a process from a particular
perspective. These descriptions may also include,
○ Products which are the outcomes of a process activity.
○ Roles which reflect the responsibilities of the people
involved in the process.
○ Pre- and postconditions which are conditions that must
hold before and after a process activity has been enacted or
a product produced.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Process activities
● The real Software processes are interleaved sequences of
technical, collaborative, and managerial activities with the
overall goal of
○ specifying,
○ designing,
○ implementing,
○ and testing a software system.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Software Specification
● The Software Specification or Requirements Engineering is the
process of understanding and defining what services are
required from the system and identifying the constraints on the
system’s operation and development.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Software Specification

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Main activities in the
Requirements engineering
● Requirements elicitation and analysis
○ This is the process of deriving the system requirements through
observation of existing systems, discussions with potential users
and procurers, task analysis, and so on.
● Requirements specification
○ This is the activity of translating the information gathered during
requirements analysis into a document that defines a set of
requirements.
● Requirements validation
○ This activity checks the requirements for realism, consistency,
and completeness.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Software design and
implementation
● Software design and implementation is the process of
developing an executable system for delivery to the customer.
○ Software design
■ Designing a software structure that realises the
specification
○ Implementation
■ Translating the structure into an executable program

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
A general model of the design
process

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Software design
● Software design is a description of the structure of the software
to be implemented, the data models and structures used by the
system, the interfaces between system components and,
sometimes, the algorithms used.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Software design activities
● Architectural design is where we identify the overall structure
of the system, the principal components (Subsystems/Modules),
their relationships, and how they are distributed.
● Database design is where we design the system data structures
and how these are to be represented in a database.
● Interface design is where we define the interfaces between
system components.
● Component selection and design is where we search for
reusable components and, if no suitable components are
available, design new software components.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Software implementation
● Software implementation is developing a program or program
or configuring an application system.
● Design and implementation are interleaved activities for most
types of systems.
● Debugging is the activity of finding program faults and
correcting these faults.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Software validation
● Software validation or, more generally, verification and
validation (V & V) is intended to show that a system both
conforms to its specification and meets the expectations of the
system customer.
● It involves checking and review processes and system testing.
● System testing involves executing the system with test cases
that are derived from the specification of the real data.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Testing stages
● Component testing
○ The components making up the system are tested by the
people developing the system independently. (functions or
object classes)
● System testing
○ Testing of the system as a whole.
● Customer testing
○ The system is tested by the system customer (or potential
customer) rather than with simulated test data.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Testing phases in a plan-driven
software process

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Software evolution
● Software is inherently flexible and can change.
● As requirements change through changing business
circumstances, the software that supports the business must
also evolve and change.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Coping with change
● Change is inevitable in all large software projects.
○ Business changes lead to new and changed system
requirements
○ New technologies open up new possibilities for improving
implementations
○ Changing platforms require application changes
● Change leads to rework, so the costs of change include both
rework as well as the cost of implementing new functionality.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Reducing the costs of rework
● Change anticipation
○ where the software process includes activities that can
anticipate or predict possible changes before significant
rework is required. (Eg: Prototypes)
● Change tolerance
○ where the process and software are designed so that
changes can be easily made to the system. (Eg: Increments)

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Coping with changing
requirements
● System prototyping
○ where a version of the system or part of the system is
developed quickly to check the customer’s requirements
and the feasibility of design decisions. This is a method of
change anticipation.
● Incremental delivery
○ where system increments are delivered to the customer for
comment and experimentation. This supports both change
avoidance and change tolerance.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Prototyping
● A Prototype is an early version of a software system that is used
to demonstrate concepts, try out design options.
● A software prototype can be used in a software development
process to help anticipate changes that may be required:
○ In the requirements engineering process
○ In the system design process

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Benefits of prototyping
● Improved system usability
● A closer match to user’s needs
● Improved design quality
● Improved maintainability
● Reduced development effort

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Process of prototype development

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Incremental delivery
● Rather than deliver the system as a single delivery, the
development and delivery is broken down into increments, with
each increments delivering part of the functionality.
● User requirements are prioritised and the highest priority
requirements are included in the early increments.

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Incremental delivery

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka
Thank you

<Your Department
Software Name>, <Your
Engineering Faculty Name>,
Department, University
Faculty of of Kelaniya – Sri and
Computing LankaTechnology, University of Kelaniya - Sri Lanka

You might also like