Software Engineering Unit2
Software Engineering Unit2
Activities:
Work Plan: Creating a detailed plan that outlines the tasks and activities needed to
develop the software.
Risk Assessment: Identifying potential technical risks and planning how to mitigate them.
Resource Allocation: Determining the resources (time, personnel, tools) required for the
project.
Schedule Definition: Setting a timeline for completing different phases of the project.
3. Modeling
Definition: Modeling involves creating architectural models and designs
to better understand the problem and work towards the best solution.
Activities:
Analysis of Requirements: Breaking down the gathered requirements to
understand what the system needs to do.
Design: Creating architectural and detailed designs that outline how the
software will be structured and how it will function.
4. Construction
Definition: Construction involves creating code, testing the system,
fixing bugs, and confirming that all criteria are met.
Activities:
Code Generation: Writing the actual code based on the design
models.
Testing: Running tests to ensure the software works as intended,
identifying and fixing bugs.
5. Deployment
Definition: Deployment involves presenting the completed or partially
completed product to customers for evaluation and feedback, then making
necessary modifications based on their input.
Activities:
Product Release: Delivering the software to users, either as a full release or in
stages.
Feedback Collection: Gathering feedback from users about their experience with
the software.
Product Improvement: Making changes and improvements based on user
feedback to enhance the product.
Identifying a task set
Task Sets:
● Each framework activity is broken down into specific tasks. A
task set defines the actions that need to be completed within each
activity. For example:
○ In Communication: Conducting interviews, drafting
requirements documents, and reviewing stakeholder
feedback.
○ In Planning: Creating a project schedule, estimating costs,
and identifying potential risks.
Process patterns
Process Patterns:
● These are reusable methods or best practices that help streamline
software development. Process patterns provide solutions to
common problems and guide how to handle specific aspects of the
development process. Examples include:
○ Design pattern: A template for solving common design issues.
○ Testing pattern: A structured approach to ensure the software
meets quality standards.
Process assessment and improvement
Process Assessment:
● This involves evaluating the software process to identify areas of
improvement. Tools like the Capability Maturity Model
Integration (CMMI) can be used to assess the effectiveness of the
process, looking at factors such as project management,
engineering practices, and organizational maturity.
Process Improvement:
● Based on the assessment, steps are taken to refine and enhance
the software process. This might involve adopting new
methodologies, improving collaboration, or introducing
automation tools. The goal is to increase efficiency, reduce
errors, and improve the quality of the software.
Software Process Framework
A broad set of guidelines or best practices for managing how software is developed.
Examples: CMMI
A specific method or approach for developing software, showing the steps to follow.
Guides you through each stage of building software, from start to finish.
Software Development Life Cycle
•A life cycle model is also known as a process model.
•It gives us a pictorial representation of the entire software
development process.
•The life cycle model deals with each phase of the software
development process and includes all the activities that are involved
in its life cycle,
•Stage 1:Planning and requirement analysis
Most important and fundamental stage. Performed by senior members of the team with
input from the customer.
•Stage2:Defining requirements
Once the requirement analysis is done the next step is to clearly define and document
the product requirements and get them approved by the customer. This is done through
an SRS(Software requirement specification)
•Stage 3:Designing
The product architect will come out with best architecture for the product to be
developed based on SRS. Usually more than one design approach for the product
architecture is proposed and documented in a DDS(Design Document Specification)
•Stage 4:Building / developing
In this stage of SDLC the actual development and the product is built. The
programming language is chosen with respect to the type of software being
developed.
•Stage 5:Testing
This stage refers to the testing only stage of the product where product defects
are reported ,tracked, fixed and retested, until the product reaches the quality
standards defined in the SRS.
•Stage 6:Deployment and maintenance
The product may first be released in the limited segment and tested in the real
business environment(UAT-User Acceptance Testing).
THE WATERFALL MODEL
DISADVANTAGES
Quick Decision-Making
In this step, a preliminary design of the prototype is made. This is not the
complete design of the product; it just gives the user a brief idea of the
system.
Building a Prototype
In this step, a prototype is made using the information from the previous step.
It is a small working model of the software product being built.
User Evaluation
The prototype built in the previous step is presented to the users. They evaluate
the model for strengths and weaknesses and give their suggestions and
comments to the developers.
Prototype Refinement
The developers use the feedback collected from the users in the previous step to
refine the prototype. This step is repeated again and again until the user is
satisfied with the prototype.
1. Requirements are unclear: If you don’t know exactly what the final product
should be, creating a prototype helps figure it out.
2. Requirements keep changing: When project needs are constantly evolving,
prototypes let you adjust and improve quickly.
3. Designing user interfaces: For apps and websites, prototypes help design and
test how users will interact with the product.
4. Complex systems: If the system has complicated parts, prototypes help you test
and refine them before finalizing.
5. Proving feasibility: To show whether a new idea or technology will work,
prototypes demonstrate its potential.
Types of Prototype Models in Software Engineering
1. Throwaway Prototyping
2. Evolutionary Prototyping
3. Incremental Prototyping
4. Extreme Prototyping
Throwaway Prototyping
How It Works:
1. Develop a Prototype: Create a simple version of the system or a specific
feature to demonstrate concepts and gather feedback.
2. Gather Feedback: Use the prototype to interact with users or
stakeholders, gather feedback, and better understand requirements.
3. Refine Requirements: Based on the feedback and insights gained, refine
and finalize the project requirements.
4. Discard the Prototype: Once the prototype has served its purpose, it is
discarded, and development of the final product begins based on the
refined requirements.
Benefits:
Drawbacks:
Drawbacks:
● Scope Creep: Continuous changes can lead to scope creep if not managed
carefully.
● Resource Intensive: Requires ongoing resources for development, testing, and
feedback integration.
● Potential for Unclear End Goal: Without a clear initial scope, there may be
uncertainty about the final product.
Incremental Prototyping
1. Initial Prototype: Start with a basic version of the system that includes core
features.
2. Develop Increments: Gradually develop and add new features or enhancements
in small, incremental stages.
3. User Feedback: After each increment, gather user feedback and make necessary
adjustments or improvements.
4. Integration: Integrate new increments with the existing system to build the final
product progressively.
5. Iterate: Continue developing and refining the system through successive
increments until the final product is achieved.
Benefits:
Drawbacks:
1. Planning: Begin with a detailed understanding of the requirements and objectives. Develop a
project plan that outlines the scope, goals, and schedule.
2. Requirements Analysis: Gather and document requirements from stakeholders. This phase is
usually short and focuses on understanding essential needs and constraints.
3. Design and Development: Rapidly design and develop a prototype based on the requirements.
This involves:
○ Creating a Working Model: Build a functional model of the system that includes core
features.
○ Iterative Refinement: Continuously refine and improve the prototype based on user
feedback and testing.
4. Testing: Regularly test the prototype to identify and fix issues. Testing is often integrated into the
development process to ensure the prototype remains functional and meets user needs.
5. Deployment: Deploy the prototype for user evaluation and feedback. Make necessary adjustments
based on the feedback received.
6. Final Product Development: Once the prototype has been refined and validated, proceed with
developing the final product based on the insights gained from the prototype.
Benefits:
● Speed: Delivers a functional prototype quickly, allowing for fast feedback and
iteration.
● Flexibility: Allows for changes and adjustments based on user feedback and
evolving requirements.
● User-Centric: Engages users early and often, ensuring the final product aligns with
their needs and preferences.
● Risk Reduction: Identifies potential issues and problems early in the development
process, reducing the risk of major failures.
Drawbacks:
● Scope Creep: The rapid and iterative nature of extreme prototyping can lead to
scope creep if not managed carefully.
● Resource Intensive: Requires significant resources for frequent testing, refinement,
and development.