Software Engineering
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 is software engineering?
• Its an Engineering discipline deals with all
aspects of software production
Types of Software Products
Generic Products
Customized or Bespoke products
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 are the fundamental software engineering
activities?
Software specification
software development
software validation
software evolution.
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.
Difference between software engineering and
system engineering?
• System engineering is concerned with all
aspects of computer-based systems
development including hardware, software
and process engineering.
• Software engineering is part of this more
general process.
Essential attributes of Good Software
• Maintainability- meet the changing needs
of customers.
• Dependability and Security -reliability,
security and safety
• Efficiency-No wasteful use of system
resources, responsiveness, processing
time, memory utilisation.
• Acceptability-understandable, usable and
compatible
What are the key challenges facing
software engineering?
Coping with increasing diversity,
Demands for reduced delivery times
Developing trustworthy software.
Software engineering diversity
• No universal software engineering methods
and techniques that are suitable for all
systems and all companies.
• It Depends on the organization developing the
software, the type of software, and the people
involved in the development process.
Software engineering diversity
• Types of Applications
• Stand-alone applications- CAD, Calculator, Paint
• Interactive transaction-based applications-E-commerce
applications
• Embedded control systems- microwave oven to control the
cooking process
• Batch processing systems-periodic billing systems, such as
phone billing systems, and salary payment systems.
• Entertainment systems-Gaming applications
• Systems for modeling and simulation-model the process
• Data collection systems-collect data from their environment
using a set of sensors and send that data to other systems for
processing.(Traffic signal rule breaking detection systems)
• Systems of systems-Spread sheets(includes many more
subsystems)
Software engineering ethics
• Confidentiality-respect the confidentiality of
your employers or clients irrespective of
whether or not a formal confidentiality
agreement has been signed.
• Competence - You should not misrepresent
your level of competence. You should not
knowingly accept work that is outside your
competence
Software engineering ethics
• Intellectual property rights- You should be
aware of local laws governing the use of
intellectual property such as patents and
copyright.
• Computer misuse- You should not use your
technical skills to misuse other people’s
computers.
IEEE/ACM code of software
engineering ethics
• PUBLIC — Software engineers shall act
consistently with the public interest.
• CLIENT AND EMPLOYER — Software engineers
shall act in a manner that is in the best interests
of their client and employer consistent with the
public interest.
• PRODUCT — Software engineers shall ensure that
their products and related modifications meet
the highest professional standards possible.
IEEE/ACM code of software
engineering ethics
• JUDGMENT — Software engineers shall
maintain integrity and independence in their
professional judgment.
• MANAGEMENT — Software engineering
managers and leaders shall subscribe to and
promote an ethical approach to the
management of software development and
maintenance.
IEEE/ACM code of software
engineering ethics
• PROFESSION — Software engineers shall
advance the integrity and reputation of the
profession consistent with the public interest.
• COLLEAGUES — Software engineers shall be
fair to and supportive of their colleagues.
• SELF — Software engineers shall participate in
lifelong learning regarding the practice of their
profession and shall promote an ethical
approach to the practice of the profession.
Software processes
• Software specification
• Software design and implementation
• Software validation
• Software evolution
Software process models
The waterfall model
Incremental development
Reuse-oriented software engineering
waterfall model
Incremental development
Incremental development
• Benefits:
• The cost of accommodating changing
customer requirements is reduced.
• It is easier to get customer feedback on the
development work that has been done.
• More rapid delivery and deployment of useful
software to the customer
Incremental development
• Drawbacks:
• The process is not visible. Managers need
regular deliverables to measure progress.
• Not cost-effective to produce documents that
reflect every version of the system.
• System structure tends to degrade as new
increments are added.
Reuse-oriented software engineering
Process activities
Software specification
Software design and implementation
Software validation
Software evolution
Software specification
Software design and implementation
Software validation
Verification and Validation
• Verification-Are you building it right?
• Done by Developer
• Aim to make each s/w unit, component, subsystem
error free
• Involves Reviews , Inspection , Unit testing and
Integration Testing
• Validation- Have you build the right thing?
• Check the final product against the specification
• Done by Tester
• Aim is to make final product error free.
• Involves System Testing
Software evolution
Coping with change
• There are two related approaches that may be
used to reduce the costs of rework:
• Change avoidance- Use System Prototyping
• Change tolerance- Use Incremental Delivery
Coping with change
• Prototyping
Coping with change
• Incremental Delivery
Coping with change
Boehm’s Spiral model
Coping with Change
Boehm’s Spiral model
• Each loop in the spiral is split into four sectors:
Objective setting
Risk assessment and reduction
Development and validation
Planning
The Rational Unified Process
• Perspectives of RUP:
• Dynamic perspective-Phases of the model
change over time
• Static perspective-Process activities
(Workflows) are enacted
• Practice perspective-suggests good practices
to be used during the process.
The Rational Unified Process
The Rational Unified Process
• Phases in the RUP:
Inception-
Goal is to establish a business case for the
system.
Identify all external entities (people and
system) and their interactions.
Asses the contribution of the system. (i.e.
contribution is minor or major)
The Rational Unified Process
• Phases in the RUP:
Elaboration-
Goal is to develop an architectural framework
for the system, project plan and identifying
the key risks
Outcome is the Requirement model in the
form of set of UML use-cases , architecture
plan and development plan.
The Rational Unified Process
• Phases in the RUP:
Construction-
This phase involves system design,
programming , subsystem integration and
testing.
Outcome is the delivery ready software with
associated documentation.
The Rational Unified Process
• Phases in the RUP:
Transition –
Moving the system from the development
community to the user community and
making it to work in a real environment.
Checking system in operational environment.
The Rational Unified Process
static perspective(workflows)
The Rational Unified Process
practice perspective
• six-best practices:
• Develop software iteratively-
Develop the highest-priority system features
early in the develop process.
• Manage requirements-
Document the customer’s requirement
Keep track of changes in requirements
Analyze the impact of changes on the system
before accepting them
The Rational Unified Process
practice perspective
• six-best practices:
• Use component-based architectures-
Structure the system architecture into
components.
• Visually model software-
Use graphical UML models to present static
and dynamic views of the software
• Verify software quality- Ensure that the
software meets the organizational quality
standards
The Rational Unified Process
practice perspective
• six-best practices:
Control changes to the software-
• Use change management system and
configuration management procedures and
tools