0% found this document useful (0 votes)
81 views36 pages

Lecture-1,2-Introduction To SE

This document provides an introduction to a course on software engineering. It discusses topics that will be covered including software process models, requirement engineering, software design, quality engineering, project management, and maintenance. It outlines the course assessment methods, which include exams, assignments, and a grading policy. Reading materials are also listed, with an emphasis on textbooks on software engineering.

Uploaded by

sp21-bcs-008
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
81 views36 pages

Lecture-1,2-Introduction To SE

This document provides an introduction to a course on software engineering. It discusses topics that will be covered including software process models, requirement engineering, software design, quality engineering, project management, and maintenance. It outlines the course assessment methods, which include exams, assignments, and a grading policy. Reading materials are also listed, with an emphasis on textbooks on software engineering.

Uploaded by

sp21-bcs-008
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 36

1

Introduction to Software
Engineering

Dr. JUNAID AKRAM


Assistant Professor, Department of Computer Science COMSATS (Lahore)
PhD (Software Engineering) Tsinghua University
PostDoc (Software Testing) University of Luxembourg
Course Info 2

This course introduces the different software process models by illustrating its phases and
principles of software engineering. Topics include:

• Overview of Software Engineering


• Software Process Models
• Requirement Engineering Concepts
• Software Design
• Design Modeling
• Software Quality Engineering
• Software Project Management
• Software Maintenance and Software Evolution
Course Assessment 3

Grading Policy: The minimum passing marks for each course is 50%

Attendance Policy: Every student must attend 80% of the lectures

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

[Software engineering is] the establishment and use of sound engineering


principles in order to obtain economically software that is reliable and works
efficiently on real machines.
Software products
8

 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.

More and more, individuals and society rely on


advanced software systems. We need to be able to
produce reliable and trustworthy systems
economically and quickly.
Software Applications 10

1. System software: such as compilers, editors, file management utilities


2. Application software: stand-alone programs for specific needs.
3. Engineering/scientific software: Characterized by “number crunching”algorithms. such as automotive
stress analysis, molecular biology, orbital dynamics etc
4. Embedded software resides within a product or system. (key pad control of a microwave oven, digital
function of dashboard display in a car)
5. Product-line software focus on a limited marketplace to address mass consumer market. (word
processing, graphics, database management)
6. WebApps (Web applications) network centric software. As web 2.0 emerges, more sophisticated
computing environments is supported integrated with remote database and business applications.
7. AI software uses algorithm to solve complex problem. Robotics, expert system, pattern recognition
game playing
FAQ about Software Engineering 11

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

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.
Software Engineering 13
A Layered Technology
tools

methods

process model

a “quality” focus

 Any engineering approach must rest on organizational commitment to quality which


fosters a continuous process improvement culture.
 Process layer as the foundation defines a framework with activities for effective delivery
of software engineering technology. Establish the context where products (model, data,
report, and forms) are produced, milestone are established, quality is ensured and change
is managed.
 Method provides technical how-to’s for building software. It encompasses many tasks
including communication, requirement analysis, design modeling, program construction,
testing and support.
Software Process 14

 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

 Communication: communicate with customer to understand objectives and gather


requirements
 Planning: creates a “map” defines the work by describing the tasks, risks and resources,
work products and work schedule.
 Modeling: Create a “sketch”, what it looks like architecturally, how the constituent parts fit
together and other characteristics.
 Construction: code generation and the testing.
 Deployment: Delivered to the customer who evaluates the products and provides feedback
based on the evaluation.
 These five framework activities can be used to all software development regardless of the
application domain, size of the project, complexity of the efforts etc, though the details will
be different in each case.
 For many software projects, these framework activities are applied iteratively as a project
progresses. Each iteration produces a software increment that provides a subset of overall
software features and functionality.
Umbrella Activities 16

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?

 Analysis of the problem  Developer must make design


decisions about:
 Structured analysis : decomposing
problem by how data is manipulated
 algorithms
(acted upon)  data representations
 Object-oriented analysis:  I/O interfaces
decomposing problem by how data is  data flow
represented  modules
 Design testing
 traceability
Implementation Phase 23

 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

• Why?  Maintenance testing


– operation
– documentation
 - changes
– turnover  regression testing
• Kinds of maintenance
– Corrective
– Adaptive
– Perfective
– Preventive
Need to Test 26

 Vulnerabilities always exist….

 Because the software often rushed to the market….

 And it was developed by people….

 And people do make mistakes….

 Which allow attackers to attack and compromise the systems….

All an attacker need is a small weakness or a flaw in your system to exploit


Testing 27
Testing cannot show the absence of defects,
it can only show that software defects are present.

1. Testing is a process of executing a program with the intent of finding an


error.
2. A good test case is one that has a high probability of finding an as yet
undiscovered error.
3. A successful test is one that uncovers an as yet undiscovered error.
Testing Methods 28

 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.

 White-box or glass-box testing


 Knowing the internal workings of a product, tests can be conducted to ensure that "all
the gears mesh".
1. independent paths at least once
2. logical decisions both true and false
3. loops
4. internal data structures
Testing in Current Century
29
 Today’s software market :
Industry is going
 is much bigger , is more competitive, has more users
through a revolution in
 Embedded Control Applications
• what testing means to
 airplanes, air traffic control • memory seats • ovens the success of
 spaceships • DVD players • remote controllers software products
 watches • garage door openers • cell phones & PDAs

 Agile processes increased pressure on testers
Tests are key to functional requirements
What Types of Testing Are There? 30
Functional Testing types include: Non-Functional Testing types include:
Unit Testing Performance Testing
Integration Testing Load Testing
System Testing Volume Testing
Smoke Testing Security Testing
Interface Testing Compatibility Testing
Regression Testing Installation Testing
Beta/Acceptance Testing Recovery Testing
Reliability Testing
Usability Testing

Which Testing type has more importance and why ?


40 Testing Types are mentioned here https://www.softwaretestinghelp.com/types-of-software-testing/
Development Methods & Techniques 31

Development Methods & Techniques

System Requirements Software


Design Testing Integration Maintenance
Engineering Analysis Implementation

Verification & Validation

Management Methods & Techniques


Project Planning
Project Tracking & Oversight
Quality Assurance
Configuration Management
Verification & Validation Model 32
Software Lifecycle Activities 33

Requirements System Object Implemen-


Analysis Testing
Elicitation Design Design tation

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

Software Engineering is in Transition

 Component-Based Engineering and Integration


 Technological Heterogeneity
 Enterprise Heterogeneity
 Greater potential for Dynamic Evolution
 Internet-Scale Deployment
 Many competing standards
 Much conflicting terminology
Thanks for your attention! 36

Any Question?

Email me on : [email protected]

You might also like