Software Engg
Software Engg
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!