SlideShare a Scribd company logo
1 of 23
Download to read offline
Software Engineering
CSE 2205
Md. Shafiuzzaman
Lecture #1
Today
• CSE 2205 educational objectives (and why)
• Overview of the course
• Quick overview of software engineering
• Why we study it
Who I am
• Md. Shafiuzzaman (md.shafiuzzaman.cse@just.edu.bd)
• Email is the best way to contact me (Put a relevant subject
of your email)
• Background
• Please ask questions during class the lectures should be
interactive
Software Engineering (SE) rumors and myths
• What is the worst thing that you’ve heard about SE?
• What is the best thing that you’ve heard about SE?
• Software Engineering is not rocket science and not
something to learn from a textbook
• Software Engineering is the use of common sense and
discipline
Educational Objective of CSE 2205
• Learn that building large software systems is not a mere
matter of programming
• My goal is to have you more than just intellectually know
it but really feel it and believe it
How to teach Software Engineering
• There is not a single right way to teach software
engineering
• My approach is to teach what I’ve learned from experience
and not simple textbook solutions
• All engineering, including software engineering, is
concerned with building useful artifacts under constraints
(some people even define engineering to be “design under
constraints”)
• If it weren’t for the constraints, there might be a single
right way to engineer software systems
How we will meet our educational objectives
• There is a big multi-person project
• Lectures and sections
– formal lectures
– group project days and oral presentations.
– quizzes and class tests
– Attend lectures is key to get the most out of the class because a
lot of the material is not covered in the readings
More on the class
• Project
– I will form groups depending on your interest and knowledge
– I will give you a high-level description, you refine it
– Strict milestones
– Weekly reports (email is fine)
– Not primarily graded on whether your program works
What is Software Engineering?
• The practical application of scientific knowledge to the
design and construction of computer programs and the
associated documentation required to develop, operate, and
maintain them [Boehm].
• The systematic approach to the development, operation,
maintenance, and retirement of software [IEEE].
• The establishment and use of sound engineering principles
(methods) in order to obtain economically software that is
reliable and works on real machines [Bauer].
• Multi-person construction of multi-version software
[Parnas].
• “Software from womb to tomb.”
Why study Software Engineering?
• Building software without discipline is crazy
• Software is critical to society
• Building a large complete software project is hard
• There is a perceived crisis in our ability to build software
• It’s fun!
• $$$$
Software is critical to society
• Economically important
• Essential for running most enterprises
• Key part of most complex systems
• Essential for designing many engineering products
• In many if not in most cases, the software is embedded in
the system you are using — you don’t see the software
Software is big
KLOC = 1000 lines of code; MLOC = 1,000,000 lines of code
Bar code scanners 10-50KLOC
4-speed transmissions 20KLOC
ATC ground system 130KLOC
Automatic teller machine 600KLOC
Call router 2.1MLOC
B-2 Stealth Bomber 3.5MLOC
Seawolf submarine combat 3.6MLOC
NT 4.0 10MLOC
NT 5.0
(NTFS alone)
60+LMLOC
(250K source lines or 100KLOC )
Software it big, so what?
• Delivered source lines per person
• Common estimates are that a person can deliver about
1000 source lines per year (including documentation,
scaffolding, etc.)
• Therefore, most complex systems require many people to
build
• This would be true even with an order of magnitude
increase in productivity
• Hence the critical need for coordination
• Brooks reminds us that people  time
“The Software Crisis”
• We’ve been in the midst of a crisis ever since the 1968
NATO meeting that christened software engineering
• “We are unable to produce or maintain high-quality
software at reasonable price and on schedule.”
• “Software systems are like cathedrals; first we build them
and they we pray. [Redwine]"
To some degree this is accurate
• We’ll look at some classic software failures later on
• But it’s not fully accurate
• Given the context, we do pretty well
• We surely can, should and must improve
• Some so-called software “failures” are not
– They are often management errors (the choice not to do something
that would have helped)
• In some areas, in particular safety-critical real-time
embedded systems, we may indeed have a looming crisis
Some “crisis” issues
• Relative cost of hardware/software
• Low productivity
• “Wrong” products
• Poor quality
• Constant maintenance
• Technology transfer is slow
Why is it hard?
• There is no single reason software engineering is hard—
it’s a “wicked problem”
• Lack of well-understood representations of software makes
customer and engineer interactions hard [Brooks]
• Still a relatively young field
• Software intangibility is deceptive
– Norman Augustine [Wulf]: “Software is like entropy. It is difficult
to grasp, weighs nothing, and obeys the second law of
thermodynamics; i.e., it always increases.” [Law XXIII]
As the size of the software system grows, the dominant
discipline changes (due to Stu Feldman)
Code Size (LOC) Dominant Discipline
103 Mathematics
104 Science
105 Engineering
106 Social Science
107 Politics
108 Legal?
Your CSE classes to date
• In CSE so far you have mostly implemented carefully
defined specifications
• In most cases, the central objective was to build an
implementation that satisfied specific speed and space
requirements
Software lifecycle
• A software engineering lifecycle model describes how one
might put structure on the software engineering activities
• The classic lifecycle model is the waterfall model (roughly
due to Royce in 1956), which is structured by a set of
activities and is inherently document-driven
Software lifecycle
Software lifecycle
• Limited feedback increases risk
• “You start at the top and it’s all downhill from there.”
[uncertain origin]
• The cost of fixing errors at later lifecycle phases is much
higher than at earlier stages
– Boehm’s 1976 data still hold — the differences are often an order
of magnitude
– Must increase feedback in the lifecycle to reduce these costs (and
other risks)
Text Books
• Software Engineering: A practitioner’s approach by Roger
S. Pressman

More Related Content

What's hot

LetsGrow Non-functional requirements
LetsGrow Non-functional requirementsLetsGrow Non-functional requirements
LetsGrow Non-functional requirements
Patrick Kalkman
 
How do Software Architects consider Non-Functional Requirements
How do Software Architects consider Non-Functional RequirementsHow do Software Architects consider Non-Functional Requirements
How do Software Architects consider Non-Functional Requirements
GESSI UPC
 

What's hot (20)

An introduction to software engineering
An introduction to software engineeringAn introduction to software engineering
An introduction to software engineering
 
Software System Engineering - Chapter 1
Software System Engineering - Chapter 1Software System Engineering - Chapter 1
Software System Engineering - Chapter 1
 
Lecture 1 introduction to software engineering 1
Lecture 1   introduction to software engineering 1Lecture 1   introduction to software engineering 1
Lecture 1 introduction to software engineering 1
 
Greate Introduction to Software Engineering @ Track IT Academy
Greate Introduction to Software Engineering @ Track IT AcademyGreate Introduction to Software Engineering @ Track IT Academy
Greate Introduction to Software Engineering @ Track IT Academy
 
software engineering
software engineeringsoftware engineering
software engineering
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Requirements Engineering
Requirements EngineeringRequirements Engineering
Requirements Engineering
 
Intoduction to software engineering part 2
Intoduction to software engineering part 2Intoduction to software engineering part 2
Intoduction to software engineering part 2
 
Software Engineering - Basics
Software Engineering - BasicsSoftware Engineering - Basics
Software Engineering - Basics
 
Unit 1 sepm the generic process model
Unit 1 sepm the generic process modelUnit 1 sepm the generic process model
Unit 1 sepm the generic process model
 
Non functional requirements. do we really care…?
Non functional requirements. do we really care…?Non functional requirements. do we really care…?
Non functional requirements. do we really care…?
 
LetsGrow Non-functional requirements
LetsGrow Non-functional requirementsLetsGrow Non-functional requirements
LetsGrow Non-functional requirements
 
Pressman ch-1-software
Pressman ch-1-softwarePressman ch-1-software
Pressman ch-1-software
 
Lesson 2 software processes
Lesson 2   software processesLesson 2   software processes
Lesson 2 software processes
 
Introduction to SDLC
Introduction to SDLC Introduction to SDLC
Introduction to SDLC
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
When agility meets software quality
When agility meets software qualityWhen agility meets software quality
When agility meets software quality
 
SOFTWARE ENGINEERING
SOFTWARE ENGINEERINGSOFTWARE ENGINEERING
SOFTWARE ENGINEERING
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
How do Software Architects consider Non-Functional Requirements
How do Software Architects consider Non-Functional RequirementsHow do Software Architects consider Non-Functional Requirements
How do Software Architects consider Non-Functional Requirements
 

Similar to Introduction to Software Engineering Course

Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering Methodologies
Damian T. Gordon
 
Excavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsExcavating the knowledge of our ancestors
Excavating the knowledge of our ancestors
Uwe Friedrichsen
 

Similar to Introduction to Software Engineering Course (20)

Software Engineering Lec 1-introduction
Software Engineering Lec 1-introductionSoftware Engineering Lec 1-introduction
Software Engineering Lec 1-introduction
 
What is the Future of Systems Engineering?
What is the Future of Systems Engineering?What is the Future of Systems Engineering?
What is the Future of Systems Engineering?
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 
An introduction to software engineering
An introduction to software engineeringAn introduction to software engineering
An introduction to software engineering
 
NISI Agile Software Architecture Slide Deck
NISI Agile Software Architecture Slide DeckNISI Agile Software Architecture Slide Deck
NISI Agile Software Architecture Slide Deck
 
SEOC 2004-2011
SEOC 2004-2011SEOC 2004-2011
SEOC 2004-2011
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Lec 1 Introduction to Software Engg.pptx
Lec 1 Introduction to Software Engg.pptxLec 1 Introduction to Software Engg.pptx
Lec 1 Introduction to Software Engg.pptx
 
Technical stories v1.2
Technical stories v1.2Technical stories v1.2
Technical stories v1.2
 
No silver bullet
No silver bulletNo silver bullet
No silver bullet
 
Lecture 01 Introduction to Software Engineering
Lecture 01 Introduction to Software EngineeringLecture 01 Introduction to Software Engineering
Lecture 01 Introduction to Software Engineering
 
The Path to Digital Engineering
The Path to Digital EngineeringThe Path to Digital Engineering
The Path to Digital Engineering
 
Software engineering the genesis
Software engineering  the genesisSoftware engineering  the genesis
Software engineering the genesis
 
What is software engineering
What is software engineeringWhat is software engineering
What is software engineering
 
Ch01
Ch01Ch01
Ch01
 
Lecture 1-intro-to-software-development
Lecture 1-intro-to-software-developmentLecture 1-intro-to-software-development
Lecture 1-intro-to-software-development
 
Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering Methodologies
 
Excavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsExcavating the knowledge of our ancestors
Excavating the knowledge of our ancestors
 
Introductie slides Agile Software Architecture
Introductie slides Agile Software ArchitectureIntroductie slides Agile Software Architecture
Introductie slides Agile Software Architecture
 
01_IT4557.pptx
01_IT4557.pptx01_IT4557.pptx
01_IT4557.pptx
 

More from Md. Shafiuzzaman Hira

More from Md. Shafiuzzaman Hira (20)

Introduction to Web development
Introduction to Web developmentIntroduction to Web development
Introduction to Web development
 
Software measurement and estimation
Software measurement and estimationSoftware measurement and estimation
Software measurement and estimation
 
Why do we test software?
Why do we test software?Why do we test software?
Why do we test software?
 
Software architectural patterns
Software architectural patternsSoftware architectural patterns
Software architectural patterns
 
Class based modeling
Class based modelingClass based modeling
Class based modeling
 
Class diagram
Class diagramClass diagram
Class diagram
 
State diagram
State diagramState diagram
State diagram
 
Use case Modeling
Use case ModelingUse case Modeling
Use case Modeling
 
User stories
User storiesUser stories
User stories
 
C files
C filesC files
C files
 
C pointers
C pointersC pointers
C pointers
 
C structures
C structuresC structures
C structures
 
How to Create Python scripts
How to Create Python scriptsHow to Create Python scripts
How to Create Python scripts
 
Regular expressions using Python
Regular expressions using PythonRegular expressions using Python
Regular expressions using Python
 
Password locker project
Password locker project Password locker project
Password locker project
 
Dictionaries in Python
Dictionaries in PythonDictionaries in Python
Dictionaries in Python
 
Lists in Python
Lists in PythonLists in Python
Lists in Python
 
Manipulating string with Python
Manipulating string with PythonManipulating string with Python
Manipulating string with Python
 
Introducing ict
Introducing ictIntroducing ict
Introducing ict
 
Function in Python
Function in PythonFunction in Python
Function in Python
 

Recently uploaded

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using Ballerina
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software Engineering
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational Performance
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 

Introduction to Software Engineering Course

  • 1. Software Engineering CSE 2205 Md. Shafiuzzaman Lecture #1
  • 2. Today • CSE 2205 educational objectives (and why) • Overview of the course • Quick overview of software engineering • Why we study it
  • 3. Who I am • Md. Shafiuzzaman (md.shafiuzzaman.cse@just.edu.bd) • Email is the best way to contact me (Put a relevant subject of your email) • Background • Please ask questions during class the lectures should be interactive
  • 4. Software Engineering (SE) rumors and myths • What is the worst thing that you’ve heard about SE? • What is the best thing that you’ve heard about SE? • Software Engineering is not rocket science and not something to learn from a textbook • Software Engineering is the use of common sense and discipline
  • 5. Educational Objective of CSE 2205 • Learn that building large software systems is not a mere matter of programming • My goal is to have you more than just intellectually know it but really feel it and believe it
  • 6. How to teach Software Engineering • There is not a single right way to teach software engineering • My approach is to teach what I’ve learned from experience and not simple textbook solutions • All engineering, including software engineering, is concerned with building useful artifacts under constraints (some people even define engineering to be “design under constraints”) • If it weren’t for the constraints, there might be a single right way to engineer software systems
  • 7. How we will meet our educational objectives • There is a big multi-person project • Lectures and sections – formal lectures – group project days and oral presentations. – quizzes and class tests – Attend lectures is key to get the most out of the class because a lot of the material is not covered in the readings
  • 8. More on the class • Project – I will form groups depending on your interest and knowledge – I will give you a high-level description, you refine it – Strict milestones – Weekly reports (email is fine) – Not primarily graded on whether your program works
  • 9. What is Software Engineering? • The practical application of scientific knowledge to the design and construction of computer programs and the associated documentation required to develop, operate, and maintain them [Boehm]. • The systematic approach to the development, operation, maintenance, and retirement of software [IEEE]. • The establishment and use of sound engineering principles (methods) in order to obtain economically software that is reliable and works on real machines [Bauer]. • Multi-person construction of multi-version software [Parnas]. • “Software from womb to tomb.”
  • 10. Why study Software Engineering? • Building software without discipline is crazy • Software is critical to society • Building a large complete software project is hard • There is a perceived crisis in our ability to build software • It’s fun! • $$$$
  • 11. Software is critical to society • Economically important • Essential for running most enterprises • Key part of most complex systems • Essential for designing many engineering products • In many if not in most cases, the software is embedded in the system you are using — you don’t see the software
  • 12. Software is big KLOC = 1000 lines of code; MLOC = 1,000,000 lines of code Bar code scanners 10-50KLOC 4-speed transmissions 20KLOC ATC ground system 130KLOC Automatic teller machine 600KLOC Call router 2.1MLOC B-2 Stealth Bomber 3.5MLOC Seawolf submarine combat 3.6MLOC NT 4.0 10MLOC NT 5.0 (NTFS alone) 60+LMLOC (250K source lines or 100KLOC )
  • 13. Software it big, so what? • Delivered source lines per person • Common estimates are that a person can deliver about 1000 source lines per year (including documentation, scaffolding, etc.) • Therefore, most complex systems require many people to build • This would be true even with an order of magnitude increase in productivity • Hence the critical need for coordination • Brooks reminds us that people  time
  • 14. “The Software Crisis” • We’ve been in the midst of a crisis ever since the 1968 NATO meeting that christened software engineering • “We are unable to produce or maintain high-quality software at reasonable price and on schedule.” • “Software systems are like cathedrals; first we build them and they we pray. [Redwine]"
  • 15. To some degree this is accurate • We’ll look at some classic software failures later on • But it’s not fully accurate • Given the context, we do pretty well • We surely can, should and must improve • Some so-called software “failures” are not – They are often management errors (the choice not to do something that would have helped) • In some areas, in particular safety-critical real-time embedded systems, we may indeed have a looming crisis
  • 16. Some “crisis” issues • Relative cost of hardware/software • Low productivity • “Wrong” products • Poor quality • Constant maintenance • Technology transfer is slow
  • 17. Why is it hard? • There is no single reason software engineering is hard— it’s a “wicked problem” • Lack of well-understood representations of software makes customer and engineer interactions hard [Brooks] • Still a relatively young field • Software intangibility is deceptive – Norman Augustine [Wulf]: “Software is like entropy. It is difficult to grasp, weighs nothing, and obeys the second law of thermodynamics; i.e., it always increases.” [Law XXIII]
  • 18. As the size of the software system grows, the dominant discipline changes (due to Stu Feldman) Code Size (LOC) Dominant Discipline 103 Mathematics 104 Science 105 Engineering 106 Social Science 107 Politics 108 Legal?
  • 19. Your CSE classes to date • In CSE so far you have mostly implemented carefully defined specifications • In most cases, the central objective was to build an implementation that satisfied specific speed and space requirements
  • 20. Software lifecycle • A software engineering lifecycle model describes how one might put structure on the software engineering activities • The classic lifecycle model is the waterfall model (roughly due to Royce in 1956), which is structured by a set of activities and is inherently document-driven
  • 22. Software lifecycle • Limited feedback increases risk • “You start at the top and it’s all downhill from there.” [uncertain origin] • The cost of fixing errors at later lifecycle phases is much higher than at earlier stages – Boehm’s 1976 data still hold — the differences are often an order of magnitude – Must increase feedback in the lifecycle to reduce these costs (and other risks)
  • 23. Text Books • Software Engineering: A practitioner’s approach by Roger S. Pressman