2. Course Information
This is an introductory course in Software Engineering
Domain.
Learning Objectives
Students should have
• knowledge of software development processes.
• Understanding about systems modelling
• Learned development methodology, Principles and techniques
for the engineering of large software projects.
• Learned the Fundamental principles of formal specifications.
• Clear understanding about software testing approaches.
3. Course Outline
• Introduction to Software Engineering, Software Process, Process
models, Software Crisis, Software Engineering Phases
• Waterfall, Prototype, RAD, Incremental, Spiral
• Extreme Programming, RUP
• Requirements Engineering, Definitions, Levels of Requirements
• Functional and non-functional requirements, Importance of the
software requirement process, Importance of requirements, Role of
requirements,
• Risks from inadequate requirements process, Requirement statement
characteristics, Requirements specification characteristics
• Analysis Models: Data modelling, ERD, Use Case Model, State
Transition Model, Data Flow Model
4. Course Outline
• Software design attributes, Object-Oriented Analysis and Design,
Static and Dynamic Models, Class diagram, System sequence
diagram
• Interaction diagram, Activity diagram, Deployment diagram,
component diagram
• Software Architecture
• Programming techniques for industrial strength software, Industrial
strength software Do’s and don’ts in programming, Style guides
• Software Verification and Validation
• Phases of testing, Equivalence partitioning, Black box testing,
Structural or white box testing
• Software Inspection
• Software Configuration Management
• Project Evaluation
5. Grading
• First Sessional Test 10%
• Second Sessional Test 15%
• Quizzes/Assignments 25%
• Terminal Examination 50%
6. Rules
Slide
• No mobile phones
• Arrive on time!
• If you do not understand a point, raise your hand and ask me
to explain or contact during office hours
• No disruption!!!! No Misconduct!!!!
• 80% Attendance
• REMEMBER: Your first priority must be your studies
6
8. FAQs about software engineering
• What is software?
• What is software engineering?
• What is the difference between software engineering
and computer science?
• What is the difference between software engineering
and system engineering?
• What is a software process?
• What is a software process model?
10. What is software?(contd.)
We can define it as:
▫ Instructions (Computer Programs) that when executed
provide
• desired features
• functions and
• performance.
The data on which the program operates is also considered a
part of the software.
▫ Documents that describe the use of the Programs.
Computer programs and associated documentation such as
requirements, design models and user manuals.
11. Categories of Computer Software
• System Software
• Real-Time Software
• Engineering/scientific software
• Business Software
• Web -based software
• etc
12. 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, databases and
drawing packages.
• Customized products
▫ Software that is commissioned by a specific customer
to meet their own needs.
▫ Examples –systems written to support a particular
business process and air traffic control software.
12
13. 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,)
• Software engineering is concerned with theories, methods
and tools for professional software development.
14. Software Crisis
“Problems associated with software development “
• Resulted in software projects which were:
▫ Late – sometimes by many years
▫ Over budget
▫ Unreliable
▫ Difficult to maintain
▫ Poor in performance
• Required new techniques and methods to control the
complexity inherent in “LARGE” software systems.
15. Essential attributes of good software
15
Product characteristic Description
Maintainability Software should be written in such a way so that it can evolve to
meet the changing needs of customers.
Dependability and
security
Software dependability includes a range of characteristics
including reliability, security and safety.
Efficiency Software should not make wasteful use of system resources such
as memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilisation, etc.
Acceptability Software must be acceptable to the type of users for which it is
designed. This means that it must be understandable, usable and
compatible with other systems that they use.
16. Engineering
The science concerned with putting
scientific knowledge to practical use.
Webster’s Dictionary
17. Software Engineering
• The science concerned with putting
computer science knowledge to practical
use.
18. Software Engineering - IEEE
Software Engineering:
The application of a systematic, disciplined,
quantifiable approach to the development,
operation, and maintenance of software; that is,
the application of engineering to software.
19. Software Engineering
‘all aspects of software production’ Software
engineering is not just concerned with the technical
processes of software development but also with
activities such as software project management and
with the development of tools, methods and theories to
support software production.
-Sommerville-
21. FAQ about software engineering
Question Answer
What is software? Computer programs, data structures and associated
documentation. Software products may be developed for
a particular customer or may be developed for a general
market.
What are the attributes of good software? Good software should deliver the required functionality
and performance to the user and should be
maintainable, dependable and usable.
What is software engineering? Software engineering is an engineering discipline that is
21
concerned with all aspects of software production.
What is the difference between software
engineering and computer science?
Computer science focuses on theory and fundamentals;
software engineering is concerned with the practicalities
of developing and delivering useful software.
What is the difference between software
engineering and system engineering?
System engineering is concerned with all aspects of
computer-based systems development including
hardware, software and process engineering. Software
engineering is part of this more general process.
22. Essential attributes of good software
22
Product characteristic Description
Maintainability Software should be written in such a way so that it can evolve to
meet the changing needs of customers. This is a critical attribute
because software change is an inevitable requirement of a
changing business environment.
Dependability and
security
Software dependability includes a range of characteristics
including reliability, security and safety. Dependable software
should not cause physical or economic damage in the event of
system failure. Malicious users should not be able to access or
damage the system.
Efficiency Software should not make wasteful use of system resources such
as memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilisation, etc.
Acceptability Software must be acceptable to the type of users for which it is
designed. This means that it must be understandable, usable and
compatible with other systems that they use.
23. What is a software process?
• A set of activities whose goal is the development or evolution
of software.
• Generic activities in all software processes are:
▫ Specification - what the system should do and its
development constraints
▫ Development - production of the software system
▫ Validation - checking that the software is what the customer
wants
▫ Evolution - changing the software in response to changing
demands.
24. What is a software process model?
• A simplified representation of a software process, presented
from a specific perspective.
• Examples of process perspectives are
▫ Workflow perspective - sequence of activities;
▫ Data-flow perspective - information flow;
▫ Role/action perspective - who does what.
• Generic process models
▫ Waterfall;
▫ Iterative development;
▫ Component-based software engineering.
25. Chapter 1 Introduction
Key points
• Software engineering is an engineering discipline that is
concerned with all aspects of software production.
• Essential software product attributes are maintainability,
dependability and security, efficiency and acceptability.
• The high-level activities of specification, development,
validation and evolution are part of all software
processes.
• The fundamental notions of software engineering are
universally applicable to all types of system development.
25
26. Chapter 1 Introduction
Key points
• There are many different types of system and each
requires appropriate software engineering tools and
techniques for their development.
• The fundamental ideas of software engineering are
applicable to all types of software system.
26