Se - Q&a
Se - Q&a
Ans: A feasibility study analyses the viability of a proposed project or venture. It is used to
evaluate a project's potential, including the technical, financial, and economic aspects, and to
determine whether it should proceed. A feasibility study aims to identify and assess a proposed
project's strengths, weaknesses, opportunities, and threats to determine its potential for success.
Ans: The cleanroom strategy is a software engineering approach that emphasizes building
software correctly from the start. It involves breaking the development process into small parts,
called “increments,” which are developed by small independent teams. Each increment is tested
and certified as working correctly before being integrated into the larger system.
3. What is Unit testing?
Ans: Unit testing involves the testing of each unit or an individual component of the software
application. It is the first level of functional testing. The aim behind unit testing is to validate
unit components with its performance.
4. What is Sprint?
Ans: a sprint is a set amount of time that a development team has to complete a specific
amount of work. Sprints are generally planned to last about two weeks, though they can be as
short as one week or as long as a month.
The Sprint ends with a review of the work completed and a demonstration of the working
software to stakeholders.
5. What are Formal Methods?
Ans: Formal methods are a set of mathematical and logical techniques used to specify, design,
and verify software and hardware systems. They involve the use of formal languages, such as
mathematical notation or programming languages with precise semantics, to describe the
behaviour of a system.
6. Define White-Box Testing?
Ans: White Box Testing can be defined as a type of software testing that tests the code’s
structure and intended flows. In simple words, White Box testing is the type of testing carried
out to test the structure of code.
It is also known as Structural Testing or Glass Box testing or Clear Box Testing. This type of
testing requires knowledge of the code, usually done by the developers. This type of testing
requires knowledge of the code, usually done by the developers.
7. What is SRS Document?
Ans: Agile is a software development methodology that emphasizes delivering value to the
customer through continuous feedback and collaboration. It’s an iterative approach that
values flexibility, adaptability, and continuous improvement. Agile is customer-centric and
aims to deliver working software quickly and continuously.
10. Define SDLC.
Ans: SDLC (Software Development Life Cycle) is a structured and systematic process for
developing software applications, with a set of well-defined phases that help ensure the
successful delivery of high-quality software that meets user needs and is delivered on time
and budget.
11. What is Formal Specification Language (FSL)?
Ans: FSL is a precise, unambiguous, and structured language used to define, describe, and
analyze the expected behavior, properties, and requirements of software systems, hardware
components or complex algorithms. The main goal of using a formal specification language
is to ensure the correctness, reliability and robustness of the system being designed.
Ans: Software Project Management is defined as “the planning, organizing, staffing, directing,
and controlling of software development activities to deliver software within the cost, schedule,
and performance constraints”.
14. What is Software Project Scheduling?
Ans: Software Project Scheduling is a critical activity in software engineering that involves
planning and allocating resources to complete a software project within a specified timeline. It
involves determining the order and duration of tasks, allocating resources, estimating time and
effort required, and creating a timeline or schedule for the project.
15. Define Risk Management.
Ans: Risk Management refers to the systematic process of identifying, assessing, and
mitigating risks that may impact the success of a software project. The goal of risk management
is to minimize the impact of risks on the project’s schedule, budget, and quality.
16. What is Software Maintenance?
Ans: Software Maintenance is the process of modifying and updating a software product after
it has been delivered to the customer. The goal of software maintenance is to ensure that the
software continues to meet the needs of its users and stakeholders while minimizing costs and
risks associated with changes to the system.
17. What is CMMI?
Ans: The CMMI (Capability Maturity Model Integration) is a process meta-model that
provides a framework for assessing and improving an organization’s process capability and
maturity. It defines a set of process areas, goals, and practices that organizations can implement
to achieve as they progress through different levels of maturity.
18. Who are Stakeholders in Software Project Management?
Ans: Stakeholders are individuals or groups who have an interest in the software development
process and its outcome. They can be categorized into different constituencies such as senior
managers, clients or customers, project managers, technical lead, end users, developers, testers,
business analyst, investors etc.
19. What is Gantt Chart?
Ans: Gantt Charts is also known as timeline charts are widely used in software engineering
to visually represent project schedules and track progress.
20. What are Technical Risks? Give an example.
Ans: Technical Risks are risks that are related to the technical aspects of a project. Technical
risks impact the quality and timeliness of the software being developed. They involve
challenges in design, implementation, interfaces, verification, and maintenance.
● Example: Performance bottlenecks that hinder the software’s efficiency or
responsiveness.
● Complexity of the software design or architecture exceeding the team’s capabilities.
21. What is Reengineering?
Ans: Reengineering is the process of redesigning and rebuilding an existing system, process,
or product to improve its performance, efficiency, and effectiveness, it involves analysing the
current system or process, identifying its weaknesses and limitations, and then developing a
new design to address the issues in the existing system.
22. What is Software Process Improvement (SPI)?
Ans: Software Process Improvement (SPI) is a way to make software development better. It
involves looking at how things are currently done, finding ways to improve them, and making
changes to get better results. The goal is to create high-quality software products and make the
development process faster and easier.
23. What is Process Decomposition?
Ans: Earned Value Analysis (EVA) is the project management tool that is used to measure
project progress. It compares the actual work completed at any time to the original budget and
schedule. It serves as an early warning system by providing crucial insights into any deviations
from the planned schedule and budget.
25. What is Contingency Planning? Give an example.
Ans: Contingency planning is the process of developing alternative strategies or backup plans
to address unexpected events or risks that may occur during a project or in business operations.
Example: Data Backup and Recovery, Redundancy and failover
26. What is Forward Engineering?
Ans: Forward Engineering is the process of redesigning and recoding a software program to
meet changing user needs and improve its overall structure.
Ans: Forward Engineering is the process of redesigning and recoding a software program to
meet changing user needs and improve its overall structure.
Example: Struggling with ad hoc Modifications, Understanding the Program’s inner working
etc.
27. Define Software Configuration Management (SCM)?
Ans: Software configuration Management is the set of all the documents, data, and software
products that are used to create, test, and deploy a software system. It includes the source code,
object code, test data, documentation, and any other artefacts that are necessary to build and
maintain the software.
5 Marks Questions:
1. Mention the difference between Classical and Iterative waterfall model.
Ans:
Testing Testing occurs after development is Testing occurs after each iteration is
complete complete, allowing for early
detection of defects and issues.
Suitability Suitable for small to medium-sized Suitable for projects of varying sizes
projects with low complexity levels. and complexity level, but may
become difficult to manage in large
or complex projects with many
stakeholders.
Risk Management Limited risk management due to Better risk management due to
testing occurring after development testing at each iteration allowing for
is complete. early detection of defects and issues.
Time-to-Market Slower due to testing occurring after Faster due to working versions of
development is complete. software being delivered in several
increments.
Ans: The SDLC methodology or framework or process focuses on the following phases of
software development.
a. Requirement Gathering and Analysis Phase: In this phase, the project team
works with the stakeholders to gather and document the functional and non-
functional requirements for the software application. This phase is critical as it sets
the foundation for the development of the software.
b. Planning Phase: In this phase, the project team identifies the business requirements,
creates the project scope, and develops a project plan. The project team also
establishes the resources, timelines, and budget required for the project.
c. Design Phase: In this phase, the project team develops a high-level design and
detailed design documents that outline the software’s architecture, data model, and
user interface design. This phase provides a blueprint for the software application
and sets the foundation for the development phase.
d. Development Phase (Implementation Phase or Coding Phase): In this phase, the
software application is developed using the design documents created in the previous
phase. The code is written, tested, and integrated with the system.
e. Testing Phase: In this phase, the software application is tested for functionality,
usability performance, and security. The goal of this phase is to identify any defects
or issues that need to be fixed before the software is released to users.
f. Deployment Phase: in this phase, the software application is released to the end
users. The software development team may provide training and support to the users
to ensure that they can use the software effectively.
g. Maintenance Phase: in this phase, the software application is maintained and
updated as needed. The software development team may fix defects, proved support
to users, and release new versions of the software with additional features or bug
fixes.
3. What is Extreme Programming? Explain the key principles of XP.
1. Risk Avoidance: This technique involves eliminating the risk altogether by avoiding
activities or situations that could give rise to the risk.
Example: offering competitive salaries, attractive benefits etc.
2. Risk Transfer: This technique involves transferring the risk to a third party, such as a
consulting company or subcontractor.
Example: an organization may decide to outsource certain tasks to a reliable vendor to
reduce the dependency on internal staff and mitigate the risk of staff attrition affecting
the project.
3. Risk Reduction: This technique focuses on reducing the probability or impact of a risk.
Example: carrier development opportunities, regular performance reviews etc.
4. Risk Sharing: This technique involves sharing the risk with other stakeholders or team
members.
Example: forming partnerships or alliances.
ii. Check-in and Check-out: Developers check out files from the
repository to make modifications and check them back in once
completed. This ensures that only one person can make changes to
a file at a time, preventing conflicts and facilitating proper
coordination.
iii. Branching and Merging: SCM repositories allow for the creation
of branches, which are independent lines of development that can
be worked on separately. Developers can make changes in their
respective branches and later merge them back into the main
branch, combining the changes from different contributors.
2. Subversion (SVN): SVN is a centralized version control system that provides a repository
for storing and managing software artifacts. It tracks changes made to files and directories,
maintains a history of revisions, and supports collaboration among team members.
3. Perforce: A version control system commonly used for managing large-scale software
projects. It offers powerful branching and merging capabilities along with advanced
collaboration features.
4. Mercurial: A distributed version control system similar to Git, providing robust branching
and merging capabilities. It is known for its ease of use and scalability.
The Agile Manifesto outlines four core values that prioritize individuals and interactions,
working software, customer collaboration, and responding to change.
4 Agile Values:
1. Individuals and Interactions over processes and tools:
This value emphasizes the importance of people over processes or tools. Agile teams
recognize that software is developed by individuals working in teams, and that their
ability to collaborate effectively is crucial for the success of the project. This means that
Agile teams prioritize building strong relationships and effective communication
between team members over relying solely on processes or tools to get the job done.
2. Working software over comprehensive documentation:
This value prioritizes delivering working software over extensive documentation. Agile
teams recognize that while documentation is important, it should not be a substitute for
deliveri9ng working software. this means that agile teams prioritize creating functional
software that meets the needs of the customer over creating extensive documentation that
may not be useful or necessary.
3. Customer collaboration over contract Negotiation:
This value emphasizes the importance of collaborating closely with customers
throughout the development process. Agile teams recognize that collaborating closely
with customers throughout the development process is essential for creating products
that meet their needs. This means that Agile teams prioritize building strong
relationships with customers and seeking their feedback throughout the development
process, rather than relying solely on contractual agreements to guide the project. By
working closely with customers, Agile teams can ensure that they are creating products
that meet real-world needs and deliver value to the customer.
4. Responding to change over following a plan:
This value prioritizes flexibility and adaptability over rigid planning. Agile teams
recognize that change is inevitable in today’s fast-paced business environment, and they
must be able to adapt quickly to changing customer needs or market conditions. This
means that Agile team prioritize flexibility and adaptability over rigid planning, and are
willing to make changes to the project as needed in order to deliver value to the
customer. By remaining responsive to change, Agile teams can ensure that they are
creating products that meet real-world needs and deliver value to the customer.
8. Explain 4P’s of Management Spectrum.
● People
● Product
● Process
● Project
● People:
this refers to the team members involved in the software development
process.
People play a crucial role as they bring their unique skills, expertise, and
creativity to the development process.
Effective management of people involves organizing them into effective
teams, motivating them to do high-quality software work, and coordinating
them to achieve effective communication. Software Engineering Institute
created a People Capability Maturity Model (People-CMM)
● Product:
This refers to the software product being developed.
To plan a software project effectively, it is essential to establish product
objectives and scope, identify technical and management constraints, and
explore alternative solutions.
Objectives outline the product’s main goals from the stakeholder’s
perspective, without focusing on how to achieve them.
Once product objectives and scope are understood
Managers and practitioners can consider alternative solutions to select the
best approach for the project, given the constraints imposed by delivery
deadlines, budgetary restrictions, personnel availability, technical interfaces,
and other factors.
By following these steps, software project managers can make informed
decisions about how to allocate resources effectively and achieve efficient
project outcomes.
● Process
This refers to the process used in software development.
It provides a structured and systematic approach to creating software.
Framework activities are the core elements of the software process, which
can be customized to fit each project’s unique requirements.
Umbrella activities are independent activities that span across the entire
software development process.
A well-defined process is crucial for effective software dev elopement.
Through software process frameworks, which incorporate both framework
and umbrella activities, efficiency and effectiveness are achieved, ultimately
leading to the creation of high-quality software products.
● Project
This refers to managing the overall project in a manner that enables the
software team to succeed.
The project component within the 4P’s of software development focuses on
the systematic management of software projects, emphasizing planning,
monitoring, and control.
A significant project faces delays, overruns, or even termination without
completion. The success rate of software projects needs to be improved and
this can be achieved by addressing critical aspects of project management.
To prevent project failure, software project managers and engineers must be
aware of common warning signs, understand critical success a factor for
effective project management, and adopt a practical approach to plan,
monitor, and control the project.
9. Explain Water fall model with neat diagram.
Ans:
● The Classical Waterfall Model is a software development life cycle model that
divides the life cycle into a set of phases. This model is very simple but idealistic and
is the basic software development life cycle model. It is the earliest, best known, and
most commonly used methodology.
● The phases in this model are sequential, and each phase can only begin after the
completion of the previous phase.
● The classical Waterfall Model divides the software development life cycle into a set
of sequential phases.
● Feasibility study
Determines if the project is financially and technically feasible.
Define the scope of the project.
Analyze potential solutions, required resources, and estimated costs.
Evaluate technical expertise and customer budget.
Identify any legal or regulatory requirements that must be met.
Prepare a feasibility report, highlighting the most viable solution.
● Requirements Analysis and Specification
Gather and analyze user and customer requirements.
Collect relevant information from users and customers through interviews,
discussions and surveys.
Conduct a gap analysis to identify any missing requirements or features.
Define acceptance criteria for each requirement to ensure they are testable.
Create a SRS document containing functional requirements, non-functional
requirements, and implementation goals.
● Design
Transform requirements into a detailed software architecture.
Choose between traditional or object-oriented design approaches.
Define components, modules, interfaces, and their relationships.
Design database structures, algorithms, and user interfaces.
Create design documents, to develop prototypes, and identify performance,
security and scalability of design.
● Coding and Unit Testing
Implement the software design using appropriate programming languages and
tools.
Follow coding standards, guidelines, and best practices.
Document the code with comments and explanations.
Develop test cases, test data, and test scripts for unit testing.
Perform unit testing to verify the functionality and performance of individual
modules.
Debug and fix errors identified during unit testing.
● Integration and System Testing
Develop test cases that cover all system functionality.
Combine the individually tested modules.
Perform integration in a planned and incremental manner.
Verify proper communication and data flow between integrated modules.
Conduct load testing and system testing.
Execute various types of system testing, such as performance, security,
usability and compatibility testing.
● Deployment
Develop a deployment plan that includes installation, configuration, and
training of end-user.
Install and set up the software in the customer’s environment.
Deliver the final product to the customer.
Conduct user training, workshops and demonstrations.
Provide user manuals, installation guides, and other relevant documentation.
Monitor the system’s performance and stability after deployment.
● Maintenance
Conduct root cause analysis to identify the underlying causes of defects.
Maintain and update the software as needed to fix bugs or add new features.
Provide ongoing support for end-users and monitors system performance.
Produce maintenance reports and updated documentation.
Ensure the software remains compatible with new environment and
platforms.
Provide training for end-users on new features or changes made during
maintenance.
Advantages of Classical Waterfall Model
Clear and well-define phases
Easy to mange
Works well for small projects
Emphasis on documentation
Simple planning
Strong focus on requirements
Disadvantages of Classica Waterfall Model
Not flexible
Late error detection
Limited customer feedback
No working product until the end
Inefficient use of resources
Poor communication
Not suitable for complex projects
10. Explain Code Restructuring and Data Restructuring in Reverse Engineering.
Ans:
● Software Restructuring involves making modifications to the source code and /or
data to improve its maintainability and facilitate future changes.
● Restructuring focuses on the design details of individual modules and local data
structures within the software.
● The purpose of it is to enhance the technical internals of the application while
keeping the overall program architecture intact.
● To improving the code organization, code readability, optimizing algorithms, and
eliminating redundant or inefficient code.
● The main goal is to make the software more manageable, adaptable, and easier to
maintain without altering its fundamental structure.
Code Restructuring:
● Code restructuring is a process that improves the quality and design of a program
while keeping its functionality intact.
● It involves transforming complex and messy code into a well-organized and easier-to-
maintain structure.
● Logical Simplification: which uses rules based on Boolean algebra to simplify the
program’s logic. By applying these rules, we can change complicated code and make it
more structured.
● Recourse exchange diagram to map how different parts of the program interact with
each other. This helps identify areas where the program’s architecture can be improved
to minimize decencies between models.
Data Restructuring:
●Data Restructuring involves modifying the organization and format of data within a
software system to improve its effectiveness and consistency.
●Data Analysis Phase: During analysis phase data items and objects are identified,
and the flow of data is examined. This helps in gaining insights into the existing data
structures and their relationships.
●Data redesign Phase: data record standardization is performed to ensure consistent
naming conventions and formats within the existing data structures or file formats. This
improves data consistency and clarity.
●Data name rationalization: which involves aligning all data naming conventions
with local standards and eliminating any aliases or redundant naming. This helps in
improving data flow and understanding.
11. What is Software Reengineering? Explain Software Reengineering Process
Model.
Ans:
Software Reengineering:
SPI is a way to make software development better. It involves looking at how things
are currently done, finding ways to improve them, and making changes to get better
results.
The goal is to create high-quality software products and make the development
process faster and easier.
3) Condition Coverage:
This technique involves testing all possible outcomes of a Boolean expression
or condition within the code are executed at least once during testing.
This helps to identify any issues related to the logical flow of the software.
Condition Coverage aims to ensure that every possible Boolean condition in
the code is evaluated to both true and false at least once.
It can help to identify the issues such as missing or incorrect conditional
statements, incorrect logical operators, and other logic-related errors.
Difference between Condition Coverage and Branch Coverage:
(i) Branch Coverage measures the number of branches in the code that
have been executed at least once during the testing process where as
Condition Coverage measures the number of unique Boolean
conditions in the code that have been evaluated to both true and false at
least once during the testing process.
(ii) Branch Coverage ensures that all possible paths through the code have
been executed at least once whereas Condition Coverage ensures that
all possible Boolean conditions in the code have been evaluated to both
true and false.
4) Path Coverage:
This technique involves testing all possible paths through the code to
ensure that they are executed at least once during testing.
This helps to identify any potential issues with the flow of control in the
software.
Path Coverage can help identify issues such as missing or incorrect
conditional statements, infinite loops, and other control flow related
errors.
15. Explain the Need or Benefits or Goals of Software Engineering.
Ans: Need or Goals or Benefits of Software Engineering:
● Managing Large and Complex Software Projects: Building a house requires more
effort than constructing a simple wall. Software Engineering provides the necessary
framework and processes to manage complex software projects effectively.
● Ensuring Scalability: Software engineering enables developers to create scalable
systems that can grow and adapt to changing requirements.
● Controlling costs: Software Engineering helps manage expenses by optimizing
development and maintenance efforts. For example, by adopting Agile methodologies
can reduce software development costs by shortening development cycles and
enabling teams to respond quickly to changing requirements.
● Adapting to Dynamic Nature: The constantly evolving nature of software depends
on environment in which users work. As software needs to change and adapt, software
engineering plays a critical role in facilitating necessary enhancements to existing
systems.
● Focusing on Quality Management: A well-structured software development process
leads to higher quality software products. Software engineering emphasizes the
importance of quality management throughout the development lifecycle, ensuring
that the final product meets user’s expectations.
● Improved Maintenance and Support: By following standardized processes and
documentation, developers can efficiently address bugs, add new features, and update
software as needed.
● Enhanced Security: By adopting secure coding practices and conducting regular
security audits, developers can identify and mitigate potential vulnerabilities, ensuring
the software remains safe for users.
● Better Resource Management: Software Engineering helps developers manage
resources more efficiently by providing guidelines and tools for project management,
team collaboration, and time management.
● Facilitating Reusability and Modularity: By enabling developers to create reusable
components that can be easily integrated into other projects, reducing development
time and effort.
Ans:
Business Process Reengineering is a management approach that involves the Radical
redesign of business process to achieve significant improvements overall operations.
BPR involves critically examining and rethinking every aspect of a business process,
including its objective, work flow, tasks, roles and interactions.
Business Process: -
A Business Process is a set of tasks that are performed to achieve a specific business
outcome.
example: designing a new product, purchasing supplies, Hiring an employee etc.
Business Process Reengineering Model
● A Business Process Reengineering Model is a framework that defines the activities
involved in the process of reengineering business processes.
● Business Definition: - Identify business goals within the context of key drivers such
as cost reduction, time reduction, quality improvement, and personnel development.
Goals can be defined at the business level or for specific components of the business.
● Refinement and Instantiation: - Refine the business process based on the feedback
from the prototype and instantiate it with in the business system.
18. What is System Testing? Explain different types of testing done in system
Testing.
Ans: System Testing: System Testing is a series of tests conducted to ensure that all
elements of a computer-based system, including software, hardware, people, and
information, work together properly.
The different types of testing during system testing phase are given below:
a) Recovery Testing
b) Security Testing
c) Stress Testing
d) Performance Testing
e) Deployment Testing
a) Recovery Testing:
● Recovery Testing is a type of system testing that checks whether software can
recover properly from unexpected failures or errors.
● It is important because it helps ensure that software functions properly and
meets user needs even in unexpected situations
● Developers evaluate whether the software automatically reinitializes,
checkpoints data correctly, and restarts without any issues.
● If recovery requires human intervention, developers might evaluate the mean-
time-to-repair (MTTR) to determine whether it is within acceptable limits.
b) Security Testing:
● Security Testing is a type of testing that checks whether a system is protected
from attackers who might try to hack into it.
● The goal of security testing is to identify any weaknesses in the system’s
protection and make sure they are fixed before attackers can exploit them.
c) Stress Testing:
● Stress Testing is a type of testing that checks how well a system can handle
abnormal situations.
● The goal of stress testing is to find out how much pressure a system can take before
it fails.
● It is important because it helps ensure that software functions properly and meets
user needs even in unexpected situations.
● Developers would look for things like slow response time, error, or crashes,
memory usage or network traffic etc.
d) Performance Testing:
● Performance testing is a type of testing that checks how well a system performs
under normal conditions.
● The goal of performance testing is to ensure that the system meets the required
performance standards and can handle expected user loads.
● Developers would check the system’s response time, throughput, resource
utilization, CPU usage, memory usage and network traffic
e) Deployment Testing:
● Deployment Testing is also known a configuration testing.
● It is a type of testing that checks how well a system performs in different
environments and under different operating systems.
● The goal of the deployment testing is to ensure that the system can operate properly
in all the environments where it will be deployed.
● Developers would examine all installation procedures and configurations to ensure
that they are working correctly.
● They would also check for compatibility issues with other software or hardware
components that the system interacts with.
Ans:
The important features of Software Configuration Management are listed below:
1. Versioning
2. Change Management
3. Configuration Management
4. Requirements Tracing
5. Dependency Management
6. Branching and Merging
7. Release Management
8. Audit Trails and Reporting
1.Versioning: Versioning is the process of assigning unique identifiers (usually numbers or
letters) to different versions of a software product. This allows developers to keep track of
changes made to the software over time and helps ensure that everyone is working with the
same version.
.
2. Change Management: Change management involves managing changes to a software
product in a controlled and systematic way.
3. Dependency Management: Dependency management involves identifying and
documenting the dependencies between different software components and managing changes
to those dependencies over time.
4. Configuration Management: Configuration management is a key aspect of SCM that
involves managing different versions and variations of software artefacts. SCM systems help
manage software configurations by controlling the configuration of software components,
libraries, and dependencies.
5. Requirements Tracing: SCM systems can facilitate requirements tracing, which involves
linking software artefacts to specific requirements. This allows for better traceability and
ensures that the implemented software aligns with the specified requirements.
6. Build Management: SCM systems can integrate with build automation tools to automate
the process of compiling, testing, and packaging software. This ensures that the software is
built consistently and reduces the manual effort required for each build.
Whenever new changes are made to the codebase, the build process is automatically triggered,
and the software is built using the latest code version. This helps in catching any compilation
or testing errors early in the development cycle, facilitating faster feedback and ensuring a
reliable and efficient software build.
7. Branching and Merging: Branching and merging involve creating separate branches of a
software product's codebase for different purposes (such as development or bug fixing) and
then merging those branches back together when changes are complete.
8. Release Management: Release management is the process of planning, scheduling, and
controlling the release of software products or updates to ensure a smooth and controlled
deployment. It involves Coordinating various activities such as packaging, testing,
documentation, and distribution to deliver a high-quality software release to end-users.
SCM plays a crucial role in release management by providing a controlled and auditable
process for managing software releases. SCM tools help ensure that the correct versions of
software components are included in each release, that all changes are tracked and documented,
and that the release process is repeatable and reliable.
9. Audit Trails and Reporting: Audit trail and reporting involves tracking changes made to a
software product over time and generating reports that show who made each change, when it
was made, and what was changed.
The key steps involved in the software project scheduling process are: -
1. Define project scope and objectives:
Clearly define the scope of the project and establish its objectives.
Example: Developing a web application for an e-commerce platform with
features such as product listing, shopping cart and payment integration.
2. Breakdown the project into tasks:
Identify and break down the project into smaller, manageable tasks. each task
should have well-defined deliverable and dependencies.
Example: Tasks may include requirements gathering, design, coding, testing
and deployment.
3. Estimate task duration:
Estimate the time required to complete each task. This estimate can be based
on historical data, expert judgment, or using techniques such as PERT
(program Evaluation and Review Tech) or analogous estimation.
Example: Estimating that the coding phase will take two weeks based on past
similar projects.
4. Determine project dependencies:
Identify the dependencies between tasks. Some tasks may need to be
completed before others can start.
Example: The design phase must be completed before coding can begin.
5. Create a project schedule:
Use scheduling techniques like Gantt chart or network diagrams to visualize
and create a project schedule.
Assign start and end dates to each task based on their estimated durations and
dependencies.
Example: consider resource availability and constraints during scheduling.
6. Allocate resource:
Determine the resources required for each task such as developers, testers,
hardware, or software tools.
Ensure that the necessary resources are available or plan for their acquisition.
Example Assigning two developers for the coding phase.
7. Optimize the schedule:
Review the initial schedule for any conflicts, bottlenecks, or resource
overloads.
Adjust task durations, dependencies or resource allocations as needed to
optimize the schedule.
Example: Redistributing tasks to balance the workload of developers.
8. Monitor and track progress:
Regularly monitor the project’s progress and track the actual time taken for
each task.
Compare it against the scheduled time to identify any deviations or delays.
Make adjustments to the schedule if required, considering any impact on
subsequent tasks.
9. Adapt to changes:
As the project progresses, new requirement or unforeseen issues may arise.
Assess the impact of changes on the schedule and make necessary
adjustments. communicate changes to the team and stakeholders to ensure
alignment.
10. Regularly review and update the schedule:
Continuously review and update the project schedule to reflect the current
status, changes and evolving priorities.
Regularly communicate the update schedule to the team and stakeholders to
maintain transparency.
21. What is CMMI? Explain Continuous Model and Staged Model Representation
of CMMI.
Ans:
1. Capability Levels:
Each process area is assigned a capability level ranging from 0 (incomplete) to 5 (optimized).
As an organization progresses through these levels, they demonstrate increasing capability in
performing the processes associated with the specific goals
2. Specific Goals (SG) and Practices (SP): Each capability level has specific goals that
represent the desired outcomes for a process area. The specific goals are refined into specific
practices which are the recommended activities to achieve those goals. Organizations need to
fulfil the specific goals and practices for each capability level. Process areas are the specific
practices that an organization must implement in order to achieve a certain capability level.
● staged model:
The staged CMMI model defines maturity levels rather than capability levels.
To achieve a maturity level, specific goals and practices associated with a set of
process areas must be achieved. The key points to understand staged model are:
1. Maturity Levels: The staged model defines five maturity levels, from level 1
(initial) to level 5 (optimizing). Each level represents a different degree of maturity
in the organization’s processes. To achieve a maturity level, the organization needs
to satisfy specific goals and practices across a set of process areas.
2. Process Areas: Process areas represent the key focus areas within the software
development process. Examples of process areas in CMMI include project
organization's planning. requirements management, and configuration
management. Each process area has specific goals and practices that need to be
achieved to reach a certain maturity level.
3. Generic Goals and Practices: In addition to the specific goals and practices for
each process area, CMMI also defines generic goals and practices. These goals and
practices may apply to multiple process areas. They address aspects such as project
management, organizational support, and process measurement.
22. Explain Iterative Waterfall Model.
Ans:
The Iterative Waterfall model is a software development process that is based on
the classical waterfall model but include feedback loops between each phase.
It is also known as Incremental Water fall Model or Staged Deliver Model.
The phases of the classical waterfall model and the iterative waterfall model are the
same, but the iterative water fall model includes feedback loops between each phase.
This feedback is used to refine and improve the software product, which is then re-
evaluated in the next iteration.
Advantages:
● Flexibility
● Early Detection of issues
● Improved Quality
● Stakeholder Involvement
● Reduced Risk
● Faster Time-to-Market
Disadvantages:
● Increased Complexity
● Higher Cost
● Lack of Clarity
● Scope Creep
● Dependency on stakeholder feedback
● Difficulty in managing large projects
Ans:
Risk Management Process or Activities Involved in Risk Management:
Risk Management Process involves several key steps to identify, assess, mitigate, and
monitor risks throughout the project lifecycle. The following are the main steps or activities
in the risk management process:
1.Risk identification:
Risk identification is the process of systematically recognizing potential uncertainties
or threats. could impact a software project.
It involves identifying and documenting risks that may affect h project's goals and
objectives. Risks can be categorized as project risks, technical risks, or business risks
based on their potential impact.
Two common approaches are:
● Risk Item Checklist: Creating a checklist that focuses on known and predictable
risks in various categories such as product size, business impact, stakeholder
characteristics, process definition, development environment, technology to be built,
and staff size and experience.
● Risk Patterns: Utilizing risk patterns, which are predefined risk scenarios based on
past experiences and industry knowledge. These patterns provide a systematic
approach to identifying risks and their potential impact.
2. Risk Projection:
Risk projection is also known as risk estimation or risk assessment.
It is a process that involves assessing and rating each identified risk based on its
probability of occurrence and then it would have on the project.
The purpose of risk projection is to prioritize consequences risks and allocate
resources effectively.
4.Risk mitigation:
Risk mitigation refers to the process of developing strategies and taking proactive
measures to minimize the likelihood and impact of identified risks.
1It involves analyzing potential risks and implementing actions to avoid or reduce
their negative consequences.
The objective of risk mitigation is to prevent or mitigate the occurrence of risks and
their potential negative impacts on a project.
2. Risk Transfer: This technique involves transferring the risk to a third party, such as
an actions of enhancing consulting company or subcontractor.
4. Risk Sharing: This technique involves sharing the risk with other stakeholders or
team members. Collaborative approaches, such as forming partnerships or alliances,
can distribute the risk and leverage shared resources, knowledge, and expertise to
mitigate the risk
5.Risk monitoring:
Risk monitoring involves closely observing and tracking identified risks
throughout the project’s lifecycle.
It involves regularly assessing the status of risk, evaluating their probability of
occurring and monitoring factors that may indicate changes in risk likelihood or
severity.
It makes informed decision and take appropriate actions to address evolving risk.
1.Data Analysis
2.stakeholder communication
3.Risk Triggers and Early warning signs
4.Risk Tracking tool
1.Identification: This task involves identifying all of the artefacts that are required for the
development process. This includes source code, documentation, test cases, and other files.
The goal is to ensure that all necessary artefacts are identified and tracked throughout the
development process.
Example: The software team identifies the requirements specification document as a key
configuration item named "SRS_Document.docx."
2.Version Control: This task involves tracking changes to artefacts over time and ensuring
that all changes are documented and auditable. SCM tools provide version control features that
allow developers to track different versions of files over time. This helps ensure that changes
can be tracked and reverted if necessary.
Example: The source code file "main.c" goes through multiple versions like 1.0, 1.1, and 1.2
as changes are made and improvements are implemented.
3.Change Control: This task involves managing changes to artefacts in a controlled and
auditable manner. Change control is the process of evaluating, approving, and managing
changes to configuration items. It ensures that changes are properly reviewed, assessed, and
implemented.
Example: A change request is submitted to modify the requirements specification document.
The change goes through evaluation, approval, and is implemented with proper documentation.
4.Configuration Audit: This task involves performing regular audits of the software
configuration to ensure that it is consistent and reliable. Audits can help identify issues early in
the development process before they become more difficult to fix. The goal is to ensure that
the software configuration is reliable and meets all requirements.
Example: A configuration audit is performed to verify that all changes made to the source
code files have been properly documented and meet the defined coding standards.
5.Status Reporting: This task involves providing regular reports on the status of the software
configuration, including information on changes made, issues identified, and progress towards
project milestones. The goal is to keep stakeholders informed about progress towards project
goals and any issues or risks that may impact project success. Example: A status report is
generated to inform the project stakeholders about the recent changes made to the configuration
items and their impact on the project timeline.
I. Functional requirements
II. Non functional requirements
Functional requirements:-
Functional requirements are statements that describe the behaviour and features
that a system or software must provide to meet the needs of the end – users
Functional requirements are typically basic functionalities or desired behaviour
that are documented clearly and quantitatively
These are essential for determining the scope of the software and guiding the
design, development,and testing processes
These are the type of requirements that describe what the system should do or
how it should behave .they specify the functions, features,and capabilities that
the system must provide to meet the needs of its users
Types of NFR’s
Performance
This refers to the speed and responsiveness of the system.this may include response
time, throughput,and capacity
Scalability
This refers to the ability of the system to handle increasing levels of demand or
workload.
Security
This refers to the measures that need to be taken to protect the system and it’s users
from unauthorised attacks.
Usability
This refers to how easy the system is to use and understand for its intended users
Maintainability
This refers to the ease with which the system can be modified, updated, and maintained
over time.
Compatibility
This refers to system’s ability to interoperate with various platforms, devices,
technologies.
Reliability
This refers to system’s ability to function correctly and consistently over time, including
fault tolerance, error handling and data integrity.
Availability
This refers to the proportion of time that the system is operational and accessible to its
users.
Ans:
12 Agile Principles:
1. Our highest priority is to satisfy the customer through early and continuous delivery of
valuable software.
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.
8. Agile processes promote sustainable development. The sponsors, developers, and users
should be able to maintain a constant pace indefinitely.
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 behaviour accordingly.
Ans:
The common project scheduling tools and techniques used in software engineering are:
Agile Methodologies:
Agile methodologies such as Scrum or Kanban are iterative
approaches to software development that involve breaking down
work into smaller chunks called sprints or iterations.
These methodologies emphasize collaboration,flexibility and
continuous improvement.
Resource Leveling:
Resource leveling is a technique used to balance resource
utilization across different tasks in order to avoid overloading
certain team members or departments.
Bootstrap
It is designed to ensure compliance with the emerging ISO standard for software
process assessment and improvement
It provides a structured approach for evaluating software processes based on a
set of best practices in software engineering
The main objective of Bootstrap is to access and improve the software process by
evaluating it’s adherence to established best practices
The frame work employs questionnaires and assessments to gather information
about the current state of the software process and software project. These
questionnaires help in identifying area of strength and area that require
improvement.
PSP
it is a methodology that focuses on improving the individual
developers performances
it provides a structured approach for planning, tracking, and
analysing the work of individual developers
these help developers to identify their strength and weakness,
track their progress over time, and improve their skills.
TSP
ISO
Stand for international organization for standardization
It is an independent, non-governmental international organization
that develops and publishes standards for various industries.
It has developed a wide range of standards covering various
aspects of business operations, including quality management,
environment management, information security management, and
more
These standards provide guidelines and best practices for
organisations to follow in order to achieve specific goals or
objectives
30. Explain the Phases of Spiral Model.
Ans:
The Spiral Model is a software development process model that combines elements
of the Classical Waterfall Model and the Iterative Waterfall Model.
The Spiral Model is particularly well-suited for large, complex, and high-risk
projects.
The software development process is divided into a series of small, manageable
iterations, each of which is divided into four phases: planning, risk analysis,
engineering, and evaluation.
It is called the Spiral Model because it looks like a spiral with many loops, where
each loop represents a phase of the software development process.
Ans:
Definition:
1.Increment Planning:
The development team determines the scope, functionality, and objectives for the
current increment.
This involves considering customer requirements, project constraints, and overall
system goals.
The team prioritizes features and functionalities, and sets a clear plan and timeline
for the completion of the increment.
This ensures that each increment focuses on delivering valuable and relevant features
to the end-users.
2. Requirements Gathering:
The team collects and documents the specific requirements for the increment,
ensuring they are clear, complete, and consistent.
This process involves collaboration between stakeholders, developers, and users to
define the expected behavior and constraints of the software increment.
3. Box Structure Specification:
In Cleanroom software engineering, the team creates a hierarchical model of the
software black boxes: which represent high-level components of the system.
state boxes: which encapsulate state data and operations.
clear boxes: which shows the internal workings of each component.
This model helps the team understand the overall structure of the software and the
relationships between components.
4.Fornmal Design:
The team develops a detailed design for the increment using precise notation and
formal methods.
This design specifies how each component interacts with how they satisfy the
requirements.
It also helps the t is team identify potential issues, inconsistencies, or gaps in the
design before moving on to the coding phase.
5. Correctness Verification:
The team proves that the design meets the requirements verification techniques to
ensure the design's correctness.
This involves rigorous inspection of the design and mathematical verification
techniques to ensure the design’s correctness.
The team translates the formal design into executable code, adhering to cleanroom
coding standards.
This step ensures that the code accurately reflects the design and that potential
defects are minimized.
The team then performs code to identify and fix any potential defects.
Inspections help catch errors before inspections they through the system, leading to
more reliable and robust software.
7. Statistical Testing:
The team conducts testing based on usage scenarios and profiles to assess the
software's reliability.
This type of testing uses statistical methods to estimate the software's performance
under real-world conditions.
8. Certification:
The team evaluates the results of statistical testing and correctness verification to
ensure the software meets quality standards.
This step involves a thorough review of the test results, verification artifacts, and
other supporting evidence.
32. Explain the Techniques of Black Box Testing.
Ans: Black Box Testing:
It is a testing technique that tests the functionality of a software application without knowing
the internal structure of the code or how it has been implemented.
Techniques of Black Box Testing:
1) Equivalence Partitioning:
Equivalence Partitioning is a Black Box Testing technique that involves
dividing the input data into groups or partitions of equivalent values, where
each group represents a different test case.
This technique is used to reduce the number of test cases required to test a
software system, while still ensuring that all possible scenarios are covered.
Example: Fig (5.37)
2) Boundary Value Analysis:
Boundary Value Analysis is a Black Box Testing technique that focuses on
testing the software system at the boundaries of the input data, where errors
are likely to occur.
This technique is used to ensure that the software system can handle extreme
values of input data and produce the expected outputs.
This technique is useful for ensuring that the software system can handle
extreme values and produce the expected outputs, and for reducing the number
of test cases required to test the system.
3) Decision Table Testing:
Decision Table Testing is a Black Box Testing technique that involves
creating a table that shows all possible combinations of inputs and their
corresponding outputs.
This technique is useful for testing complex software systems where the
behavior depends on multiple inputs or conditions.
By applying Decision Table Testing, we can create a comprehensive list of all
possible combinations of inputs and their expected outputs.
4) State Transition Testing:
State Transition Testing is a type of testing method that is used to test the
behavior of a software system as it moves from one state to another.
In this technique, the software system is modeled as a finite state machine,
where each state represents a different mode or condition of the system.
This technique helps to identify errors related to incorrect handling of
transitions between states, such as unexpected behavior or incorrect output
when moving from one state to another.
By designing test cases to cover all possible transitions between states, we can
ensure that tests are comprehensive and cover all possible scenarios for
elevator control system.
5) Error Guessing:
Error Guessing is a type of testing method that relies on the tester’s experience
and knowledge of the system to identify potential errors in a software system.
In this technique, the tester uses their understanding of the system and its
expected behavior to guess where errors might occur.
By guessing where errors might occur, we can design test cases to cover these
scenarios and ensure that tests are comprehensive.
Ans
Risk Management:
o Think Ahead: Consider future risks that may arise and plan for them. Don't wait
for problems to occur.
o Communicate Openly: Encourage everyone involved to share potential risks
and suggestions at any time. Don't dismiss any concerns or suggestions raised.
o Integrate Risk Management: Make risk management an integral part of the
software development process from start to finish.
o Stay Vigilant: Continuously monitor and reassess risks throughout the project.
Update risk assessments as new information becomes available.
o Share a Common Vision: Ensure all stakeholders have a shared understanding
of thesoftware's purpose and goals. This helps in identifying and addressing risks
effectively.
o Foster Teamwork: Collaborate with all stakeholders, combining their skills and
knowledge during risk management activities.
34. Explain the types of Formal Specification Languages.
Ans
FSL is a precise, unambiguous, and structured language used to define, describe, and
analyze the expected behavior, properties, and requirements of software systems,
hardware components or complex algorithms. The main goal of using a formal
specification language is to ensure the correctness, reliability and robustness of the
system being designed.
Types of Formal Specific Language:
Invariants: Invariants are condition that must hold true for all instances of a class. OCL
is used to define these invariants, which helps maintain consistency and correctness
within the model.
Example: a) inv nonEmptyName: name.size() > 0
b) inv validEmail: email.matches(‘.+@.+\\..+’)
c) context order :: addProduct (product: Product)
d)
Example: