Sepm 1
Sepm 1
……………
Software Process:
A process in software engineering is a set of activities, actions, and tasks aimed at creating a
software product.
1. Activity: A large task aimed at a general objective, like communicating with customers.
2. Action: A more focused set of tasks that lead to a major outcome, like creating an
architectural design.
3. Task: A small, specific job with a clear result, such as testing a piece of code.
Software Process Framework:
A framework is a structure that outlines the core activities involved in any software project. It
applies to all kinds of software development, no matter the project's size or complexity.
The 5 Key Framework Activities:
1. Communication: Talking with the customer to understand what they want, and
SEPM Page 1
1. Communication: Talking with the customer to understand what they want, and
gathering all necessary requirements.
2. Planning: Creating a roadmap for the project that includes tasks, risks, resources,
deliverables, and timelines.
3. Modeling: Building models that represent how the software will work, making it easier
to understand for both developers and customers.
4. Construction: Writing the code and testing it to make sure it works correctly.
5. Deployment: Delivering the final product to the customer and collecting feedback for
improvements.
• Activity:
• Example: Communicating with the client to gather requirements for a new mobile app.
• This is a broad objective aimed at ensuring the client’s needs are well understood.
• Action:
• Example: Organizing a meeting with the client and creating a list of features the app
should include, such as push notifications, user login, and profile management.
• This is a more focused step within the communication activity that produces a major
outcome: gathering specific requirements.
• Task:
• Example: Sending a follow-up email to confirm the client’s preferences for the app’s
notification settings.
• This is a small, specific action aimed at completing a well-defined objective that directly
contributes to the communication action.
• Communication:
• Example: A company wants an e-commerce website. The development team
meets with the client to understand features like product categories, payment
gateways, and a shopping cart. They also gather specific needs, such as
international shipping and real-time stock updates.
• Planning:
• Example: The team creates a project plan after gathering requirements. The plan
includes tasks like designing the homepage, building the product catalog,
integrating payment systems, and testing. They also consider potential risks like
delays in third-party API integration and set deadlines for each phase.
• Modeling:
• Example: The team builds a wireframe showing the website layout, including
product images and "Add to Cart" buttons. They also create a flowchart that
outlines the steps a user will take from browsing products to completing a
purchase, including the checkout process.
• Construction:
• Example: Developers code the product catalog and shopping cart features. They
then test the "Add to Cart" and "Checkout" functions to ensure users can select
products, place them in the cart, and complete their purchases smoothly.
• Deployment:
• Example: After testing and fixing bugs, the e-commerce site is launched.
Customers start using the site, and the development team gathers feedback from
the client and users. They make adjustments, like improving the search function or
simplifying the checkout process based on this feedback.
How It Works:
• Communication: Requirements gathering and project initiation.
• Planning: Estimating time, cost, and resources, scheduling tasks.
• Modeling: Analyzing and designing the system.
• Construction: Writing the code and performing tests.
• Deployment: Delivering the software to the customer and providing support.
Prescriptive process models are structured approaches to software development that define
clear steps, phases, and activities. They bring order and discipline to software engineering,
especially when the requirements are well understood. These models provide a set of rules, or
a “prescription,” for how software projects should be carried out.
Here are the most commonly used prescriptive models:
1. Waterfall Model
2. Incremental Model
3. Evolutionary Model
1. Waterfall Model
The Waterfall model is one of the oldest and most traditional models. It follows a linear
sequence where each phase must be completed before moving on to the next.
SEPM Page 2
• Phases of the Waterfall Model:
○ Requirements: Gather requirements from stakeholders.
○ Design: Create software architecture.
○ Implementation: Write the code.
○ Testing: Test the software to find bugs.
○ Deployment: Release the software to users.
○ Maintenance: Fix issues and update the software.
Diagram of Waterfall Model:
rust
Copy code
Requirements --> Design --> Implementation --> Testing --> Deployment --> Maintenance
2. Incremental Model
In this model, the software is developed in smaller pieces called "increments." Each increment
adds new features or functionalities, and the product is gradually improved.
• Phases of the Incremental Model:
○ Develop a core product (basic features).
○ Add more features or improvements in increments.
○ Each increment builds upon the previous one.
Diagram of Incremental Model:
mathematica
Copy code
Increment 1 --> Increment 2 --> Increment 3 --> Final Product
1. Waterfall Model
The Waterfall Model follows a strict, linear approach where each phase depends on the
completion of the previous one. It’s ideal for projects with well-defined requirements that are
unlikely to change.
Example: Building a School Website
Imagine you are tasked with developing a website for a school. The school has given you all
the details upfront, like the number of pages, design layout, and required features.
Steps in the Waterfall Model:
• Requirements: Collect all details about the pages (home, admission, contact, etc.),
functionalities (online admission form, timetable), and design preferences.
• Design: Create mockups of the website, showing how each page will look and how users
will navigate through the website.
• Implementation: Develop the actual website code, setting up the pages and adding
content.
• Testing: Test the website for bugs, such as broken links or incorrect form behavior.
• Deployment: Launch the website for public access.
• Maintenance: After launch, fix bugs or update information on the website if needed.
Diagram:
Copy code
Requirements --> Design --> Implementation --> Testing --> Deployment --> Maintenance
Once you move to the next step, you don't go back to previous steps easily.
2. Incremental Model
In the Incremental Model, software is developed and delivered in small, manageable pieces
(increments). Each increment builds on the previous one, gradually adding functionality.
Example: Developing a Mobile Banking App
You are tasked with building a mobile banking app, but the project is too large to deliver all
features at once.
Steps in the Incremental Model:
SEPM Page 3
Steps in the Incremental Model:
• Increment 1: Create the core app with basic features like login, balance checking, and
viewing transaction history.
• Increment 2: Add the ability to transfer funds between accounts.
• Increment 3: Implement mobile check deposit and bill payments.
• Increment 4: Introduce notifications for low balance or large transactions.
Each increment adds more value, and users can start using the app after the first increment.
Diagram:
2. V-Model
The V-Model (Verification and Validation Model) is an extension of the Waterfall Model,
emphasizing testing and quality assurance throughout the process. For every development
phase, there is a corresponding testing phase to ensure verification and validation.
Key Phases of the V-Model:
• Requirements Analysis: Define and analyze user requirements.
• System Design: Design the overall system architecture.
• Architecture Design: Break the system into modules and define their interactions.
• Module Design: Create detailed designs for individual modules.
• Implementation: Write code for each module.
For each design phase, there’s a corresponding testing phase:
• Unit Testing: Test individual modules.
• Integration Testing: Test interactions between modules.
• System Testing: Ensure the system functions as a whole.
• Acceptance Testing: Validate the system against user requirements
SEPM Page 4
○ Example: Ensure the login feature works correctly, and balance information
displays without errors.
2. Integration Testing:
○ Test how the different modules work together. For example, the login and balance
modules should connect smoothly.
○ Example: After login, the app should smoothly display the correct balance.
3. System Testing:
○ Test the entire app to ensure it works on different devices and conditions.
○ Example: Make sure the app works on both Android and iOS without bugs.
4. Acceptance Testing:
○ Finally, check if the app meets all the requirements set by the bank.
○ Example: Does the app allow users to easily check their balance and transfer
funds, as the bank requested?
• Start with rough ideas of what the software should do (Initial Rough Requirements).
• Decide on the features for the first version (Specification).
• Build and test the software (Development and Validation).
• Improve it based on feedback (Intermediate Versions).
• Continue improving until you reach the final version (Final Version).
The Evolutionary Process Model is a software development approach where the project
evolves gradually through small, repeated cycles. Instead of building the entire product at
once, it is developed in increments or iterations, where each version is improved based on
user feedback and testing.
Let’s break it down with a simple example:
Example: Developing an E-commerce Website
Imagine you’re building an online shopping website. The Evolutionary Process Model helps
you develop the website step-by-step, rather than trying to complete it all at once.
SEPM Page 5
○ Example: You build a secure payment system and allow users to save items to
their wishlist.
• Test Again:
○ Keep testing each new version with users to identify more areas for improvement.
○ Example: Now, users suggest adding customer reviews and delivery tracking.
Software engineering is a way to design and create software that is reliable, efficient, and easy
to maintain.
Think of it as being built in layers, where each layer is important for the next. Here's a simple
breakdown:
1. A Quality Focus (Bottom Layer)
This is the foundation. The organization must focus on quality. Just like when building a
house, the foundation must be strong, software also needs a strong base of quality.
Continuous improvements and ensuring the software is good at every stage are key.
Example: Imagine you're building an app. You want it to work well, not just today, but
for a long time. This requires paying attention to quality in every step.
2. Process (Second Layer)
The process layer is like a plan or map that helps guide the development of software. It
ensures that everything is done in a structured way—no missing steps, deadlines are
met, and changes are handled properly.
SEPM Page 6
met, and changes are handled properly.
Example: Think of it as baking a cake. You follow a recipe (process), step by step, so you
don't forget any ingredients or steps, ensuring the cake turns out well.
3. Methods (Third Layer)
These are the specific actions or steps used to create the software. This includes talking
to customers, understanding what they want (requirements), designing the system,
writing the code, testing it, and fixing any problems.
Example: In our cake analogy, methods would include mixing the ingredients, baking,
and decorating the cake. Each action is important to complete the whole task.
4. Tools (Top Layer)
Tools are like machines or apps that help make the process faster and easier. In software
development, tools can help with coding, testing, and project management. When all
these tools work together, they create something called a CASE (Computer-Aided
Software Engineering), which makes the whole process smoother.
Example: For baking, tools like a mixer or oven make the process easier and faster, just
like how coding tools help developers write and test software quickly.
SEPM Page 7
7. Resulting Context: The conditions after the pattern has been applied, including new
tasks that must be completed and changes in the project state.
1. System Software
• Helps the computer itself run.
• Includes operating systems (like Windows) and device drivers (like printer software).
• Makes sure everything on your computer works smoothly.
2. Application Software
• Programs that solve specific problems or help with tasks.
• Examples: Word processors, games, or apps for businesses.
• Helps with tasks like creating documents or processing sales.
3. Engineering/Scientific Software
• Used for calculations, simulations, and technical tasks.
• Examples: Software for designing cars or predicting the weather.
• Helps scientists and engineers in research and development.
4. Embedded Software
• Built into devices like microwaves or cars.
• Controls specific functions within these devices.
• Examples: Software that controls a washing machine or manages car braking systems.
5. Product-Line Software
• Created for a wide range of users, like Microsoft Office or video games.
• Used by both businesses and individuals for everyday tasks.
• Examples: Word processors, spreadsheets, or inventory management systems.
6. Web Applications (WebApps)
• Software that runs through a web browser.
• Examples: Email services (like Gmail) or social media platforms (like Facebook).
• Can be simple websites or complex online tools.
7. Artificial Intelligence (AI) Software
• Mimics human intelligence in machines.
• Examples: Smart assistants (like Siri) or self-driving cars.
• Helps with tasks like voice recognition and decision-making.
SEPM Page 8