0% found this document useful (0 votes)
46 views30 pages

Unit 1

The document discusses the evolving role of software as both a product and a vehicle for delivering functionality, highlighting its characteristics and types, including system, application, and embedded software. It outlines the principles of software engineering, emphasizing modularity, maintainability, and testing, while detailing the software development life cycle (SDLC) and various process models like Waterfall, Incremental, and Unified Process. The document also describes a structured software process framework that includes tasks, activities, and umbrella activities to ensure quality and efficiency in software development.

Uploaded by

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

Unit 1

The document discusses the evolving role of software as both a product and a vehicle for delivering functionality, highlighting its characteristics and types, including system, application, and embedded software. It outlines the principles of software engineering, emphasizing modularity, maintainability, and testing, while detailing the software development life cycle (SDLC) and various process models like Waterfall, Incremental, and Unified Process. The document also describes a structured software process framework that includes tasks, activities, and umbrella activities to ensure quality and efficiency in software development.

Uploaded by

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

UNIT -1

THE EVOLVING ROLE OF SOFTWARE :


Now a days software takes a dual role. It is both a product and a vehicle for delivering a
product.

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

CHANGING NATURE OF SOFTWARE:


SOFTWARE: The software is an instruction or computer program that when
executed provides desired features, function, and performance. A data
structure that enables the program to adequately manipulate information and
documents that describe the operation and use of the program.

Characteristics of software:
There is some characteristic of software which is given below:
Reliability: The ability of the software to consistently perform its intended
tasks without unexpected failures or errors.
Usability: How easily and effectively users can interact with and navigate
through the software.
Efficiency: The optimal utilization of system resources to perform tasks on time.
Maintainability: How easily and cost-effectively software can be modified,
updated, or extended.
Portability: The ability of software to run on different platforms or
environments without requiring significant modifications.
Types of Software:
1. System Software: System software is a collection of programs that are
written to service other programs. Some system software processes
complex but determinate, information structures. Other system
application processes largely indeterminate data. Sometimes when, the
system software area is characterized by the heavy interaction with
computer hardware that requires scheduling, resource sharing, and
sophisticated process management.
2. Application Software: Application software is defined as programs that
solve a specific business need. Application in this area processes
business or technical data in a way that facilitates business operation or
management technical decision-making. In addition to conventional data
processing applications, application software is used to control business
functions in real-time.
3. Engineering and Scientific Software: This software is used to facilitate
the engineering function and task. however modern applications within
the engineering and scientific area are moving away from conventional
numerical algorithms. Computer-aided design, system simulation, and
other interactive applications have begun to take a real-time and even
system software characteristic.
4. Embedded Software: Embedded software resides within the system or
product and is used to implement and control features and functions for
the end-user and for the system itself. Embedded software can perform
limited and esoteric functions or provide significant function and control
capability.
5. Product-line Software: Designed to provide a specific capability for use
by many customers, product-line software can focus on the limited and
esoteric marketplace or address the mass consumer market.
6. Web Application: It is a client-server computer program that the client
runs on the web browser. In their simplest form, Web apps can be little
more than a set of linked hypertext files that present information using
text and limited graphics. However, as e-commerce and B2B applications
grow in importance. Web apps are evolving into a sophisticated
computing environment that not only provides a standalone feature,
computing function, and content to the end user.
7. Artificial Intelligence Software: Artificial intelligence software makes use
of a nonnumerical algorithm to solve a complex problem that is not
amenable to computation or straightforward analysis. Applications
within this area include robotics, expert systems, pattern recognition,
artificial neural networks, theorem proving, and game playing.
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.
Key Principles of Software Engineering
Modularity: Breaking the software into smaller, reusable components
that can be developed and tested independently.
Abstraction: Hiding the implementation details of a component and
exposing only the necessary functionality to other parts of the software.
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.
Reusability: Creating components that can be used in multiple projects,
which can save time and resources.
Maintenance: Regularly updating and improving the software to fix bugs,
add new features, and address security vulnerabilities.
Testing: Verifying that the software meets its requirements and is free of
bugs.
Design Patterns: Solving recurring problems in software design by
providing templates for solving them.
Agile methodologies: Using iterative and incremental development
processes that focus on customer satisfaction, rapid delivery, and
flexibility.
Continuous Integration & Deployment: Continuously integrating the
code changes and deploying them into the production environment.

GENERIC VIEW OF PROCESS:


The generic process is an Abstraction of the Software development
process. It is used in most Software Since it provides a base for them.
The work associated with the software engineering can be categorized
into three generic phases.
Definition phase, Development phase, Support phase
1. Definition phase:
• The definition phase focuses on “what”.
• During definition phase, the software engineer identify what
information is to be processed, what function and performance
are desired, what system behavior can be expected, what
interfaces are to be established, what design constraints exist,
and what validation criteria are required to define a successful
system.
2. Development Phase:
• The development phase focuses on “how”.
• During development a software engineer define how data are
to be structured, how function is to be implemented, how
interfaces are to be characterized, how the design will be
translated into a programming language, and how testing will
be performed.
3. Support Phase:
• The support phase focuses on “change” associated with error
correction.
• Four types of change are associated with support phase:
• Correction: Corrective maintenance changes the software to correct
defects.
• Adaptation: Adaptive maintenance results in modification to the
software to accommodate changes to its external environment.
• Enhancement/Perfection: Perfective maintenance extends the software
beyond its original functional requirements.
• Prevention: Computer software deteriorates due to change, and
because of this, preventive maintenance, often called software
reengineering and must be conducted to enable the software to serve
the needs of its end users.
SOFTWARE ENGINEERING A LAYERED TECHNOLOGY:

• Focus on quality: must rest on an organizational commitment to quality.


• Process model: foundation for SE is the process layers, a frame work, models
documents, data, reports etc.
• Methods: how to’s, communication, requirement analysis design modeling
program connection, testing and support.
• Tools: provide automated or semiautomated support for the process and
methods.

A PROCESS FRAMEWOEK:
A Software Process Framework is a structured approach that defines the steps,
tasks, and activities involved in software development. This framework serves
as a foundation for software engineering, guiding the development team
through various stages to ensure a systematic and efficient process. A Software
Process Framework helps in project planning, risk management, and quality
assurance by detailing the chronological order of actions.
What is a Software Process Framework
Software Process Framework details the steps and chronological order of a
process. Since it serves as a foundation for them, it is utilized in most
applications. Task sets, umbrella activities, and process framework activities all
define the characteristics of the software development process. Software
Process includes:
1. Tasks: They focus on a small, specific objective.
2. Action: It is a set of tasks that produce a major work product.
3. Activities: Activities are groups of related tasks and actions for a major
objective.
Generic Process framework Activities:
There are five process framework activities:
 Communication
 Planning
 Modeling
 Construction
 Deployment

• Communication: This activity involves communication with customers


and other stakeholders in order to gather requirements and other
related activities
• Planning: it requires defining resources, timelines and other project
related information and describe technical and management risks.
• Modeling: A model will be created to better understand the
requirements and design to achieve these requirements.
• Construction: Here the code will be generated and tested.
• Deployment: Here, a complete software is represented to the customers
to evaluate and they give feedbacks based on the evaluation.

Umbrella Activities:
• Software project tracking and control: allows the software team to assess
progress against the project plan and take necessary action to maintain
schedule.
• Formal technical reviews: Assesses software reengineering work products in
an effort to uncover and remove errors before they are propagated to the next
action or activity.
• Software quality assurance: Defines and conducts the activities required to
ensure software quality.
• Software configuration management: manages the effects of change
throughout the software process.
• Work product preparation and production: encompasses the activities
required to create work products such as models, documents, logs, forms, and
lists.
• Reusability management: defines criteria for work product reuse and
establishes mechanisms to achieve reusable components.
• Measurement: defines and collects process, project, and product measures
that assist the team in delivering software that meets customers’ needs; can be
used in conjunction with all other framework and umbrella activities.
• Risk management: assesses risks that may affect the outcome of the project
or the quality of the product.
SOFTWARE DEVELOPMENT LIFE CYCLE (SDLC)
• Software development life cycle (SDLC) is a structured process
that is used to design, develop, and test good-quality software.
• SDLC, or software development life cycle, is a methodology that
defines the entire procedure of software development step-by-
step.
• The goal of the SDLC life cycle model is to deliver high-quality,
maintainable software that meets the user’s requirements.
• SDLC in software engineering models outlines the plan for each
stage so that each stage of the software development model
can perform its task efficiently to deliver the software at a low
cost within a given time frame that meets users requirements.

Stages of the Software Development Life Cycle


• SDLC specifies the task(s) to be performed at various stages by
a software engineer or developer. It ensures that the end
product is able to meet the customer’s expectations and fits
within the overall budget.

PRESCRIPTIVE PROCESS MODEL
A software process model is an abstraction of the software development
process. The models specify the stages and order of a process. So, think of this
as a representation of the order of activities of the process and the sequence in
which they are performed.
A model will define the following:
The tasks to be performed
The input and output of each task
The pre and post-conditions for each task
The flow and sequence of each task

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.

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

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 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. Evolutionary Process Model:


 It is a model whose stages consist of expanding increments of an
operational software product.
 It combines elements of waterfall model and prototypes model.
 It develops the whole project as a number of stages, with the outcomes
of one stages serving to identify the conceptual solutions for the next
stage.
 Here development proceeds in a series of implementations, each of
which meets those requirements that are recognized and understood at
the time of implementation.

Each prototype is developed using a waterfall model to produce the


prototypes.
The various phases of this model are:
• 1. Requirement Definition: is a step of thorough analysis used to create
an initial requirements and specifications for the software.
• 2. Model Construction: is done having phases design, coding and testing.
• 3. User Evaluation: is to check for its satisfaction and completion of
work.
• 4. Iteration: is refining the model. If needed then any feedback can be
given by the user that is implemented.
• At last the end product is the working system.

4. Concurrent Development model:


 Maintain information about each phase at the activity level.
 the concurrent process model shows the current state of activities,
tasks and their associated states that remain in different phases.

For Example:
• ‘Design Phase’ may be at an ‘awaiting state’ and ‘customer
communication’ is in ‘under revision’ state. The customer wants some
changes to the design, then ‘communication’ goes to ‘awaiting changes’
and ‘design’ goes to the under-development stage again.
• The benefit of this model is that project managers know each phase is
what state and why.
5. Unified Process Model:
 It is a software development process for object-oriented models.
 It is also known as the Rational Unified Process Model.
 It is created by Rational corporation and is designed and
documented using UML.
 RUP is proposed by Ivar Jacobson, Grady Bootch, and James
Rambaugh.
• It has five phases:
1. Inception
2. Elaboration
3. Construction
4. Transition
5. Production
1. Inception:
 Communication and planning are the main ones.
 Identifies the scope of the project using a use-case model
allowing managers to estimate costs and time required.
 Customers’ requirements are identified and then it becomes
easy to make a plan for the project.
 The project plan, Project goal, risks, use-case model, and
Project description, are made.
 The project is checked against the milestone criteria and if it
couldn’t pass these criteria then the project can be either
canceled or redesigned.
2. Elaboration:
• Planning and modeling are the main ones.
• A detailed evaluation and development plan is carried out and
diminishes the risks.
• Revise or redefine the use-case model (approx. 80%), business
case, and risks.
• Executable architecture baseline.
3. Construction
• The project is developed and completed.
• System or source code is created and testing is done.
• Coding takes place.
4. Transition:
• The final project is released to the public.
• Transit the project from development into production.
• Update project documentation.
• Beta testing is conducted.
• Defects are removed from the project based on feedback from the
public.
5. Production:
• The final phase of the model.
• The project is maintained and updated accordingly.
6. Agile Model:
• In earlier days, the Iterative Waterfall Model was very popular for
completing a project. But nowadays, developers face various
problems while using it to develop software.
• The main difficulties included handling customer change requests
during project development and the high cost and time required
to incorporate these changes. To overcome these drawbacks of
the Waterfall Model, in the mid-1990s the Agile Software
Development model was proposed.
What is Agile Model?
• The Agile Model was primarily designed to help a
project adapt quickly to change requests. So, the main
aim of the Agile model is to facilitate quick project
completion. To accomplish this task, agility is required.
Agility is achieved by fitting the process to the project
and removing activities that may not be essential for a
specific project. Also, anything that is a waste of time
and effort is avoided. The Agile Model refers to a
group of development processes. These processes
share some basic characteristics but do have certain
subtle differences among themselves.
Phases of Agile Model:
Following are the phases in the Agile model are as follows:
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback
1. Requirements gathering: In this phase, you must define the
requirements. You should explain business opportunities and plan the
time and effort needed to build the project. Based on this information,
you can evaluate technical and economic feasibility.
2. Design the requirements: When you have identified the project, work
with stakeholders to define requirements. You can use the user flow
diagram or the high-level UML diagram to show the work of new
features and show how it will apply to your existing system.

3. Construction/ iteration: When the team defines the requirements, the


work begins. Designers and developers start working on their project,
which aims to deploy a working product. The product will undergo
various stages of improvement, so it includes simple, minimal
functionality.

4. Testing: In this phase, the Quality Assurance team examines the


product's performance and looks for the bug.

5. Deployment: In this phase, the team issues a product for the user's work
environment.

6. Feedback: After releasing the product, the last step is feedback. In this,
the team receives feedback about the product and works through the
feedback.

Agile Testing Methods:


1.Scrum:
SCRUM is an agile development process focused primarily on ways to manage
tasks in team-based development conditions. There are three roles in it, and
their responsibilities are:

o Scrum Master: The scrum can set up the master team, arrange the
meeting and remove obstacles for the process

o Product owner: The product owner makes the product backlog,


prioritizes the delay and is responsible for the distribution of
functionality on each repetition.

o Scrum Team: The team manages its work and organizes the work to
complete the sprint or cycle.

2. eXtreme Programming (XP)


This type of methodology is used when customers are constantly
changing demands or requirements, or when they are not sure about
the system's performance.

3. Crystal:

There are three concepts of this method-


i. Chartering: Multi activities are involved in this phase such as making a
development team, performing feasibility analysis, developing plans, etc.
ii. Cyclic delivery: under this, two more cycles consist, these are:
o Team updates the release plan.
o Integrated product delivers to the users.
iii. Wrap up: According to the user environment, this phase performs
deployment, post-deployment.

4. LEAN:
• It focus on continuous improvement
• Lean software development methodology follows the principle
"just in time production."
• The lean method indicates the increasing speed of software
development and reducing costs.
• Lean development can be summarized in seven phases.

i. Eliminating Waste
ii. Amplifying learning
iii. Defer commitment (deciding as late as possible)
iv. Early delivery
v. Empowering the team
vi. Building Integrity
vii. Optimize the whole

5. KNBN: To Introduce and implement micro changes.


6. SAFE: like scrum it works with multiple management.
7. SPRINT: Analysis->Design->Coding->Testing->
Sprint work in short cycle

When to use the Agile Model?


o When frequent changes are required.
o When a highly qualified and experienced team is available.
o When a customer is ready to have a meeting with a software team all
the time.
o When project size is small.

Advantage (Pros) of Agile Method:


1. Frequent Delivery
2. Face-to-Face Communication with clients.
3. Efficient design and fulfils the business requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.

Disadvantages (Cons) of Agile Model:


1. Due to the shortage of formal documents, it creates confusion and
crucial decisions taken throughout various phases can be misinterpreted
at any time by different team members.
2. Due to the lack of proper documentation, once the project completes
and the developers allotted to another project, maintenance of the
finished project can become a difficulty

What is Project management:


->Project management is the application of methodology, tools, and
processes to effectively design and execute projects.

->Project management utilizes groups and assets to finish project exercises


within the limits of time, cost, and extension.

Five phases of project management life cycle :

• Project Initiation
• Project Planning
• Project Execution
• Project Monitoring and Control
• Project Closure

What is Project Initiation:

• Project initiation is like the starting point of a project journey. It's when
you decide what you want to do, why you want to do it, and who will be
involved.
• It's all about getting everyone on the same page before you dive into the
details of how to make it happen.
• The initial stage in beginning a new project is called project initiation.
Establishing the project's purpose and the commercial value it will
provide helps you gain support from important stakeholders

• The Significance of the Initiation Phase

• In this stage, the project's chances of success are


checked.
• Also, people who have stakes or interests in the venture
are found out and the first plans for it start to be made.
• The choices you make when starting a project can affect
how it goes forward.
• They help decide whether the project will be successful or
not in the future time.

Benefits of a Well-Executed Initiation


Phase
i. Clear Project Direction: During the beginning stage,
it's important to set clear goals for a project. This
helps guide the team and keeps them focused in one
direction.
ii. Risk Mitigation: By checking things carefully, we can
find the possible dangers and problems right at the
start of a project.
iii. Resource Optimization: Starting things right means
better use of stuff. By knowing the project aims,
managers can figure out what talents and tools are
needed.
iv. Stakeholder Alignment: The starting stage helps to
find and involve top people. This is an important part
for all involved in something. Getting everyone on
the same page and knowing what is expected during
this part of a project helps people support it.

What happens during project initiation:

 Define the project's goals: What the project's purpose


is and what it will achieve
 Identify stakeholders: Who will be involved in the
project, including project sponsors, key stakeholders, and
team members
 Create a project charter: A document that outlines the
project's scope, objectives, and participants
 Create a project initiation document (PID): A
document that defines the project's scope, risks, and
business case
 Gain approval from stakeholders: Get approval from
decision-makers and stakeholders

PROJECT CHARTER:
• A project charter is a document that outlines the
objectives, scope, and participants of a project.
• It serves as a reference guide throughout the
project's lifecycle.
• A project charter is a formal short document that
states a project exists and provides project
managers with written authority to begin work.
• A project charter document describes a project to
create a shared understanding of its goals,
objectives and resource requirements before the
project is scoped out in detail.

Purpose:
Establish the project
A project charter formally establishes a project and gives
project managers the authority to begin work.
Get approval
A project charter is used to get approval from
stakeholders before starting the project.
Avoid problems
A project charter helps avoid future problems by planning
out everything before the project starts.
Build confidence
A project charter builds confidence in the team by
providing clear guidelines.

What's included

• Project scope: A clear definition of what the project


covers
• Project objectives: A statement of what the project
aims to achieve
• Project budget: An estimate of the project's costs
• Project timeline: An estimate of the project's time
frame
• Project team: The roles and responsibilities of each
team member
• Project risks: An identification of potential
challenges that could impact the project
• Project stakeholders: An identification of the key
stakeholders involved in the project
Benefits
o Helps determine the project's value
o Helps avoid conflicts
o Helps save time
o Helps ensure there's enough funding
o Helps build confidence in the team
o Helps stakeholders understand what to expect

PROJECT SCOPE:
• Project scope is a detailed outline of the work required to complete a
project. It includes the project's goals, deliverables, tasks, costs, and
deadlines.
• Project scope is the part of project planning that involves determining
and documenting a list of specific project goals, deliverables, tasks, costs
and deadlines.
• The documentation of a project's scope is called a scope statement or
terms of reference.

What is included in project scope?

Project objectives: The specific results the project aims to achieve

Deliverables: The tangible and intangible outputs the project produces

Constraints: The limitations that may affect the project

Assumptions: What is assumed to be true about the project

Timeline: The schedule for completing the project

Cost: The budget for the project

Stakeholders: The people or groups that have a vested interest in the project

Processes: The procedures for how the project will be managed


Why is project scope important?
• It helps the project team stay focused and on task
• It ensures that the project meets its goals and objectives without delay
or overwork
• It helps the project team make decisions about change requests

PROJECT OBJECTIVE
• A project objective is a specific, measurable, and time-bound goal that a
project aims to achieve.
• Project objectives are a critical part of project management and help
ensure projects are well-planned and executed.

Why are project objectives important?


 Communicate goals
Project objectives help communicate goals to stakeholders and upper
management
 Create a plan
Project objectives help create a project plan and get buy-in from
stakeholders

 Measure success
Project objectives help measure a project's success by providing key
performance indicators (KPIs)
 Ensure alignment
Project objectives help ensure projects are aligned with company goals
How to write project objectives?
 Be SMART: Write objectives that are specific, measurable, achievable,
realistic, and time-bound
 Consider deliverables: Consider what deliverables and assets the project
will produce
 Consider quality: Consider the quality standards the project will achieve
 Consider time: Consider deadlines for project milestones
 Consider regulations: Consider any regulations that apply to the project

When to write project objectives?


 Project objectives are usually written during the planning phase of a
project
 The project manager, senior stakeholders, and team members typically
collaborate on writing the objectives

You might also like