Software Development Flashcards
What does the SDLC represent?
The development of software as phases or sets of activities
What causes the SDLC?
The desire to define a predictable process to improve quality
What does the SDLC involve?
Creating processes that can be effectively managed
What are the 5 broad categories of the SDLC?
- Requirement Analysis
- Design
- Implementation
- Testing
- Evolution
What is Requirement Analysis?
What business/scientific problem is the system addressing?
What will the system do? Who are the users?
What is Design?
Hardware, software and network requirements
What parts are in-house, and what is externally developed or bought of the shelf
What is Implementation
The process of turning a software design into a working system by writing code, integrating components, and deploying it for use.
What is Testing?
The process of evaluating software to ensure it works as expected, is free of bugs, and meets user requirements.
What is Evolution?
Has system accomplished its goals, are there any modifications
Also includes maintenance of the system
What are the 4 Software Development Methodologies?
- Waterfall
- Prototyping
- Rapid Application Development
- Agile Development
What is a Waterfall?
Breaks process down into distinct sequential phases
- Each phase needs sign-off before moving to the next
- Leads to very well documented projects
What is Rapid Application Development?
Creating software quickly by focusing on speed, flexibility, and user feeback.
1. Fast Prototyping: quickly build small working versions
2. User involvement: give feedback on prototypes
3. Team improves software in short cycles
4. Skips heavy documentation and focuses on delivering functional features quickly
- Often development deadline prioritised over requirements.
What is Agile Development?
Where teams work in small steps called sprints, constantly adapt to change, and deliver results frequently. After each sprint teams reflect what went well, and get feedback. It focuses on collaboration, flexibility, and getting feedback to improve the product.
What is Prototyping?
Creating a simplified, working model of the software to test ideas, gather feedback, and refine before the final version is built.
What are the advantages of Agile Development
- User engagement
- Rapid Development of a usable product
- Early testing catches bugs and results in a high quality product
- Small incremental changes mitigate potential risk of introducing large change to system
What is a Scrum?
A framework within Agile development that organizes work into short, focused cycles called sprints (typically 2-4 weeks) to deliver small, workable software increments.
What is a Sprint planning meeting?
Part of a scrum that focuses on:
- Which items will be worked on
- Identify sprint tasks
- Divide the sprint into timeboxes
What is a Daily scrum meeting?
Part of a scrum that focuses on:
- Summarising previous day’s work and coming day’s work
- Intended to foster collaboration
What is a sprint review meeting?
A session where the team shows what they have built during a sprint
Part of a scrum that focuses on:
1. Showcase work: Team shows the features or improvements completed
2. Feedback time: Stakeholders give input on work
3. Adjust plans: Based on feedback, update priorities
4. Collaborative session: Everyone discusses what went well and what could be improved
What are the advantages of OOP?
- Encapsulation/information hiding
- Inheritance
- Polymorphism
What is the difference with OOP in comparison to procedural programming?
Puts code into objects, in contrast to procedural programming where no relationships are defined for each entity.
What should classes in OOP include and how does encapsulation sometimes cause issues?
- Should usually be specified to include only code related to their specific function.
- Encapsulation can cause issues with tightly coupled classes that rely heavily on each other’s members.
- This creates a lot of work in designing functions to access those - members.
- These issues are more common in GUI programming.
Define a Nested Class
Classes defined within classes
What are two types of Nested Class?
- Static nested class
- Inner class