Uploaded by Keegan Smith

flashcards(1)

advertisement
Describe the four fundamental activities of
the software process.
1. Software requirements specification 2.
Software development (design +
programming) 3. Software verification and
validation 4. Software evolution and
maintenance
How do prototypes benefit software
development?
Prototypes allow users to interact with a
preliminary version of the system, identify
areas for improvement, and give feedback.
This process can uncover inconsistencies or
missing elements in the system requirements,
leading to a more refined specification.
Additionally, prototypes can be used in design
experiments to validate the practicality of
proposed solutions.
Define the difference between software
verification and software validation.
Software verification focuses on ensuring the
software is being built correctly, often through
activities like defect testing, to meet the
specified functional and non-functional
requirements. Software validation ensures the
software fulfills the customer's needs and
expectations, which may involve testing the
software in real-world scenarios or building
prototypes to demonstrate its capabilities.
How does the Agile Manifesto prioritize its
principles?
The Agile Manifesto prioritizes the following:
1. Individuals and interactions over processes
and tools 2. Working software over
comprehensive documentation 3. Customer
collaboration over contract negotiation.
Describe the characteristics of Agile methods.
Agile methods intertwine specification,
design, and implementation. Detailed
requirements specifications are minimized in
favor of user stories, while design
documentation is kept concise and often
automatically generated by the development
environment. Systems are developed
incrementally, with stakeholders closely
involved in defining and assessing each
increment. Frequent deliveries, typically every
2–4 weeks, enable early user feedback and
allow for incorporating changes and new
Explain the advantages of pair programming.
Pair programming promotes collective
ownership and responsibility for the system.
Having two developers work together
functions as an impromptu review process,
enhancing code quality by identifying errors
early on. Pair programming encourages
refactoring, leading to a cleaner and more
maintainable codebase. Knowledge sharing
within the team reduces risks associated with
individual developers leaving the project.
Define test-first development and its benefits.
Test first development involves writing tests
before writing the corresponding code. This
approach leads to a clearer understanding of
requirements and interface specifications by
implicitly defining them through the tests.
Developers gain a deeper understanding of
the system's functionality to create effective
tests, leading to the early identification and
resolution of ambiguities in specifications.
Test-first development helps mitigate 'testlag,' a common problem in traditional
development where testing lags behind the
pace of coding
How do Agile methods differ from traditional
development approaches?
Agile methods focus on responding to change
over following a strict plan, emphasizing
flexibility and stakeholder involvement
throughout the development process.
What role does user feedback play in Agile
development?
Frequent deliveries in Agile development,
typically every 2–4 weeks, enable early user
feedback, allowing teams to incorporate
changes and new requirements based on that
feedback.
How does pair programming enhance code
quality?
Pair programming functions as an impromptu
review process, allowing two developers to
identify errors early on, which enhances
overall code quality.
What is the significance of knowledge sharing
in pair programming?
Knowledge sharing within the team reduces
risks associated with individual developers
leaving the project, ensuring continuity and
collective understanding of the codebase.
How does test-first development clarify
requirements?
By writing tests before the corresponding
code, test-first development implicitly defines
requirements and interface specifications,
leading to a clearer understanding of what
needs to be built.
What problem does test-first development
help to mitigate?
Test-first development helps mitigate 'testlag,' a common issue in traditional
development where testing does not keep
pace with coding.
Define refactoring in the context of agile
methods.
Refactoring is the process of improving a
program's internal structure without altering
its external functionality. It is essential in agile
methods to prevent the degradation of
software structure due to incremental
changes.
Explain the importance of continuous
refactoring in software development.
Continuous refactoring helps maintain code
quality and readability, making the software
easier to understand, modify, and extend.
Describe user stories and their role in Agile
development.
User stories are concise descriptions of
desired functionalities from a user's point of
view, used for planning and prioritizing work.
How do user stories facilitate the
development process in Agile?
User stories help break down complex
requirements into smaller, manageable units
that can be developed iteratively.
What is the purpose of dividing user stories
into tasks during development?
During development, user stories are further
divided into tasks, each with estimated effort
and resources required for implementation.
Describe the key roles in Scrum methodology.
Key roles in Scrum include the Development
Team, Product Owner, and Scrum Master,
each with specific responsibilities in the
Scrum process.
Define a Sprint in the context of Scrum.
A Sprint is a development iteration, usually 2–
4 weeks long, during which a potentially
shippable product increment is created.
What is a Product Backlog in Scrum?
The Product Backlog is a prioritized list of
features, requirements, and tasks to be
addressed by the development team.
Explain the responsibilities of a Product
Owner in Scrum.
The Product Owner is responsible for defining
and prioritizing features in the Product
Backlog, ensuring the project aligns with
business goals.
How does a Scrum Master support the
development team?
The Scrum Master facilitates the Scrum
process, removes impediments for the team,
and helps the team use Scrum effectively.
List the four essential freedoms of free
software.
The four essential freedoms of free software
include the freedom to run the program, the
freedom to study and change the program,
the freedom to redistribute copies, and the
freedom to distribute modified versions.
Describe the four freedoms associated with
software.
Freedom 0: The freedom to run the program
as you wish, for any purpose. Freedom 1: The
freedom to study how the program works,
and change it to meet your computing needs,
requiring access to source code. Freedom 2:
The freedom to redistribute copies to aid
others. Freedom 3: The freedom to distribute
copies of modified versions to others,
allowing the community to benefit from your
changes, also requiring access to source
code.
Define project risks in software development.
Project risks are those that impact the
project's schedule or resources, such as losing
a key team member.
How do product risks affect software quality?
Product risks impact the quality or
performance of the software, for example, the
failure of a third-party component.
Explain business risks in the context of
software development.
Business risks impact the organization
developing or procuring the software, such as
a competitor releasing a similar product.
Identify the four key factors in effective
people management.
Consistency: Fair and equitable treatment of
all team members. Respect: Acknowledging
the value and contributions of each
individual. Inclusion: Creating a welcoming
environment where everyone feels valued
and respected. Honesty: Transparent and
open communication.
Describe the four key activities in the risk
management process.
Risk identification: Pinpointing potential
project, product, and business risks. Risk
analysis: Assessing the likelihood and
potential consequences of each risk. Risk
planning: Creating plans to mitigate or avoid
the identified risks. Risk monitoring: Regularly
reviewing and updating risk assessments and
mitigation plans as the project progresses.
What are legacy systems and why are they
costly to maintain?
Legacy systems are outdated computing
systems that are still in use. They are
expensive to maintain due to their outdated
technology, lack of support, and the difficulty
of integrating them with modern systems.
Describe legacy systems and their
characteristics.
Legacy systems are older software systems
that often rely on outdated technologies and
lack proper documentation.
Explain the challenges associated with
maintaining legacy systems.
Maintenance is expensive due to factors such
as difficulty finding developers with skills in
legacy technologies, security vulnerabilities
inherent in older software, potential hardware
obsolescence, and incompatibility with newer
systems and components.
Define software restructuring and its purpose.
Software restructuring (or refactoring) focuses
on improving the internal structure and
readability of software without changing its
external behavior. It is a preventative
measure to reduce the cost of future changes.
How does software reengineering differ from
software restructuring?
Software reengineering aims to modernize
legacy systems by modifying their
architecture, code, or data structures, while
minimizing changes to the system's
functionality, some modifications to external
behavior are often unavoidable.
Identify the three key activities involved in
requirements engineering.
The three key activities are elicitation and
analysis (gathering information from
stakeholders), specification (documenting
requirements in a standardized format), and
validation (ensuring requirements reflect
customer needs and expectations).
What are the main questions addressed in a
feasibility study?
A feasibility study should address whether the
proposed system aligns with the
organization's objectives, if it can be
implemented within the budget and
timeframe using current technology, and if it
can be effectively integrated with existing
systems.
Download