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?
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.
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
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++
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