SE Unit Null Question Papers
SE Unit Null Question Papers
Solutions
Unit 1
Scrum
1. Discuss scrum roles with their responsibilities
In the scrum approach, there are several roles that are important to its success:
Product Owner: responsible for defining the features and priorities of the product
Scrum Master: responsible for facilitating the team and ensuring that the scrum
process is being followed
Scrum Members (Development team): responsible for completing the work necessary
to build the product
Sprint: the time-boxed iteration of work in the scrum approach, typically lasting two to four
weeks. The purpose of the sprint is to complete a specific set of work, known as the sprint
goal, and to deliver a potentially shippable product increment. By breaking the work down
into smaller, time-boxed iterations, the team can stay focused and adapt to changing
requirements or priorities.
Sprint Planning: a meeting held at the beginning of each sprint, where the team discusses
and plans the work to be completed in the upcoming sprint. The team, along with the
Product Owner, will review the product backlog and identify the items that need to be
worked on in the sprint. They will then discuss and estimate the work, and create a sprint
goal that defines the work to be completed in the sprint.
Daily Scrum: a short meeting held every day, where each team member provides a brief
update on their progress and any obstacles they are facing. The purpose of the daily scrum is
to keep the team focused and on track, and to identify and address any issues that may be
blocking progress.
Sprint Review: a meeting held at the end of each sprint, where the team demos the work
completed in the sprint to stakeholders. The team will present the product increment that
was created during the sprint, and demonstrate the new features and functionality. This is an
opportunity for the stakeholders to provide feedback and direction for the next sprint.
Sprint Retrospective: a meeting held at the end of each sprint, where the team reflects on
the sprint and identifies ways to improve in the future. The team will discuss what went well
during the sprint, what could be improved, and what actions can be taken to address any
issues. This event is an important part of continuous improvement in the scrum process.
3. Discuss sprints and their relevance to make scrum approach agile
A sprint is a time-boxed iteration of work in the scrum approach, typically lasting two to
four weeks
Purpose: complete a specific set of work (the sprint goal) and deliver a potentially
shippable product increment
Benefits: allows the team to stay focused and adapt to changing requirements or
priorities
Sprint planning meeting: review the product backlog and identify work for the sprint;
discuss and estimate the work; create a sprint goal
During the sprint: team focuses on completing the work necessary to achieve the
sprint goal; hold daily stand-up meetings; work collaboratively to overcome challenges
At the end of the sprint: demo the product increment to stakeholders and gather
feedback for the next sprint
Overall, sprints are a critical part of the scrum approach, as they provide a structured
way for the team to deliver working software in a predictable and repeatable
manner. This helps to make the scrum approach agile and effective.
4. Discuss
scrum agile approach in terms of its activities with
advantages and disadvantages
Allows the team to be flexible and responsive to changing customer needs and
requirements
5. Whatis agile manifesto? How does the scrum model adhere to the
agile manifesto?
The agile manifesto is a set of guiding principles for agile software development:
A project backlog is a prioritized list of work items, such as features, user stories, or
tasks, that need to be completed in order to achieve the project goals by working on the
most important items first.
It is the source of work for the development team, as they select items from the backlog
and complete them during each sprint.
It is a dynamic document that is constantly evolving, as new work items are added,
priorities change, and work is completed.
It is owned by the Product Owner, who is responsible for maintaining it and ensuring
that it is up-to-date.
The project backlog helps to keep the team focused and on track, as it provides a clear
view of the work to be done and the progress being made.
True
False
3. Responding to changes in the requirements are more important than following a plan
False
4. Products developed are available for customers at the end of the development
lifecycle
False
True
True or False
1. Requirements can be changed with any SDLC
True
True
3. Pair Programming is a practice which can be used as part of any agile or plan driven
lifecycle
True
4. CDLC differs from Plan or Agile Lifecycles in Packing and Distribution Phases
True
5. While preparing the project plan, we need to plan for documentation activities as well.
True
6. In Scrum model, at the end of every week, a working version of the software should be
available.
False
7. An advantage of the CBSE is that components could be used as a black box and hence
reduces complexity of the systems
False
It allows developers to reuse existing components in their software, rather than having to
build all the components from scratch. This can save time and effort, and can help to ensure
that the components are well-tested and reliable. However, the components may still be
complex in themselves, and the interactions between the components may add additional
complexity.
incremental
2. The model where the existing code is modified to a great extent while adding new
features is _ _ _ _ _ _ _ _ _ .
evolutionary
3. What is a risk and what are the steps (with one line description each)
involved in managing risks?
A risk is a potential negative outcome or danger that may arise in a situation or project. The
steps involved in managing risks are:
Identifying risks: Identify the potential risks that may arise in a situation or project.
Analyzing risks: Evaluate the potential impact and likelihood of identified risks.
Prioritizing risks: Rank the identified risks based on their potential impact and
likelihood.
Developing risk response strategies: Develop strategies to mitigate or avoid the
identified risks.
Implementing risk response strategies: Put the developed strategies into action to
reduce or eliminate the identified risks.
Monitoring and reviewing risks: Continuously monitor and review the identified risks
and the effectiveness of the implemented strategies.
4. What is CBSE? What are its advantages and disadvantages?
Reusability: Components can be reused in different contexts, which can save time and
effort in software development.
Modularity: Components can be designed to be modular and easily understood, which
can make the system more maintainable.
Flexibility: Components can be easily replaced or upgraded, which can improve the
adaptability and flexibility of the system.
Complexity: The use of components can add complexity to the system, which can make
it more difficult to understand and maintain.
Integration: Components must be carefully integrated to work together, which can be
a time-consuming and error-prone process.
Compatibility: Components must be compatible with each other and the overall
system, which can be a challenge in large and complex systems.
5. Discuss
the steps involved in the Requirements Engineering Process
along with what is being achieved in each step
The goal of requirements engineering is to ensure that the resulting software or product will
meet the needs of the end user or customer.
1. Elicitation: In this step, the requirements engineer works with stakeholders, such as
end users, customers, and subject matter experts, to gather and collect information
about the needs and requirements for the software or product. This may involve
techniques such as interviews, surveys, focus groups, or workshops.
2. Analysis: In this step, the requirements engineer analyzes the information collected in
the elicitation step to identify common themes, patterns, and requirements. This may
involve organizing the requirements into categories or using modeling techniques to
represent the requirements in a visual or graphical form.
4. Validation: In this step, the requirements engineer works with stakeholders to validate
and verify that the requirements accurately reflect the needs and requirements of the
end user or customer. This may involve techniques such as user acceptance testing,
where the requirements are tested against real-world scenarios to ensure they are
accurate and complete.
5. Management: In this step, the requirements engineer manages and maintains the
requirements over the course of the software development or product development
process. This may involve tracking changes to the requirements, prioritizing
requirements, and communicating changes to the development team.
6. Contrast SDLC and PDLC
Software Development Life Cycle (SDLC) and Product Development Life Cycle (PDLC) are both
systems that organizations use to plan, develop, and manage the creation of new products
or software.
The main difference between the two is that SDLC focuses on the development of software,
while PDLC focuses on the development of a product, which can include software but can
also include other types of products, such as physical goods or services.
Both SDLC and PDLC typically involve several stages, such as planning, design, development,
testing, and deployment. However, the specific stages and their focus may vary depending
on the specific approach or methodology being used.
For example, SDLC may include stages such as requirements gathering, design, coding,
testing, and maintenance, while PDLC may include stages such as market research, product
design, prototype development, testing, and product launch.
Overall, the goal of both SDLC and PDLC is to ensure that new products or software are
developed in a structured and organized manner, with the needs and requirements of
customers or users in mind.
7. Contrast
Waterfall Model, CBSE and Product line in terms of
Reusability and Supportability
The Waterfall model is a software development model that is based on a linear, sequential
approach. In this model, each phase of the software development process must be
completed before the next phase can begin, and there is little or no overlap between phases.
This model is not designed with reusability or supportability in mind, and as such it is not
particularly well-suited for these purposes.
A product line is a set of related products that share a common, standardized set of
features. In software development, a product line approach is one in which a set of core
components and features are developed and then used as the basis for a range of related
software products. This approach allows for high levels of reusability and supportability,
since the core components can be easily reused and maintained across multiple products.
8. Discuss
the V model of SDLC with the different phases, focus on each
of these phases and the deliverables or artifacts which you would
see at the end of the phase. Discuss how is this similar to a waterfall
model and how it is different from a waterfall model.
The V model of the software development life cycle (SDLC) is a graphical representation of
the process of developing software. It is similar to the waterfall model in that it is a
sequential, linear approach to software development, with each phase building upon the
previous one. However, it is different from the waterfall model in that it includes specific,
defined phases for testing and verification, which are integrated with the corresponding
phases of development.
1. Requirements gathering and analysis: In this phase, the software requirements are
gathered and analyzed to determine the scope and functionality of the software.
2. Design: In this phase, the software architecture and design are created, including the
overall structure and organization of the software, as well as the specific components
and modules that will be implemented.
3. Implementation: In this phase, the individual components and modules of the
software are developed and implemented according to the design specifications.
4. Integration and testing: In this phase, the individual components and modules are
integrated and tested to ensure that they work together correctly.
5. Verification and validation: In this phase, the software is tested to ensure that it
meets the specified requirements and works as intended.
At the end of each phase, there are specific deliverables or artifacts that are produced. For
example, at the end of the requirements gathering and analysis phase, a requirements
specification document is produced. At the end of the design phase, a design specification
document is produced. At the end of the implementation phase, the individual components
and modules of the software are produced. And at the end of the integration and testing
phase, a complete, working version of the software is produced.
The V model is similar to the waterfall model in that it is a sequential, linear approach to
software development. However, it is different from the waterfall model in that it includes
specific phases for testing and verification, which are integrated with the corresponding
phases of development. This allows for a more thorough and comprehensive approach to
software development, and helps to ensure that the final product is of high quality and
meets the specified requirements.
Functional requirements:
1. The application should allow users to search for movies by title, genre, and location.
2. The application should allow users to select a specific showing of a movie and choose
their seats.
3. The application should allow users to enter payment information and complete the
purchase of their movie tickets.
Non-functional requirements:
2. The application should be secure and protect user information, such as payment
details.
3. The application should be able to handle high volumes of traffic and concurrent users
without crashing or experiencing significant delays.
2. Assumeyou are the project manager of two projects with the
following characteristics:
(i) Which of the above models will you choose for each of your
projects?
(i) For Project 1, I would choose the waterfall model. This model is well-suited for a
complex real-time system with stable requirements because it allows for a structured and
linear development process, with each phase of the project building on the previous one.
This will help ensure that the final product meets the requirements and is delivered on time.
For Project 2, I would choose the incremental model. This model is well-suited for a
project with vague and changing requirements because it allows for a more flexible
development process. Instead of trying to identify all requirements upfront, the incremental
model allows for the gradual development and refinement of the system, with each iteration
building on the previous one. This will help ensure that the final product meets the evolving
needs of the clinic.
(ii) The waterfall model is a good fit for Project 1 because it allows for a structured and linear
development process that is well-suited for a complex real-time system with stable
requirements. The incremental model is a good fit for Project 2 because it allows for a more
flexible development process that can accommodate the vague and changing requirements
of a web-site for a local clinic. Both models will help ensure that the final products meet the
specific needs of each project.
"SR-4: The pages of the application will load in acceptable amount of time."
The problem with the requirement statement is that it is not specific or measurable. The
term "acceptable amount of time" is vague and subjective, and it is not clear what would
constitute an acceptable amount of time for the pages to load. In order to improve the
requirement statement, it should be made more specific and measurable.
For example, the requirement could be revised to state something like "SR-4: The pages of
the application will load within 3 seconds or less." This revised statement is more specific
and measurable, and it clearly defines what would constitute an acceptable amount of time
for the pages to load.
4. Whatis a software lifecycle model? What are the common
characteristics of each phase or activity in a software lifecycle
model?
A software lifecycle model is a framework that defines the stages and activities involved in
the development of a software system. Each phase or activity in a software lifecycle model
has certain characteristics that are common across different models. Some of these common
characteristics are:
1. Each phase or activity has a specific goal or objective that it aims to achieve.
2. Each phase or activity has well-defined inputs, outputs, and deliverables.
3. Each phase or activity has specific activities, tasks, or steps that need to be
performed in order to achieve its goal.
4. The progress and completion of each phase or activity is typically reviewed and
verified by stakeholders.
5. The output of each phase or activity serves as input for the next phase or activity in
the software lifecycle model.
Overall, the common characteristics of each phase or activity in a software lifecycle model
help to ensure that the development of the software system is structured, organized, and
efficient.
Glossary
CBSE - Component Based Software Engineering
2. Describe
in 1-2 lines any six approaches that can be taken to
decompose a larger system into subsystems or components
Six approaches that can be taken to decompose a larger system into subsystems or
components are:
• Top-down decomposition: Breaking a system into the highest-level components, and then
breaking each of these components into further sub-components.
• Bottom-up decomposition: Breaking the system into its smallest components and then
gradually combining them to form larger components.
• Goal-oriented decomposition: Breaking the system into components based on the goals
of the system.
3. Discuss
any two properties which you would expect from a software
requirement with an example to illustrate the same
Two properties which you would expect from a software requirement are:
Example: A software requirement to “improve the user experience” is not testable since
there is no way to measure the level of improvement.
4. Discuss
an approach through which you could choose a lifecycle for
development of a product. Use two examples on how a lifecycle was
chosen by two different companies
• Determining the resources needed for the project and the timeline for completion.
Examples:
• Company A: Company A chose an Agile lifecycle, which focuses on short sprints and
frequent customer feedback.
• Company B: Company B chose a Waterfall lifecycle, which follows a linear process from
planning to development and testing.
Five considerations which influence the software design characteristics like simplicity and
maintenance are:
• Usability: The design should make it easy for users to accomplish their tasks.
• Security: The design should protect the system from security threats.
• Goals: The architecture should meet the business and technical goals of the system.
• Technology: The architecture should take full advantage of the available technology.
• Budget: The architecture should be within the budget constraints of the project.
9. Consider
you are building a plan for a project, where you have
broken down the project requirements into a set of executable tasks
and have estimated the amount of effort needed to execute that.
Discuss any 6 points which need to be considered while building a
schedule for the project
• Scheduling software: Identifying and using scheduling software to create the project
schedule.
Case Study
1. Consideryour company has a software product which has software
components deployed across different servers, and when a problem
occurs, support engineers need to trouble shoot using the
information logged by the software components. Some of the
characteristics of the environment are that Log sizes are large, and
these logs are generated at small intervals of time, and the interest
in the logs is for particular events over specific time period in the
logs. You are expected to provide an Architectural solution to
support quick and effective trouble shooting.
Solutions:
• Solution 1: Store the logs in a centralized location and use a search tool to search for
particular events over a specific time period. This would be the simplest solution but may
cause performance issues.
• Solution 2: Store the logs on the local servers and use a distributed storage system to
aggregate the logs for analysis. This would improve performance but may require additional
architecture for distributed storage.
• Solution 3: Store the logs on the local servers and use a distributed computation system to
aggregate the logs for analysis. This would improve performance and scalability but would
require additional architecture for distributed computation.
2. An
OTT video service website, CutFlix, needs to have the following
features.
A user can add the video to their profile's Watchlist. S/He could
remove the video from Watchlist anytime.
Class Diagram
• Associations:
• Movie-Actor: many-to-many
• Episode-Actor: many-to-many
• User-Profile: one-to-many
• Profile-Video: many-to-many
• User-Watchlist: one-to-many
State Diagram
• Transactions: Start Video, Pause Video, Resume Video, Complete Video, Remove
Video from Watchlist
• Events: Play Video, Pause Video, Resume Video, Complete Video, Remove Video from
Watchlist
• Activities: Start Video, Pause Video, Resume Video, Complete Video, Remove Video
from Watchlist
2. Identify
the Upstream and Downstream modules in the above
block diagram
• Payment Module
• Booking ID Module
4. Upstream Modules: User Input Module, User Registration Module, Payment Module
Downstream Modules: Train Query Module, Booking Itinerary Module, Booking ID Module
4. Whatare Risks, Mitigation Plan and Triggers for Risk Mitigation?
Identify one risk for the above project, its mitigation plan and the
trigger.
Mitigation Plan: Offer alternative payment processing options such as manual payment
processing, or a different payment gateway.
5. Discuss
all the steps necessary for building a Schedule. Use the above
as the example for showing the same.
• Gather the requirements of the project, such as the features and timeline.
6. Consider
yourself to be responsible for development of the software
which manages workflow in a car service center. Making
assumptions as necessary
1. Discuss
the steps involved (using Software Engineering principles)
in coming up with a set of requirements which can be used for
the development of the system
2. In
case a couple of new requirements needed to added into the
system, discuss on the change management process which you
would use.
• Research: Gather information on the existing system, similar systems, and the current
technology.
• Documentation: Organize the identified user needs and requirements into a formal
document.
• Analyze the change request: Evaluate the proposed changes to determine their
impact on the system.
• Discuss and prioritize the changes: Consider the priority, cost, and timeline of the
change requests.
• Develop a plan for implementing the changes: Create a plan for implementing the
changes in an efficient and effective manner.
• Test the changes: Test the changes to ensure they meet the desired requirements.
• Monitor and evaluate the changes: Monitor the changes to ensure they are having
the desired effect.
7.
The schedule of the project for the software for the car service center would include the
following:
App identification of service station: This module would include identifying the service
station based on the location, availability of service technicians, and other relevant details.
This module would take approximately 1 week to develop.
Service initiation module: This module would allow customers to initiate a service request
and book an appointment. It would include features such as selecting the type of service,
scheduling the appointment, and providing customer details. This module would take
approximately 2 weeks to develop.
Resource management: This module would allow the service center to manage its
resources, such as service technicians, tools, and equipment. It would include features such
as scheduling the tasks, allocating resources, and tracking the progress. This module would
take approximately 3 weeks to develop.
Service management in the workshop: This module would allow the service technicians to
manage the service tasks in the workshop. It would include features such as tracking the
progress, updating the status, and providing feedback to the customers. This module would
take approximately 2 weeks to develop.
Billing: This module would allow the service center to generate invoices and manage the
payments. It would include features such as generating invoices, calculating the charges, and
providing payment options. This module would take approximately 1 week to develop.
Overall, the project schedule for the software for the car service center would be
approximately 9 weeks.
True or False
1. Cost of repair of a problem found in design is higher to fix than a problem found during
implementation
2. Feasibility study is to validate that the product planned for development is good for
development
3. Downstream dependencies are those which you are those which you are dependent on
4. Sizability is a non-functional requirement of a product
5. Delphi estimation technique can be effectively applied to estimate an activity, when none of
the team members have any experience in the area of activity
Answers
1. False
2. True
3. False
4. False
5. True
MCQs
1. Divide and Conquer is
A. Architecture Strategy
B. Implementation Strategy
C. Testing Strategy
D. None of the above
2. Which of the following design methodologies first specifies the individual base elements of
the system in great detail?
A. Top down design
B. Bottom up design
C. Component-based design
D. Pattern-oriented design
3. A design that can be can be modified easily to work with other software components during
integration is highly
A. Portable
B. Profitable
C. Interoperable
D. Usable
6. Which of the following does not belong to the Requirement Analysis Process?
a. Pareto Analysis
b. Fish Bone Analysis
c. De Bono Technique
d. MOSCOW
10. A design that can be modified easily to run on a variety of hardware and software
environments is highly
a) portable
b) interoperable
c) profitable
d) usable
11. The main difference between Verification and Validation can be explained by the following
statement(s) in the order given below:
a) there is no clear difference - they are essentially the same
b) verification is for looking at are we building the product right while validation is for looking
at whether are we building the right product.
c) verification involves testing while validation involves process related activities
d) verification takes place during the testing phase; validation takes place during
requirements phase
12. Which of the following software engineering activities typically produce the highest volume
of configuration items that need to be managed in a software project?
a) Software requirement analysis
b) Software design
c) Software construction
d) Software engineering management
13. In software construction, "the discipline of removing unwanted code for easier maintenance
and deployment" is known as:
a) Literate programming
b) Static analysis
c) Refactoring
d) Debugging
14. Which of the following design methodologies first specifies the individual base elements of
the system in great detail?
a) Top down design
b) Bottom up design
c) Component-based design
d) Pattern-oriented design
Answers:
1. B. Implementation Strategy
2. B. Bottom up design
3. C. Interoperable
4. D. Good to have High Cohesion and Low Coupling
5. C. Not Inhibiting or enabling quality attributes
6. C. De Bono Technique
7. D. All of the Above
8. A. 1,2,3,4,5
9. C. Product family with many commonalities and few differences
10. A. Portable
11. B. Verification is for looking at are we building the product right while validation is for looking
at whether are we building the right product.
12. B. Software design
13. C. Refactoring
14. B. Bottom up design
15. A. Clarity of Requirements
Unit 3
Subjective
1. What
are SCM Directories? Provide one example of an SCM Directory
and discuss one its challenges
SCM Directories are directories that are used to store and manage source code,
configuration files, and other related files. An example of an SCM Directory is a Git
repository. One challenge associated with SCM Directories is the need to ensure that access
to the files is properly secured and managed.
Configuration Items (CIs) are the items that are managed throughout the change
management process. An example of a Configuration Item is a software application. One
challenge associated with Configuration Items is the need to ensure that the Configuration
Items are properly identified, documented and tracked, so that the changes to the
Configuration Items can be managed accordingly.
Baselining is the process of creating a baseline that identifies the state of a system at a
given point in time. An example of a baseline is a snapshot of the current version of a
software application. One challenge associated with baselining is that it can be difficult to
ensure that all changes to the system are captured in the baseline.
1. Aprogram is for the programmer who reads it, not for the
computer that runs it.
A program is for the programmer who reads it, not for the computer that runs it:
The code should be written in a way that a programmer can easily comprehend it, and
re-use or modify it as needed. This will reduce the cost of maintenance.
Programs have "personalities": A program should have a clear purpose and should be
written in a way that expresses the intention of the programmer. This will help reduce
the time and effort spent on debugging and maintenance.
3. Don't patch bad code - re-write it
Don't patch bad code - re-write it: Writing patches for bad code can lead to an
unmaintainable codebase. If a code needs to be modified, it should be re-written
instead of patched. This will ensure that the code is maintainable in the long run.
The journey of a bug begins with its identification. This is usually done through testing and
debugging. Once a bug is identified, it is then documented, and the steps to reproduce it are
documented. This information is used to determine the root cause of the bug, and to identify
potential solutions. The bug is then fixed, and the code is tested to ensure that the bug has
been resolved. The cost of maintenance is directly related to the number of bugs present in
the system, as well as the complexity of the bugs. The more bugs there are, the more time
and effort is needed to fix them, which increases the cost of maintenance.
1. Sprint Burndown
3. Throughput
Sprint Burndown: The sprint burndown is a chart used to track the progress of a
sprint. It shows the number of remaining tasks for the sprint and the amount of work
completed over time.
Team Velocity Metric: The team velocity metric is a measure of the amount of work
that a team can complete in a given amount of time. It is used to estimate how long it
will take to complete a project and to track progress over time.
Throughput: Throughput is the rate at which tasks are completed in an agile
development process. It measures how quickly a team can complete tasks, and is used
to measure the efficiency of the team.
7.
The design principle that is violated is the Interface Segregation Principle. This principle
states that clients should not be forced to depend on methods they do not use. Since the
two wheeler class would be required to implement the Checkseatbelt() method, which it
cannot use, this principle is violated.
8. Differentiate
between Coding standards and guidelines for an
organization with at least 2 examples for each.
Coding standards are a set of rules, guidelines, or best practices for software development.
Examples include indentation and naming conventions. Guidelines are general instructions,
suggestions, or guidelines for writing code. Examples include documentations and
commenting.
10. Discuss any 6 coding guidelines which you are familiar with
11. Aproduct PQR has been released to the market characterized by the
number 5.7.6. The code for this is in a directory
$HOME/Project/released. There has been work continuing on this
product and the .c and .h files are in a directory
$HOME/Project/Module. In this scenario
5. Configurable items in the description include the product PQR, the directory
$HOME/Project/released, and the directory $HOME/Project/Module.
12. What
is Requirement traceability Matrix? What is the need for the
Same? Illustrate an RTM.
Requirement Traceability Matrix (RTM) is a document that maps and traces user
requirements with test cases. RTM is created to ensure that all the requirements are covered
in the test cases. It is used to check the completeness of the test coverage and helps to keep
track on the changes made to the requirements during the SDLC.
Example:
R1 TC1 Pass
R2 TC2 Fail
13. Discuss
any four approaches which can be followed for programming
for testability
Four approaches which can be followed for programming for testability are:
• Designing and coding for testability: Writing code that is easy to test and debug.
• Creating test harnesses: Creating test harnesses that can be used to test multiple
components.
• Using debugging tools: Using debugging tools to find and fix bugs quickly.
14. Discuss
any Design Pattern using its Intent, Description and an
Example
Design Pattern:
Intent: To create objects that can be used in a variety of contexts, while keeping the code
simple and maintainable.
Description: The Factory Method pattern is a creational design pattern that uses factory
methods to create objects. It defines an interface for creating objects, but lets subclasses
decide which class to instantiate.
Example:
Modify the code with the guidelines identified to show how it will
make it readable.
• Add comments.
Modified Code:
The Requirements Phase of a Software Development Lifecycle involves activities such as:
• Defining the scope of the project - what the software should do and how it should do it.
• Gathering requirements from stakeholders - understanding their needs and wants for
the project.
• Validating the requirements - ensuring that all requirements are accurate and meet the
desired objectives.
15. Define
Version, Revision and Release. A product is characterized as
4.6.2 what does this signify
Revision: A revision is a minor change in the software and is used to identify bug fixes, small
updates, and minor changes.
Release: A release refers to a particular version of the software product that is made
available to the public.
• Cyclomatic complexity
• Test coverage
• Defect density
18. Contrast
Coding rules are specific requirements that must be followed when writing code. Coding
guidelines, on the other hand, are recommendations on how to write code, but may not
be mandatory.
Packaging tools are used to create packages of software for distribution and
installation. Installation tools are used to install the packages onto a user’s system.
Resolved means that the bug has been fixed, but has not been tested yet. Closed means
that the bug has been tested and verified as fixed.
19. Distinguish
between Black-box and White-box testing? Indicate two
advantages and disadvantages of both? When would you use each of
them?
Black-box testing involves testing a system or application without any knowledge of its
internal workings.
Advantages include the ability to focus on external system behavior and the ability to
test the system from the user’s perspective.
Disadvantages include the inability to test internal logic and the potential for missing
errors.
White-box testing involves testing a system or application with knowledge of its internal
workings.
Advantages include the ability to test internal logic and the potential for finding more
errors.
Disadvantages include the need for detailed knowledge of the system’s code and the
potential for missing errors due to incomplete knowledge.
20. Describe
(1-2 sentences) 5 principles/techniques which influence a
good design
a) Is a prescriptive process
b) Outcome is the same as the process
c) Problems have a clear true or false solution
d) Has no stopping rules
a) Effort
b) Schedule
c) Cost
d) People
• Black-box testing: Testing of software without understanding the inner workings of the
code.
Example: Functional testing.
• White-box testing: Testing of software by understanding the inner workings of the code.
Example: Code coverage testing.
• Process capability: Ability to produce suitable results within the required parameters.
• Process performance: Ability to produce results consistently and reliably.
• Process maturity: Ability to continuously improve a process.
• Contrast Testing: A technique used to compare the output of two different systems.
Example: Regression testing.
• Requirement Traceability Matrix: A technique used to trace the requirements from
the design to the code.
Example: Linking the test cases to the requirements.
6. The four different types of Software Maintenance.
2. Discuss
any 5 Software metric characteristics with one line
description of the same.
• Reliability: Measures the probability that the system will not fail.
• Maintainability: Measures the ease with which changes can be made to the system.
• Portability: Measures the ease with which the system can be moved to different platforms.
3. Discuss
any 2 reasons why Software maintenance is needed? Discuss
also 2 activities which are expected and 2 actions which will support
Software Maintenance
Expected activities:
4. What
is SEI CMM? Name two reasons why you would want to use it?
Enumerate its five levels.
SEI CMM (Capability Maturity Model) is a model which is used to assess the maturity of
software development processes. Two reasons to use the SEI CMM are:
5. Discuss
briefly the steps involved in a Software Maintenance
Lifecycle
• Maintenance and Support: Providing ongoing maintenance and support for the system.
3. Regression Testing
4. Re-engineering
5. Reverse-engineering
6. Re-structuring
• Patching: Patching is the process of installing updates to a computer system, with the aim
of fixing software bugs, improving performance and/or adding new features. There are two
types of patches – security patches and feature patches.
• Static Testing: Static testing is a method of testing software without actually executing the
code. Examples of static testing include code review and static analysis.
2. Regression Testing
3. Localization Testing
4. Startup/Shutdown Testing
• Smoke Testing: Smoke testing is a type of software testing that checks the most important
functions of an application quickly, to make sure the application as a whole is working.
Coupling and Cohesion are two key aspects of good design. Coupling is the degree of
interdependence between components, while cohesion is the degree to which components
are related to each other. They are important because they can have an impact on the
reliability, maintainability, and scalability of a system. The ideal degree of coupling and
cohesion is low, as this will result in a system that is more robust and easier to maintain.
9. Discuss
with two sentences each, 3 ways through which would write
testable code
• Separate the business logic from the presentation layer, as this makes it easier to isolate
and test the business logic.
• Refactor code regularly to improve readability, making it easier to identify errors and
potential areas of improvement.
2. Boundary testing
4. Destructive testing
5. Smoke testing
6. Localization testing
7. Regression testing
• Usability testing: Usability testing is a type of software testing that checks an application
or website to make sure it is easy to use and meets user expectations.
• Boundary testing: Boundary testing is a type of software testing that checks the
application to make sure that it is functioning properly at the boundaries of its input.
• White box testing: White box testing is a type of software testing that checks the internal
workings of an application or system to ensure that it is functioning as expected.
• Smoke testing: Smoke testing is a type of software testing that checks the most important
functions of an application quickly, to make sure the application as a whole is working.
Case Study
1. You
are shopping in a large Multi Brand Retail Store, and when you
reach the payment counter, you have 3 choices. If you are a new
customer, you are offered a choice to open a credit card account,
when you will get a 15% discount on all your purchases today, if you
are an existing customer and you hold a loyalty card, you get a 10%
discount on the purchases, if you have a coupon you can get 20% off
today (but it can't be used with the 'new customer' discount).
Discount amounts are added, if applicable.
If you have to write test cases for this, how many test cases would
you need for the same? Justify the same. Make assumptions as
necessary needed for testing and write one sample test case
including all the things which you would need, which can have the
test case to be executed by an uninvolved tester.
There are potentially 9 different test cases that would need to be written in order to test the
scenario. The test cases would need to verify that the discounts are applied correctly for
different combinations of customer types (new customer, existing customer, and with
coupon) and discounts (15%, 10%, and 20%), and that the discounts are correctly added
together.
• Input: Add items to basket, select payment option of new customer with coupon and enter
coupon code
• Pass/Fail: Pass
• Solution 1: Using a centralized logging system, where all logs from all components are
stored in a single server, and are indexed and stored in a way that makes it easy to access
them. This will provide quick access to the logs, but the trade-off is that the storage
requirements and server load for a centralized system can be high.
• Solution 2: Using distributed logging systems, where each component stores its own logs
in its own storage. This allows for quick access to the logs, but the trade-off is that it can be
difficult to search multiple distributed systems for specific events.
• Solution 3: Using a log aggregation system, where all logs are stored in distributed
systems, and an aggregation system is used to collect, index, and search the logs. This allows
for quick and easy access to logs, but the trade-off is that the setup and maintenance of an
aggregation system can be complex.
True or False
1. Fault based testing is a Code based testing where a fault is purposely introduced into the
code
Answers
2. False - Acceptance testing typically takes place at the end of the development process, after
all other types of testing have been completed. In an agile development process, acceptance
testing may be performed on an iterative basis, but it is not performed on request of the
customer.
3. False - Regression testing can be performed manually or using automated tools, but it is
generally easier to execute regression testing using automated tools because it involves
running a large number of tests that may need to be repeated multiple times.
4. False - The destructive testing model is not a testing model that is typically chosen as part of
a testing strategy. Destructive testing involves deliberately causing damage to a product in
order to test its strength and durability, and is not typically used to evaluate the functionality
of software.
5. True - Test adequacy criteria are used to determine when to stop testing, and are based on
factors such as the amount of time and resources available for testing, the level of coverage
achieved, and the risk and severity of the defects that have been found.
6. False - "Bugs/kLoC" is not a valid test metric. "kLoC" stands for "thousands of lines of code,"
and bugs per kLoC is not a useful metric for measuring the effectiveness of testing because it
does not take into account the complexity or importance of the code being tested.
2. These are good examples of Quality attributes from a Product operation perspective
a. efficiency
b. Reliability
c. Testability
d. Usability
a. Initial
b. Planned
c. Managed
d. Optimized
a. Skill
b. Integrity
c. Accountability
d. Non-Plagiarism
a) A program is for the programmer who reads it, not for the computer that runs
it
b) Programs have "personalities": messy, verbose, cryptic, neat
c) A program is written once, but read and modified a lot many times.
d) Program is well written when it makes it difficult for others to modify it
6. "Testability" is the ease of verifying that a software product satisfies its specifications and
requirements. Which of the following is NOT a tactical technique meant to enhance
testability?
a) Building "test points" into the code (which can be used for setting or
retrieving current module status and variable contents.)
b) Including "test stubs" (that returns known fixed values that emulate
functions not currently under test)
c) "Instrumenting" the code (such as adding execution logging and "I got here"
messages so that the module under test reveals more about its operation).
d) Add one more tester to the team.
7. The main difference between Verification and Validation can be explained by the following
statement(s) in the order given below:
9. A developer has been assigned to work on a defect report. Once the developer identifies and
makes necessary change(s) to the relevant module(s), she has to test the software to make
sure that the defect has been fixed correctly. Further, she also runs tests that have been run
previously and have succeeded. This test to ensure that she has not introduced any new
defects while making a code change is known as:
a) Regression testing
b) Integration testing
c) Unit testing
d) Acceptance testing
Answers:
1. b. Change requests to new version - This option does not belong in the group because the
other options are all examples of metrics that can be used to measure the maintainability of
a program, whereas "change requests to new version" is not a metric that directly measures
maintainability.
2. d. Usability - This option does not belong in the group because the other options are all
examples of quality attributes that can be measured from a product operation perspective,
whereas usability is a quality attribute that is typically measured from a user perspective.
3. d. Optimized - This option does not belong in the group because the other options are all
levels of the Capability Maturity Model, which is a framework used to evaluate the maturity
of an organization's processes, whereas "optimized" is not one of the defined levels of the
CMM.
4. a. Skill - This option does not belong in the group because the other options are all
examples of ethical principles that a professional should uphold, whereas "skill" is not an
ethical principle.
5. d. Program is well written when it makes it difficult for others to modify it - This option
does not belong in the group because the other options are all true statements about
programs, whereas this option is a false statement. A well-written program should be easy to
read and understand, and should not be designed to make it difficult for others to modify it.
6. d. Add one more tester to the team - This option does not belong in the group because the
other options are all tactical techniques that can be used to enhance testability, whereas
adding another tester is not a technique that directly affects testability.
7. a. Essentially, they are the same and can be used interchangeably - This option does not
belong in the group because the other options are all correct statements that describe the
main differences between verification and validation, whereas this option is a false
statement. Verification and validation are different processes with distinct goals and
purposes, and they should not be used interchangeably.
8. d. When it validates the features under test - This option does not belong in the group
because the other options are all characteristics of an effective test case, whereas this option
is not a characteristic of an effective test case. Validating the features under test is a goal of
testing, but it is not necessarily a characteristic of an effective test case.
9. d. Acceptance testing - This option does not belong in the group because the other options
are all types of testing that can be performed on a software product, whereas acceptance
testing is not a type of testing. Acceptance testing is a process in which the software is
evaluated by the customer or end user to determine whether it meets their requirements
and is suitable for use.
Unit 5
Subjective
1. Name any 5 reasons on the relevance of global software
development
• Cost savings
• Time-to-market advantage
2. Briefly
describe 5 widely accepted ethical characteristics expected of
a software engineer
The four common themes that any team looking to implement DevOps needs to focus its
time and resources on are:
These four themes are closely related and complement the DevOps pipeline, which is a set of
practices and tools for automating and optimizing the software delivery process. By focusing
on these themes, teams can build a culture and infrastructure that supports the DevOps
pipeline and enables them to deliver high-quality software quickly and reliably.
1. Continuous Integration
2. Continuous Build
3. Continuous Delivery
4. Continuous Testing
5. Continuous Deployment
1. True
2. True
3. Trial & error / Optimization
6. What
are the challenges of Geographical distance with respect to
Software Development? How can they be overcome?
These challenges can be overcome by using tools such as remote communication platforms,
project management tools, and automated testing tools.
7. Describe the term DevOps. Write briefly about the DevOps pipe line.
DevOps is a set of practices that enables an organization to deliver software products faster
and more reliably. The DevOps pipeline is a process that involves a series of steps that are
taken to ensure that software is released quickly and efficiently. The pipeline includes steps
such as development, testing, deployment, and monitoring.
8. Define
Metric and Measures with respect to Software Quality. Name
one example measure for the following quality attributes of a
product. Correctness, Maintainability, Integrity & Usability
Metrics and Measures are used to measure the quality of a software product.
9. Discuss briefly
1. Process Capability: It is the ability of a process to produce products that meet customer
requirements and expectations.
2. Professional Ethics: Professional ethics refers to the ethical principles that guide the
behavior of individuals and organizations in their professional lives. Examples of
professional ethical practices include:
• Cost effectiveness
• Time-to-market advantage
10. Discuss
the four common themes that any team looking to
implement DevOps needs to focus its time and resources on. How
does this complement the DevOps pipeline?
The four common themes that any team looking to implement DevOps needs to focus its
time and resources on are: Automation, Collaboration, Measurement & Monitoring, and
Security.
These themes complement the DevOps pipeline by providing the necessary tools and
processes to ensure that the software is released quickly, securely, and reliably.
11. Discuss
what is Patching? What do you understand by Hot and Cold
patching? Where does this fit in the Maintenance Lifecycle?
Patching is the process of updating software with bug fixes, security updates, or new
features.
Hot patching is the process of applying a patch to a running system without restarting it.
Cold patching is the process of applying a patch to a system that is not running.
Patching fits into the Maintenance Lifecycle in the stage of corrective maintenance, which is
the process of fixing problems and bugs in the software.
12. Discussany 4 reasons why an Organization would like to look at
Global Development? Discuss any 4 challenges associated with Global
Development.
• Cost savings
• Time-to-market advantage
13. List
at least 2 metrics which you would look for understanding the
quality of each of the SDLC phases of requirements, design,
implementation, testing and overall project.
Testing: Number of test cases failed vs. number of test cases passed.
• Perfective Maintenance: Enhancing the software with new features and capabilities
• Cost savings
• Time-to-market advantage
2. Hacking
3. SOA
Measure and Metrics: Quantitative measures that provide data about the characteristics of a
product.
SOA: Service-oriented architecture, a style of software design in which services are provided
to the other components by application components through a communication protocol
over a network.
COCOMO and Delphi Estimation techniques: COCOMO is a model based on cost drivers
and uses a bottom-up approach. Delphi is a model based on expert opinion and uses a
top-down approach.
V Model and Waterfall Model: V Model is an iterative development model that combines
the waterfall model and iterative model. Waterfall model is a sequential development
model and is used in small projects.
Reviews and Inspection: Reviews are informal meetings to discuss the product, while
inspections are formal meetings to detect errors in the product.
18. List out
1. Four (4) reasons why global software development is relevant
Four (4) reasons why global software development is relevant: Cost savings, Time-to-market
advantage, Access to global talent pool, Leveraging technologies and resources from
different parts of the world.
Five (5) levels of Software Capability Maturity (SEI CMM): Initial, Repeatable, Defined,
Managed, and Optimizing.
2. Hacking is closer to
3. Ethical characteristics for a good software developer are characterized with law abiding
Answers
1. d. need for generating revenues from the software
2. c. Abusing the system for solving a problem
3. d. Ensuring confidentiality of resources and work as expected from the organization
4. d. Will I have the permissions to use it
5. a. Mean Time Between Failure (MTBF)
2. The following are the Deployment goals for Applications and Services a. Consistent and
Successful Deployment
3. DevOps
4. ITIL
a. Describes a set of best practices for IT Service Management processes
b. Is organization and technology specific
c. Is available as an IT Service Lifecycle
d. Supports effective utilization of the IT Infrastructure for Stability,
Scaling, Responsiveness
Answers
1. c. Unethical and with criminal orientation