0% found this document useful (0 votes)
7 views

Unit 1

Software engineering is the systematic design, development, testing, and maintenance of software applications, aiming to create reliable and efficient solutions. It encompasses various software types, characteristics, processes, and models, including waterfall, incremental, and evolutionary approaches. Key components of software processes include requirements engineering, design, implementation, testing, and maintenance, with an emphasis on communication and planning.

Uploaded by

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

Unit 1

Software engineering is the systematic design, development, testing, and maintenance of software applications, aiming to create reliable and efficient solutions. It encompasses various software types, characteristics, processes, and models, including waterfall, incremental, and evolutionary approaches. Key components of software processes include requirements engineering, design, implementation, testing, and maintenance, with an emphasis on communication and planning.

Uploaded by

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

INTRODUCTION TO

SOFTWARE PROCESS
SOFTWARE ENGINEERING

 Software engineering is a branch of computer science that involves the design,


development, testing, and maintenance of software applications.
 Software engineers use programming languages and engineering principles to
create software solutions for users.
 The goal of software engineering is to create software that is reliable, efficient to
meet the needs of businesses and users.
 IEEE Definition of Software Engineering Software Engineering is the
application of a systematic, disciplined, quantifiable approach to the
development, operation and maintenance of software, i.e the application of
engineering to software.
Defining Software
 Software is a set of programs, procedures, algorithms and its
documentation concerned with the operation of a data processing system.
There are two types of Software Product
1. Generic software
It refers to pre-built, reusable software designed to be flexible and applicable to a wide
range of users or purposes. It's not made for one specific person but across different
industries.
Eg: Word, Excel
2. Customized software
Customized software in software engineering refers to software that is specially designed
and developed to meet the unique needs and requirements of a specific user.
Eg: Banking software, E-commerce website
Software Characteristics

1. Software is developed or engineered:


•Software is created through a process of design, coding, testing, and problem-
solving by people who think creatively and logically (software developers or
engineers).
•It involves writing instructions (code) for computers to follow, which requires
planning and precision.
2. Not manufactured in the classical sense:
•Physical products, like cars or chairs, are made in factories where raw materials are
assembled into final goods, and each unit requires additional materials and effort to
produce.
•In contrast, once software is written, it can be copied and distributed to many users
without extra effort or cost to "make" each copy.
3. The software doesn’t wear out
Imagine you have a word processor app (like Microsoft Word). If you
keep using it to write documents, the app won’t suddenly "break"
or stop working because you used it too much. The program remains
the same no matter how often you use it.
4. The software continues to be custom-built:
 A software part should be planned and carried out with the goal that it
tends to be reused in various projects.
 Developers design and write the software based on specific needs, making
it a unique solution.
 Eg: Unlike mass-produced items (like phones or cars), software often
needs to be tailored because every organization or person might have
different requirements.
General Characteristics of Software Engineering

 It is intangible, meaning it cannot be seen or touched.


 It is easy to replicate, meaning it can be copied and distributed easily.
 It can be complex, meaning it can have many interrelated parts and features.
 It can be difficult to understand and modify, especially for large and
complex systems.
 It can be affected by changing requirements, meaning it may need to be
updated or modified as the needs of users change
Legacy software

 Legacy software refers to old computer programs that were created many
years ago but are still being used by businesses. These programs continue to be
important for the company’s daily operations, even though they might be
outdated.
 Why Businesses Keep Using Legacy Software:
• It works well enough for core tasks.
• Replacing it can be expensive and risky.
• Training employees to use new software might take a lot of time and effort.
Software Engineering Layers

Software layers refer to the organization of a software system into separate levels
or "layers," each with specific responsibilities. There are 4 layers, such as
 Presentation Layer:
The highest layer directly interacting with the user interface is this one. Its duties
include presenting information to the user handling user input and rendering the
user interface elements. This layer comprises client side JavaScript, HTML and
CSS in web applications.
 Takes input from users, such as filling out a form, clicking a button, or selecting an
item from a dropdown menu. Examples: Login forms, search bars, shopping cart
selections.
Application layer

 The application layer in software engineering is the part of a system


responsible for handling the logic and rules that make the software work.
 It acts as the brain of the application, processing user inputs and deciding what
actions to take.
 Takes data from the user (via the presentation layer), processes it, and interacts
with the data layer to fetch or save information.
 A customer orders a pizza, the application layer checks if the pizza is available.
Calculates the total price, including taxes and delivery fees. Updates the
restaurant’s inventory. Sends the confirmation to the presentation layer to show
the user.
Domain Layer

 This layer encapsulates the business logic and rules specific to the domain of
the application. It defines the objects, entities and their relationships often
represented using models or classes.
 The domain layer is independent of any specific implementation or technology.
 In online shopping, there are rules like:
• Calculate the total price of items in a shopping cart.
• Apply discounts or promotions.
• Handle stock availability
Infrastructure Layer

 It supports the domain layer by giving it access to the necessary tools and
resources, but it doesn’t implement the business logic itself.
 The infrastructure layer is where all the technical operations happen, such as:
1. Storing the details of products, users, and orders in a database.
2. Sending an email confirmation after a purchase.
3. Communicating with a payment gateway to process credit card transactions.
Software Application Domains

1. System Software - This category encompasses essential software that manages computer
resources and supports the execution of application programs. It includes operating
systems, compilers, editors, and drivers.
2. Application software - Application software is designed to directly interact with users
and meet their requirements. It can be divided into two major categories: generic and
customized. Generic software is universally accessible and offers standardized
functionality. In contrast, customized software is tailored to specific client needs and is not
available for general use. Software engineering involves a systematic approach to
developing software products that meet user needs while adhering to cost, schedule, and
quality considerations
3. Networking and Web Application - Networking software manages communication
between devices in a network. It ensures data is sent, received, and processed correctly
across connected devices. Eg – Gmail, Web browser, File sharing.
4. Embedded software - Embedded Software is intricately woven into hardware
components. Eg- Micro oven, Car air bags.
5. Reservation software - In the hotel industry, these systems ensure efficient reservation
management and prevent overbooking, delivering essential services to both businesses and
customers. Eg: Booking train ticket, Movie ticket, etc
6. Artificial Intelligence software - Artificial Intelligence software simulates human
intelligence to perform tasks like decision-making, problem-solving, and learning. It uses
algorithms and data to make predictions, recognize patterns, and automate processes.Eg:
Machine Learning, NLP, Telsa Cars
7. Scientific software - Scientific software is designed to perform specialized tasks in
scientific research and engineering. It helps scientists, researchers to solve complex
problems. Eg: MATLAB, R LAB
Software Engineering Practice - Essence Of Practice And
Software Myth

Essence of practice
 It refers to focusing on the most fundamental and important aspects of an activity to
work on the core skills or techniques that matter the most, rather than getting distracted by
less critical details.
 Eg: Learn to write code that is easy to read, maintain, and debug.
Software Myth

Software myths are false beliefs about software development and engineering. These myths can
lead to misunderstandings, unrealistic expectations, and inefficiencies in software projects.
1. Management Myth - Myths believed by managers or decision-makers.
2. Customer Myths - Myths held by clients or end-users.
3. Practitioner’s Myths - Myths believed by software developers or engineers.
Management Myth

Myth 1- We can add more programmers to speed up a late project.


Reality - Adding new developers to a delayed project often increases complexity and further
delays due to onboarding and communication overhead.
Myth 2 – “A detailed initial plan ensures the project will succeed."
Reality - While planning is important, but software projects often face changing
requirements, making rigid plans unrealistic.
Myth 3 - "Software tools and new technology alone will solve all problems."
Reality: Tools can help, but they cannot replace skilled engineers, good practices, and
effective communication.
Customer Myth

Myth 1 - Software is easy to change at any stage of development."


Reality: Changes become more costly and time-consuming as the project progresses,
especially if not planned early.
Myth 2 - Software requirements continually change, but change can be easily
accommodated because software is flexible .
Reality: It is true that software requirements change, but the impact of change varies with
the time at which it is introduced.
Practitioner (Developer) Myths

Myths 1 - They believe that their work has been completed with the writing of the plan.
Reality - It is true that every 60-80% effort goes into the maintenance phase (as of the latter
software release).
Myth 2 - Documentation isn’t important.
Reality: Lack of documentation makes it harder for others to understand, use, or maintain the
software.
SOFTWARE PROCESS
Definition

 A software process in software engineering refers to the structured set of activities


and steps involved in developing, deploying, and maintaining software.
 They help project managers plan their processes, estimate costs, identify challenges
and communicate with teams and customers.
 Example: A bank wants a mobile app for customers to check their account balance and
transfer money. Requirements are documented, such as "The app must display the
account balance in real time."
Key Components of a Software Process Framework

Phases of Development
1. Requirements Engineering: Understanding and documenting user needs.
2. Design: Planning how the software will function.
3. Implementation: Writing the actual code.
4. Testing: Verifying and validating the software.
5. Maintenance: Updating and fixing the software after release.
Defined Roles
6. Business Analysts: Define requirements.
7. Designers: Create the system's architecture.
8. Developers: Implement the code.
9. Testers: Ensure quality and reliability.
Framework Activity

 Communication: In this activity, heavy communication with customers and other


stakeholders, requirement gathering is done.
 Planning: In this activity, we discuss the technical related tasks, work schedule, risks,
required resources etc.
 Modeling: Modelling is about building representations of things in the ‘real world’.
 Construction: In software engineering, construction is the application of set of
procedures that are needed to assemble the product. In this activity, we generate
the code and test the product in order to make better product.
 Deployment: In this activity, a complete or non-complete products or software
are represented to the customers to evaluate and give feedback on the basis of
their feedback we modify the products for supply better product.
Process Model

1. Waterfall Model
1. Requirements Analysis 2. System Design
Example: Example:
• The website must allow customers to • Design the website's structure: homepage,
browse products, add items to a cart, product pages, shopping cart, and checkout.
and make secure payments.
• Plan a database schema for users, products,
• Features include user registration, product orders, and reviews.
search, order tracking, and an admin panel
for inventory management.
• Choose technologies like React for the
frontend, Node.js for the backend, and
• Payment integration with PayPal and credit MongoDB for the database.
cards.
3. Implementation 4. Testing
Example: Example:
• Frontend: Create product pages, • Functional testing: Verify that users
search functionality, and a responsive can register, search for products,
design for mobile users. place orders, and make payments.
• Backend: Implement user
authentication, shopping cart
management, and order processing.
5. Deployment 6. Maintenance
• Once the software has been tested and Example:
approved, it is deployed to the production • Fix bugs reported by users, such as
environment.
checkout errors.
• Launch the website for public use.
Incremental Model

 The Incremental Model is a software development approach where the product is built
and delivered in small, manageable parts called increments.
 Each increment adds functionality to the system, and the process continues until the
complete system is developed.
1. Requirement analysis: In Requirement Analysis at any time the plan is made just for the
next increment and not for any kind of long-term plan.
2. Design & Development: At any time, the plan is made just for the next increment and not
for any kind of long-term plan. Therefore, it is easier to modify the version as per the needs
of the customer.
3. Deployment and Testing: After Requirements gathering and specification, requirements
are then split into several different versions starting with versions, in each successive
increment, the next version is constructed and then deployed at the customer.
4. Implementation: In implementation After the last version (version n), it is now deployed at
the client site
 Example: A company wants to build a hotel booking application with features like room
search, booking, payment, and reviews. Instead of delivering all features at once, the
application is developed incrementally.
 1st increment - Users can search for hotels based on location and view room availability.
 2nd increment - Users can select a room, enter personal details, and confirm their booking.
 3rd increment - Users can register, log in, and view their booking history.
 Advantages of the Incremental Model  Disadvantages
1. Core features are delivered early, 1. Requires good planning and
allowing users to interact with the scheduling of increments.
system.
2. Merging increments can be
2. Risks are identified and mitigated complex.
incrementally.
3. Frequent testing and deployment
3. Changes can be implemented in may increase costs.
future increments.
4. Feedback from earlier increments
improves later increments.
Evolutionary Process Model

 In this type of model, the product will go through several iterations and come up when the
final product is built through multiple iterations.
 The development is carried out simultaneously with the feedback during the development.
 This model has a number of advantages such as customer involvement, taking feedback
from the customer during development, and building the exact product that the user wants.
Scenario: Fitness Tracker App
1. Initial Version (Basic Functionality)
The first version includes only core features, such as:
1. Tracking steps
2. Displaying step counts
This version is released to users for feedback.
2. User Feedback & Refinement
Based on feedback, new features are added, like:
3. Calorie tracking
4. Sleep monitoring
The app evolves with each iteration.
3. Subsequent Iterations
Additional features are developed over time, such as:
5. Heart rate monitoring
6. Integration with wearable devices
7. Social sharing of fitness progress
 Advantages  Disadvantages
 During the development phase, the  It can be complex and difficult to
customer gives feedback regularly manage due to multiple iterations.
because the customer’s requirement gets  It can be time-consuming and
clearly specified. expensive.
 A working version is delivered early,  It is not suitable for small and simple
even if incomplete. projects.
Prototyping

 In software engineering, a prototype is an early, simplified version of a


software application or system that is built to demonstrate its core functionality.
Steps Involved

1. Requirement Gathering and Analysis: Developers gather initial requirements and


identify unclear areas.
2. Quick Design: A simple and quick design is prepared for the prototype.
3. Prototype Development: A basic version of the system is developed to demonstrate its
key features.
4. User Evaluation: Stakeholders interact with the prototype and provide feedback.
5. Refinement: Feedback is used to improve the prototype through several iterations.
6. Final Product Development: Once requirements are finalized, the system is developed,
tested, and deployed.
Spiral Model

 The Spiral Model is a step-by-step way to develop software by combining planning, risk
management, and user feedback. It works in cycles, and in each cycle, the software
becomes complete and refined.
 Why It’s Spiral
• Each spiral adds more functionality.
• Risks are addressed in every cycle.
• User feedback shapes the system progressively.
1. Objectives determination and identify alternative solutions: Requirements are gathered
from the customers and the objectives are identified, elaborated, and analyzed.
2. Identify and resolve Risks: During the second quadrant, all the possible solutions are
evaluated to select the best possible solution.
3. Develop the next version of the Product: During the third quadrant, the identified
features are developed and verified through testing.
4. Review and plan for the next Phase: In the fourth quadrant, the Customers evaluate the
so-far developed version of the software.
 Advantages  Disadvantages
1. Risk Reduction: Continuously identifies 1. Complex Process: Requires careful
and mitigates risks. planning
2. Flexibility: Easily accommodates 2. Time and Cost: Multiple iterations may
changes in requirements. increase costs and timelines.
3. Customer Involvement: Regular 3. Not Suitable for Simple Projects:
feedback ensures alignment with user Overkill for small, straightforward
needs. projects.
4. Early Prototypes: Provides a working
version early in the process for feedback.
Concurrent Model

 The Concurrent Model is a software development approach where multiple


activities (e.g., planning, design, coding, testing) happen simultaneously or
overlap.
 It emphasizes that different parts of the project can be in different stages of
development at the same time.
 Best suitable for large or complex projects with interdependent components.
 Projects requiring frequent updates or iterative development.
Example: A company is creating an online education platform with features like video
lectures, quizzes, and forums. Using the Concurrent Model.
 While analyzing requirements for the forum feature, developers start designing the
video lecture module.
 Testing of the user registration module begins even though the payment system is
still in the design phase.
 Feedback from early testing of video playback is used to improve the player, even as
quizzes are being tested simultaneously.
 Basic functionality is released, while advanced features are still in development.
Agile Model

1. Requirement Gathering: In this step, the development team must gather the
requirements, by interaction with the customer.
2. Design the Requirements: In this step, the development team will use user-flow-
diagram or high-level UML diagrams to show the working of the new features.
3. Construction / Iteration: In this step, development team members start working on
their project, which aims to deploy a working product.
4. Testing / Quality Assurance:- Testing involves Unit Testing, Integration Testing, and
System Testing.
5. Deployment: In this step, the development team will deploy the working project to
end users.
6. Feedback: In this, the team receives feedback about the product and works on
correcting bugs based on feedback provided by the customer.
THANK YOU

You might also like