Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
12 views

Software-Engineering Lecture - 02 - Notes

Uploaded by

arishmakhalid838
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views

Software-Engineering Lecture - 02 - Notes

Uploaded by

arishmakhalid838
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 11

CS-304Software Engineering -GIFT-GRW

Lecture No. 2
Software Process

Software Engineering is a “systematic, disciplined, and quantifiable” approach applied by one software
team may be burdensome to another. We need discipline, but we also need adaptability and agility.

Software engineering is a layered technology. Referring to below figure, any engineering approach
(including software engineering) must rest on an organizational commitment to quality. Total quality
management, Six Sigma, and similar philosophies foster a continuous process improvement culture, and
it is this culture that ultimately leads to the development of increasingly more effective approaches to
software engineering. The bedrock that supports software engineering is a quality focus.

The foundation for software engineering is the process layer. The software engineering process is the
glue that holds the technology layers together and enables rational and timely development of
computer software. Process defines a framework that must be established for effective delivery of
software engineering technology. The software process forms the basis for management control of
software projects and establishes the context in which technical methods are applied, work products
(models, documents, data, reports, forms, etc.) are produced, milestones are established, quality is
ensured, and change is properly managed.

Software engineering methods provide the technical how-to’s for building software. Methods
encompass a broad array of tasks that include communication, requirements analysis, design modeling,
program construction, testing, and support. Software engineering methods rely on a set of basic
principles that govern each area of the technology and include modeling activities and other descriptive
techniques. Software engineering tools provide automated or semiautomated 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, is established.

©Copyright GIFT University Gujranwala Page 1


CS-304Software Engineering -GIFT-GRW

Process Framework
A process was defined as a collection of work activities, actions, and tasks that are performed when
some work product is to be created. Each of these activities, actions, and tasks reside within a
framework or model that defines their relationship with the process and with one another. Referring to
the figure, each framework activity is populated by a set of software engineering actions. Each software
engineering action is defined by a task set that identifies the work tasks that are to be completed, the
work products that will be produced, the quality assurance points that will be required, and the
milestones that will be used to indicate progress.

A generic process framework for software engineering defines five framework activities—
communication, planning, modeling, construction, and deployment. In addition, a set of umbrella
activities—project tracking and control, risk management, quality assurance, configuration
management, technical reviews, and others—are applied throughout the process.

1. Communication

 Involves communication among the customer and other stake holders; encompasses
requirements gathering

2. Planning

 Establishes a plan for software engineering work; addresses technical tasks, resources,
work products, and work schedule

3. Modelling (Analyse, Design)

 Encompasses the creation of models to better under the requirements and the design

4. Construction (Code, Test)

 Combines code generation and testing to uncover errors

5. Deployment

 Involves delivery of software to the customer for evaluation and feedback

Defining Software Process


A software process is also knows as software methodology. It is a set of related activities that leads to
the production of the software. These activities may involve the development of the software from the
scratch, or, modifying an existing system.

Software Process is a set of required activities. And the outcome of the activities with a target to
produce a software product. A software process is a flowchart of developing a software product. Which
includes fathering requirements, then analyzing those requirements. Likewise scheduling development
phases, checking the developments, implementing changes, and many more. This can be till the delivery
of the final software product to the after delivery service methods and more.

Activities Involved in a Software Process

©Copyright GIFT University Gujranwala Page 2


CS-304Software Engineering -GIFT-GRW

Software Specification

The customer and the engineers gathers and analyze the features, workflow, operational constraints or
limitations of the final software product. This part is common in every all software process. Despite of
how big or small, simple or complex the software product is. It defines the main functionalities of the
software and the constrains around them.

Software Design and Implementation

After all the specifications, goals for the software product are fixed, engineers starts developing the
software. Which not only includes coding but also gathering required artworks, audio and visual
elements for the software product.

Software Validation

Software product must be checked for existing bugs, incomplete or unavailable features, and many
more. It may be done multiple times (milestones) during the software development phase. In other
words, the software must conforms to it’s specification and meets the customer needs.

Software Evolution

Software evolution is the term used in software engineering to refer to the process of developing
software initially. Then repeatedly updating it for various reasons.

Process Description

1. Products: The outcomes of the an activity. For example, the outcome of architectural design
maybe a model for the software architecture.
2. Roles: The responsibilities of the people involved in the process. For example, the project
manager, programmer, etc.
3. Pre and post conditions: The conditions that must be true before and after an activity.

What is SDLC?

SDLC is a process followed for a software project, within a software organization. It consists of a detailed
plan describing how to develop, maintain, replace and alter or enhance specific software. The life cycle
defines a methodology for improving the quality of software and the overall development process.

The following figure is a graphical representation of the various stages of a typical SDLC.

©Copyright GIFT University Gujranwala Page 3


CS-304Software Engineering -GIFT-GRW

Stages of SDLC

A typical Software Development Life Cycle consists of the following stages −

Stage 1: Planning and Requirement Analysis

Requirement analysis is the most important and fundamental stage in SDLC. It is performed by the
senior members of the team with inputs from the customer, the sales department, market surveys and
domain experts in the industry. This information is then used to plan the basic project approach and to
conduct product feasibility study in the economical, operational and technical areas.

Planning for the quality assurance requirements and identification of the risks associated with the
project is also done in the planning stage. The outcome of the technical feasibility study is to define the
various technical approaches that can be followed to implement the project successfully with minimum
risks.

Stage 2: Defining Requirements

Once the requirement analysis is done the next step is to clearly define and document the product
requirements and get them approved from the customer or the market analysts. This is done through an
SRS (Software Requirement Specification) document which consists of all the product requirements to
be designed and developed during the project life cycle.

Stage 3: Designing the Product Architecture

SRS is the reference for product architects to come out with the best architecture for the product to be
developed. Based on the requirements specified in SRS, usually more than one design approach for the
product architecture is proposed and documented in a DDS - Design Document Specification.

This DDS is reviewed by all the important stakeholders and based on various parameters as risk
assessment, product robustness, design modularity, budget and time constraints, the best design
approach is selected for the product.

A design approach clearly defines all the architectural modules of the product along with its
communication and data flow representation with the external and third party modules (if any). The

©Copyright GIFT University Gujranwala Page 4


CS-304Software Engineering -GIFT-GRW

internal design of all the modules of the proposed architecture should be clearly defined with the
minutest of the details in DDS.

Stage 4: Building or Developing the Product

In this stage of SDLC the actual development starts and the product is built. The programming code is
generated as per DDS during this stage. If the design is performed in a detailed and organized manner,
code generation can be accomplished without much hassle.

Developers must follow the coding guidelines defined by their organization and programming tools like
compilers, interpreters, debuggers, etc. are used to generate the code. Different high level programming
languages such as C, C++, Pascal, Java and PHP are used for coding. The programming language is chosen
with respect to the type of software being developed.

Stage 5: Testing the Product

This stage is usually a subset of all the stages as in the modern SDLC models, the testing activities are
mostly involved in all the stages of SDLC. However, this stage refers to the testing only stage of the
product where product defects are reported, tracked, fixed and retested, until the product reaches the
quality standards defined in the SRS.

Stage 6: Deployment in the Market and Maintenance Once the product is tested and ready to be
deployed it is released formally in the appropriate market. Sometimes product deployment happens in
stages as per the business strategy of that organization. The product may first be released in a limited
segment and tested in the real business environment (UAT- User acceptance testing).

Then based on the feedback, the product may be released as it is or with suggested enhancements in
the targeting market segment. After the product is released in the market, its maintenance is done for
the existing customer base.

Waterfall Model
The Waterfall Model was the first Process Model to be introduced. It is also referred to as a linear-
sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase
must be completed before the next phase can begin and there is no overlapping in the phases.
The Waterfall model is the earliest SDLC approach that was used for software development.
The waterfall Model illustrates the software development process in a linear sequential flow. This
means that any phase in the development process begins only if the previous phase is complete. In this
waterfall model, the phases do not overlap.

Waterfall Model - Design

Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure success
of the project. In "The Waterfall" approach, the whole process of software development is divided into

©Copyright GIFT University Gujranwala Page 5


CS-304Software Engineering -GIFT-GRW

separate phases. In this Waterfall model, typically, the outcome of one phase acts as the input for the
next phase sequentially.
The following illustration is a representation of the different phases of the Waterfall Model.

The sequential phases in Waterfall model are −


 Requirement Gathering and analysis − All possible requirements of the system to be developed
are captured in this phase and documented in a requirement specification document.
 System Design − The requirement specifications from first phase are studied in this phase and
the system design is prepared. This system design helps in specifying hardware and system
requirements and helps in defining the overall system architecture.
 Implementation − With inputs from the system design, the system is first developed in small
programs called units, which are integrated in the next phase. Each unit is developed and
tested for its functionality, which is referred to as Unit Testing.
 Integration and Testing − All the units developed in the implementation phase are integrated
into a system after testing of each unit. Post integration the entire system is tested for any
faults and failures.
 Deployment of system − Once the functional and non-functional testing is done; the product is
deployed in the customer environment or released into the market.
 Maintenance − There are some issues which come up in the client environment. To fix those
issues, patches are released. Also to enhance the product some better versions are released.
Maintenance is done to deliver these changes in the customer environment.

©Copyright GIFT University Gujranwala Page 6


CS-304Software Engineering -GIFT-GRW

All these phases are cascaded to each other in which progress is seen as flowing steadily downwards
(like a waterfall) through the phases. The next phase is started only after the defined set of goals are
achieved for previous phase and it is signed off, so the name "Waterfall Model". In this model, phases
do not overlap.

Waterfall Model - Application

Every software developed is different and requires a suitable SDLC approach to be followed based on
the internal and external factors. Some situations where the use of Waterfall model is most
appropriate are −
 Requirements are very well documented, clear and fixed.
 Product definition is stable.
 Technology is understood and is not dynamic.
 There are no ambiguous requirements.
 Ample resources with required expertise are available to support the product.
 The project is short.

Waterfall Model - Advantages

The advantages of waterfall development are that it allows for departmentalization and control. A
schedule can be set with deadlines for each stage of development and a product can proceed through
the development process model phases one by one.
Development moves from concept, through design, implementation, testing, installation,
troubleshooting, and ends up at operation and maintenance. Each phase of development proceeds in
strict order.
Some of the major advantages of the Waterfall Model are as follows −
 Simple and easy to understand and use
 Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a
review process.
 Phases are processed and completed one at a time.
 Works well for smaller projects where requirements are very well understood.
 Clearly defined stages.
 Well understood milestones.
 Easy to arrange tasks.
 Process and results are well documented.

Waterfall Model - Disadvantages

©Copyright GIFT University Gujranwala Page 7


CS-304Software Engineering -GIFT-GRW

The disadvantage of waterfall development is that it does not allow much reflection or revision. Once
an application is in the testing stage, it is very difficult to go back and change something that was not
well-documented or thought upon in the concept stage.
The major disadvantages of the Waterfall Model are as follows −
 No working software is produced until late during the life cycle.
 High amounts of risk and uncertainty.
 Not a good model for complex and object-oriented projects.
 Poor model for long and ongoing projects.
 Not suitable for the projects where requirements are at a moderate to high risk of changing. So,
risk and uncertainty is high with this process model.
 It is difficult to measure progress within stages.
 Cannot accommodate changing requirements.
 Adjusting scope during the life cycle can end a project.
 Integration is done as a "big-bang. at the very end, which doesn't allow identifying any
technological or business bottleneck or challenges early.
When to use the waterfall model

 This model is used only when the requirements are very well known, clear and fixed.
 Product definition is stable.
 Technology is understood
 There are no ambiguous requirements.
 Ample resources with required expertise are available freely.
 The project is short.

Incremental Model
In incremental model the whole requirement is divided into various builds. Multiple development cycles
take place here, making the life cycle a “multi-waterfall” cycle.Incremental Model is a process of
software development where requirements are broken down into multiple standalone modules of
software development cycle. Incremental development is done in steps from analysis design,
implementation, testing/verification, maintenance.

©Copyright GIFT University Gujranwala Page 8


CS-304Software Engineering -GIFT-GRW

Each iteration passes through the requirements, design, coding and testing phases. And each
subsequent release of the system adds function to the previous release until all designed functionality
has been implemented.

The system is put into production when the first increment is delivered. The first increment is often a
core product where the basic requirements are addressed, and supplementary features are added in the
next increments. Once the core product is analyzed by the client, there is plan development for the next
increment.

Characteristics of an Incremental module includes

 System development is broken down into many mini development projects


 Partial systems are successively built to produce a final total system
 Highest priority requirement is tackled first
 Once the requirement is developed, requirement for that increment are frozen

Incremental Phases Activities performed in incremental phases

RequirementAnalysis  Requirement and specification of the software are collected

Design  Some high-end function are designed during this stage

Code  Coding of software is done during this stage

Test  Once the system is deployed, it goes through the testing


phase

©Copyright GIFT University Gujranwala Page 9


CS-304Software Engineering -GIFT-GRW

Types of Incremental model –

1. Staged Delivery Model – Construction of only one part of the project at a time.

2. Parallel Development Model – Different subsystems are developed at the same time. It can decrease the

calendar time needed for the development, i.e. TTM (Time to Market), if enough Resources are available.

When to use Incremental models?

 Requirements of the system are clearly understood


 When demand for an early release of a product arises
 When software engineering team are not very well skilled or trained

©Copyright GIFT University Gujranwala Page 10


CS-304Software Engineering -GIFT-GRW

 When high-risk features and goals are involved


 Such methodology is more in use for web application and product based companies

Advantages and Disadvantages of Incremental Model

Advantages Disadvantages

 The software will be generated quickly  It requires a good planning designing


during the software life cycle

 It is flexible and less expensive to change  Problems might cause due to system
requirements and scope architecture as such not all requirements
collected up front for the entire software
lifecycle

 Throughout the development stages  Each iteration phase is rigid and does not
changes can be done overlap each other

 This model is less costly compared to  Rectifying a problem in one unit requires
others correction in all the units and consumes a
lot of time

 A customer can respond to each building

 Errors are easy to be identified

©Copyright GIFT University Gujranwala Page 11

You might also like