Software Engineering Lec1
Software Engineering Lec1
Introduction to
Software Engineering
Outline
• Overview of the Course
• Introduction
• Description of the software
• Classes of Software products
• What is Good Software?
• Attributes of Software
• Types of software
• Software Engineering
Introduction
• Data
• Information
• Data Processing System
• Software
• A Set of instruction to acquire inputs and to
manipulate them to produce the desired result
• In terms of functions and performance as determined by
the user of the software
• Tell the computer what to do
Introduction
• Nature of Software Systems
– Software Systems are abstract and intangible
– They are not constrained by the properties of materials
– They are not governed by physical laws or by manufacturing processes
Introduction
• One-time programs
– It is typically developed by students
– Try it out
– See some useful results
– Throw it way
• Software solution
– It is used for long duration
– It gives important service to people or organization
Professional
Software
Goals of this course
• To earn knowledge on the basics of
Software Engineering
• To earn knowledge on Object Oriented
Analysis and Design Approach to develop
software
Contents of the Course
• Basics of Software Engineering (SE)
• Software Development Processes
• Feasibility study
• Project Management
• Project Planning
• Requirements Engineering
• System Modeling
• Architectural Design
• Design & implementation
• Software Testing
Good Software
• Software is
– Required by customer
– Used by various end users in the organization
– Developed by Software engineer
• Consideration of good software
– Customer : Cost Effectiveness
– Users : Usability & Reliability
– Software Engineer : Maintainability & Efficiency
Attributes of Good Software
• Maintainability
– Software should be written in such a way that it may evolve to meet the
changing needs of customers
• Dependability
– It includes a range of characteristics: 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
Attributes of Good Software
• Efficiency
– Software should not make wasteful use of system resources such as
memory and processor cycles
– It includes responsiveness, processing time and memory utilization
• Acceptability
– Software must be acceptable to the type of users for whom it is
designed
– Software must be understandable, usable, and compatible with other
systems that they use
Features of Professional Software
• Professional Software
– Other People will use
– Other engineers will change
• It includes
– Source code
– Executables
– Requirement Specification Document
– Design Document
– Operations and System Manuals
– Installation and Implementation Manuals
Features of Amateur Software
• Schedule Slippage
• Cost Over-runs
• Does not solve user’s problem
• Poor quality of software
• Poor Maintainability
Reasons for Amateur Software
• Ad hoc software development approach
• It seems straightforward
• Sit in front of machine the machine
• Talk to the clients
• Quickly understand the requirement
• Start coding
Problems of Ad Hoc Approach
• No Planning of development work (no
milestones defined)
• Deliverables to user are not identified
• Poor understanding of customer requirements,
both by customer and developer
• No control or review
• Technical incompetence of developers
• Poor understanding of cost and efforts by both
developer and user
Any Alternative Approach?
Engineering Approach
•Building
•Bridges, Dams
•Power Plants
•Aircrafts, Missiles
– Development Completed
– It is useful
– It is usable
– It is used
• Software should be cost effective and maintainable
Reasons of Software Engineering
• Software produced is
– Unreliable
– Doubtful quality
– Delivered late to the customer
– Not maintainable under changing circumstances
– Inefficient in resource management
– Very expensive
• Software becomes
– Costly and Risky
– User may not accept the solution
– It may not meet the performance
– It is not possible to update
Objectives of Software Engineering
• To achieve customer satisfaction
• To ensure on-time delivery
• To be developed within the budget cost
• To provide ease of maintenance to meet
changing requirements
History of Software Engineering
• The notion of “Software Engineering” was first proposed
in 1968 at a conference held to discuss what was then
called the “software crisis”
• It became clear that individual approaches to program
development did not scale up to large and complex
software systems
• These were unreliable, cost more than expected and
were delivered late
• Throughout the 1970s and 1980s, a variety of new
software engineering techniques and methods were
developed such as structured programming, information
hiding and object oriented development
Description of Software System
• It is described by
– Its capabilities and
– Platform specifications
• Capabilities relate to
– Functions: Sales-order Processing
– Features : Multi-currency computing, updating of
sales, product & tax status
– Facilities : Printing of sales order, e-mail to
customers, reports and advice to the stores
department
Description of Software
• Facilities and Features
– Optional
– Depends on customer
• Platform relate to
– Hardware and
– Operating System Consideration
Classes of Software Products
• Generic Products
– It is sold on the open market to any customer who is able to buy
them
– It is managed by developer
– Requirements and specifications are controlled by developer
– Examples : Database Products, Browsers, ERP packages,
Drawing Packages
• Customized Product
– It is developed specially for that customer by a software
contractor
– Requirements and specifications are controlled by customer
– Examples : Traffic Management system, Hospital Management
system
Application of Software System
• It is touching in all aspects of human life
– Business domain
– Engineering domain
– Scientific domain
• Types of Software System
– Simple to Complex
– Internal use to Public use
– Single Function to Enterprise –wide
– One location to Distributed
– Batch or Real-time
– Informational to Machine-Critical
Different Types of Applications
• Stand-alone applications
– These are application systems that run on a local computer, such as a PC
– They include all necessary functionality and do not need to be connected to a
network
– Example: Office applications on a PC, CAD programs, Photo manipulation
software
• Interactive transaction-based applications
– These are applications that execute on a remote computer and that are
accessed by users from their own PCs or terminals
– It incorporate a large data store that is accessed and updated in each transaction
– Example:
– Web applications: e-commerce applications
– Business system : where a business provides access to its systems through a web
browser or special purpose and cloud-based services such as mail and photo sharing
Different Types of Applications
• Embedded control system
– These are software control systems that control and manage
hardware devices
– It is written to perform certain functions under control conditions
– It is embedded into hardware
– It resides in ROM
– Examples: Washing Machine, Microwave oven, gas station etc.
• Batch Processing System
– These are business systems that are designed to process data
in large batches
– They process large numbers of individual inputs to create
corresponding outputs
– These includes phone billing system and salary payment system
Different Types of Applications
• Entertainment Systems
– These are systems that are primarily for personal use and which
are intended to entertain the user
– Most of these systems are games of one kind or another
– The quality of the user interaction offered is the most important
distinguishing characteristics
• Systems for Modeling and Simulation
– These are systems that are developed by scientists and
engineers to model physical process or situations which include
many, separate and interacting objects
– These are often computationally intensive and high-performance
parallel systems for execution
Different Types of Applications
• Data Collection System
– These are systems that collect data from their environment using
a set of sensors and send that data to other systems for
processing
• Systems of Systems
– These are systems that are composed of a number of other
software system
Software Engineering Ethics
• Moral responsibilities of Software Engineers
– Confidentiality
• Software Engineers should normally respect the confidentiality of employers
or Clients irrespective of whether or not a formal confidentiality agreement
has been signed
– Competence
• Software Engineers should not misrepresent his/her level of competence
• He/she should not knowingly accept work that is outside his/her competence
– Intellectual property rights
• He/she should be aware of local laws governing the use of intellectual property such as
patents and copyright
– Computer Misuse
• He/she should not use his/her technical skills to misuse other people’s computers
CASE Tools
• Computer-Aided Software Engineering
• It covers a wide range of different types of program to
software process activities
– Requirements Analysis
– System modeling
– Code Generation : source code from system model
– Process Guidance : What to do next
– Debugging and testing
Software Engineering Techniques
• Two ways
• Structured System Analysis & Design
(SSAD)
• Object Oriented Analysis & Design (OOAD)
SSAD approach
• Yourdan and DeMarco
• The system and its requirement are decomposed in
structured manner
• Software development is carried out using the
subsystems
• Structure
• Tested
• Integrated
• implemented
Invoicing System
Invoicing
System
Process Update of
Sales order for
Inventory Amount Dispatch
Status Balance
Updation Process
Tax
Component Modify the
Sales
Analysis
Invoice
Status
Processing
OOSD approach
• Booch, Jackson and Rumbaugh
• Software development is carried out using the
subsystems
• Analysis of domain and organizations
• Builds objects of models
OOSAD approach
• Object could represents
• A function, process and a document
• Object has
• Attributes to describe
• Methods to perform
• Relationships to other objects
Advantages of OOAD
• Development efficiency is higher
• Costs of development are lower
Example OOAD
Invoice Order
Id Id
No. No.
Address Address
A/C No. A/C No.
Amount Amount
SSAD OOAD
SSAD evolved from Structured OOAD evolved from Object Oriented
Programming Programming
It is process oriented It is object oriented
It breakdowns the system using DFDs It breakdowns the system using use cases
(Data Flow Diagram)
The components of the system are derived The components of the system are derived
from DFDs from class diagrams and other UML
diagrams
It has a separation of system data and System’s data and processes are
processes encapsulated into objects
END