1unit SE Notes
1unit SE Notes
UNIT-I
INTRODUCTION TO SOFTWARE ENGINEERING
Software: Software is
Instructions (computer programs) that provide desired features, function, and performance, when
executed
Data structures that enable the programs to adequately manipulate information,
Documents that describe the operation and use of the programs.
Characteristics of Software:
Software is developed or engineered; it is not manufactured in the classical sense.
Software does not
Although the industry is moving toward component-based construction, most software continues
to be custom built.
Software Engineering:
The systematic, disciplined quantifiable approach to the development, operation and maintenance
of software; that is, the application of engineering to software.
The study of approaches as in (1)
The role of computer software has undergone significant change over a span of little more than 50 years
Dramatic Improvements in hardware performance
Vast increases in memory and storage capacity
A wide variety of exotic input and output options
Later 1990s:
Yourdon reevaluated the prospects of the software professional and suggested the rise
and the American programmer.
th
The impact of the Y2K time bomb was at the end of 20 century
2000s progressed:
Johnson discussed the power of emergence a phenomenon that explains what happens when
interconnections among relatively simple entities result in a system -organizes to form
more intelligent, more adaptive
Yourdon revisited the tragic events of 9/11 to discuss the continuing impact of global terrorism
on the IT community
Wolfram presented a treatise on posits a unifying theory
based primarily on sophisticated software simulations
Daconta and his colleagues discussed the evolution of the semantic web .
Today a huge software industry has become a dominant factor in the economies of the industrialized world.
The 7 broad categories of computer software present continuing challenges for software engineers:
System software
Application software
Engineering/scientific software
Embedded software
Product-line software
Web-applications
Artificial intelligence software.
System software: System software is a collection of programs written to service other
programs. The systems software is characterized by
heavy interaction with computer hardware
heavy usage by multiple users
concurrent operation that requires scheduling, resource sharing, and sophisticated
process management
complex data structures
multiple external interfaces
E.g. compilers, editors and file management utilities.
Application software:
Application software consists of standalone programs that solve a specific business need.
It facilitates business operations or management/technical decision making.
It is used to control business functions in real-time
E.g. point-of-sale transaction processing, real-time manufacturing process control.
Ubiquitous computing: The challenge for software engineers will be to develop systems and application
software that will allow small devices, personal computers and enterprise system to communicate across
vast networks.
Net sourcing: The challenge for software engineers is to architect simple and sophisticated applications
that provide benefit to targeted end-user market worldwide.
Open Source: The challenge for software engineers is to build source that is self descriptive but more
importantly to develop techniques that will enable both customers and developers to know what changes
have been made and how those changes manifest themselves within the software.
The new economy : The challenge for software engineers is to build applications that will facilitate mass
communication and mass product distribution.
SOFTWARE MYTHS
Beliefs about software and the process used to build it- can be traced to the earliest days of computing
myths have a number of attributes that have made them insidious.
Management myths: Manages with software responsibility, like managers in most disciplines, are often
under pressure to maintain budgets, keep schedules from slipping, and improve quality.
Myth - Wont that
provide my people with everything they need to know?
Reality: The book of standards may very well exist but, is it used? Are software practitioners aware of its
existence? Does it reflect modern software engineering practice?
Myth: If we get behind schedule, we can add more programmers and catch up.
Reality: Software development is not a mechanistic process like manufacturing. As new people are added,
people who were working must spend time educating the new comers, thereby reducing the amount of time
spend on productive development effort. People can be added but only in a planned and well coordinated
manner.
Myth: If I decide to outsource the software project to a third party, I can just relax and let that firm built it.
Reality: If an organization does not understand how to manage and control software projects internally, it
will invariably struggle when it outsources software projects.
SOFTWARE ENGINEERING
Customer myths: The customer believes myths about software because software managers and
practitioners do little to correct misinformation. Myths lead to false expectations and ultimately,
dissatisfaction with the developer.
Myth: A general statement of objectives is sufficient to begin with writing programs - we can fill in the
details later.
Reality: Although a comprehensive and stable statement of requirements is not always possible, an
ambiguous statement of objectives is recipe for disaster.
Myth: Project requirements continually change, but change can be easily accommodated because software
is flexible.
Reality: It is true that software requirements change, but the impact of change varies with the time at which
it is introduced and change can cause upheaval that requires additional resources and major design
modification.
Myths that are still believed by software practitioners: during the early days of
software, programming was viewed as an art from old ways and attitudes die hard.
Myth: Once we write the program and get it to work, our jobs are done.
Reality:
Industry data indicate that between 60 and 80 percent of all effort expended on software will be expended
after it is delivered to the customer for the first time.
Myth: The only deliverable work product for a successful project is the working program.
Reality: A working program is only one part of a software configuration that includes many elements.
Documentation provides guidance for software support.
Myth: software engineering will make us create voluminous and unnecessary documentation and will
invariably slows down.
Reality: software engineering is not about creating documents. It is about creating quality. Better quality
leads to reduced rework. And reduced rework results in faster delivery times.
Software engineering is a layered technology. Any engineering approach must rest on an organizational
commitment to quality. The bedrock that supports software engineering is a quality focus.
The foundation for software engineering is the process layer. Software engineering process is the glue that
holds the technology layers. Process defines a framework that must be established for effective
delivery of software engineering technology.
The software forms the basis for management control of software projects and establishes the context
in which
- technical methods are applied,
- work products are produced,
- milestones are established,
- quality is ensured,
- And change is properly managed.
Software engineering methods rely on a set of basic principles that govern area of the technologyand
include modeling activities.
Software engineering tools provide automated or semi automated support for the process and the
methods. When tools are integrated so that information created by one tool can be used by another, a
system for the support of software development, called computer-aided software engineering, isestablished.
A PROCESS FRAMEWORK:
Software process must be established for effective delivery of software engineering technology.
A process framework establishes the foundation for a complete software process by identifying a
small number of framework activities that are applicable to all software projects, regardless of their size
or complexity.
The process framework encompasses a set of umbrella activities that are applicable across the entire
software process.
Each framework activity is populated by a set of software engineering actions
Each software engineering action is represented by a number of different task sets- each a collection
of software engineering work tasks, related work products, quality assurance points, and project
milestones.
In brief
"A process defines who is doing what, when, and how to reach a certain goal."
A Process Framework
establishes the foundation for a complete software process
identifies a small number of framework activities
applies to all s/w projects, regardless of size/complexity.
also, set of umbrella activities
applicable across entire s/w process.
Each framework activity has
set of s/w engineering actions.
Each s/w engineering action (e.g., design) has
SOFTWARE ENGINEERING
work tasks
project milestones.
Software process
\
SOFTWARE ENGINEERING
Communication: This framework activity involves heavy communication and collaboration with
the customer and encompasses requirements gathering and other related activities.
Planning: This activity establishes a plan for the software engineering work that follows. It
describes the technical tasks to be conducted, the risks that are likely, the resources that will be
required, the work products to be produced, and a work schedule.
Modeling: This activity encompasses the creation of models that allow the developer and
customer to better understand software requirements and the design that will achieve those
requirements. The modeling activity is composed of 2 software engineering actions- analysis and
design.
Analysis encompasses a set of work tasks.
Design encompasses work tasks that create a design model.
Construction: This activity combines core generation and the testing that is required to
uncover the errors in the code.
Deployment: The software is delivered to the customer who evaluates the delivered product and
provides feedback based on the evolution.
These 5 generic framework activities can be used during the development of small programs, the
creation of large web applications, and for the engineering of large, complex computer-based systems.