You are on page 1of 34

Software Engineering

Code: BCE4407
PIMPRI CHINCHWAD COLLEGE OF ENGINEERING
SECTOR NO. 26, PRADHIKARAN, NIGDI, PUNE 411044
An Autonomous Institute Approved by AICTE and affiliated to SPPU, Pune
DEPARTMENT OF COMPUTER ENGINEERING

Dr. M. A. Ranjanikar PCCOE, Pune 1


• Program: B. Tech. (Computer) Semester: IV

• Course: Software Engineering Code: BCE4407

• Teaching Scheme Evaluation Scheme


• Lecture Tutorial Credit Hours IE MTE ETE Total
3 - 3 3 20 30 50 100

• Prior Knowledge of :
1. Computer Programming and Problem Solving

Dr. M. A. Ranjanikar PCCOE, Pune 2


• Course Objectives:
1 To comprehend the principles of Software Engineering
2 To apply appropriate process model for specific software project development
3 To be acquainted with methods of capturing, specifying, and analysing software requirements.
4 To apply Design principles to software project development
5 To comprehend the UML diagrams
6 To be acquainted with agile process model.
• Course Outcomes:
• After learning the course, students will be able to:
1 Comprehend the principles of Software Engineering.
2 Apply appropriate process model for specific software project development.
3 Get acquainted with methods of capturing, specifying, and analysing software requirements.
4 Apply Design principles to software project development.
5 Comprehend the UML diagrams.
6 Get acquainted with the agile process model

Dr. M. A. Ranjanikar PCCOE, Pune 3


Detailed Syllabus: Unit 1

• Introduction:
• What is Software Engineering, Software Myth, Software engineering Knowledge-core
Principles- Principles that guide each framework Activity, Software Development Life-
cycle Requirement analysis, software design, coding, software testing, software
maintenance, types of software maintenance.
• Case Study: Introduction to Safe Home.

Dr. M. A. Ranjanikar PCCOE, Pune 4


Differences between Software and Hardware
• Software is developed or engineered; it is not manufactured in
the classical sense
• Impacts the management of software projects
• Software doesn't wear out
• Hardware bathtub curve compared to the software ascending
spiked curve
• Although the industry is moving toward component-based
construction, most software continues to be custom built (it is
still complex to build)

Dr. M. A. Ranjanikar PCCOE, Pune 5


Software Failure Curve

Software Engineering Principles

Dr. M. A. Ranjanikar PCCOE, Pune 6


What is Software?

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.

Dr. M. A. Ranjanikar PCCOE, Pune 7


Software products
• 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.

Dr. M. A. Ranjanikar PCCOE, Pune 8


Why Software is Important?

• 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.
• Expenditure on software represents a
significant fraction of GNP in all developed countries.

Dr. M. A. Ranjanikar PCCOE, Pune 9


Software costs

• Software costs often dominate computer system costs. The costs of


software on a PC are often greater than the hardware cost.
• Software costs more to maintain than it does to develop. For systems
with a long life, maintenance costs may be several times development
costs.
• Software engineering is concerned with cost-effective software
development.

Dr. M. A. Ranjanikar PCCOE, Pune 10


Features of Software?
• Its characteristics that make it different from other things human being
build.
Features of such logical system:
• Software is developed or engineered, it is not manufactured in the
classical sense which has quality problem.
• Software doesn't "wear out.” but it deteriorates (due to change). Hardware
has bathtub curve of failure rate ( high failure rate in the beginning, then drop to
steady state, then cumulative effects of dust, vibration, abuse occurs).
• Although the industry is moving toward component-based construction
(e.g. standard screws and off-the-shelf integrated circuits), most
software continues to be custom-built. Modern reusable components
encapsulate data and processing into software parts to be reused by
different programs. E.g. graphical user interface, window, pull-down
menus in library etc.

Dr. M. A. Ranjanikar PCCOE, Pune 11


Software Applications
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 non-numerical algorithm to solve complex problem.
Robotics, expert system, pattern recognition game playing
Dr. M. A. Ranjanikar PCCOE, Pune 12
Software—New Categories

• Open world computing—pervasive, ubiquitous, distributed computing due to


wireless networking. How to allow mobile devices, personal computer,
enterprise system to communicate across vast network.
• Netsourcing—the Web as a computing engine. How to architect simple and
sophisticated applications to target end-users worldwide.
• Open source—”free” source code open to the computing community (a
blessing, but also a potential curse!)
• Also …
• Data mining
• Grid computing
• Cognitive machines
• Software for nanotechnologies

Dr. M. A. Ranjanikar PCCOE, Pune 13


Software Engineering Definition
The seminal definition:
[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.

The IEEE definition:


Software Engineering: (1) The application of a systematic, disciplined,
quantifiable approach to the development, operation, and maintenance of
software; that is, the application of engineering to software. (2) The study of
approaches as in (1).

Dr. M. A. Ranjanikar PCCOE, Pune 14


Importance of Software Engineering

• 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.
• It is usually cheaper, in the long run, to use software engineering
methods and techniques for software systems rather than just write
the programs as if it was a personal programming project. For most
types of system, the majority of costs are the costs of changing the
software after it has gone into use.

Dr. M. A. Ranjanikar PCCOE, Pune 15


Software Myths
Erroneous beliefs about software and the process
that is used to build it.
•Affect managers, customers (and other non-
technical stakeholders) and practitioners
•Are believable because they often have elements of
truth,
but …
•Invariably lead to bad decisions,
therefore …
•Insist on reality as you navigate your way through
software engineering

Dr. M. A. Ranjanikar PCCOE, Pune 16


Software Myths - Management

• "We already have a book that is full of standards and procedures for
building software. Won't that provide my people with everything they
need to know?"
• Not used, not up to date, not complete, not focused on quality, time, and
money
• "If we get behind, we can add more programmers and catch up"
• Adding people to a late software project makes it later
• Training time, increased communication lines
• "If I decide to outsource the software project to a third party, I can just
relax and let that firm build it"
• Software projects need to be controlled and managed

Dr. M. A. Ranjanikar PCCOE, Pune 17


Software Myths - Customer

• "A general statement of objectives is sufficient to begin writing


programs – we can fill in the details later"
• Ambiguous statement of objectives spells disaster
• "Project requirements continually change, but change can be easily
accommodated because software is flexible"
• Impact of change depends on where and when it occurs in the software
life cycle (requirements analysis, design, code, test)

Dr. M. A. Ranjanikar PCCOE, Pune 18


Software Myths - Practitioner
• "Once we write the program and get it to work, our job is done"
• 60% to 80% of all effort expended on software occurs after it is delivered
• "Until I get the program running, I have no way of assessing its quality
• Formal technical reviews of requirements analysis documents, design
documents, and source code (more effective than actual testing)
• "The only deliverable work product for a successful project is the
working program"
• Software, documentation, test drivers, test results
• "Software engineering will make us create voluminous and
unnecessary documentation and will invariably slow us down"
• Creates quality, not documents; quality reduces rework and provides
software on time and within the budget

Dr. M. A. Ranjanikar PCCOE, Pune ☺ 19


SOFTWARE ENGINEERING: A LAYERED
TECHNOLOGY
• Software Engineering: (1) The application of a systematic, disciplined,
quantifiable approach to the development, operation, and
maintenance of software; that is, the application of engineering to
software. (2) The study of approaches as in (1).

• Process, Methods, and Tools


• A Generic View of Software Engineering

Dr. M. A. Ranjanikar PCCOE, Pune 20


Process, Methods, and Tools

• Process: is the foundation of software engineering.


• Defines a framework for a set of key process areas (KPAs)
–Effective delivery of SE technology
–Management control of software project
–Context of technical methods applied
–Work products
–Milestones, Quality ensured
–Proper change management
• Methods: Provide technical how-to’s for building software.
Encompass a broad array of tasks that include requirements analysis, program
construction, testing, and support.
• Tools: Provide automated or semi-automated support for the process and the methods.

Dr. M. A. Ranjanikar PCCOE, Pune 21


Process Models
• What: Go through a series of predictable steps---a road map that helps you
creates timely, high-quality results.
• Who: Software engineers and their managers, clients also. People adapt
the process to their needs and follow it.
• Why: Provides stability, control, and organization to an activity that can if
left uncontrolled, become quite chaotic. However, modern software
engineering approaches must be agile and demand ONLY those activities,
controls and work products that are appropriate.
• What Work products : Programs, documents, and data
• What are the steps
• How to ensure right

Dr. M. A. Ranjanikar PCCOE, Pune 22


Process, Methods, and Tools
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.
◼ Tools provide automated or semi-automated support for the process and methods.
Dr. M. A. Ranjanikar PCCOE, Pune 23
A Generic View of Software Engineering
• Engineering is the analysis, design, construction, verification, and
management of technical (or social) entities. Regardless of the entity to be
engineered, the following questions must be asked and answered:
• What is the problem to be solved?
• What characteristics of the entity are used to solve the problem?
• How will the entity (and the solution) be realized?
• How will the entity be constructed?
• What approach will be used to uncover errors that were made in the
design and construction of the entity?
• How will the entity be supported over the long term, when corrections,
adaptations, and enhancements are requested by users of the entity?
Dr. M. A. Ranjanikar PCCOE, Pune 24
Five Activities of a Generic Process framework

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

Dr. M. A. Ranjanikar PCCOE, Pune 25


Generic Process Model

Dr. M. A. Ranjanikar PCCOE, Pune 26


Umbrella Activities
◼ The phases and related steps described in our generic view of software
engineering are complemented by a number of umbrella activities. Typical
activities in this category include:
◼ 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.

Dr. M. A. Ranjanikar PCCOE, Pune 27


Generic Process Framework
• Communication
• Involves communication among the customer and other stake holders;
encompasses requirements gathering
• Planning
• Establishes a plan for software engineering work; addresses technical tasks,
resources, work products, and work schedule
• Modeling (Analyze, Design)
• Encompasses the creation of models to better under the requirements and the
design
• Construction (Code, Test)
• Combines code generation and testing to uncover errors
• Deployment
• Involves delivery of software to the customer for evaluation and feedback

Dr. M. A. Ranjanikar PCCOE, Pune 28


Modeling: Software Requirements
Analysis
• Helps software engineers to better understand the problem they will
work to solve
• Encompasses the set of tasks that lead to an understanding of what
the business impact of the software will be, what the customer wants,
and how end-users will interact with the software
• Uses a combination of text and diagrams to depict requirements for
data, function, and behavior
• Provides a relatively easy way to understand and review requirements for
correctness, completeness and consistency

Dr. M. A. Ranjanikar PCCOE, Pune 29


Modeling: Software Design
• Brings together customer requirements, business needs, and technical
considerations to form the “blueprint” for a product
• Creates a model that that provides detail about software data structures,
software architecture, interfaces, and components that are necessary to
implement the system
• Architectural design
• Represents the structure of data and program components that are required to
build the software
• Considers the architectural style, the structure and properties of components that
constitute the system, and interrelationships that occur among all architectural
components
• User Interface Design
• Creates an effective communication medium between a human and a computer
• Identifies interface objects and actions and then creates a screen layout that forms
the basis for a user interface prototype
• Component-level Design
• Defines the data structures, algorithms, interface characteristics, and
communication mechanisms allocated to each software component

30
Dr. M. A. Ranjanikar PCCOE, Pune 30
Software maintenance

• Software Maintenance is the process of modifying a software product


after it has been delivered to the customer.
• The main purpose of software maintenance is to modify and update
software applications after delivery to correct faults and to improve
performance.

Dr. M. A. Ranjanikar PCCOE, Pune 31


Need for Maintenance –
• Software Maintenance must be performed in order to:
• Correct faults.
• Improve the design.
• Implement enhancements.
• Interface with other systems.
• Accommodate programs so that different hardware, software, system
features, and telecommunications facilities can be used.
• Migrate legacy software.
• Retire software.

Dr. M. A. Ranjanikar PCCOE, Pune 32


Categories of Software Maintenance –
1.Corrective maintenance:
Corrective maintenance of a software product may be essential either
to rectify some bugs observed while the system is in use, or to
enhance the performance of the system.

2.Adaptive maintenance:
This includes modifications and updations when the customers need
the product to run on new platforms, on new operating systems, or
when they need the product to interface with new hardware and
software.

Dr. M. A. Ranjanikar PCCOE, Pune 33


Categories of Software Maintenance
3. Perfective maintenance:
A software product needs maintenance to support the new features
that the users want or to change different types of functionalities of
the system according to the customer demands.

4. Preventive maintenance:
This type of maintenance includes modifications and updations to
prevent future problems of the software. It goals to attend problems,
which are not significant at this moment but may cause serious issues
in future.

Dr. M. A. Ranjanikar PCCOE, Pune 34

You might also like