Network Lab SEIT/B/b
VU4F2324131
Software Engineering
Module 1 : Introduction to Software Engineering
Chapter 1: Introduction to Software Engineering
What are major challenges in software engineering?
Describe the characteristics and nature of software, and explain the layered
structure of software engineering.
Explain the characteristics and nature of software.
Chapter 2: Process Models
Explain the evolutionary process model.
Explain the prototyping concept in the Spiral process model.
Explain the V-model in detail and discuss any one type of incremental process
model.
Chapter 3: Agile Process
Explain the Scrum Agile development model and the Scrum process in detail.
Explain the principles of Agile methodology and the differences between Agile
and evolutionary process models.
What is agility? Explain the Kanban model.
Module 2 : Requirement Analysis
Chapter 4: Requirement Engineering
What is a feasibility study? Discuss the different types of feasibility study.
Explain feasibility studies in detail.
Write about the non-functional requirements for an "Online Pizza Ordering"
system (covering performance, availability, reliability, security, and
maintainability).
Explain characteristics of a Software Requirements Specification (SRS) and
outline an SRS for an online student feedback system.
Explain requirement elicitation in detail.
Network Lab SEIT/B/b
VU4F2324131
Module 3 : Software Estimation and Scheduling
Chapter 5: Software Estimation Metrics
Explain the COCOMO model with an example.
Explain the COCOMO II model with an example.
Explain the function point estimation technique with an example.
Explain LOC-based and function point-based estimation techniques.
Explain object-based estimation technique.
Compute the function point value given: user inputs = 32, user outputs = 60,
user enquiries = 24, files = 8, external interfaces = 2, Σ fi = 40 (with all
complexity adjustment values average).
Explain the management spectrum 3Ps (People, Product, Process).
Explain process metrics and project metrics.
Chapter 6: Project Scheduling and Tracking
Explain earned value analysis, and compute the EAC and ETC given AC = 15000,
BAC = 22000, EV = 13000, CPI = 0.8.
Explain project scheduling and one project tracking technique, with an example.
Network Lab SEIT/B/b
VU4F2324131
Module 4 : Design Engineering
Chapter 7: Design Engineering
Draw a UML use case diagram and a class diagram for a "Smart Agriculture
Monitoring System".
Draw a UML component diagram and a deployment diagram for a "College
Management System".
Explain the design model and draw a deployment diagram and a swimlane
diagram for an online shopping system.
Discuss various software design patterns.
Explain refactoring, cohesion, and coupling; discuss the benefits of high cohesion
and low coupling.
Explain different types of coupling and cohesion.
Chapter 8: Architectural Design
Explain different architectural styles.
Chapter 9: User Interface Design
Explain the golden rules of user interface design.
Discuss the principles of user interface design.
Module 5 : Software Risk Configuration
Management
Chapter 10: Risk Management
What is a risk? Explain different types of risk in detail.
Explain the Risk Mitigation, Monitoring, and Management (RMMM) plan.
Explain risk assessment and risk projection.
Chapter 11: Software Configuration Management
Explain the software configuration management (SCM) process and its benefits.
Explain the change control process in SCM in detail.
What is software configuration management (SCM)? Explain SCM repositories.
Network Lab SEIT/B/b
VU4F2324131
Module 6 : Sofware Testing and Maintainence
Chapter 12: Software Quality Assurance (SQA)
Explain Formal Technical Reviews (FTR) in detail.
Explain the steps involved in an SQA (Software Quality Assurance) plan.
Short note on McCall’s quality factors.
Chapter 13: Testing Strategies and Tactics
Explain the principles of software testing and discuss the differences between
black-box and white-box testing techniques.
Explain software testing strategies and tactics.
Why is cyclomatic complexity important to testers? (Perform relevant
calculations on a given flow graph.)
Chapter 14: Software Maintenance
Explain reengineering and reverse engineering in detail.
Network Lab SEIT/B/b
VU4F2324131
Module 1: Introduction to Software Engineering
Chapter 1: Introduction to Software Engineering
Q1. What are major challenges in software engineering?
Modern software engineering faces several critical challenges. One of the foremost is managing the
increasing complexity of software systems. As software becomes more integrated into diverse domains
(e.g., healthcare, defense, finance), ensuring quality, correctness, and scalability is increasingly difficult.
Another key challenge is delivering high-quality software under tight deadlines. Time-to-market
pressures demand fast development cycles, which can compromise thorough testing and design. Further,
changing requirements during development can disrupt progress, requiring flexible design and adaptive
processes. Managing project risks, such as unrealistic goals, inadequate resources, and poor communication,
also remains a persistent issue. Lastly, maintaining and evolving existing systems, often written in outdated
languages or poorly documented, is another challenge. According to Sommerville, these problems are
compounded by issues like system diversity, software trust, and rapid delivery expectations. Effective
communication, use of standardized processes, and iterative development help in mitigating these issues.
Q2. Describe the characteristics and nature of software, and explain the layered structure of software
engineering.
Software exhibits several unique characteristics distinguishing it from traditional engineering products. It is
intangible—there is no physical form. It is engineered, not manufactured, and it does not degrade over
time like hardware. However, it may deteriorate due to outdated dependencies or poor maintenance. Software
is also custom-built for a specific purpose, making reuse and standardization challenging. Common
characteristics include maintainability, reliability, efficiency, and usability.
Software engineering follows a layered technology structure:
1. Quality Focus – forms the bedrock, emphasizing continuous improvement.
2. Process Layer – defines the framework (life cycle models) within which development occurs.
3. Methods Layer – provides technical “how-to” (e.g., structured analysis, object-oriented design).
4. Tools Layer – supports methods and processes (e.g., CASE tools, IDEs).
This layered approach helps in organizing the development workflow, ensuring consistent application of
engineering principles, and maintaining quality across the software life cycle.
Network Lab SEIT/B/b
VU4F2324131
Q3. Explain the characteristics and nature of software.
Software is non-physical and intangible—it cannot be touched or seen in the traditional sense. Unlike
hardware, it is not produced in a factory but developed through logical processes. One of its most
distinguishing features is that it does not wear out; however, it may require updates to fix bugs or
accommodate new environments. Software is also typically custom-built, meaning solutions are often
created from scratch rather than assembled from standardized parts. Additionally, software has high
complexity due to the vast number of states it can occupy. Attributes of quality software include
functionality, reliability, usability, efficiency, maintainability, and portability. These characteristics
make software engineering a challenging discipline requiring rigorous processes and tools to manage its
complexity and ensure its effectiveness.
Chapter 2: Process Models
Q4. Explain the evolutionary process model.
The evolutionary process model emphasizes developing an initial version of the software and gradually
refining it through multiple iterations based on user feedback. Each version, or “evolution,” is improved and
extended by incorporating new features and resolving issues found in earlier releases. There are two main
types of evolutionary models: the Incremental Model and the Spiral Model. This approach is beneficial for
projects where requirements are not fully known upfront. It allows the software to evolve as more
information becomes available. It also ensures that critical features are developed and delivered early,
providing users with a working product to review. Continuous customer involvement and feedback reduce
the risk of failure and ensure the final product aligns with user needs.
Q5. Explain the prototyping concept in the Spiral process model.
In the Spiral model, prototyping plays a crucial role in minimizing risk. Each iteration of the spiral consists
of four phases: planning, risk analysis, engineering, and evaluation. During the risk analysis phase, a
prototype may be developed to understand requirements, assess technical feasibility, or validate user
interfaces. Prototypes can be throwaway (discarded after use) or evolutionary (refined into the final
product). This helps stakeholders visualize the system early, identify flaws, and make informed decisions.
The model supports iterative refinement and user involvement, making it suitable for complex and high-risk
projects. Prototyping ensures better understanding of requirements and helps avoid costly changes later in
development.
Q6. Explain the V-model in detail and discuss any one type of incremental process model.
The V-model (Verification and Validation model) is an extension of the waterfall model that emphasizes
validation and testing alongside each development phase. It is structured like a “V,” with development phases
on the left and corresponding testing phases on the right:
Requirements ↔ Acceptance Testing
System Design ↔ System Testing
Architecture Design ↔ Integration Testing
Module Design ↔ Unit Testing
Network Lab SEIT/B/b
VU4F2324131
Each development activity is directly associated with a testing phase, ensuring early test planning and
systematic verification.
One common incremental model is the Incremental Development Model, where the software is built and
delivered in parts. Each increment adds functional capabilities. The core product is developed first, then
additional features are added over multiple iterations. This model is effective in delivering early value,
responding to feedback, and adapting to changing requirements.
Chapter 3: Agile Process
Q7. Explain the Scrum Agile development model and the Scrum process in detail.
Scrum is an Agile framework used for developing complex software systems. It is based on iterative and
incremental development. The Scrum team comprises the Product Owner, Scrum Master, and
Development Team. Work is divided into Sprints, usually lasting 2-4 weeks. Before a sprint begins, the
team conducts a Sprint Planning Meeting to select tasks from the Product Backlog (a prioritized list of
features). During the sprint, the team holds Daily Scrum Meetings (stand-ups) to track progress and address
issues. At the end of the sprint, there is a Sprint Review (demo to stakeholders) and a Sprint Retrospective
(team reflects on improvements). The key Scrum artifacts are the Product Backlog, Sprint Backlog, and the
Increment (working software). Scrum promotes transparency, accountability, and frequent delivery of
valuable software.
Q8. Explain the principles of Agile methodology and the differences between Agile and evolutionary
process models.
The Agile Manifesto defines core values and principles for Agile development. These include:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Agile methods aim for early and continuous delivery, close customer collaboration, and embracing change.
Key principles include delivering software frequently, fostering sustainable development, and maintaining
technical excellence.
While both Agile and evolutionary models are iterative, they differ in philosophy and execution.
Evolutionary models like Spiral focus on risk management and predefined planning. Agile, in contrast,
encourages minimal upfront planning, continuous feedback, and adaptive planning. Agile is more flexible,
collaborative, and responsive to change.
Q9. What is agility? Explain the Kanban model.
Agility refers to the ability of a software development process to respond quickly to changing requirements
and market conditions. It promotes rapid delivery, flexibility, and customer satisfaction.
Network Lab SEIT/B/b
VU4F2324131
The Kanban model is a lean, Agile method for managing workflow. It visualizes tasks on a Kanban board
with columns like “To Do,” “In Progress,” and “Done.” Each task is represented by a card that moves across
columns as work progresses. A key feature is Work-In-Progress (WIP) limits, which prevent teams from
being overloaded. Kanban enables teams to focus on completing current work before starting new tasks,
improving flow and efficiency. It is continuous and flexible, with no fixed iteration length, making it ideal
for support and maintenance projects. Kanban supports incremental improvements, encourages visibility, and
enhances predictability in software development.