Uploaded by RUS LAN

01-Introduction

advertisement
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 Engineering with
Objects and Components,
Addison-Wesley, Harlow, Essex, UK
References
Software Engineering
APRACTITIONER’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
maintenance and 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
completely.
for a customer to specify requirements
 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 everchanging 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, dependable and 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 after it 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
 fundamentals
Algorithms, data structures,
complexity theory, numerical
methods


the practicalities of developing
delivering useful software
SE deals with practical problems in
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
changing the software in response to
Evolution changing demands
Software Process Model?
SPM is a simplified representation of a software process,
presented from a specificperspective
Examples of process perspectives:
Workflow perspective
Data-flow perspective
Role/action perspective
• represents inputs,
outputs and
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
development model that is used
on
the
Key Challenges Facing Software Engineering?
Software engineering in the 21st century facesthree key challenges:
Legacy systems
Old, valuable systems 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
engineering activities?
software
Software specification, software
validation and software evolution.
development,
software
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 computerbased systems development including hardware, software and
process engineering. Software engineeringis
part of this more general process.
Frequently Asked Questions About Software
Engineering
Question
Answer
What are the key
software engineering?
What
are
engineering?
the
challenges
costs
of
facing Coping with increasing diversity, demands for reduced delivery
times and developing trustworthy software.
software
Roughly 60% of software costs are development costs, 40% are
testing costs. For custom software, evolution costs often exceed
development costs.
What is CASE (Computer-Aided Software
Engineering)?
It covers a wide range of different types of program which are
used to support software process activities such as requirements
analysis, system modelling, debugging and
testing.
What differences has the web made to
software engineering?
The web has led to the availability of software services and the
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.
Download