Unit 1
Unit 1
SOFTWARE PROCESS
SOFTWARE ENGINEERING
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
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
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
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
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
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
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