Unit-I Reference Material
Unit-I Reference Material
Key Aspects:
Key Components:
● Activities: These are specific tasks performed during software development, which
may include:
○ Requirements Gathering: Understanding user needs through interviews,
surveys, and observation.
○ Design: Planning the architecture and user interface of the software.
○ Implementation: Writing the actual code to create the software.
1
UNIT-I
○ Testing: Evaluating the software for defects and verifying it meets the
requirements.
○ Maintenance: Updating the software to fix issues or add new features.
● Roles: Various stakeholders participate in the software process, including:
○ Developers: Write and test the code.
○ Project Managers: Oversee the project, ensuring it stays on track.
○ Quality Assurance (QA) Testers: Validate that the software meets quality
standards.
● Outputs: The deliverables produced at each phase, including:
○ Documentation: Project plans, requirement specifications, design documents.
○ Source Code: The actual code written by developers.
○ Test Cases: Plans for how to validate the software’s functionality.
● Requirements: The team conducts interviews with users to gather features such as
balance checking, fund transfers, and transaction history.
● Design: Wireframes and prototypes are created to visualize the user interface.
● Implementation: Developers code the application using a mobile programming
language like Swift or Kotlin.
● Testing: The app undergoes various tests, including functionality tests,
performance tests, and security tests.
● Deployment: The app is published on app stores for users to download.
● Maintenance: User feedback is collected, and updates are made to improve the app.
Common Phases:
1. Requirements Gathering: This phase involves collecting and analyzing user needs
and documenting them. Techniques such as interviews, surveys, and user stories are
commonly used.
2
UNIT-I
2. Design: In this phase, the architecture of the software is created. This includes
high-level design (system architecture) and detailed design (specific components).
UML diagrams may be used to visualize the system’s structure.
3. Implementation: This phase involves writing the actual code for the software
according to the design specifications. Developers work in programming languages
relevant to the project, such as Python, Java, or JavaScript.
4. Testing: Once the software is implemented, it is tested to ensure it meets the
requirements. Different types of testing, such as unit testing (testing individual
components), integration testing (testing combined components), and system testing
(testing the entire system), are conducted.
5. Deployment: After testing is complete, the software is deployed to users. This can
involve setting up servers, installing software, and ensuring everything is configured
correctly.
6. Maintenance: Post-deployment, the software requires ongoing maintenance to fix
bugs, address user feedback, and implement new features as needed.
● Requirements Phase: The team documents all user requirements for the software,
ensuring clarity and completeness.
● Design Phase: They create a detailed architecture, outlining how different
components will interact.
● Implementation Phase: Developers write code for the application based on the
design specifications.
● Testing Phase: QA testers conduct various tests to identify and fix any defects.
● Deployment Phase: The final product is released to users.
● Maintenance Phase: User feedback is collected, and updates are made to improve
functionality.
3
UNIT-I
Key Characteristics:
5. Software Myths
Software myths are misconceptions about software development that can lead to
mismanagement, unrealistic expectations, and project failures. Recognizing and debunking
these myths is essential for effective software engineering.
Common Myths:
4
UNIT-I
○ Reality: User needs and market conditions often change during development.
Software processes must be flexible to accommodate these changes without
derailing the project.
3. "Adding more people to a project will speed it up."
○ Reality: Known as Brooks' Law, adding more personnel to a delayed project
can complicate communication and coordination, often leading to further
delays.
4. "Software is easy to change, so requirements can be added or changed at any
time."
○ Reality: While software can be changed, late changes often complicate the
development process and can introduce errors, making change management
and impact analysis crucial.
Example: A team might assume that simply coding a new feature guarantees functionality.
However, without proper testing, unforeseen bugs can arise, underscoring the importance
of a thorough testing phase.
1. Process Models
Process models in software engineering define the structure, activities, and tasks involved
in developing software. They provide a framework to manage and control software
development processes.
A generic process model outlines the fundamental phases that are common to all software
development projects, regardless of their size or complexity. It serves as a foundation for
more specific models.
Key Phases:
1. Requirements: Identify and document what the software must do. This includes
understanding user needs, business requirements, and system constraints.
2. Design: Create the architecture and detailed design of the software. This involves
defining system components, their interactions, and how they will meet the
requirements.
5
UNIT-I
3. Implementation: Write the actual code for the software based on the design
specifications. This phase includes coding and unit testing individual components.
4. Testing: Verify that the software meets requirements and is free of defects. This
phase includes various testing levels, such as unit testing, integration testing, and
system testing.
5. Deployment: Release the software to users. This involves installation, configuration,
and user training.
6. Maintenance: Ongoing support for the software after deployment, including bug
fixes, updates, and enhancements.
Prescriptive process models are structured methodologies that define specific phases,
activities, and tasks to follow during software development. They are often characterized
by a set sequence of activities and deliverables.
1. Waterfall Model
● Description: A linear sequential model where each phase must be completed before
the next begins. It follows a strict order: Requirements, Design, Implementation,
Testing, Deployment, and Maintenance.
● Characteristics:
○ Easy to manage due to its sequential nature.
○ Best suited for projects with well-defined requirements.
● Limitations:
○ Inflexible to changes; late-stage changes can be costly.
6
UNIT-I
7
UNIT-I
3. Incremental Model
4. Spiral Model
8
UNIT-I
● Characteristics:
○ Focus on risk management and adaptability.
○ Ideal for large, complex projects.
● Limitations:
○ Can be complex to manage and requires expertise in risk analysis.
9
UNIT-I
Specialized process models take on many of the characteristics of one or more of the
traditional models However, these models tend to be applied when a specialized or
narrowly defined software engineering approach is chosen.
The component-based development model leads to software reuse, and reusability provides
software engineers with a number of measurable benefits. A software engineering team
can achieve a reduction in development cycle time as well as a reduction in project cost if
component reuse becomes part of your culture.
10
UNIT-I
● The formal methods model encompasses a set of activities that leads to formal
mathematical specification of computer software.
● Formal methods enable to specify, develop, and verify a computer-based system by
applying a rigorous, mathematical notation.
● A variation on this approach, called cleanroom software engineering is currently
applied by some software development organizations.
● There are some of the disadvantages too:
• Because few software developers have the necessary background to apply formal
methods, extensive training is required.
In software development, you often have functions that apply to multiple parts of your
program, like:
11
UNIT-I
Normally, these concerns are scattered throughout your code, making it harder to manage
and maintain. AOSD helps by separating these concerns into their own sections called
aspects.
1. Aspect
An aspect is a part of the code that deals with a cross-cutting concern. For example,
instead of writing logging code in many different places, you can create an aspect that
handles all the logging in one place.
2. Join Points
A join point is a specific place in your program where an aspect can be applied. This could
be when a method is called, an object is created, or an error occurs.
3. Pointcuts
A pointcut defines which join points should trigger an aspect. For example, you can set a
pointcut to trigger logging before any method in a class is executed.
4. Advice
Advice is the actual action that happens when a join point is reached. It could be:
5. Weaving
Weaving is the process of combining aspects with the main code. This can happen:
12
UNIT-I
The Unified Process (UP) is an iterative and incremental software development framework
that emphasizes architecture and risk management. It is characterized by the following
phases:
1. Inception: Define the project scope, identify stakeholders, and develop an initial
business case.
2. Elaboration: Refine requirements, create a detailed architecture, and address
risks.
3. Construction: Develop the software, focusing on coding and testing.
4. Transition: Prepare for deployment, including user training and system rollout.
Key Features:
Personal and team process models focus on improving individual and team performance in
software development.
Example: A developer using PSP might keep a log of time spent on different tasks,
identifying areas for improvement. A team using TSP may establish clear roles for each
member, ensuring that tasks are distributed effectively.
13
UNIT-I
Process technology refers to tools and techniques that support software process
management. These can include:
The relationship between product and process is crucial in software engineering. The
product refers to the software being developed, while the process encompasses the
activities and methodologies used to create the product.
Key Considerations:
● The quality of the software product is often a direct result of the effectiveness of
the software process.
● Good process practices lead to improved product quality, maintainability, and user
satisfaction.
Example: A well-defined process model, such as Agile, can lead to the rapid development
of a high-quality mobile application, as it allows for continuous user feedback and iterative
improvements. Conversely, a poorly defined process can result in delays and subpar
software quality.
14
UNIT-I
Agility in software development refers to the ability to respond to change quickly and
efficiently. The Agile process is a methodology that emphasizes flexibility, collaboration,
customer feedback, and rapid delivery of functional software.
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.
15
UNIT-I
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.
3. Construction/ iteration: When the team defines the requirements, the work begins.
Designers and developers start working on their project, which aims to deploy a working
product. The product will undergo various stages of improvement, so it includes simple,
minimal functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's
performance and looks for the bug.
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.
Benefits of Agile:
16
UNIT-I
2. Agility Principles
The Agile Manifesto outlines four foundational values and twelve guiding principles that
provide the framework for Agile development. Here are the key principles:
Agile Values:
Agile Principles:
17
UNIT-I
11. Self-Organizing Teams: The best architectures, requirements, and designs emerge
from self-organizing teams.
12. Regular Reflection: At regular intervals, the team reflects on how to become more
effective and adjusts accordingly.
Key Practices:
Advantages:
Disadvantages:
18
UNIT-I
Writing unit tests before programming and keeping all of the tests running at all
times. The unit tests are automated and eliminates defects early, thus reducing the
costs.
Starting with a simple design just enough to code the features at hand and
redesigning when required.
Programming in pairs (called pair programming), with two programmers at one
screen, taking turns to use the keyboard. While one of them is at the keyboard, the
other constantly reviews and provides inputs.
Integrating and testing the whole system several times a day.
Putting a minimal working system into the production quickly and upgrading it
whenever required.
Keeping the customer involved all the time and obtaining constant feedback.
Iterating facilitates the accommodating changes as the software evolves with the
changing requirements.
19
UNIT-I
Extreme Programming takes the effective principles and practices to extreme levels.
● Code reviews are effective as the code is reviewed all the time.
● Testing is effective as there is continuous regression and testing.
● Design is effective as everybody needs to do refactoring daily.
● Integration testing is important as integrate and test several times a day.
● Short iterations are effective as the planning game for release planning and
iteration planning.
20
UNIT-I
3.2 SCRUM
Overview: SCRUM is an Agile framework that divides work into small, manageable units
called sprints, typically lasting 2-4 weeks.
Key Components:
● Roles:
○ Product Owner: Represents stakeholders and prioritizes the product
backlog.
○ Scrum Master: Facilitates the SCRUM process and removes obstacles for
the team.
○ Development Team: A cross-functional group responsible for delivering
increments of the product.
● Artifacts:
○ Product Backlog: A prioritized list of features, enhancements, and bug
fixes.
○ Sprint Backlog: A list of tasks the team commits to completing during a
sprint.
○ Increment: The sum of all completed backlog items at the end of a sprint.
● Ceremonies/events:
○ Sprint Planning: The team plans the work for the upcoming sprint.
○ Daily Scrum: A brief meeting where team members share progress and
challenges.
○ Sprint Review: A meeting to demonstrate completed work to stakeholders.
○ Sprint Retrospective: A reflection on the sprint to identify improvements
for future iterations.
21
UNIT-I
Advantages:
Disadvantages:
● Requires commitment and understanding of Agile principles from the entire team.
● Potential for scope creep if not managed effectively.
22
UNIT-I
Key Features:
Advantages:
● Retains the core strengths of XP while allowing for scalability and flexibility in
larger environments.
● Addresses the challenges faced by larger teams in maintaining communication and
collaboration.
Disadvantages:
23