Software Enggg
Software Enggg
mark evaluation from an SPPU exam perspective. Remember to include diagrams where
appropriate in your actual exam answers!
Answer:
(Diagram: A simple layered diagram showing Quality at the base, then Process,
Methods, and Tools stacked on top would be beneficial here.)
1. Waterfall Model: The Waterfall Model is a sequential design process, often used in
traditional software development, in which progress is seen as flowing steadily
downwards (like a waterfall) through the phases of conception, initiation, analysis,
design, construction, testing, deployment, and maintenance.
● Phases:
2. Spiral Model: The Spiral Model is a risk-driven process model generator for software
projects. It combines the iterative nature of prototyping with the controlled and
systematic aspects of the Waterfall model. It is typically used for large, expensive, and
complicated projects.
(Diagram: A spiral diagram showing the four quadrants (Planning, Risk Analysis,
Engineering, Evaluation) and the iterative progression is crucial.)
Answer:
● Definition: Describe what the system should do – the services or functions the
software must provide. They specify the inputs, behavior, and outputs of the
system.
● Focus: System features and user tasks.
● Examples:
○ The system shall allow a user to register with a unique username and
password.
○ The system shall calculate the total amount for an order, including taxes
and shipping.
○ A librarian shall be able to add new books to the catalog.
○ The system shall generate a monthly sales report.
○ Users must be able to search for products by name or category.
Non-Functional Requirements (NFRs):
● Definition: Describe how the system should perform its functions. They specify
the quality attributes or constraints of the system. They do not change the core
functionality but define the quality of service.
● Focus: System properties like performance, reliability, usability, security,
maintainability, portability.
● Examples:
○ Performance: The system login process shall take no more than 2
seconds.
○ Performance: The system shall be able to handle 1000 concurrent users
without performance degradation.
○ Usability: The user interface shall be intuitive enough for a novice user to
learn basic operations within 10 minutes.
○ Security: All user passwords shall be stored in an encrypted format.
○ Reliability: The system shall have an uptime of 99.9%.
○ Maintainability: The code shall follow specified coding standards to
ensure ease of modification.
○ Portability: The application shall be deployable on both Windows and
Linux servers.
Defines What the system does How the system does it (quality attributes)
Impact of System fails to perform a System may work but be unusable, slow,
absence required task insecure, or unreliable
Export to Sheets
Understanding both FRs and NFRs is crucial for developing software that not only
works correctly but also satisfies user expectations regarding quality and performance.
Answer:
● Purpose: Use Case diagrams are part of UML (Unified Modeling Language) and
are used to represent the system's functionality from an external user's
perspective. They depict the interactions between users (actors) and the system
to achieve specific goals. They are excellent for defining the scope of a system
and for communicating the system's intended behavior to stakeholders.
Class Diagrams
● Purpose: Class diagrams are static structure diagrams in UML that describe the
structure of a system by showing its classes, their attributes (data), operations
(methods), and the relationships among objects. They are fundamental to
object-oriented modeling and design.
Class diagrams and Use Case diagrams provide different but complementary views of a
system. Use cases focus on behavior from the user's view, while class diagrams focus
on the static structure of the system that enables this behavior.
Unit 3: Fundamentals of Project Management
Question 1: Explain the COCOMO-I (Constructive Cost Model) for
software cost estimation. Discuss its different modes and the
parameters involved in its basic form. What are cost drivers in
Intermediate COCOMO? (9 Marks)
Answer:
1. Effort: The amount of labor required to develop the software, usually measured
in Person-Months (PM).
2. Development Time (Schedule): The calendar time required to complete the
project, usually measured in Months (M).
COCOMO-I defines three modes of software development projects, which affect the
constants used in its estimation formulas. These modes are based on the
characteristics of the project, development team, and environment:
● Input Parameter:
○ KLOC (Kilo Lines of Code): The estimated size of the software product
in thousands of delivered source instructions.
● Effort Estimation Formula: Effort=a⋅(KLOC)b(in Person-Months)
● Constants (a, b, c, d): These constants vary depending on the project mode:
| Project Mode | a | b | c | d | | :------------- | :--- | :---- | :--- | :---- | | Organic | 2.4 |
1.05 | 2.5 | 0.38 | | Semi-detached | 3.0 | 1.12 | 2.5 | 0.35 | | Embedded | 3.6 |
1.20 | 2.5 | 0.32 |
Answer:
Agile Methodology
The Agile Manifesto was created by a group of software developers to define a better
way of developing software. It is based on four core values and twelve supporting
principles.
1. Our highest priority is to satisfy the customer through early and continuous
delivery of valuable software.
2. Welcome changing requirements, even late in development. Agile processes
harness change for the customer's competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of
months, with a preference to the shorter timescale.
4. Business people and developers must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and
support they need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors, developers,
and users should be able to maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and good design enhances agility.
10.Simplicity—the art of maximizing the amount of work not done—is essential.
11.The best architectures, requirements, and designs emerge from self-organizing
teams.
12.At regular intervals, the team reflects on how to become more effective, then
tunes and adjusts its behavior accordingly.
Planning Adaptive planning; detailed for Extensive upfront planning for the
current iteration entire project
Feedback Short and frequent; allows for Long; feedback often received late
Loop quick adjustments
In essence, Agile is suited for projects where requirements are expected to change or
are not fully known upfront, and where rapid delivery of value is critical. Waterfall is
more appropriate for projects with stable, well-understood requirements and where a
sequential approach is feasible.
1. Maintain a Single Source Repository: All source code, build scripts, and
relevant artifacts are stored in a version control system (e.g., Git, SVN)
accessible to all team members. This is the single source of truth.
2. Automate the Build: The process of compiling code, linking libraries, and
creating executable software or deployable units should be automated. This
ensures consistency and reduces manual errors.
3. Make the Build Self-Testing: The automated build should include a
comprehensive suite of automated tests (unit tests, integration tests) that verify
the correctness of the software. A build is considered successful only if all tests
pass.
4. Everyone Commits to the Mainline (or Main Branch) Every Day: Developers
should commit their changes to the central repository frequently, at least once a
day. This minimizes the divergence between individual workspaces and the
mainline.
5. Every Commit Should Trigger an Automated Build and Test: As soon as
code is committed, the CI server should automatically trigger a build and run all
associated tests.
6. Keep the Build and Test Process Fast: Builds and tests should execute quickly
so that developers get fast feedback. If it takes too long, developers might be
less inclined to wait or commit frequently.
7. Test in a Clone of the Production Environment: Automated tests should
ideally run in an environment that closely mimics the production environment to
catch environment-specific issues early.
8. Make it Easy for Anyone to Get the Latest Executable Version: The latest
successfully built and tested version of the software should be easily accessible
to developers, testers, and stakeholders.
9. Everyone Can See the Results of the Latest Build: Build status (success,
failure, test results) should be visible to the entire team (e.g., via dashboards,
email notifications, CI server interface). This promotes transparency and
collective ownership of build health.
10.Automate Deployment (Often part of Continuous Delivery/Deployment -
CD): While CI focuses on integration and testing, it's a prerequisite for CD, where
successful builds are automatically deployed to staging or production
environments.
● Early Bug Detection and Prevention: Integration issues and bugs are found
quickly after they are introduced, making them easier and cheaper to fix.
● Reduced Integration Problems: Frequent integration minimizes the scope of
changes, reducing the complexity of merging and resolving conflicts.
● Improved Code Quality: Automated testing ensures a baseline quality and
helps maintain code health. Constant feedback encourages developers to write
better, testable code.
● Faster Release Cycles: Automation and reliable builds enable more frequent
and predictable releases of software.
● Increased Developer Productivity: Developers spend less time debugging
integration issues and more time developing features. Automated processes free
up developer time.
● Improved Team Collaboration and Communication: CI fosters a shared
responsibility for the codebase and build stability.
● Greater Confidence in the Software: Knowing that every change is
automatically built and tested increases confidence in the software's stability and
readiness for deployment.
● Reduced Risk: Issues are identified and addressed continuously, reducing the
risk of major failures late in the development cycle or after release.
Typical CI Workflow:
1. Developer Commits Code: A developer makes changes to their local codebase
and commits them to the central version control repository (e.g., pushes to a Git
branch).
2. CI Server Detects Change: The CI server continuously monitors the repository.
Upon detecting a new commit, it triggers the CI pipeline.
3. Automated Build: The CI server pulls the latest code and executes the
automated build script. This typically involves:
○ Compiling source code.
○ Running static code analysis.
○ Creating build artifacts (e.g., executables, libraries, packages).
4. Automated Testing: After a successful build, the CI server runs automated
tests:
○ Unit tests.
○ Integration tests.
○ (Optionally) Other tests like UI tests, performance tests (can be part of a
later stage in CD).
5. Report Results: The CI server reports the status of the build and tests.
○ If successful: The build is marked as good. Artifacts may be stored.
Notifications are sent.
○ If failed (build error or test failure): The build is marked as broken. The
team is notified immediately to fix the issue. The mantra is often "fix the
broken build first."
6. (Optional) Deploy Artifact: If the build and all tests pass, the artifact might be
automatically deployed to a testing, staging, or even production environment (this
extends into Continuous Delivery/Deployment).
(Diagram: A flowchart showing the CI workflow: Developer Commits -> VCS -> CI
Server (Pulls code, Builds, Tests) -> Feedback/Notification -> (Optional) Deploy.
This would be very helpful.)
Popular CI Tools:
I hope these example questions and detailed answers help you prepare for your SPPU
exams! Remember to adapt them and prepare other topics with similar depth. Good
luck!
Unit 4: Agile Project Management Framework
Answer:
User Story:
The typical format is: "As a <type of user>, I want <some goal> so that
<some reason/benefit>."
The INVEST acronym, coined by Bill Wake, provides a checklist for creating
effective user stories:
Example:
Question 2: Explain the purpose and use of a Sprint Burndown chart in Scrum.
How does this chart help the team monitor progress? (6 Marks)
Answer:
● X-axis (Horizontal): Represents time, typically the days of the sprint (e.g.,
Day 1, Day 2, ..., Day 10).
● Y-axis (Vertical): Represents the remaining work, usually measured in
Story Points or task hours.
● Ideal Work Line: A straight diagonal line starting from the total planned
work on Day 1 and ending at zero on the last day of the sprint. This
represents a perfect, steady pace of work completion.
● Actual Work Line: A line that is updated daily, showing the actual amount
of work remaining. This line fluctuates based on the team's progress.
Question 3: Describe the roles and responsibilities of the three core members of
a Scrum Team: Product Owner, Scrum Master, and the Development Team. (6
Marks)
Answer:
The Product Owner is the voice of the customer and the stakeholders. They are
responsible for maximizing the value of the product resulting from the work of the
Development Team.
● Key Responsibilities:
● Manages the Product Backlog: Clearly defines Product Backlog
items (user stories), orders them by priority to best achieve goals,
and ensures the backlog is visible and understood by everyone.
● Is the Sole Person Responsible for the Backlog: While the PO may
take input from others, they have the final say on the content and
ordering of the backlog.
● Represents Stakeholders: Gathers requirements from stakeholders
and translates them into backlog items.
● Ensures Value Delivery: Makes decisions to ensure the team is
working on the most valuable features for the business and the
customer.
● Key Responsibilities:
● Facilitates Scrum Events: Ensures that all Scrum events (Sprint
Planning, Daily Scrum, Sprint Review, Sprint Retrospective) take
place and are positive and productive.
● Removes Impediments: Identifies and helps remove any obstacles
or blockers that are hindering the Development Team's progress.
● Coaches the Team: Mentors the team in Scrum practices,
self-organization, and cross-functionality.
● Protects the Team: Shields the team from external interruptions and
ensures they can focus on achieving the Sprint Goal.
● Serves the Organization: Helps the organization in its Scrum
adoption and promotes Scrum values.
● Key Responsibilities:
● Self-Organizing: They decide how to turn Product Backlog items into
a "Done" product increment. No one, not even the Scrum Master,
tells them how to do their work.
● Cross-Functional: The team has all the skills necessary to create the
product increment without depending on others outside the team.
● Creates the Sprint Backlog: During Sprint Planning, they select items
from the Product Backlog and create a plan (the Sprint Backlog) for
how they will deliver them.
● Delivers a "Done" Increment: They are accountable for creating a
high-quality, potentially releasable increment that adheres to their
agreed-upon Definition of Done.
● Team Size: Typically consists of 3 to 9 members.
●
Unit 5: Implementation with Agile Tools
Question 1: Explain the concept of version control. What is the role of a tool like
GitHub in Agile software development? (6 Marks)
Answer:
GitHub is a web-based hosting service for the Git version control system. It is not
just a place to store code; it's a powerful platform for collaboration that is highly
beneficial for Agile teams.
Answer:
Product Backlog:
● Owner: The Product Owner is solely responsible for managing the Product
Backlog, including its content, availability, and ordering.
● Content: Contains Product Backlog Items (PBIs), often in the form of user
stories, which describe what is needed.
● Ordering: Items are prioritized based on business value, risk, and
dependency. The highest priority items are at the top and are the most
detailed.
● Lifecycle: It is a living artifact that exists and evolves for the entire lifetime
of the product.
● Purpose: It serves as the roadmap for what the team will build over the
long term.
Sprint Backlog:
The Sprint Backlog is the set of Product Backlog items selected for the current
Sprint, plus a plan for delivering the product increment and realizing the Sprint
Goal. It is a forecast by the Development Team about what functionality will be in
the next increment and the work needed to deliver that functionality.
● Owner: The Development Team owns the Sprint Backlog. They create it
and are responsible for managing it throughout the Sprint.
● Content: Contains the selected PBIs for the sprint and a detailed plan of
tasks required to complete them.
● Ordering: The team decides the order in which they will implement the
tasks within the sprint.
● Lifecycle: It exists only for the duration of a single Sprint. It is created
during Sprint Planning and is considered "closed" at the end of the Sprint.
● Purpose: It is a highly visible, real-time picture of the work the
Development Team plans to accomplish during the Sprint.
Scope Contains all requirements for Contains only the work planned for one
the entire product. Sprint.
Duration Exists for the lifetime of the Exists for the duration of one Sprint only.
product.
Purpose Long-term strategic plan for Short-term tactical plan for the current
the product. Sprint.
Export to Sheets
Answer: