Lecture-1,2-Introduction To SE
Lecture-1,2-Introduction To SE
Introduction to Software
Engineering
This course introduces the different software process models by illustrating its phases and
principles of software engineering. Topics include:
Grading Policy: The minimum passing marks for each course is 50%
Missing Exam: No makeup exam will be given for final exam under any circumstance
Plagiarism Policy: Plagiarism, copying and any other dishonest behavior is prohibited by the rules and regulations of
CUI. Violators will face serious consequences
Course Learning Outcomes 4
References and Readings 5
Textbook
• Pressman, Roger S.; Maxim, Bruce; Software Engineering: A Practitioner's Approach 9th edition.
McGraw Hill Higher Education Press, 2020
Reference Books
• Sommerville, Ian. Engineering Software Products: An Introduction to Modern Software Engineering. Pearson. 1st
Edition. 2020. (ISBN13: 978-0135210642).
• Dooley, John F. F.; Software Development, Design and Coding: With Patterns, Debugging, Unit Testing, and
Refactoring 2nd ed. Edition. Apress, 2017 (ISBN13: 978-1484231524)
• Software Engineering with UML, Bhuyan Unhelkar, CRC Press, 2018.
What is Software? 6
The product that software professionals build and then support over the long term.
Software encompasses:
(1) instructions (computer programs) that when executed provide desired features,
function, and performance;
(2) data structures that enable the programs to adequately store and manipulate
information and
(3) documentation that describes the operation and use of the programs.
Software Engineering Definition 7
Generic products
Stand-alone systems that are marketed and sold to any customer who wishes to buy them.
Examples – PC software such as editing, graphics programs, project management tools; CAD software; software
for specific markets such as appointments systems for dentists.
Customized products
Software that is commissioned by a specific customer to meet their own needs.
Examples – embedded control systems, air traffic control software, traffic monitoring systems.
Why Software is Important? 9
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.
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 Good software should deliver the required functionality and performance to the
software? user and should be maintainable, dependable and usable.
What is software engineering? Software engineering is an engineering discipline that is concerned with all
aspects of software production.
What is the difference between software Computer science focuses on theory and fundamentals; software engineering is
engineering and computer science? concerned with the practicalities of developing and delivering useful software.
What is the difference between software System engineering is concerned with all aspects of computer-based systems
engineering and system engineering? development including hardware, software and process engineering. Software
engineering is part of this more general process.
Essential attributes of good software 12
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.
Software Engineering 13
A Layered Technology
tools
methods
process model
a “quality” focus
A process is a collection of activities, actions and tasks that are performed when some work product is
to be created. It is not a rigid prescription for how to build computer software. Rather, it is an
adaptable approach that enables the people doing the work to pick and choose the appropriate set of
work actions and tasks.
Purpose of process is to deliver software in a timely manner and with sufficient quality to satisfy those
who have sponsored its creation and those who will use it.
Five Activities of a Generic Process framework
15
Complement the five process framework activities and help team manage and control progress, quality, change, and risk.
Software project tracking and control: assess progress against the plan and take actions to maintain the schedule.
Risk management: assesses risks that may affect the outcome and quality.
Software quality assurance: defines and conduct activities to ensure quality.
Technical reviews: assesses work products to uncover and remove errors before going to the next activity.
Measurement: define and collects process, project, and product measures to ensure stakeholder’s needs are met.
Software configuration management: manage the effects of change throughout the software process.
Reusability management: defines criteria for work product reuse and establishes mechanism to achieve reusable
components.
Work product preparation and production: create work products such as models, documents, logs, forms and lists.
Understand the Problem 17
Who has a stake in the solution to the problem? That is, who are the stakeholders?
What are the unknowns? What data, functions, and features are required to properly solve the
problem?
Can the problem be compartmentalized? Is it possible to represent smaller problems that may
be easier to understand?
Can the problem be represented graphically? Can an analysis model be created?
Plan the Solution 18
Have you seen similar problems before? Are there patterns that are recognizable in a potential solution?
Is there existing software that implements the data, functions, and features that are required?
Has a similar problem been solved? If so, are elements of the solution reusable?
Can sub-problems be defined? If so, are solutions readily apparent for the sub-problems?
Can you represent a solution in a manner that leads to effective implementation? Can a design model be
created?
Does the solutions conform to the plan? Is source code traceable to the design model?
Is each component part of the solution provably correct? Has the design and code been reviewed, or
better, have correctness proofs been applied to algorithm?
Is it possible to test each component part of the solution? Has a reasonable testing strategy been
implemented?
Does the solution produce results that conform to the data, functions, and features that are required? Has the
software been validated against all stakeholder requirements?
What are the main phases in the
19
lifecycle of a software product?
Software Lifecycle Context (Waterfall
20
Model)
Requirements
Requirements
Design
Design
Implementation
Implementation
Integration
Integration
Validation
Validation
Deployment
Deployment
21
Requirements Phase
“What I need, not what I said I needed”
Specifications Phase
What the developer wants to know:
What does the product do?
Frequent problems with a spec:
ambiguous
What are the constraints on incomplete
the product? contradictory
Acceptance criteria Specifications testing
SQA
reviews
Design Phase 22
How does the product do what it is supposed to do?
Implementation
Code testing
Documentation
- desk checking
Tests
- test cases
- reviews
Integration Phase 24
Putting it all together
Composition order Testing
- does it meet the specs?
Integration - product testing by SQA
testing
interfaces - acceptance testing by customer
Maintenance Phase 25
Black-box testing
Knowing the specified function that a product has been designed to perform, tests can be
conducted that demonstrate each function is fully operational.
Implemented
Expressed in By
Structured By Realized By
Terms Of Verified
By
class...
class...
class... ?
class....?
Use Case Application Solution
Domain Subsystems Source Test
Model Domain
Objects Code Cases
Objects
Scientist vs Engineer 34
Computer Scientist
Proves theorems about algorithms, designs languages, defines knowledge representation schemes
Has infinite time…
Engineer
Develops a solution for an application-specific problem for a client
Uses computers & languages, tools, techniques and methods
Software Engineer
Works in multiple application domains
The Software Industry Today 35
Any Question?
Email me on : [email protected]