Unit - I Se 24-25 To Follow
Unit - I Se 24-25 To Follow
UNIT I:
The Nature of Software, The Unique Nature of WebApps, Software Engineering, The
Software Process, Software Engineering Practice, Software Myths. A Generic Process
Model, Process Assessment and Improvement, Prescriptive Process Models, Specialized
Process Models, The Unified Process, Personal and Team Process Models, Process
Technology.
UNIT - I
Software and Software Engineering
Characteristics of software
software has characteristics that are considerably different than those of hardware:
1. Software is developed or engineered, it is not manufactured in the classical sense.
– Manufacturing phase of a product introduces quality problems.
– Software costs are concentrated in engineering, hence cannot be managed as if they
are manufacturing projects.
2. Software doesn’t “wear out”. It deteriorates.
Hardware:
Software Engineering(R22) 2
The failure rate rises again as hardware components suffer from the cumulative effects
of dust. vibration, abuse, temperatures extremes
✓ The relationship,often called the “bathtub curve,” indicates that hardware exhibits
relatively high failure rates early in its life
✓ Worn out hardware components can be replaced.
Software:
▪ the failure rate curve for software should take the form of the “idealized curve”
▪ Undiscovered defects will cause high failure rates early in the life of a program.
Software maintenance requires changing the design and or code
Seven broad categories of computer software present continuing challenges for software engineers:
3. Engineering and Scientific Software: These software are based upon complex numeric
applications
-Used as tools for specific purpose
Ex:MATLAB,WEKA,SCILAB.
6. Web Applications: The Web pages retrieved by a browser (e.g., CGI, HTML, Perl, or Java),
(e.g., hypertext and a variety of visual and audio formats).
Ex: (image and voice),Artificial neural networks, Theorem proving, and Game playing.
1.Open-world computing: the rapid growth of wireless networking may soon lead to true pervasive,
distributed computing
Challenge:
To develop systems and application software that will allow mobile devices, personal computers
and enterprise systems to communicate across vast networks.
2.Netsourcing: It is the World Wide Web is rapidly becoming a computing engine as well as a
content provider.
Challenge:
The challenge for software engineers is to Architect simple (e.g., personal financial planning)
and sophisticated applications that provide a benefit to targeted end-user markets worldwide.
3.Open- Source: Open source is a growing trend that results in distribution of source code for
systems applications so that many people can contribute to its development.
Challenge:
The challenge for software engineers is to build source code that is self-descriptive
Software Engineering(R22) 4
Software Issues:
• Problems associated with software development are not just restricted to software that doesn’t
function but it also includes
– How we develop software?
– How we support a growing volume of existing software?
– How we keep pace with a growing demand for more software?
Participants in Software Development:
• Software Managers – manage budgets, monitor progress made against project plans, always
look for time to market without compromising quality
• Customers - users
• Practitioners – developers, testers
1.1.3 Legacy Software:
The older programs that are developed decades ago are referred to as Legacy software.
Legacy software systems have been continually modified to meet changes in business requirements and
computing platforms
Why must it change?
As time passes, legacy systems often evolve for one or more of the following reasons:
• Software must be adapted to meet the needs of new computing environments or technology.
• Software must be enhanced to implement new business requirements.
• Software must be extended to make it interoperable with other more modern systems or
databases.
• Software must be re-architected to make it viable within a network environment.
1.2 The Unique Nature of WebApps:
---Web applications (WebApps) encompasses everything from a simple Web page that might help a
consumer compute an automobile lease payment to a comprehensive website
---WebApps have evolved into sophisticated computing tools that not only provide stand-alone
function to the end user, but also have be integrated with corporate databases and business
applications.
• Network intensiveness. A WebApp resides on a network and must serve the needs of a
diverse community of clients
• Concurrency. A large number of users may access the WebApp at one time.
• Unpredictable load. The number of users of the WebApp may vary by orders of magnitude
from day to day.
• Performance. If a WebApp user must wait too long, he or she may decide to go elsewhere..
• Availability. Although expectation of 100 percent availability is unreasonable, users of
popular WebApps often demand access on a “24/7/365” basis.
• Data driven. The primary function of many WebApps is to use hypermedia to present text,
graphics, audio, and video content to the end-user.
• Content sensitive. The quality and aesthetic nature of content remains an important
determinant of the quality of a WebApp.
• Continuous evolution. Unlike conventional application software that evolves over a series of
planned, chronologically-spaced releases, Web applications evolve continuously.
• Immediacy. Although immediacy—the compelling need to get software to market quickly—
is a characteristic of many application domains, WebApps often exhibit a time to market that
can be a matter of a few days or weeks.
• Security. Because WebApps are available via network access, it is difficult, if not
impossible, to limit the population of end-users who may access the application.
• Aesthetics. An undeniable part of the appeal of a WebApp is its look and feel.
Software Engineering(R22) 5
A Layered Technology
Quality:
– Engineering approach must rely on quality
– Bed rock that supports Software Engineering
Process:
• To manage software development,
• establish milestones,
• determine the work products to produce,
• manage quality and change
Software Engineering(R22) 6
Methods:
– Provide the technical “how to” for building Software
– rely on a set of basic principles;
– encompass a broad array of tasks such as
• analysis,
• design,
• program construction,
• Testing,
• support
-include modeling activities
Tools:
– Support the process and the methods
– Could be automated or semi-automated
– e.g., Computer Aided Software Engineering (CASE) Tool
Hooker has proposed seven principles that focus on software engineering practice as a whole
1.The First Principal:The Reason It All Exists
A software system exists for one reason to provide values to the user.
2.The Second Principal: KISS (Keep It Simple, Stupid!)
Software design is not a haphazard process.There are many factors to consider in any
design effort.All design should be kept as simple as possible
A system with a long lifetime has more value. Never design yourself into a corner.
be sure that the software has a business purpose
Software myths are erroneous beliefs about software and the process that is used to build it.
1.MANAGEMENT MYTHS
Myth 1:The available standards and procedures for software are enough.
Reality:
• The book of standards may very well exist, but is it used?
• Is it complete?
• Is it adaptable?
Software Engineering(R22) 8
In many cases, the answer to these entire question is NO.
Myth 2:Adding more programmers when the work is behind schedule can catch up.
Reality:
– Adding people to a late software project makes it later
– Training time, increased communication lines
Myth 3:Outsourcing the software project to third party, we can relax and let that party build it.
Reality:
-Software projects need to be controlled and managed.
2.CUSTOMER MYTHS
Myth(1)- General statement of objective is enough to begin writing programs, the details can
be filled in later.
Reality:
3.PRACTITIONER’S MYTH
• Myth(1)-Once the program is written, the job has been done.
Reality: 50% to 70% of all the efforts are expended after the software is delivered to the user.
5. Deployment: Involves delivery of software to the customer for evaluation and feedback
Software Engineering(R22) 13
• Each framework activity includes a set of engineering actions and each action defines a set of
tasks that incorporates
• work products,
• project milestones and
• software quality assurance (SQA) points that are required.
• Umbrella activities are carried throughout the process.
✓ A Process Framework establishes the foundations for a complete software process by identifying
a small number of framework activities that are applicable to all software projects.
✓ It also encompasses a set of umbrella activities that are applicable across the entire software
process.
Software Engineering(R22) 14
1.6.1 Defining a Framework Activity
A software team would need significantly more information before it could properly execute any one of
these activities as part of the software process.
What actions are appropriate for a framework activity, given the nature of the problem to be solved, the
characteristics of the people doing the work, and the stakeholders who are sponsoring the project.
1.6.2 Identifying a Task Set
A task set defines the actual work to be done to accomplish the objectives of a software engineering
action.
• A list of the task to be accomplished
• A list of the work products to be produced
• A list of the quality assurance filters to be applied
For example, a small software project requested by one person with simple requirements, the
communication activity might encompass little more than a phone all with the stakeholder.
Therefore, the only necessary action is phone conversation, the work tasks of this action are:
1. Make contact with stakeholder via telephone.
2. Discuss requirements and take notes.
3. Organize notes into a brief written statement of requirements.
4. E-mail to stakeholder for review and approval.
5.
1.6.3 PROCESS PATTERNS
Software Process is defined as collection of Patterns.
Process pattern provides a template.
It comprises of
2.Intent:
The objective of this is described briefly.
Ex:The purpose of customer communication is to establish connection with customer.
3.Types:
Pattern type is specified
i) Task pattern
action or work.
ii) Stage pattern
framework activity for process
iii)Phase Pattern
sequence of framework activities
4. Initial Context
Conditions under which the pattern applies are described by initial context.
5. Problem
Any specific problem is to be solved by pattern.
6. Solution
Describes how to implement pattern successfully.
7.Resulting Context
It describes conditions that pattern results once implemented successfully.
8.Related Patterns
Provide a list of all process patterns that are directly related to this one
Software Engineering(R22) 15
1.9 Process Flow
Process flow determines how activities, actions and tasks are arranged with respect to sequence and time
4. Formal technical reviews: To uncover and remove errors before going to next
action or activity.
5. Measurement:
Defines and collects process, project and products measures t o e n s u r e customer’s needs.
6. Software configuration management: M anages the effects of change throughout the
software process.
7. Reusability management: Defines and establishes to achieve reusable components.
8. Work product preparation production: Create work products such as models, documents,
logs, forms and lists.
Umbrella Activities are applied throughout the software process. All process models can be
characterized within process framework.
Software Engineering(R22) 17
1.11 Process Assessment and Improvement:
The process should be assessed to ensure that it meets a set of basic process criteria that are essential
for a successful software engineering.
• The relationship between the software process and the methods applied for assessment and
improvement is show in the following figure.
Communication: This framework activity involves heavy communication and collaboration with the
customer and encompasses requirement gathering etc.
Planning: This activity establishes a plan for the technical tasks to be conducted, the risks that are
likely to be occurred, the resources that will be required, the work products to be produced and a
work schedule.
Modeling: This activity encompasses the creation of models and the design that will achieve the
requirements.
i) Analysis
– Provide a clear definition of the required functionality, performance and interface.
Focus is on Software.
– Documented and Reviewed with the Customer.
ii) Design
– Translates requirements into a representation of software e.g., data structures,
algorithms, interfaces etc.
– Documented and Reviewed.
– Serves as a quality check point before coding begins.
Construction: This activity combines code generation and and the resting that is required to uncover
errors in the code.
Software Engineering(R22) 20
Code Generation
– Translation of the design into machine executable code
– Could be mechanized
Testing
a. Check that all functional requirements are met.
b. Ensure that defined input will produce results that agree with required results.
c. Focus is on the logical internals of the software
Deployment: The software is delivered to the customer who evaluates the delivered product and
provides feed back.
Drawbacks or Issues:
• Requires that the customer state all requirements clearly upfront. In reality, it is very difficult.
• A working version of the software will not be available until late in the project life cycle.
• Difficult to accommodate changes in mid-stream as changes have to wait till the end of the
current cycle.
• Leads to blocking states as some team members have to wait for the others to complete
dependent tasks.
b) The V-Model
Software Engineering(R22) 21
A variation of waterfall model depicts the relationship of quality assurance actions to the actions
associated with communication, modeling and early code construction activates.
Team first moves down the left side of the V to refine the problem requirements.
Once code is generated, the team moves up the right side of the V, performing a series of tests that
validate each of the models created as the team moved down the left side.
• When initial requirements are reasonably well defined, but the overall scope of the
development effort precludes a purely linear process. A compelling need to expand a limited
set of new functions to a later system release.
• It combines elements of linear and parallel process flows. Each linear sequence produces
deliverable increments of the software.
• Applies Linear Sequences in a staggered fashion resulting in multiple incremental
deliverables
• The first increment is often a core product with many supplementary features. Users use it
and evaluate it with more modifications to better meet the needs.
• Develops a plan based on feedback from the use of the product (both development and
customer feedback) to fix problems, augment functionality in the next deliverable.
Suitable for
• Where there is short of skilled resources
• Where new technology is being used
• When business deadlines are aggressive
b) RAD Model:
• Rapid Application Development
• Emphasizes extremely short development cycle-60 to 90 days
• Incremental Software Development Process
Drawbacks:
– Requires large manpower for larger projects to create sufficient number of RAD
teams
– Requires high commitment to develop software in a shorter time span
Not suitable when application relies on new technology and requires high degree of interoperability
with existing software
Evolutionary Models:
• The evolutionary model permits requirements, plans and estimates to evolve over time.
• Evolutionary models are iterative. They are characterized in a manner that enables software
engineers to develop increasingly more complete versions of the software.
• Two types
1)prototyping and the
2) spiral model
Software Engineering(R22) 26
– .
Prototyping Model:
The quick design focuses on a representation of those aspects of the software that will be visible to
the customer/user.
Two types of prototypes exist:
1. Throw away prototype
2. Evolutionary prototype
1. Communication
In this phase, developer and customer meet and discuss the overall objectives of the software.
• It includes only the important aspects like input and output format of the software.
• It focuses on those aspects which are visible to the user rather than the detailed plan.
3. Modeling quick designThis phase gives the clear idea about the development of software because the
software is now built.
5. Deployment, delivery, feedbackIf the user is not satisfied with current prototype then it refines
according to the requirements of the user.
• The process of refining the prototype is repeated until all the requirements of users are met.
Some prototypes are built as “throwaways”,
b) Spiral Model:
• Proposed by Boehm
• the spiral model is an evolutionary software process model that Combines the iterative nature of
prototyping with Prototype model with the Linear Sequential Model.
● Using the spiral model, software is developed in a series of evolutionary releases.
○ During early iterations, the release might be a model or prototype.
○ During later iterations, increasingly more complete versions of the engineered system are produced.
○ A spiral model is divided into a set of framework activities-– task regions
○ Each of the framework activities represent one segment of the spiral path.
○ As this evolutionary process begins, the software team performs activities that are implied by a circuit
around the spiral in a clockwise direction, beginning at the center.
Phase1: Concept development
Phase2: New product development
Phase3: Product enhancements
Phase4: Product Maintenance
Anchor point milestones—a combination of work products and conditions that are attained along the path
of the spiral—are noted for each evolutionary pass.
a) Concurrent Model:
Planning: This activity isolates requirements. Based on these, size and resource estimates, defect
estimates etc. are made.
High-Level Design: External Specifications for each component are developed and a component
design is created.
High-Level Design review: Formal verification methods are applied to uncover errors in the design.
Development: The component level design is refined and reviewed. Code is generated, reviewed,
complied and tested.
Postmortem: using measures and metrics the effectiveness of the process is determined.
.
• These activities enable the team to plan, design and construct software in a disciplined manner.
• The postmortem sets the stage for process improvements.
• TSP makes use of a wide variety of scripts, forms and standards that serve to guide team members
in their work.
• Scripts define specific process activities i.e., project launch, design, implementation, integration &
testing and postmortem and other more detailed work functions like development planning,
requirements development, software configuration management and unit test.
The following are some of the important differences between Product and Process.
A product life cycle tends to be in the short A process life cycle is generally long
Life
3 term. term.
The main goal of product development isto
The main goal of a process is to make
4 Goal finish the work and get the product
a good quality products.
delivered successfully.
*********************