Uploaded by Keegan Smith

Untitled document(2)

advertisement
Here is a set of flashcards based on the provided source documents:
Card 1
●
●
Front: What are the four fundamental activities of the software process?
Back:
Software requirements specification
○
Software development (design + programming)
○
Software verification and validation
○
Software evolution and maintenance
○
●
●
Front: What are the benefits of using a prototype during software development?
Back:
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.
○
●
●
Front: What is the difference between software verification and software validation?
Back:
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, on the other hand, ensures the software fulfills the customer's needs and expectations. This may involve testing the software in real-world scenarios or building prototypes to demonstrate its capabilities.
○
Validation goes beyond mere conformance to specifications, aiming to confirm the software effectively addresses the customer's actual needs.
○
●
●
Front: What are the key principles of the Agile Manifesto?
Back: The Agile Manifesto prioritizes the following:
Individuals and interactions over processes and tools
○
Working software over comprehensive documentation
○
Customer collaboration over contract negotiation
○
Responding to change over following a plan
○
●
●
Front: What are the characteristics of Agile methods?
Back:
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 requirements.
○
●
●
Front: What are the advantages of pair programming?
Back:
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.
○
●
●
Front: What is test-first development and what are its benefits?
Back:
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 "test-lag," a common problem in traditional development where testing lags behind the pace of coding.
○
●
●
Front: What is refactoring and why is it important in agile methods?
Back:
Refactoring is the process of improving a program's internal structure without altering its external functionality.
○
In agile methods, where code often evolves rapidly, refactoring is essential to prevent the degradation of software structure due to incremental changes.
○
Continuous refactoring helps maintain code quality and readability, making the software easier to understand, modify, and extend.
○
●
●
Front: What are user stories and how are they used in Agile development?
Back:
User stories are concise descriptions of desired functionalities from a user's point of view. They are typically written on story cards and used for planning and prioritizing work.
○
User stories help to break down complex requirements into smaller, manageable units that can be developed iteratively.
○
During development, user stories are further divided into tasks, each with estimated effort and resources required for implementation.
○
●
●
Front: Describe the key roles and terms in Scrum.
Back:
Development team: Self-managing group of developers, typically 7 or fewer, responsible for developing the software and related documentation.
○
Sprint: Development iteration, usually 2–4 weeks long, during which a potentially shippable product increment is created.
○
Product Backlog: Prioritized list of features, requirements, and tasks to be addressed by the development team.
○
Product Owner: Responsible for defining and prioritizing features in the Product Backlog, ensuring the project aligns with business goals.
○
Scrum Master: Facilitates the Scrum process, removes impediments for the team, and helps the team use Scrum effectively.
○
●
●
Front: What are the four essential freedoms of free software?
Back:
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. Access to source code is a prerequisite.
○
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. Access to source code is a prerequisite.
○
●
●
Front: What are the three main categories of software risks?
Back:
Project risks: Impact the project's schedule or resources (e.g., losing a key team member).
○
Product risks: Impact the quality or performance of the software (e.g., failure of a third-party component).
○
Business risks: Impact the organization developing or procuring the software (e.g., a competitor releasing a similar product).
○
●
●
Front: What are the four key factors in good people management?
Back:
Card 2
Card 3
Card 4
Card 5
Card 6
Card 7
Card 8
Card 9
Card 10
Card 11
Card 12
Card 13
○
○
○
○
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.
Card 14
●
●
Front: What are the four key activities in the risk management process?
Back:
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.
○
●
●
Front: What are legacy systems and why are they expensive to maintain?
Back:
Legacy systems are older software systems that often rely on outdated technologies and lack proper documentation.
○
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
■
Incompatibility with newer systems and components.
■
●
●
Front: What are the differences between software restructuring and software reengineering?
Back:
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.
○
Software reengineering, however, aims to modernize legacy systems by modifying their architecture, code, or data structures. While the goal is to minimize changes to the system's functionality, some modifications to external behavior are often unavoidable.
○
●
●
Front: What are the three key activities involved in requirements engineering?
Back:
Elicitation and analysis: Gathering information about the desired system from stakeholders.
○
Specification: Documenting the requirements in a standardized format.
○
Validation: Ensuring the specified requirements accurately reflect the customer's needs and expectations.
○
●
●
Front: What are the three key questions a feasibility study should answer?
Back: A feasibility study should address the following:
Does the proposed system align with the organization's overall objectives?
○
Can the system be implemented within the given budget and timeframe using current technology?
○
Can the system be effectively integrated with existing systems used by the organization?
○
●
●
Front: What is the difference between user requirements and system requirements?
Back:
User requirements provide a high-level, abstract description of the system's functionalities and features from a user perspective. These can sometimes be ambiguous and open to interpretation.
○
System requirements offer a detailed and precise specification of what the system should do, potentially including a formal functional specification to guide implementation.
○
●
●
Front: Describe the main activities involved in the design and implementation phase of software development.
Back:
Software design: A creative process where developers define the system's architecture, components, and their interactions based on the specified requirements.
○
Implementation: Translating the design into an executable program, potentially involving coding in various programming languages or adapting existing software components.
○
Software Reuse: Utilizing existing code, libraries, or systems to expedite development and reduce costs.
○
Configuration Management: Keeping track of different versions of software artifacts to ensure consistency and prevent integration issues.
○
Host-target Development: Developing software on a host system and deploying it on a separate target system, which may have different hardware or software environments.
○
●
●
Front: How does software engineering differ from individual programming?
Back:
Individual programming typically focuses on creating software for personal use or small-scale projects, often without formal processes or documentation.
○
Software engineering, however, is concerned with professional software development, involving larger teams, formal processes, and a focus on creating maintainable and reliable software for others to use.
○
●
●
Front: What are the eight core principles of the Daniels Fund Ethics Initiative?
Back:
Integrity: Acting honestly in all situations.
○
Trust: Building trust in all stakeholder relationships.
○
Accountability: Accepting responsibility for decisions.
○
Transparency: Maintaining open and honest communications.
○
Fairness: Engaging in fair competition and fostering equitable relationships.
○
Respect: Honoring the rights, perspectives, and property of others.
○
Rule of Law: Complying with the spirit and intent of laws and regulations.
○
Viability: Creating long-term value for all stakeholders.
○
●
●
Front: List ethical considerations specific to software engineering.
Back:
Confidentiality: Protecting sensitive information about individuals and organizations.
○
Competence: Accepting work only within one's area of expertise.
○
Intellectual property rights: Respecting ownership and licensing agreements related to software and code.
○
Computer misuse: Refraining from using software or systems for unauthorized purposes.
○
Algorithmic bias and discrimination: Ensuring software and algorithms are developed and used fairly and responsibly.
○
Card 15
Card 16
Card 17
Card 18
Card 19
Card 20
Card 21
Card 22
Card 23
Here are some in-depth flashcards covering Software Engineering based on the provided source materials:
Flashcard Set 1: Software Engineering Basics
Card 1
●
●
Front: What is Software Engineering (SE)?
Back: SE is an engineering discipline focusing on all aspects of software production, from initial specification to maintenance after deployment. It emphasizes a systematic and organized approach to software development.
Card 2
●
●
Front: What differentiates professional software development from individual programming?
Back: Professional software development:
Is intended for use by someone other than its developer.
○
Is typically developed by teams rather than individuals.
○
Needs to be maintained and changed throughout its life cycle.
○
●
●
Front: "Good" Software: What makes software good?
Back: "Good" software must meet both its functional requirements (what it should do) and non-functional requirements (quality attributes). Quality attributes include:
Acceptability
○
Maintainability
○
Dependability (reliability, security, safety)
○
Efficiency
○
Usability.
○
●
●
Front: Software is more than just code. Explain.
Back: Software encompasses various artifacts, including:
Computer programs
○
Documentation
○
Libraries
○
Support websites
○
Configuration data
○
AI models.
○
It can be a product, service, or both.
○
It can be for specific customers or a general market.
○
It can be B2B or B2C.
○
It can be open source or proprietary.
○
Card 3
Card 4
Flashcard Set 2: Software Processes
Card 5
●
●
Front: What is a Software Process or Software Development Life Cycle (SDLC)?
Back: A software process is a set of related activities that lead to the production of a software system. There is no one-size-fits-all process; it varies based on the system, domain, and company.
●
●
Front: What are the 4 fundamental software process activities?
Back:
1.
Software requirements specification
2.
Software development (design and programming)
3.
Software verification and validation
4.
Software evolution and maintenance.
●
●
Front: Describe the Waterfall Model.
Back: The Waterfall Model is a plan-driven process with distinct sequential phases (requirements, design, implementation, testing, deployment, maintenance). It is suitable for:
Embedded systems
○
Safety-critical systems
○
Large systems developed by multiple teams/companies
○
●
●
Front: What is Incremental Development?
Back: In Incremental Development, the software is developed in a series of increments, each adding functionality. It can be plan-driven, agile, or a mixture of both. It is suitable for systems with requirements that may change during development.
●
●
Front: Explain Integration and Configuration.
Back: Integration and configuration involve assembling a software system from existing components. This process focuses on finding, evaluating, and adapting components and integrating them into the system.
Card 6
Card 7
Card 8
Card 9
Flashcard Set 3: Agile Approaches
Card 10
●
●
Front: What are Agile Methods?
Back: Agile methods are designed to produce useful software quickly. They prioritize flexibility and responsiveness to change over rigid planning. They are characterized by iterative development, close customer collaboration, and minimal documentation.
●
●
Front: Explain the Agile Manifesto.
Back: The Agile Manifesto outlines the values behind agile methods, prioritizing:
Individuals and interactions over processes and tools
○
Working software over comprehensive documentation
○
Customer collaboration over contract negotiation
○
Responding to change over following a plan
○
●
●
Front: Describe Extreme Programming (XP).
Back: XP is an agile method that takes good practices, such as iterative development and testing, to "extreme" levels. It includes practices like pair programming, test-first development, and frequent releases.
●
●
Front: What are User Stories? How are they used in agile development?
Back: User Stories are brief descriptions of a system feature from the user's perspective. They are written on story cards and used to plan iterations, estimate effort, and facilitate communication between the development team and the customer.
●
●
Front: Explain Refactoring/Restructuring. Why is it important in agile development?
Back: Refactoring involves improving the internal structure of code without changing its external behavior. It is crucial in agile development to prevent code degradation due to frequent changes.
●
●
Front: Describe Test-First Development (TDD).
Back: In TDD, tests are written before the code. This helps to clarify requirements, ensure code quality, and reduce "test-lag".
Card 11
Card 12
Card 13
Card 14
Card 15
Card 16
●
●
Front: What is Pair Programming? What are its advantages and disadvantages?
Back: Pair Programming involves two programmers working together on the same code.
Advantages: Collective ownership, informal code review, encouragement of refactoring, knowledge sharing.
○
Disadvantages: Reduced efficiency, potential quality gain might not justify the cost.
○
●
●
Front: What is Scrum?
Back: Scrum is an agile framework for managing and organizing agile projects. It emphasizes iterative development, self-organizing teams, and regular meetings (sprints, daily scrums, sprint reviews).
●
●
Front: What is a Sprint in Scrum?
Back: A Sprint is a time-boxed iteration in Scrum, typically 2-4 weeks long. During a Sprint, a potentially shippable product increment is developed.
●
●
Front: What is the Product Backlog in Scrum?
Back: The Product Backlog is a prioritized list of features and requirements for the product. The Product Owner manages the Product Backlog.
●
●
Front: Who is the Scrum Master? What are their responsibilities?
Back: The Scrum Master ensures the Scrum process is followed and facilitates the team's effectiveness. They protect the team from external distractions.
Card 17
Card 18
Card 19
Card 20
Flashcard Set 4: Requirements Engineering
Card 21
●
●
Front: What is Requirements Engineering (RE)?
Back: RE is the process of defining and documenting the services a software system should provide and the constraints on its operation. It involves eliciting, analyzing, specifying, and validating requirements.
●
●
Front: Distinguish between User Requirements and System Requirements.
Back:
User Requirements: High-level, abstract descriptions of the system services understandable by users.
○
System Requirements: Detailed descriptions of what the system should do, including functional and non-functional requirements.
○
●
●
Front: What is a Feasibility Study? What key questions does it answer?
Back: A Feasibility Study is a short study conducted early in RE to determine the project's viability. It answers these questions:
Does the system contribute to the organization's objectives?
○
Can it be implemented within budget and time using current technology?
○
Can it be integrated with existing systems?
○
●
●
Front: Differentiate between Functional and Non-Functional Requirements.
Back:
Functional Requirements: Define what the system should do (services, responses to input, behavior).
○
Non-Functional Requirements: Define constraints on the system, such as performance, security, and usability.
○
Card 22
Card 23
Card 24
Flashcard Set 5: Software Design and Implementation
Card 25
●
●
Front: What is Software Design?
Back: Software Design is the creative process of identifying software components and their relationships to meet customer requirements.
●
●
Front: Explain the Build vs. Buy decision in software development.
Back: In software development, you often have the choice to build a system from scratch or buy an existing COTS (Commercial Off-The-Shelf) system and adapt it. Buying is often cheaper and faster but may pose maintainability challenges.
●
●
Front: What is Software Reuse? Why is it important?
Back: Software Reuse involves using existing code or components in new software development. It saves time and effort, reduces development costs, and improves software quality.
●
●
Front: What is Configuration Management? Why is it necessary?
Back: Configuration Management involves managing different versions of software artifacts (code, documents) during development. It helps ensure that the correct versions are used and prevents integration issues.
Card 26
Card 27
Card 28
Flashcard Set 6: Open-Source Development
Card 29
●
●
Front: What is Open-Source Development?
Back: In Open-Source Development, the source code of the software is made publicly available. Volunteers can participate in development. The "Free Software" movement emphasizes the freedom to use, study, modify, and distribute the software.
●
●
Front: What are the 4 essential freedoms of Free, Open-Source Software (FLOSS)?
Back: The 4 freedoms are:
1.
Freedom to run the program for any purpose.
2.
Freedom to study and modify the source code.
3.
Freedom to redistribute copies.
4.
Freedom to distribute modified versions.
Card 30
Card 31
●
●
Front: Can Free Software be commercial?
Back: Yes, there are various business models for Free Software, including dual licensing, Software as a Service (SaaS), professional services, and training.
Flashcard Set 7: Software Verification and Validation (V&V)
Card 32
●
●
Front: What is Software Verification?
Back: Software Verification is the process of checking that software meets its specified functional and non-functional requirements. It often involves activities like defect testing.
●
●
Front: What is Software Validation? How does it differ from Verification?
Back: Software Validation ensures the software meets the customer's expectations, going beyond just conformance to specifications. It often includes user acceptance testing and building prototypes.
●
●
Front: What is Software Testing?
Back: Software Testing involves executing the software to find defects. It can show the presence of errors but not their absence.
●
●
Front: What is Software Inspection/Review?
Back: Software Inspection involves examining software artifacts (code, designs, documents) to find defects and improve quality. Studies show it can be more cost-effective than testing.
●
●
Front: What is Formal Verification? When is it used?
Back: Formal Verification uses mathematical techniques to prove the correctness of software. It is typically used in safety-critical systems where the cost of failure is high. It's very expensive but can prove the absence of errors.
Card 33
Card 34
Card 35
Card 36
Flashcard Set 8: Software Evolution and Maintenance
Card 37
●
●
Front: What is Software Evolution?
Back: Software Evolution involves modifying a software system after it has been delivered to address changing customer needs, fix bugs, or adapt to a new environment.
●
●
Front: What is a Legacy System?
Back: A Legacy System is an older software system that often relies on outdated technology and lacks proper documentation, making it expensive to maintain.
●
●
Front: What is Software Maintenance?
Back: Software Maintenance involves all activities to modify a software system after it has been delivered, including bug fixing, enhancements, and adapting to new environments.
●
●
Front: What is Software Restructuring/Refactoring?
Back: Software Restructuring improves the internal structure of a program without changing its external behavior, making it easier to understand and maintain.
●
●
Front: What is Software Reengineering?
Back: Software Reengineering is the process of improving the structure and understandability of legacy systems, often involving re-documentation, architectural improvements, and code translation.
●
●
Front: What is Emergency Repair? What are the risks associated with it?
Back: Emergency Repair addresses critical problems in operational systems that require immediate attention. It often leads to quick fixes that may not be optimal, accelerating software aging and increasing future maintenance costs.
Card 38
Card 39
Card 40
Card 41
Card 42
This is a sample set of flashcards. You can create more flashcards based on the specific information or concepts you want to focus on from the sources.
Download