KEMBAR78
OOSE Notes - Unit 1 | PDF | Software Development Process | Prototype
0% found this document useful (0 votes)
16 views15 pages

OOSE Notes - Unit 1

The document provides an overview of software engineering, emphasizing the systematic and disciplined approach to software development, including key principles, attributes, and methodologies such as Agile and various process models. It outlines the Software Development Life Cycle (SDLC), detailing stages from planning and requirement analysis to deployment and maintenance, while also discussing the advantages of adopting software engineering practices. Additionally, it covers different process models like Waterfall, Incremental, and RAD, highlighting their characteristics, advantages, and disadvantages.

Uploaded by

Kowsalya G
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views15 pages

OOSE Notes - Unit 1

The document provides an overview of software engineering, emphasizing the systematic and disciplined approach to software development, including key principles, attributes, and methodologies such as Agile and various process models. It outlines the Software Development Life Cycle (SDLC), detailing stages from planning and requirement analysis to deployment and maintenance, while also discussing the advantages of adopting software engineering practices. Additionally, it covers different process models like Waterfall, Incremental, and RAD, highlighting their characteristics, advantages, and disadvantages.

Uploaded by

Kowsalya G
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 15

UNIT I SOFTWARE PROCESS AND AGILE DEVELOPMENT

Introduction to Software Engineering, Software Process, Perspective and Specialized


Process Models –Introduction to Agility-Agile process-Extreme programming-XP Process-
Case Study.

 Introduction to Software Engineering

 Software is a program or set of programs containing instructions that provide


desired functionality. Engineering is the process of designing and building
something that serves a particular purpose and finds a cost-effective solution to
problems.

What is Software Engineering?


Software Engineering is the process of designing, developing, testing, and
maintaining software. It is a systematic and disciplined approach to software
development that aims to create high-quality, reliable, and maintainable software.
1. Software engineering includes a variety of techniques, tools, and methodologies,
including requirements analysis, design, testing, and maintenance.
2. It is a rapidly evolving field, and new tools and technologies are constantly being
developed to improve the software development process.
3. By following the principles of software engineering and using the appropriate
tools and methodologies, software developers can create high-quality, reliable,
and maintainable software that meets the needs of its users.
4. Software Engineering is mainly used for large projects based on software systems
rather than single programs or applications.
5. The main goal of Software Engineering is to develop software applications for
improving quality, budget, and time efficiency.
6. Software Engineering ensures that the software that has to be built should be
consistent, correct, also on budget, on time, and within the required
requirements.
Key Principles of Software Engineering
1. Modularity: Breaking the software into smaller, reusable components that can
be developed and tested independently.
2. Abstraction: Hiding the implementation details of a component and exposing
only the necessary functionality to other parts of the software.
3. Encapsulation: Wrapping up the data and functions of an object into a single
unit, and protecting the internal state of an object from external modifications.
4. Reusability: Creating components that can be used in multiple projects, which
can save time and resources.
5. Maintenance: Regularly updating and improving the software to fix bugs, add
new features, and address security vulnerabilities.
6. Testing: Verifying that the software meets its requirements and is free of bugs.
7. Design Patterns: Solving recurring problems in software design by providing
templates for solving them.
8. Agile methodologies: Using iterative and incremental development processes
that focus on customer satisfaction, rapid delivery, and flexibility.
9. Continuous Integration & Deployment: Continuously integrating the code
changes and deploying them into the production environment.
Main Attributes of Software Engineering
Software Engineering is a systematic, disciplined, quantifiable study and approach to the
design, development, operation, and maintenance of a software system. There are four
main Attributes of Software Engineering.

Page 1 of 15
1. Efficiency: It provides a measure of the resource requirement of a software
product in an efficient way.
2. Reliability: It provides the assurance that the product will deliver the same
results when used in similar working environment.
3. Reusability: This attribute makes sure that the module can be used in multiple
applications.
4. Maintainability: It is the ability of the software to be modified, repaired, or
enhanced easily with changing requirements.
Dual Role of Software
There is a dual role of software in the industry. The first one is as a product and the other
one is as a vehicle for delivering the product. We will discuss both of them.
1. As a Product
 It delivers computing potential across networks of Hardware.
 It enables the Hardware to deliver the expected functionality.
 It acts as an information transformer because it produces, manages, acquires,
modifies, displays, or transmits information.
2. As a Vehicle for Delivering a Product
 It provides system functionality (e.g., payroll system).
 It controls other software (e.g., an operating system).
 It helps build other software (e.g., software tools).

Objectives of Software Engineering


1. Maintainability: It should be feasible for the software to evolve to meet
changing requirements.
2. Efficiency: The software should not make wasteful use of computing devices
such as memory, processor cycles, etc.
3. Correctness: A software product is correct if the different requirements
specified in the SRS Document have been correctly implemented.
4. Reusability: A software product has good reusability if the different modules of
the product can easily be reused to develop new products.
5. Testability: Here software facilitates both the establishment of test criteria and
the evaluation of the software with respect to those criteria.
6. Reliability: It is an attribute of software quality. The extent to which a program
can be expected to perform its desired function, over an arbitrary time period.
7. Portability: In this case, the software can be transferred from one computer
system or environment to another.
8. Adaptability: In this case, the software allows differing system constraints and
the user needs to be satisfied by making changes to the software.
9. Interoperability: Capability of 2 or more functional units to process data
cooperatively.

Advantages of Software Engineering


There are several advantages to using a systematic and disciplined approach to software
development, such as:
1. Improved Quality: By following established software engineering principles
and techniques, the software can be developed with fewer bugs and higher
reliability.
2. Increased Productivity: Using modern tools and methodologies can streamline
the development process, allowing developers to be more productive and complete
projects faster.
3. Better Maintainability: Software that is designed and developed using sound
software engineering practices is easier to maintain and update over time.

Page 2 of 15
4. Reduced Costs: By identifying and addressing potential problems early in the
development process, software engineering can help to reduce the cost of fixing
bugs and adding new features later on.
5. Increased Customer Satisfaction: By involving customers in the development
process and developing software that meets their needs, software engineering
can help to increase customer satisfaction.
6. Better Team Collaboration: By using Agile methodologies and continuous
integration, software engineering allows for better collaboration among
development teams.
7. Better Scalability: By designing software with scalability in mind, software
engineering can help to ensure that software can handle an increasing number of
users and transactions.
8. Better Security: By following the Software Development Life Cycle (SDLC) and
performing security testing, software engineering can help to prevent security
breaches and protect sensitive data.

Software Development Life Cycle (SDLC)

What is Software Development Life Cycle (SDLC)?

SDLC is a process followed for software building within a software


organization. SDLC consists of a precise plan that describes,
 how to develop, maintain, replace, and enhance specific software.
 The life cycle defines a method for improving the quality of software and the all-
around development process.

Page 3 of 15
Stage-1: Planning and Requirement Analysis

Planning is a crucial step in everything, just as in software development. In this same


stage, requirement analysis is also performed by the developers of the organization. This
is attained from customer inputs, and sales department/market surveys.

The information from this analysis forms the building blocks of a basic project. The quality
of the project is a result of planning. Thus, in this stage, the basic project is designed with
all the available information.

Stage-2: Defining Requirements

Page 4 of 15
In this stage, all the requirements for the target software are specified. These
requirements get approval from customers, market analysts, and stakeholders.
This is fulfilled by utilizing SRS (Software Requirement Specification). This is a sort of
document that specifies all those things that need to be defined and created during the
entire project cycle.

Stage-3: Designing Architecture

SRS is a reference for software designers to come up with the best architecture for the
software. Hence, with the requirements defined in SRS, multiple designs for the product
architecture are present in the Design Document Specification (DDS).

This DDS is assessed by market analysts and stakeholders. After evaluating all the
possible factors, the most practical and logical design is chosen for development.

Stage-4: Developing Product

Page 5 of 15
At this stage, the fundamental development of the product starts. For this, developers use
a specific programming code as per the design in the DDS. Hence, it is important for the
coders to follow the protocols set by the association. Conventional programming tools like
compilers, interpreters, debuggers, etc. are also put into use at this stage. Some popular
languages like C/C++, Python, Java, etc. are put into use as per the software regulations.

Stage-5: Product Testing and Integration

After the development of the product, testing of the software is necessary to ensure its
smooth execution. Although, minimal testing is conducted at every stage of
SDLC. Therefore, at this stage, all the probable flaws are tracked, fixed, and retested.
This ensures that the product confronts the quality requirements of SRS.

Documentation, Training, and Support: Software documentation is an essential


part of the software development life cycle. A well-written document acts as a tool and
means to information repository necessary to know about software processes, functions,
and maintenance. Documentation also provides information about how to use the
product. Training in an attempt to improve the current or future employee performance
by increasing an employee’s ability to work through learning, usually by changing his
attitude and developing his skills and understanding.

Page 6 of 15
Stage 6: Deployment and Maintenance of Products

After detailed testing, the conclusive product is released in phases as per the
organization’s strategy. Then it is tested in a real industrial environment. It is important
to ensure its smooth performance. If it performs well, the organization sends out the
product as a whole. After retrieving beneficial feedback, the company releases it as it is
or with auxiliary improvements to make it further helpful for the customers. However,
this alone is not enough. Therefore, along with the deployment, the product’s supervision.

Page 7 of 15
Perspective and Specialized Process Models

 Prescriptive Process Models


o Waterfall Model
o Incremental Process Model
 Incremental Model
 RAD Model
o Evolutionary Model
 Prototyping
 Spiral Model
 Concurrent Model
 Specialized Process Models
o Component Based Development
o The Formal Methods Model
o Aspect – Oriented Software Development
There are three types of prescriptive process models. They are:
1. The Waterfall Model
2. Incremental Process model
3. RAD model

1. Waterfall Model
 The waterfall model is also called as 'Linear sequential model' or
'Classic life cycle model'.
 In this model, each phase is fully completed before the beginning of the next
phase.
 This model is used for the small projects.
 In this model, feedback is taken after each phase to ensure that the project
is on the right path.
 Testing part starts only after the development is complete.

Page 8 of 15
An alternative design for 'linear sequential model' is as follows:

Advantages of waterfall model


 The waterfall model is simple and easy to understand, implement, and
use.
 All the requirements are known at the beginning of the project, hence it is
easy to manage.
 It avoids overlapping of phases because each phase is completed at once.
 This model works for small projects because the requirements are
understood very well.
 This model is preferred for those projects where the quality is more
important as compared to the cost of the project.

Disadvantages of the waterfall model


 This model is not good for complex and object oriented projects.
 It is a poor model for long projects.
 The problems with this model are uncovered, until the software testing.
 The amount of risk is high.

2. Incremental Process model


 The incremental model combines the elements of waterfall model and they
are applied in an iterative fashion.
 The first increment in this model is generally a core product.
 Each increment builds the product and submits it to the customer for any
suggested modifications.
 The next increment implements on the customer's suggestions and add
additional requirements in the previous increment.
 This process is repeated until the product is finished.
For example, the word-processing software is developed using the
incremental model.

Page 9 of 15
Advantages of incremental model
 This model is flexible because the cost of development is low and initial
product delivery is faster.
 It is easier to test and debug during the smaller iteration.
 The working software generates quickly and early during the software life
cycle.
 The customers can respond to its functionalities after every increment.
Disadvantages of the incremental model
 The cost of the final product may cross the cost estimated initially.
 This model requires a very clear and complete planning.
 The planning of design is required before the whole system is broken into
small increments.
 The demands of customer for the additional functionalities after every
increment causes problem during the system architecture.

3. RAD model

 RAD is a Rapid Application Development model.


 Using the RAD model, software product is developed in a short period of
time.
 The initial activity starts with the communication between customer and
developer.
 Planning depends upon the initial requirements and then the requirements
are divided into groups.
 Planning is more important to work together on different modules.

The RAD model consist of following phases:

1. Business Modeling

 Business modeling consist of the flow of information between various


functions in the project.
 For example what type of information is produced by every function and
which are the functions to handle that information.
 A complete business analysis should be performed to get the essential
business information.

2. Data modeling

 The information in the business modeling phase is refined into the set of
objects and it is essential for the business.
 The attributes of each object are identified and define the relationship
between objects.

3. Process modeling

 The data objects defined in the data modeling phase are changed to fulfil
the information flow to implement the business model.
 The process description is created for adding, modifying, deleting or
retrieving a data object.

Page 10 of 15
4. Application generation

 In the application generation phase, the actual system is built.


 To construct the software the automated tools are used.

5. Testing and turnover

 The prototypes are independently tested after each iteration so that the
overall testing time is reduced.
 The data flow and the interfaces between all the components are are fully
tested. Hence, most of the programming components are already tested.

Evolutionary Process Models


 Evolutionary models are iterative type models.
 They allow to develop more complete versions of the software.

Following are the evolutionary process models.

1. The prototyping model


2. The spiral model
3. Concurrent development model

Page 11 of 15
1. The Prototyping model

 Prototype is defined as first or preliminary form using which other forms are
copied or derived.
 Prototype model is a set of general objectives for software.
 It does not identify the requirements like detailed input, output.
 It is software working model of limited functionality.
 In this model, working programs are quickly produced.

The different phases of Prototyping model are:

1. Communication
In this phase, developer and customer meet and discuss the overall objectives of
the software.

2. Quick design

 Quick design is implemented when requirements are known.


 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.
 It helps to construct a prototype.

3. Modeling quick design

 This phase gives the clear idea about the development of software because
the software is now built.
 It allows the developer to better understand the exact requirements.

4. Construction of prototype
The prototype is evaluated by the customer itself.

Page 12 of 15
5. Deployment, delivery, feedback

 If 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.
 When the users are satisfied with the developed prototype then the system
is developed on the basis of final prototype.

Advantages of Prototyping Model

 Prototype model need not know the detailed input, output, processes,
adaptability of operating system and full machine interaction.
 In the development process of this model users are actively involved.
 The development process is the best platform to understand the system by
the user.
 Errors are detected much earlier.
 Gives quick user feedback for better solutions.
 It identifies the missing functionality easily. It also identifies the
confusing or difficult functions.

Disadvantages of Prototyping Model:

 The client involvement is more and it is not always considered by the


developer.
 It is a slow process because it takes more time for development.
 Many changes can disturb the rhythm of the development team.
 It is a thrown away prototype when the users are confused with it.

2. The Spiral model

 Spiral model is a risk driven process model.


 It is used for generating the software projects.
 In spiral model, an alternate solution is provided if the risk is found in the risk
analysis, then alternate solutions are suggested and implemented.
 It is a combination of prototype and sequential model or waterfall model.
 In one iteration all activities are done, for large project's the output is small.

The framework activities of the spiral model are as shown in the


following figure.

Page 13 of 15
Advantages of Spiral Model

 It reduces high amount of risk.


 It is good for large and critical projects.
 It gives strong approval and documentation control.
 In spiral model, the software is produced early in the life cycle process.

Disadvantages of Spiral Model

 It can be costly to develop a software model.


 It is not used for small projects.

3. The concurrent development model

 The concurrent development model is called as concurrent model.


 The communication activity has completed in the first iteration and exits
in the awaiting changes state.
 The modeling activity completed its initial communication and then go to
the underdevelopment state.
 If the customer specifies the change in the requirement, then the modeling
activity moves from the under development state into the awaiting change
state.
 The concurrent process model activities moving from one state to another
state.

Page 14 of 15
Advantages of the concurrent development model

 This model is applicable to all types of software development processes.


 It is easy for understanding and use.
 It gives immediate feedback from testing.
 It provides an accurate picture of the current state of a project.

Disadvantages of the concurrent development model

 It needs better communication between the team members. This may not
be achieved all the time.
 It requires to remember the status of the different activities.

Page 15 of 15

You might also like