Unit 1
Unit 1
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.
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.
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
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.
1. WATERFALL MODEL:
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.
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.
o Scrum Master: The scrum can set up the master team, arrange the
meeting and remove obstacles for the process
o Scrum Team: The team manages its work and organizes the work to
complete the sprint or cycle.
3. Crystal:
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
• Project Initiation
• Project Planning
• Project Execution
• Project Monitoring and Control
• Project Closure
• 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
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:
• 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.
Stakeholders: The people or groups that have a vested interest in the project
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.
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