01-Introduction

Download as pdf or txt
Download as pdf or txt
You are on page 1of 29

Fundamentals of Software Engineering

CS 2042
Course Details
 Credits: 02

 Lecture : 30 Hours

 Attendance: 80% ( < 80%, Not Allowed for


 Final exam)

 Formative Assessments: 35%


 Continuous assessments tests/ Quizzes.
 Assignments

 Summative Assessment: 65%


Course Aim

To teach software Engineering Principles,


Software process models in order to help
students to develop skills that will enable them to
construct software of high quality – software that
is reliable, and that is reasonably easy to
understand, modify and maintain, and to foster
an understanding of why these skills are
important.
Intended Learning Outcomes (ILOs):

After completing this course, students will be able to,


 Gain extensive knowledge on software
development life cycle and its basic economics.
 Describe different theories of how software can
be developed.
 Apply appropriate methods for the design and
implementation of modern software systems
Course Capsule

 Introduction to Software Engineering


 The Software Process
 Software Requirements and Specifications
 Software Design Techniques
 Software Validation and Verification
 Software Evolution
Outline Syllabus

 Introduction to Software Engineering: Well Engineered Software, The


Software Process.
 Models of Software Process: Software lifecycle, Waterfall, Spiral, Incremental
model Prototyping, Software Quality Concepts.
 Software Requirements and Specifications: Properties of requirements,
Requirements Elicitation, Describing functional Requirements using use cases,
Non-Functional Requirements, Requirements Specifications, Requirements
validation.
 Software Design Techniques: Systems Design Principles, Design Paradigms,
Dataflow Diagram, Context diagram, Top-level dataflow diagrams.
 Software Validation and Verification: Testing Fundamentals, Static and
Dynamic Testing.
 Software Evolution: Characteristics of maintainable software, Reengineering
Systems.
Recommended Reading

 Introduction to the Team Software Process, by Watts


Humphrey.

 Engineering Software as a Service: An Agile Approach


Using Cloud Computing, by Armando Fox and David
Patterson, Strawberry Canyon Publisher, 2013.
References

Sommerville I. (2001,2004,…,2012)
Software Engineering 6th, 7th, 8th,9th, or 10th
Edition,Addison-Wesley, Harlow, Essex, UK

Stevens P.with Pooley, R.(2000)


Using UML: Software Engineeringwith
Objects and Components,
Addison-Wesley, Harlow, Essex, UK
References

Software Engineering
APRACTITION ER’SAPPROACH
SEVENTH EDITION
Roger S. Pressman, Ph.D.

Object-Oriented Analysis and Design with Applications


Third Edition
Grady Booch,Robert A. Maksimchuk, Michael W. Engle
Bobbi J. Young, Ph.D., Jim Conallen, Kelli A. Houston
Chapter-01

Introduction to Software Engineering


Introduction

 Software Engineering is the field of Computer Science that


deals with the building of software systems.

 A Software Engineer should have considerable skill and


experience as a programmer in order to understand the
problem areas, goals and objectives of the software
engineering.

 Software Engineers are concerned with the issues of


analysis, design, verification, testing, documentation, software
maintenanceand project management.
Software

 Computer programs and associated documentation

 Software products may be developed for a particular


customer or may be developed for ageneral market
 Software products may be
 Generic - developed to be sold to a range of different
customers
 Customised (or bespoke) - developed for a single
customer according to their specification
Hardware VS Software
Cost Software

hardware

Time
1960 2017
What makes software special?

The main difference in software engineering compared to other


engineering disciplines are listed below.
 It is difficult for a customer to specify requirements
completely.
 It is difficult for the developer to understand fully
the customer needs.
 Software requirements change regularly.
 Software is primarily intangible; much of the process of
creating software is also intangible, involving
experience, thought and imagination.
 It is difficult to test software exhaustively
Well Engineered Software

 If the software system does what the user wants,


and can be made to continue to do what the user
wants, it is well engineered.
 to be done in a cost effective way,
 to be constrained by limits on resource and schedule.
 to be maintained in a cost effective way.
Characteristics of Good Software

Well-engineered software is expected to


have the following characteristics:
1. Operational
2.Transitional
3. Maintenance
1. Operational

 This tells us how well software works in operations.


 It can be measured on:
 Budget
 Usability
 Efficiency
 Correctness
 Functionality
 Dependability
 Security
 Safety
2. Transitional

This aspect is important when the software is


moved from one platform to another:
 Portability
 Interoperability
 Reusability
 Adaptability
3. Maintenance

This aspect briefs about how well a software has


the capabilities to maintain itself in the ever-
changing environment:

 Modularity
 Maintainability
 Flexibility
 Scalability
Attributes of Well Engineered Software

 The software should deliver the required functionality and performance


to the user and should be maintainable, dependableand usable

 Maintainability
 Software must evolve to meet changing needs
 Dependability
 Software must be trustworthy
 Efficiency
 Software should not make wasteful use of system resources
 Usability
 Software must be usable by the users for which it was designed
Software Engineering

 Software engineering is an engineering discipline which is


concerned with all aspects of software production from the
early stages of system specification through to maintaining
the system afterit has gone into use.
 Software engineers should
 adopt asystematic and organised approach to their work
 use appropriate tools and techniques depending on
 the problem to be solved,
 the development constraints and
 the resources available
Difference between Software Engineering and
Computer Science
Computer Science Software Engineering
is concerned with
 theory  the practicalities of developing
 fundamentals  delivering useful software
Algorithms, data structures,
complexity theory, numerical SE deals with practical problems in
methods complex software products

Computer science theories are currently insufficient to act as a


complete underpinning for software engineering, BUT it is a
foundation forpractical aspects of software engineering
Software Process
 SP is a set of activities whose goal is the
development or evolution of software
 Fundamental activities in allsoftware processes are:
Specification - what the system should do and its
development constraints
Development - production of the software system
(design and implementation)
Validation - checking that the software is what the
customer wants
Evolution - changing the software in response to
changing demands
Software Process Model?
SPM is a simplified representation of a software process,
presented from a specificperspective
Examples of process perspectives:
Workflow perspective • represents inputs,
Data-flow perspective outputs and
Role/action perspective dependencies
• represents data transformation
activities represents the
roles/activities of the people
involved in software process
Generic process models
Waterfall
Evolutionary development
Formal transformation
Integration from reusable components
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
Key Challenges Facing Software Engineering?

Software engineering in the 21st century faces three key challenges:


Legacy systems
Old, valuablesystems must be maintained and updated
Heterogeneity
Systems are distributed and include a
mix of hardware andsoftware
Delivery
There is increasing pressure for
faster delivery of software
Frequently Asked Questions About
Software Engineering
Question Answer

What is software? Computer programs 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
concerned with all aspects of software production from the early
stages of system specification through to maintaining the system
after it has gone into use.
What are the fundamental software Software specification, software development, software
engineering activities? validation and software evolution.
What is the difference between software Computer science focuses on theory and fundamentals; software
engineering and computer science? engineering is 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-
engineering and system engineering? based systems development including hardware, software and
process engineering. Software engineering is
part of this more general process.
Frequently Asked Questions About Software
Engineering

Question Answer
What are the key challenges facing Coping with increasing diversity, demands for reduced delivery
software engineering? times and developing trustworthy software.
What are the costs of software Roughly 60% of software costs are development costs, 40% are
engineering? testing costs. For custom software, evolution costs often exceed
development costs.
What is CASE (Computer-Aided Software It covers a wide range of different types of program which are
Engineering)? used to support software process activities such as requirements
analysis, system modelling, debugging and
testing.
What differences has the web made to The web has led to the availability of software services and the
software engineering? possibility of developing highly distributed service- based
systems. Web-based systems development has led to important
advances in programming languages and
software reuse.
When You Know Programming, What Is The Need
To Learn Software Engineering Concepts?

 A person who knows how to build a wall may not be


good at building an entire house. Likewise, a person who
can write programs may not have knowledge of other
concepts of Software Engineering.
 The software engineering concepts guide programmers on
how to assess requirements of end user, design the
algorithms before actual coding starts, create programs by
coding, testing the code and its documentation.

You might also like