Software Engineering
Course’s Code: CSE 305
Introduction to Software Engineering
(Chapter 1)
Course Description
Software Engineering course is aimed at helping you build up an
understanding of how to develop a software system from scratch by guiding
them through the development process.
You will learn different stages of Software Development Life Cycle
(SDLC).
The course will introduce students to the different software
development process models, software requirements engineering process,
systems analysis and design as a problem-solving activity, building and
testing of software.
13 October 2021 2 Software Engineering Lec-1
Course Objectives
After finishing the course, you will achieve the following goals:
To acquire a thorough understanding of Software Engineering.
To use the techniques, skills, processes and modern engineering
tools necessary for software engineering practice.
To apply software engineering perspective through software design
and construction, requirements analysis, verification, and validation.
To work as an individual and as part of a team to develop and
deliver quality software.
13 October 2021 3 Software Engineering Lec-1
Course Learning Outcomes
CLO1: To acquire a thorough understanding of Software Engineering
CLO2: To acquire experiential learning opportunities to solve real-world pro
blems.
CLO3: To use the techniques, skills, processes and modern engineering tools
necessary for software engineering practice.
CLO4: To apply software engineering perspective through software design
and construction, requirements analysis, verification, and validation.
CLO5: To work as an individual and as part of a team to develop and deliver
quality software.
CLO6: To achieve a sense of professionalism.
CLO7: To train and improve self-study ability
13 October 2021 4 Software Engineering Lec-1
Books and teaching materials
[1]. Roger S. Pressman, Bruce R. Maxim (2015). Software Engineering :
A Practitioner’s Approach. (Software Engineering). McGraw-Hill Education:
New York, NY.
[2]. Ian Sommervill (2016). Software Engineering. (Software Engineering).
Pearson: Boston.
13 October 2021 5 Software Engineering Lec-1
EVALUATION
Type Content Method Weights
Regular (1) Practice and Theory Assignments 25%
Assesment
Summary (2) Project Presentation Group 25%
Presentation
(3) Final Examination Practical Test 50%
on Machine in
90’
Total: 100%
13 October 2021 6 Software Engineering Lec-1
SCHEDULE
Week 1: Chapter 1. Introduction to Software Engineering:
Definition of Software Engineering Discipline, The Software Process, Software
Engineering Practice, Chapter 2. Software Process Models: Prescriptive Process
Models
Week 2: Chapter 2. Software Process Models: Specialized Process Models, The
Unified Process, Chapter 3. Agile Software Development: Agility and
Agile Process, Practice : Lab on process models and agile software development
Week 3: Chapter 3. Agile Software Development: Extreme Programming,
Scrum, Chapter 4. Requirements Engineering: Functional and
Non-Functional Requirements, Requirements Engineering Processes
Practice : Lab on Requirements Engineering – Part-I
Week 4: Chapter 4. Requirements Engineering: Requirements elicitation and
analysis, Requirements specification, Requirements validation, Requirements
change, Practice : Lab on Requirements Engineering –Part-II
13 October 2021 7 Software Engineering Lec-1
SCHEDULE
Week 5: Chapter 5. System Modelling: Context models, Interaction models,
Structural models, Behavioral models, Software Architecture
Practice : Lab on Software Design and Implementation – Part-I
Week 6: Chapter 6. Software Design: Design Concepts, Object-oriented
Design Concepts, Data/Class Design elements, Interface Design Elements
Practice : Lab on Software Design and Implementation – Part-II
Week 7: Chapter 6. Software Design: Component-Level Design Elements,
Deployment-Level Design Elements, Chapter 7. Software Implementation and
Testing: Implementation Issues, Software Testing Strategies
Practice : Lab on Software Design and Implementation – Part-III
Week 8: Chapter 7. Software Implementation and Testing: Test-Driven
Development, Practice : Lab on software Testing Strategies and System
Building, Group Project Presentation.
Week 9/10/11: Final Exam
13 October 2021 8 Software Engineering Lec-1
COURSE POLICIES
- If a student is absent >=20%, then the student will not be allowed to ta
ke the final examination.
- The practical and theoretic exercises/assignments score is the average
of all practical and theoretic exercises/ assignments.
- Copying from others will carry minus 100% of the points .
13 October 2021 9 Software Engineering Lec-1
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.
More than just a program or code
Computer Instructions
Data Structures
Documentation
Models
Program
typically contains 50-500 lines of code
developed by one person
Software System
Software System is much larger, typically consisting of many programs
working together
needs a team of software engineers
need project management and organization
need a software life cycle
phased approach to software development
13 October 2021 10 Software Engineering Lec-1
Software Products
Generic products
Stand-alone systems that are marketed and sold to any customer
who wishes to buy them.
Examples – PC software such as editing, graphics programs, project
management tools; CAD software; software for specific markets
such as appointments systems for dentists.
Customized products
Software that is commissioned by a specific customer to meet their
own needs.
Examples – embedded control systems, air traffic control software,
traffic monitoring systems.
13 October 2021 11 Software Engineering Lec-1
Types of Software
System software: compilers, file management utilities
Application software: stand-alone programs for specific needs.
Engineering/scientific software: such as automotive stress analysis,
molecular biology, orbital dynamics etc.
Embedded software resides within a product or system. (key pad
control of a microwave oven, digital function of dashboard display in a
car)
Product-line software focus on a limited marketplace to address
mass consumer market. (word processing, graphics,
database management)
Web Apps (Web applications) network centric software.
AI software uses non-numerical algorithm to solve complex
problem. Robotics, expert system, pattern recognition game playing
13 October 2021 12 Software Engineering Lec-1
Types of Software
Open world computing—pervasive, ubiquitous, distributed
computing due to wireless networking. How to allow mobile devices,
personal computer, enterprise system to communicate across
vast network.
Open source—”free” source code open to the computing community
(a blessing, but also a potential curse!)
Also …
Data mining
Grid computing
Cognitive machines
Software for nanotechnologies
13 October 2021 13 Software Engineering Lec-1
Why Software is Important?
The economies of ALL developed nations are dependent on software.
More and more systems are software controlled
transportation, medical, telecommunications,
military, industrial, entertainment
As we know, software is quickly becoming an integral part of human
life as we see more and more automation and technical advancement.
software industry needs to continue to learn better ways to build software.
It were to become an integral part of human life
Software engineering is concerned with theories, methods and tools for
professional software development.
13 October 2021 14 Software Engineering Lec-1
Feature of Software
Software is developed or engineered
Not manufactured in the classical sense
Software doesn’t wear out but it deteriorates (due to change).
Software can be custom-built, and/or component based software
13 October 2021 15 Software Engineering Lec-1
What is Engineering?
Engineering is ...
The application of scientific principles and methods to the
construction of useful structures and machines
Examples:
Mechanical Engineering
Civil Engineering
Electrical Engineering
Chemical Engineering
13 October 2021 16 Software Engineering Lec-1
What is Software Engineering?
Engineering
Applied Science
Electrical Engineering
Applied Physics
Software Engineering
Applied Computer Science
Software Crisis
Software development projects were delivered late
Software were full of errors
Software did not satisfy requirements
Software was difficult to maintain
Software sizes and complexity have grown rapidly
over time
13 October 2021 17 Software Engineering Lec-1
What is Software Engineering?
IEEE (Institute of Electrical and Engineers) definition
“The application of a systematic, disciplined,
quantifiable approach to the development, operation and
maintenance of software; that is, the application of enginee
ring to software”
Software Engineering is the establishment and use of sound
engineering principles in order to obtain economically software
that is reliable and works efficiently on real machines.
13 October 2021 18 Software Engineering Lec-1
Why Learn about Software Engineering?
Software Engineering is one of our most complex things that humans have
ever done
Suppose some civil engineers think about building a Dam.
It's an incredible thing. It's an incredible amount of work.
But if they got halfway through building it, and they saw a huge
crack in the concrete, they'd be able to identify and fix that.
people would know it's not working.
The thing about software is that, it's intangible. We can't see it, we can't see
when we've made mistakes;
And that is why it's so important to learn about the software engineering
and follow it. It gives you the roadmap to success
13 October 2021 19 Software Engineering Lec-1
What Software Development Looks Like?
Before we get into a software development
process, let's take a look at a process that
you might be familiar with, like building a
house.
So, if you were to build a house,
you'll probably reach out to a builder and
tell about your needs, like, I need two
bedrooms, I need a bigger great room, I need
a room on the basement, and etc.
13 October 2021 20 Software Engineering Lec-1
What Software Development Looks Like?
Then, builder is going to go back, and going to create a floor plan. And
then, he's going to show it to you the floor plan, and you might make so
me adjustment.
13 October 2021 21 Software Engineering Lec-1
What Software Development Looks Like?
Once that is done, builder is going to create a detailed map or detailed
plan about where the foundation is going to be, where the electricity is
going to be, where the plugs are going to be, where the plumbing is
going to be, and then, they're going to start building the home
13 October 2021 22 Software Engineering Lec-1
What Software Development Looks Like?
And, as they are building the home, they're going to call the inspection
people to come, and inspect the house. For example, let's say the foundation
is done, they're going to get the foundation approved. When the plumbing is
done, they can get the plumbing approved. And so on.
13 October 2021 23 Software Engineering Lec-1
What Software Development Looks Like?
And once the house is ready, he's going to call you to say whether,
you like the house, Is it what you expected? And then, once you approve
it, then you're going to start, staying in that house or living in that house
and, of course, there comes the maintenance of the house.
13 October 2021 24 Software Engineering Lec-1
What Software Development Looks Like?
Let's see how software development is similar or different than this. So,
when you're building a software, similar to building a house,
you're looking at requirements or you're looking at what exactly you
need to build.
And during that time, you will do analysis of different options or
you might do a prototype and show it to your customer, and just say, "Is t
his what you're looking for?" But at the end of this phase, you have exact
ly what you're looking to build.
13 October 2021 25 Software Engineering Lec-1
What Software Development Looks Like?
Then comes the architects and the software developers. They're going to
design the system, they're going to architect the system, and say, what are
the different components that they need to build? And how they're going
to work together?
13 October 2021 26 Software Engineering Lec-1
What Software Development Looks Like?
Once the design is done, they're going to start coding, and start doing
unit testing. So, each of the sub-teams are going to start building their
components and test it
13 October 2021 27 Software Engineering Lec-1
What Software Development Looks Like?
Once all the components are ready, they're going to bring all of these
components together, and do integration testing or card verification. And,
they will do functional testing.
13 October 2021 28 Software Engineering Lec-1
What Software Development Looks Like?
And when the software is ready from the developer point of view, then
they're going to invite the user, and they will do a testing called, UAT, User
Acceptance Testing, in which a user says, "Yup, this is what I was looking
for." or "No, this is not what I was looking for."
13 October 2021 29 Software Engineering Lec-1
What Software Development Looks Like?
And then, once everything is done, then the software goes into production
, which means the user is going to start using, and they might ask for
some changes, or you may have to fix some defects, and so on. So, that's
called the operation and maintenance.
13 October 2021 30 Software Engineering Lec-1
What Software Development Looks Like?
So, as you can see, the process is quite similar to building a house
13 October 2021 31 Software Engineering Lec-1