SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Software Engineering
Prof. Dr. Taymoor Nazmy
SE: The process of building a software product
Objectives of this course
• Appreciate Software Engineering:
– Build complex software systems in the context
of frequent change
• Understand how to
– produce a high quality software system within
time
– while dealing with complexity and change
• Acquire technical knowledge (main emphasis)
• Acquire managerial knowledge
•Introduction
•Software process/Life Cycle
•Software Project Management
•System Models
•Software Requirements Analysis
•Software Design Principles
•Verification and validation
•Software Testing Techniques
Software Quality Assurance
SE Main Topics
Recommended Course
Textbooks
• Sommerville I.
Software Engineering
6th or 7th Edition, Addison-Wesley, Harlow,
Essex,UK
• Stevens P. with Pooley, R.
Using UML: Software Engineering with
Objects and Components,
Addison-Wesley, Harlow, Essex, UK
• 
Engineering is the application of
scientific, economic, social, and
practical knowledge, in order to design,
build, and maintain structures,
machines, devices, systems, materials
and processes
Engineering definition
Introduction to Software
Engineering
– What is Software?
– What is Software Engineering?
– What Does Software Engineering Do?
– How is Software Engineered (Process)?
– Software Engineering vs. Computer Science?
IT Market
Hardware
products
Hardware
maintenance
Software Products
& Services
Processing Services
and Internet Services
Embedded
Software
Professional
Service
Software
Products
Enterprise
Solution
Packaged
Mass-Market
Software
What is software?
– Software consists of
• (1) instructions (computer programs) that when executed
provided desired function and performance,
• (2) data structures that enable the programs to adequately
manipulate information, and
• (3) documents that describe the operation and use of the
programs.
• Software products may be
• Custom
– For a specific customer
• Generic
– Sold on open market
Embedded
– Built into hardware
Stakeholders
Customers
Users
System owners
Developers
Analysts
Designers
Programmers, etc.
Variety of Software Products
Examples
Real time: air traffic control
Embedded systems: digital camera, GPS
Data processing: telephone billing, pensions
Information systems: web sites, digital libraries
Manufacturing: CAD / CAM
System software: operating systems, compilers
Communications: routers, mobile telephones
Offices: word processing, video conferences
Scientific: simulations, weather forecasting
Graphical: film making, design
etc., etc., etc., ....
• Usually small in size
• Author himself is sole user
• Single developer
• Lacks proper user interface
• Lacks proper
documentation
• Ad hoc development.
• Large
• Large number of
users
• Team of developers
• Well-designed interface
• Well documented & user-
manual prepared
• Systematic development
Programs Software Products
Confused with Programs and Software
Products
Program Development Life Cycle
Step 5
Finishing the Project
Step 4
Debugging
Step 3
Coding
Step 2
Making an Algorithm
Step 1
Describing the Problem
Software Programming ≠ Software Engineering
• Software programming: the process of translating a
problem from its physical environment into a language
that a computer can understand and obey. (Webster’s
New World Dictionary of Computer Terms)
– Single developer
– “Toy” applications
– Short lifespan
– Single or few stakeholders
• Architect = Developer = Manager = Tester = Customer = User
– One-of-a-kind systems
– Built from scratch
– Minimal maintenance
Software Programming ≠ Software Engineering
• Software engineering
– Teams of developers with multiple roles
– Complex systems
– Indefinite lifespan
– Numerous stakeholders
• Architect ≠ Developer ≠ Manager ≠ Tester ≠ Customer ≠ User
– System families
– Reuse to amortize costs
– Maintenance accounts for over 60% of overall
development costs
Source lines of code
• SLOC – Source lines of code (SLOC)
– Software metric that measures the
amount of code in a program
According to Gary McGraw:
• Win 95 – 15 Millions SLOC,
• Win 98 – 18 Millions SLOC,
• Win XP – 40 Millions SLOC,
> 300 megabytes.
• XP stands for (Extreme Programming )
SLOC Sample Sizes
• How many SLOC in…
-Hand-held bar code scanners
• 10,000 – 50,000 lines [Symbol Technologies, Inc.]
-Cellular Telephone
• 30,000 lines [Motorola]
– Commercial Airline Flight Controller
• 4 million [Boeing 777; Seattle Times Article]
– Telephone Switch
• 50 million [AT&T 5ESS]
Main causes of software failures
Customer needs are misunderstood or not fully
captured;
Customer requirements change too frequently;
Customers are not prepared to commit sufficient
resources to the project;
Customers do not want to cooperate with
developers;
Customers have unrealistic expectations;
The system is no longer in benefit to customers;
The developers may not be up to the task.
How Programs Are Usually Written (without SE)
Software Development Problems
• Software is expensive
– Cost per line of code increasing
(while hardware costs drop)
• Software is late (schedule overruns)
• Software cost more (cost overruns)
• Software is difficult to use
• Software is difficult to understand
• Software is missing features
• Software is too slow
Programmer vs SE
• Any one can write code to solve a problem but
only SE can produce code that is robust and
easy to understand and maintain and does it in
most efficient way.
• Engineering = Responsibility
• Bugs Can Kill!
Software Contributing to Real Failures
• 1990 AT&T long distance calls fail for 9 hours
– Wrong location for C break statement
• 1996 Ariane rocket explodes on launch
– Overflow converting 64-bit float to 16-bit integer
• 1999 Mars Climate Orbiter crashes on Mars
– Missing conversion of English units to metric units
SE deals with practical problems
• Complex software products (I)
• Processes (II)
• Methods/Models (III)
• People (IV)
CS is concerned with
• Theories
• Methods
Algorithms, data structures, programs, formal
grammars, abstract machines, complexity,
numerical methods…
SE vs Computer Science(CS)
History of SE
• “Early Days”
– 1950’s Programmers Wrote Programs
– Early 1960’s - Very Large Software Projects
Constructed by “Experts”
– Mid-Late 1960’s - Advent of Large Commercial
Software Applications
• Large Systems Involved Teams of Individuals
• Coining the Term “Software Engineering” SE
introduced first in 1968 – conference about
‘software crisis’ when the introduction of third-
generation computer hardware led to more
complex software systems than before;
•
• Software Engineering is an engineering
discipline which is concerned the
establishment and use of sound engineering
principles in order to obtain economically
software that is reliable and works efficiently
on real machines.
SE definitions
Software Engineering: the IEEE
CS/ACM CC 2001 Definition
• Software engineering is the discipline concerned
with the application of theory, knowledge, and
practice for effectively and efficiently building
software systems that satisfy the requirements of
users and customers.
• Software engineering is applicable to small,
medium, and large-scale systems. It encompasses
all phases of the life cycle of a software system. The
life cycle includes requirement analysis and
specification, design, construction, testing, and
operation and maintenance.
The Software Process
1. Requirements Analysis (answers “WHAT?”)
Specifying what the application must do
2. Design (answers “HOW?”)
Specifying what the parts will be, and how they will fit together
3. Implementation (alias “CODING”)
Writing the code
4. Testing (a type of VERIFICATION)
Executing the application with test data for input
5. Maintenance (REPAIR or ENHANCEMENT)
Repairing defects and adding capability
Software Process
Phases: Personal
Finance Example
 Requirements Analysis: Text produced
e.g., “ … The application shall display
the balance in the user’s bank account. …”
 Design: Diagrams and text
e.g., “ … The design will consist of the classes CheckingAccount, SavingsAccount,
…”
 Implementation: Source and object code
e.g., … class CheckingAccount{ double balance; … } …
 Testing: Test cases and test results
e.g., “… With test case: deposit $44.92 / deposit $32.00 / withdraw $101.45 / … the
balance was $2938.22, which is correct. …”
 Maintenance: Modified design, code, and text
e.g., Defect repair: “Application crashes when balance is $0 and attempt is made to
withdraw funds. …”
e.g., Enhancement: “Allow operation with Euro currency.”
The Software Process
• 1-Specification: Set out the requirements and
constraints on the system.
• 2-Design: Produce a model of the system.
• 3-Manufacture: Build the system.
• 4-Test: Check the system meets the required
specifications.
• 5-Install: Deliver the system to the customer
and ensure it is operational.
• 6-Maintain: Repair faults in the system as
they are discovered.
1-Software specifications
Ss refers to services requested (functional aspects) and
constraints (non-functional component) – called
requirements engineering
• Feasibility study
• Requirements elicitation and analysis
• Requirements specification
• Requirements validation
Lead to reports, models, documents
2-Software design and implementation
Software design process - a set of activities
transforming (iteratively) the set of
requirements into design products
• Abstract specification of each sub-system
• Component design
• Interface design
• Data structures
• Algorithm design
A set of reports, models (notations), documents is
generated
2-Software design and implementation
Implementation (programming) stage – transforms
the design model(s) into code
• Sometimes interleaved with design
• Tools used to (partially) convert into code
• Programming strategies: top-down, bottom-up
• Use of coding standards
• Quality aspects
• Debugging and testing
Software product
3-Software testing
validation/verification
The validation “Are we building the right product”
• The software should do what the user really requires.
Verification – “Are we building the product right”
• The software should conform to its specification.
This include different testing process:
• Unit testing
• Module testing
• Sub-system testing
• Systems testing
• Acceptance testing
4,5-Software installation/evolution
Software evolution process: changes made to a software
product after the system development (but not always) -
maintenance
• Changes to repair software faults
• Changes to adapt a software system to a different
operating environment
• Changes regarding system’s functionality
Increasingly maintenance is part of system’s development
(open source, generic frameworks etc)
Software Quality...
• Usability
– Users can learn it and fast and get their job done
easily
• Efficiency
– It doesn’t waste resources such as CPU time and
memory
• Reliability
– It does what it is required to do without failing
• Maintainability
– It can be easily changed
• Reusability
– Its parts can be used in other projects, so
reprogramming is not needed
• Software costs often dominate system
costs. The costs of software on a PC are
often greater than the hardware cost.
• Software costs more to maintain than it
does to develop.
• Software engineering is concerned with
cost-effective software development.
Software Costs
What are the costs of software
engineering?
• Roughly 60% of costs are development
costs, 40% are testing costs. For
custom software, evolution costs often exceed
development costs
• Costs vary depending on the type of
system being developed and the
requirements of system attributes such as
performance and system reliability
• Distribution of costs depends on the
development model that is used
What are the key challenges
facing software engineering
Software engineering in the 21st century
faces three key challenges:
• Legacy systems
– Old, valuable systems must be maintained and updated
• Heterogeneity
– Systems are distributed and include
a mix of hardware and software
• Delivery
– There is increasing pressure
for faster delivery of software
Review on some programming
languages
Programming Languages
• Selecting the right language:
– Space available
– Speed required
– Organizational resources available
– Type of target application
Visual
Basic
C / C++ Java
HTML
JavaScript
VBScript
ASP / JSP
Flash /
XML
Visual Basic
• Used to build
Windows applications
• Object-oriented
language
• VB.NET is the current
version
Sample Visual Basic
C and C++
• C
– Developed for system
programmers
– Combines high and low
level programming
features
– Modern operating
systems written in C
• C++
– Uses the same features
as C
– Includes object-oriented
design
Sample C
Sample C++
Java
• Object-oriented features
• Large set of existing classes
• Architecture neutral
• Java applets: Small Java-based programs
Web Applications
• HTML/XHTML
– Hypertext Markup Language/Extensible Hypertext
Markup Language
– Not a true programming language
– Uses special symbols (tags) to control how Web
pages are viewed
• Extensible Markup Language (XML)
– Enables computers to efficiently transfer information
between Web sites
Web Applications
• JavaScript
– Used to make Web pages more visually
appealing and interactive
• VBScript
– A subset of Visual Basic
– Used to add interactivity to Web pages
Web Applications
• Active Server Pages (ASP) and Java
Server Pages (JSP)
– Adds interactivity capabilities to Web pages
• Flash
– Enables elaborate animations to be created
for Web pages
Future of SE …
• Process
• Requirements engineering
• Reverse engineering
• Testing
• Maintenance and
Evolution
• Software architecture
• OO Modeling
• SE and Middleware
• Tools and environments
• Configuration
management
• Databases and SE
• SE Education
• Software analysis
• Formal specification
• Mathematical foundations
• Reliability and
Dependability
• Performance
• SE for Safety
• SE for security
• SE for mobility
• SE & the Internet
• Software economics
• Empirical studies of SE
• Software metrics
End of lecture

Weitere ähnliche Inhalte

Was ist angesagt?

CSC426 - Software Engineering Lecture Note
CSC426   - Software Engineering Lecture NoteCSC426   - Software Engineering Lecture Note
CSC426 - Software Engineering Lecture NoteBro Shola Ajayi
 
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 1IIUI
 
Se lect1 btech
Se lect1 btechSe lect1 btech
Se lect1 btechIIITA
 
Pressman ch-1-software
Pressman ch-1-softwarePressman ch-1-software
Pressman ch-1-softwareAlenaDion
 
Software Engineering - Basics
Software Engineering - BasicsSoftware Engineering - Basics
Software Engineering - BasicsPurvik Rana
 
Presentation (software engineering)
Presentation (software engineering)Presentation (software engineering)
Presentation (software engineering)Abdullah Al Shiam
 
A presentation on software crisis
A presentation on software crisisA presentation on software crisis
A presentation on software crisischandan sharma
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineeringMustafa Gamal
 
0273710133 pp01v2
0273710133 pp01v20273710133 pp01v2
0273710133 pp01v2Ravi Chandra
 
Software Engineering Challenges in building AI-based complex systems
Software Engineering Challenges in building AI-based complex systemsSoftware Engineering Challenges in building AI-based complex systems
Software Engineering Challenges in building AI-based complex systemsIvica Crnkovic
 
1 introduction (1)
1 introduction (1)1 introduction (1)
1 introduction (1)Ayesha Bhatti
 
Software systems engineering PRINCIPLES
Software systems engineering PRINCIPLESSoftware systems engineering PRINCIPLES
Software systems engineering PRINCIPLESIvano Malavolta
 
DISE - Introduction to Software Engineering
DISE - Introduction to Software EngineeringDISE - Introduction to Software Engineering
DISE - Introduction to Software EngineeringRasan Samarasinghe
 
Kenneth Delos Santos -SQA - 7 years - long
Kenneth Delos Santos -SQA - 7 years - longKenneth Delos Santos -SQA - 7 years - long
Kenneth Delos Santos -SQA - 7 years - longKenneth Lloyd Delos Santos
 
Software engineering
Software engineeringSoftware engineering
Software engineeringsweetysweety8
 

Was ist angesagt? (19)

SECh123
SECh123SECh123
SECh123
 
CSC426 - Software Engineering Lecture Note
CSC426   - Software Engineering Lecture NoteCSC426   - Software Engineering Lecture Note
CSC426 - Software Engineering Lecture Note
 
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
 
Se lect1 btech
Se lect1 btechSe lect1 btech
Se lect1 btech
 
Pressman ch-1-software
Pressman ch-1-softwarePressman ch-1-software
Pressman ch-1-software
 
Introduction Software engineering
Introduction   Software engineeringIntroduction   Software engineering
Introduction Software engineering
 
Software Engineering - Basics
Software Engineering - BasicsSoftware Engineering - Basics
Software Engineering - Basics
 
Presentation (software engineering)
Presentation (software engineering)Presentation (software engineering)
Presentation (software engineering)
 
A presentation on software crisis
A presentation on software crisisA presentation on software crisis
A presentation on software crisis
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineering
 
Ch1
Ch1Ch1
Ch1
 
0273710133 pp01v2
0273710133 pp01v20273710133 pp01v2
0273710133 pp01v2
 
Software Engineering Challenges in building AI-based complex systems
Software Engineering Challenges in building AI-based complex systemsSoftware Engineering Challenges in building AI-based complex systems
Software Engineering Challenges in building AI-based complex systems
 
1 introduction (1)
1 introduction (1)1 introduction (1)
1 introduction (1)
 
Software systems engineering PRINCIPLES
Software systems engineering PRINCIPLESSoftware systems engineering PRINCIPLES
Software systems engineering PRINCIPLES
 
DISE - Introduction to Software Engineering
DISE - Introduction to Software EngineeringDISE - Introduction to Software Engineering
DISE - Introduction to Software Engineering
 
Kenneth Delos Santos -SQA - 7 years - long
Kenneth Delos Santos -SQA - 7 years - longKenneth Delos Santos -SQA - 7 years - long
Kenneth Delos Santos -SQA - 7 years - long
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Seng 123 3-sdlc
Seng 123 3-sdlcSeng 123 3-sdlc
Seng 123 3-sdlc
 

Ähnlich wie Software Engineering Lec 1-introduction

Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software EngineeringMd.Nazmul Islam
 
Lecture 3 software_engineering
Lecture 3 software_engineeringLecture 3 software_engineering
Lecture 3 software_engineeringmoduledesign
 
Software Engineering an Introduction
Software Engineering an IntroductionSoftware Engineering an Introduction
Software Engineering an IntroductionAjit Nayak
 
Lecture 3 software_engineering
Lecture 3 software_engineeringLecture 3 software_engineering
Lecture 3 software_engineeringmoduledesign
 
ch1_introduction (1).ppt
ch1_introduction (1).pptch1_introduction (1).ppt
ch1_introduction (1).pptAleksandraArsic6
 
ch1_introduction (2).ppt
ch1_introduction (2).pptch1_introduction (2).ppt
ch1_introduction (2).pptAleksandraArsic6
 
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SE
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SESE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SE
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SEAbhishekTripathi709328
 
Software Engineering
Software EngineeringSoftware Engineering
Software EngineeringMrsRBoomadeviIT
 
Lecture 1 - Requirement Engineering.pptx
Lecture 1 - Requirement Engineering.pptxLecture 1 - Requirement Engineering.pptx
Lecture 1 - Requirement Engineering.pptxAbdulRaheem254960
 
SE_Module1new.ppt
SE_Module1new.pptSE_Module1new.ppt
SE_Module1new.pptADARSHN40
 
unit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbshunit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbshsagarjsicg
 
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
 

Ähnlich wie Software Engineering Lec 1-introduction (20)

Scope of software engineering
Scope of software engineeringScope of software engineering
Scope of software engineering
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Lecture 3 software_engineering
Lecture 3 software_engineeringLecture 3 software_engineering
Lecture 3 software_engineering
 
Software Engineering an Introduction
Software Engineering an IntroductionSoftware Engineering an Introduction
Software Engineering an Introduction
 
Lecture 3 software_engineering
Lecture 3 software_engineeringLecture 3 software_engineering
Lecture 3 software_engineering
 
SE Unit-1.pptx
SE Unit-1.pptxSE Unit-1.pptx
SE Unit-1.pptx
 
Cnpm bkdn
Cnpm bkdnCnpm bkdn
Cnpm bkdn
 
SE-Lecture1.ppt
SE-Lecture1.pptSE-Lecture1.ppt
SE-Lecture1.ppt
 
Week1.pptx
Week1.pptxWeek1.pptx
Week1.pptx
 
ch1_introduction (1).ppt
ch1_introduction (1).pptch1_introduction (1).ppt
ch1_introduction (1).ppt
 
ch1_introduction (2).ppt
ch1_introduction (2).pptch1_introduction (2).ppt
ch1_introduction (2).ppt
 
ch1_introduction.ppt
ch1_introduction.pptch1_introduction.ppt
ch1_introduction.ppt
 
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SE
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SESE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SE
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SE
 
Software Engineering
Software EngineeringSoftware Engineering
Software Engineering
 
Lecture 1 - Requirement Engineering.pptx
Lecture 1 - Requirement Engineering.pptxLecture 1 - Requirement Engineering.pptx
Lecture 1 - Requirement Engineering.pptx
 
SE_Module1new.ppt
SE_Module1new.pptSE_Module1new.ppt
SE_Module1new.ppt
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
unit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbshunit 1.pptx regasts sthatbabs shshsbsvsbsh
unit 1.pptx regasts sthatbabs shshsbsvsbsh
 
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
 

Mehr von Taymoor Nazmy

Cognitive systems
Cognitive  systemsCognitive  systems
Cognitive systemsTaymoor Nazmy
 
Cognitive systems
Cognitive  systemsCognitive  systems
Cognitive systemsTaymoor Nazmy
 
Artificial intelligent Lec 5-logic
Artificial intelligent Lec 5-logicArtificial intelligent Lec 5-logic
Artificial intelligent Lec 5-logicTaymoor Nazmy
 
Artificial intelligent Lec 3-ai chapter3-search
Artificial intelligent Lec 3-ai chapter3-searchArtificial intelligent Lec 3-ai chapter3-search
Artificial intelligent Lec 3-ai chapter3-searchTaymoor Nazmy
 
Artificial intelligent Lec 1-ai-introduction-
Artificial intelligent Lec 1-ai-introduction-Artificial intelligent Lec 1-ai-introduction-
Artificial intelligent Lec 1-ai-introduction-Taymoor Nazmy
 
Image processing 2
Image processing 2Image processing 2
Image processing 2Taymoor Nazmy
 
Image processing 1-lectures
Image processing  1-lecturesImage processing  1-lectures
Image processing 1-lecturesTaymoor Nazmy
 
Software Engineering Lec 10 -software testing--
Software Engineering Lec 10 -software testing--Software Engineering Lec 10 -software testing--
Software Engineering Lec 10 -software testing--Taymoor Nazmy
 
Software Engineering Lec 8-design-
Software Engineering Lec 8-design-Software Engineering Lec 8-design-
Software Engineering Lec 8-design-Taymoor Nazmy
 
Software Engineering Lec 7-uml-
Software Engineering Lec 7-uml-Software Engineering Lec 7-uml-
Software Engineering Lec 7-uml-Taymoor Nazmy
 
Software Engineering Lec5 oop-uml-i
Software Engineering Lec5 oop-uml-iSoftware Engineering Lec5 oop-uml-i
Software Engineering Lec5 oop-uml-iTaymoor Nazmy
 
Software Engineering Lec 4-requirments
Software Engineering Lec 4-requirmentsSoftware Engineering Lec 4-requirments
Software Engineering Lec 4-requirmentsTaymoor Nazmy
 
Software Engineering Lec 3-project managment
Software Engineering Lec 3-project managmentSoftware Engineering Lec 3-project managment
Software Engineering Lec 3-project managmentTaymoor Nazmy
 
Software Engineering Lec 2
Software Engineering Lec 2Software Engineering Lec 2
Software Engineering Lec 2Taymoor Nazmy
 
presentation skill
presentation skillpresentation skill
presentation skillTaymoor Nazmy
 

Mehr von Taymoor Nazmy (20)

Cognitive systems
Cognitive  systemsCognitive  systems
Cognitive systems
 
Cognitive systems
Cognitive  systemsCognitive  systems
Cognitive systems
 
Artificial intelligent Lec 5-logic
Artificial intelligent Lec 5-logicArtificial intelligent Lec 5-logic
Artificial intelligent Lec 5-logic
 
Artificial intelligent Lec 3-ai chapter3-search
Artificial intelligent Lec 3-ai chapter3-searchArtificial intelligent Lec 3-ai chapter3-search
Artificial intelligent Lec 3-ai chapter3-search
 
Lec 2-agents
Lec 2-agentsLec 2-agents
Lec 2-agents
 
Artificial intelligent Lec 1-ai-introduction-
Artificial intelligent Lec 1-ai-introduction-Artificial intelligent Lec 1-ai-introduction-
Artificial intelligent Lec 1-ai-introduction-
 
Image processing 2
Image processing 2Image processing 2
Image processing 2
 
Image processing 1-lectures
Image processing  1-lecturesImage processing  1-lectures
Image processing 1-lectures
 
Software Engineering Lec 10 -software testing--
Software Engineering Lec 10 -software testing--Software Engineering Lec 10 -software testing--
Software Engineering Lec 10 -software testing--
 
Software Engineering Lec 8-design-
Software Engineering Lec 8-design-Software Engineering Lec 8-design-
Software Engineering Lec 8-design-
 
Software Engineering Lec 7-uml-
Software Engineering Lec 7-uml-Software Engineering Lec 7-uml-
Software Engineering Lec 7-uml-
 
Software Engineering Lec5 oop-uml-i
Software Engineering Lec5 oop-uml-iSoftware Engineering Lec5 oop-uml-i
Software Engineering Lec5 oop-uml-i
 
Software Engineering Lec 4-requirments
Software Engineering Lec 4-requirmentsSoftware Engineering Lec 4-requirments
Software Engineering Lec 4-requirments
 
Software Engineering Lec 3-project managment
Software Engineering Lec 3-project managmentSoftware Engineering Lec 3-project managment
Software Engineering Lec 3-project managment
 
Software Engineering Lec 2
Software Engineering Lec 2Software Engineering Lec 2
Software Engineering Lec 2
 
Lec 6-
Lec 6-Lec 6-
Lec 6-
 
presentation skill
presentation skillpresentation skill
presentation skill
 
Lec 4
Lec 4Lec 4
Lec 4
 
Lec 3
Lec 3Lec 3
Lec 3
 
Lec 2
Lec 2Lec 2
Lec 2
 

KĂźrzlich hochgeladen

Judging the Relevance and worth of ideas part 2.pptx
Judging the Relevance  and worth of ideas part 2.pptxJudging the Relevance  and worth of ideas part 2.pptx
Judging the Relevance and worth of ideas part 2.pptxSherlyMaeNeri
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parentsnavabharathschool99
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxthorishapillay1
 
DATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersDATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersSabitha Banu
 
USPSÂŽ Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPSÂŽ Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPSÂŽ Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPSÂŽ Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPCeline George
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Celine George
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONHumphrey A BeĂąa
 
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfLike-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfMr Bounab Samir
 
Science 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxScience 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxMaryGraceBautista27
 
Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Celine George
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfTechSoup
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Jisc
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for BeginnersSabitha Banu
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Mark Reed
 
Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxDr.Ibrahim Hassaan
 

KĂźrzlich hochgeladen (20)

Judging the Relevance and worth of ideas part 2.pptx
Judging the Relevance  and worth of ideas part 2.pptxJudging the Relevance  and worth of ideas part 2.pptx
Judging the Relevance and worth of ideas part 2.pptx
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parents
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptx
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
DATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersDATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginners
 
USPSÂŽ Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPSÂŽ Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPSÂŽ Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPSÂŽ Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERP
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
 
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptxYOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
 
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfLike-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
 
Science 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxScience 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptx
 
Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for Beginners
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)
 
OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...
 
Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptx
 

Software Engineering Lec 1-introduction

  • 1. Software Engineering Prof. Dr. Taymoor Nazmy SE: The process of building a software product
  • 2. Objectives of this course • Appreciate Software Engineering: – Build complex software systems in the context of frequent change • Understand how to – produce a high quality software system within time – while dealing with complexity and change • Acquire technical knowledge (main emphasis) • Acquire managerial knowledge
  • 3. •Introduction •Software process/Life Cycle •Software Project Management •System Models •Software Requirements Analysis •Software Design Principles •Verification and validation •Software Testing Techniques Software Quality Assurance SE Main Topics
  • 4. Recommended Course Textbooks • Sommerville I. Software Engineering 6th or 7th Edition, Addison-Wesley, Harlow, Essex,UK • Stevens P. with Pooley, R. Using UML: Software Engineering with Objects and Components, Addison-Wesley, Harlow, Essex, UK • 
  • 5. Engineering is the application of scientific, economic, social, and practical knowledge, in order to design, build, and maintain structures, machines, devices, systems, materials and processes Engineering definition
  • 6. Introduction to Software Engineering – What is Software? – What is Software Engineering? – What Does Software Engineering Do? – How is Software Engineered (Process)? – Software Engineering vs. Computer Science?
  • 7. IT Market Hardware products Hardware maintenance Software Products & Services Processing Services and Internet Services Embedded Software Professional Service Software Products Enterprise Solution Packaged Mass-Market Software
  • 8. What is software? – Software consists of • (1) instructions (computer programs) that when executed provided desired function and performance, • (2) data structures that enable the programs to adequately manipulate information, and • (3) documents that describe the operation and use of the programs. • Software products may be • Custom – For a specific customer • Generic – Sold on open market Embedded – Built into hardware
  • 10. Variety of Software Products Examples Real time: air traffic control Embedded systems: digital camera, GPS Data processing: telephone billing, pensions Information systems: web sites, digital libraries Manufacturing: CAD / CAM System software: operating systems, compilers Communications: routers, mobile telephones Offices: word processing, video conferences Scientific: simulations, weather forecasting Graphical: film making, design etc., etc., etc., ....
  • 11. • Usually small in size • Author himself is sole user • Single developer • Lacks proper user interface • Lacks proper documentation • Ad hoc development. • Large • Large number of users • Team of developers • Well-designed interface • Well documented & user- manual prepared • Systematic development Programs Software Products Confused with Programs and Software Products
  • 12. Program Development Life Cycle Step 5 Finishing the Project Step 4 Debugging Step 3 Coding Step 2 Making an Algorithm Step 1 Describing the Problem
  • 13. Software Programming ≠ Software Engineering • Software programming: the process of translating a problem from its physical environment into a language that a computer can understand and obey. (Webster’s New World Dictionary of Computer Terms) – Single developer – “Toy” applications – Short lifespan – Single or few stakeholders • Architect = Developer = Manager = Tester = Customer = User – One-of-a-kind systems – Built from scratch – Minimal maintenance
  • 14. Software Programming ≠ Software Engineering • Software engineering – Teams of developers with multiple roles – Complex systems – Indefinite lifespan – Numerous stakeholders • Architect ≠ Developer ≠ Manager ≠ Tester ≠ Customer ≠ User – System families – Reuse to amortize costs – Maintenance accounts for over 60% of overall development costs
  • 15. Source lines of code • SLOC – Source lines of code (SLOC) – Software metric that measures the amount of code in a program According to Gary McGraw: • Win 95 – 15 Millions SLOC, • Win 98 – 18 Millions SLOC, • Win XP – 40 Millions SLOC, > 300 megabytes. • XP stands for (Extreme Programming )
  • 16. SLOC Sample Sizes • How many SLOC in… -Hand-held bar code scanners • 10,000 – 50,000 lines [Symbol Technologies, Inc.] -Cellular Telephone • 30,000 lines [Motorola] – Commercial Airline Flight Controller • 4 million [Boeing 777; Seattle Times Article] – Telephone Switch • 50 million [AT&T 5ESS]
  • 17. Main causes of software failures Customer needs are misunderstood or not fully captured; Customer requirements change too frequently; Customers are not prepared to commit sufficient resources to the project; Customers do not want to cooperate with developers; Customers have unrealistic expectations; The system is no longer in benefit to customers; The developers may not be up to the task.
  • 18. How Programs Are Usually Written (without SE)
  • 19. Software Development Problems • Software is expensive – Cost per line of code increasing (while hardware costs drop) • Software is late (schedule overruns) • Software cost more (cost overruns) • Software is difficult to use • Software is difficult to understand • Software is missing features • Software is too slow
  • 20. Programmer vs SE • Any one can write code to solve a problem but only SE can produce code that is robust and easy to understand and maintain and does it in most efficient way. • Engineering = Responsibility • Bugs Can Kill!
  • 21. Software Contributing to Real Failures • 1990 AT&T long distance calls fail for 9 hours – Wrong location for C break statement • 1996 Ariane rocket explodes on launch – Overflow converting 64-bit float to 16-bit integer • 1999 Mars Climate Orbiter crashes on Mars – Missing conversion of English units to metric units
  • 22. SE deals with practical problems • Complex software products (I) • Processes (II) • Methods/Models (III) • People (IV) CS is concerned with • Theories • Methods Algorithms, data structures, programs, formal grammars, abstract machines, complexity, numerical methods… SE vs Computer Science(CS)
  • 23. History of SE • “Early Days” – 1950’s Programmers Wrote Programs – Early 1960’s - Very Large Software Projects Constructed by “Experts” – Mid-Late 1960’s - Advent of Large Commercial Software Applications • Large Systems Involved Teams of Individuals • Coining the Term “Software Engineering” SE introduced first in 1968 – conference about ‘software crisis’ when the introduction of third- generation computer hardware led to more complex software systems than before; •
  • 24. • Software Engineering is an engineering discipline which is concerned the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. SE definitions
  • 25. Software Engineering: the IEEE CS/ACM CC 2001 Definition • Software engineering is the discipline concerned with the application of theory, knowledge, and practice for effectively and efficiently building software systems that satisfy the requirements of users and customers. • Software engineering is applicable to small, medium, and large-scale systems. It encompasses all phases of the life cycle of a software system. The life cycle includes requirement analysis and specification, design, construction, testing, and operation and maintenance.
  • 26. The Software Process 1. Requirements Analysis (answers “WHAT?”) Specifying what the application must do 2. Design (answers “HOW?”) Specifying what the parts will be, and how they will fit together 3. Implementation (alias “CODING”) Writing the code 4. Testing (a type of VERIFICATION) Executing the application with test data for input 5. Maintenance (REPAIR or ENHANCEMENT) Repairing defects and adding capability
  • 27. Software Process Phases: Personal Finance Example  Requirements Analysis: Text produced e.g., “ … The application shall display the balance in the user’s bank account. …”  Design: Diagrams and text e.g., “ … The design will consist of the classes CheckingAccount, SavingsAccount, …”  Implementation: Source and object code e.g., … class CheckingAccount{ double balance; … } …  Testing: Test cases and test results e.g., “… With test case: deposit $44.92 / deposit $32.00 / withdraw $101.45 / … the balance was $2938.22, which is correct. …”  Maintenance: Modified design, code, and text e.g., Defect repair: “Application crashes when balance is $0 and attempt is made to withdraw funds. …” e.g., Enhancement: “Allow operation with Euro currency.”
  • 28. The Software Process • 1-Specification: Set out the requirements and constraints on the system. • 2-Design: Produce a model of the system. • 3-Manufacture: Build the system. • 4-Test: Check the system meets the required specifications. • 5-Install: Deliver the system to the customer and ensure it is operational. • 6-Maintain: Repair faults in the system as they are discovered.
  • 29. 1-Software specifications Ss refers to services requested (functional aspects) and constraints (non-functional component) – called requirements engineering • Feasibility study • Requirements elicitation and analysis • Requirements specification • Requirements validation Lead to reports, models, documents
  • 30. 2-Software design and implementation Software design process - a set of activities transforming (iteratively) the set of requirements into design products • Abstract specification of each sub-system • Component design • Interface design • Data structures • Algorithm design A set of reports, models (notations), documents is generated
  • 31. 2-Software design and implementation Implementation (programming) stage – transforms the design model(s) into code • Sometimes interleaved with design • Tools used to (partially) convert into code • Programming strategies: top-down, bottom-up • Use of coding standards • Quality aspects • Debugging and testing Software product
  • 32. 3-Software testing validation/verification The validation “Are we building the right product” • The software should do what the user really requires. Verification – “Are we building the product right” • The software should conform to its specification. This include different testing process: • Unit testing • Module testing • Sub-system testing • Systems testing • Acceptance testing
  • 33. 4,5-Software installation/evolution Software evolution process: changes made to a software product after the system development (but not always) - maintenance • Changes to repair software faults • Changes to adapt a software system to a different operating environment • Changes regarding system’s functionality Increasingly maintenance is part of system’s development (open source, generic frameworks etc)
  • 34. Software Quality... • Usability – Users can learn it and fast and get their job done easily • Efficiency – It doesn’t waste resources such as CPU time and memory • Reliability – It does what it is required to do without failing • Maintainability – It can be easily changed • Reusability – Its parts can be used in other projects, so reprogramming is not needed
  • 35. • Software costs often dominate system costs. The costs of software on a PC are often greater than the hardware cost. • Software costs more to maintain than it does to develop. • Software engineering is concerned with cost-effective software development. Software Costs
  • 36. What are the costs of software engineering? • Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs • Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability • Distribution of costs depends on the development model that is used
  • 37. What are the key challenges facing software engineering Software engineering in the 21st century faces three key challenges: • Legacy systems – Old, valuable systems must be maintained and updated • Heterogeneity – Systems are distributed and include a mix of hardware and software • Delivery – There is increasing pressure for faster delivery of software
  • 38. Review on some programming languages
  • 39. Programming Languages • Selecting the right language: – Space available – Speed required – Organizational resources available – Type of target application Visual Basic C / C++ Java HTML JavaScript VBScript ASP / JSP Flash / XML
  • 40. Visual Basic • Used to build Windows applications • Object-oriented language • VB.NET is the current version Sample Visual Basic
  • 41. C and C++ • C – Developed for system programmers – Combines high and low level programming features – Modern operating systems written in C • C++ – Uses the same features as C – Includes object-oriented design Sample C Sample C++
  • 42. Java • Object-oriented features • Large set of existing classes • Architecture neutral • Java applets: Small Java-based programs
  • 43. Web Applications • HTML/XHTML – Hypertext Markup Language/Extensible Hypertext Markup Language – Not a true programming language – Uses special symbols (tags) to control how Web pages are viewed • Extensible Markup Language (XML) – Enables computers to efficiently transfer information between Web sites
  • 44. Web Applications • JavaScript – Used to make Web pages more visually appealing and interactive • VBScript – A subset of Visual Basic – Used to add interactivity to Web pages
  • 45. Web Applications • Active Server Pages (ASP) and Java Server Pages (JSP) – Adds interactivity capabilities to Web pages • Flash – Enables elaborate animations to be created for Web pages
  • 46. Future of SE … • Process • Requirements engineering • Reverse engineering • Testing • Maintenance and Evolution • Software architecture • OO Modeling • SE and Middleware • Tools and environments • Configuration management • Databases and SE • SE Education • Software analysis • Formal specification • Mathematical foundations • Reliability and Dependability • Performance • SE for Safety • SE for security • SE for mobility • SE & the Internet • Software economics • Empirical studies of SE • Software metrics