1/154
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Object-Oriented Analysis (OOA)
The first technical activity in object-oriented software engineering, focusing on understanding the problem.
OOA Principle: Information Domain
The system's information is modeled to understand its structure.
OOA Principle: Behavior
The system's reactions to stimuli are represented.
OOA Principle: Function
Describes the functionality within the system.
OOA Advantage: Data Focus
Emphasizes data over procedures, unlike Structured Analysis.
OOA Advantage: Modularity
Helps manage software complexity using modular design.
Object Modeling
Develops static structure through objects, classes, and relationships.
Dynamic Modeling
Describes how objects respond to internal/external events over time.
Dynamic Modeling Step: State Transition Diagrams
Diagrams showing object states and transitions.
Functional Modeling
Shows internal processes and data changes within an object.
Object Model Benefit: Reusability
Supports reuse of objects, designs, and functions.
Object-Oriented Design (OOD)
Converts analysis models into detailed design models.
OOD Layer: Subsystem Layer
Defines major components to meet user requirements.
OOD Layer: Class & Object Layer
Represents class hierarchies and objects.
OOD Layer: Message Layer
Handles communication between objects.
OOD Layer: Responsibilities Layer
Specifies attributes and operations of objects.
Object-Oriented Programming (OOP)
A model centered around objects rather than logic.
OOP Benefit: Collaboration
Supports team development via modular design.
Class
Blueprint for objects; defines attributes and methods.
Object
Instance of a class with unique attributes and behavior.
Method
A function within a class defining object behavior.
Attribute
Stores the object's state; defined in the class.
Subclass
Inherits from a superclass; specializes behavior.
Superclass
Base class with shared attributes and methods.
Association
Relationship showing communication between classes.
Multiplicity
Indicates number of objects in a relationship.
Associative Class
Association with attributes or relationships.
Generalization
Combines shared traits into a superclass.
Aggregation
Whole-part relationship; parts can exist independently.
Composition
Strong aggregation; parts die with the whole.
Encapsulation
Bundles data and methods; restricts outside access.
Abstraction
Hides internal details, shows only essential parts.
Inheritance
Reuses logic by deriving new classes from existing ones.
Polymorphism
Objects share behaviors and take multiple forms.
Bottom-Up Approach
Builds systems from detailed parts to the whole.
OOP Feature: Reusability
New classes can extend existing ones.
XP Core Values
Communication, Simplicity, Feedback, Courage, Respect.
When to Use XP
Dynamic requirements, fixed-time projects with new technology, small co-located teams, and support for automated testing.
XP Practices
The Planning Game, small releases, system metaphor, simple design, testing, refactoring, pair programming, collective code ownership, continuous integration, 40-hour work week, on-site customer, coding standards.
Roles in XP
Developer, Manager (Tracker), Coach.
Extreme Programming (XP)
An agile software development framework aiming to produce high-quality software and improve the development team's quality of life.
XP Values
Communication, Simplicity, Feedback, Courage, Respect.
Communication (XP Value)
Prioritizes face-to-face discussions with visual aids (e.g., whiteboards) to transfer knowledge within the team.
Simplicity (XP Value)
Focuses on the simplest solution that works, avoiding unnecessary complexity and future predictions.
Feedback (XP Value)
Continuous input to improve designs, implementation, and team practices.
Courage (XP Value)
Addressing organizational issues, stopping ineffective practices, and acting on feedback.
Respect (XP Value)
Mutual respect among team members to foster collaboration and effective communication.
Dynamically Changing Requirements
XP is suitable when software requirements frequently evolve.
Fixed-Time Projects with New Technology
Mitigates risks in time-constrained projects using unfamiliar tech.
Small Co-Located Teams
Ideal for small, physically close teams.
Automated Testing Support
Requires technology that allows automated unit/functional tests.
The Planning Game
Business prioritizes user stories; developers estimate effort and schedule iterations.
Small Releases
Deliver minimal useful features early and iterate frequently.
System Metaphor
A shared naming convention/story to guide system design.
Simple Design
Design must pass tests, communicate intent, avoid duplication, and minimize components.
Testing
Developers write unit tests; customers define acceptance tests.
Refactoring
Continuously improve code structure without changing functionality (backed by tests).
Pair Programming
Two developers work together at one machine for real-time code review.
Collective Code Ownership
Any developer can modify any code to improve it.
Continuous Integration
Integrate and test code multiple times daily; discard changes if tests fail.
40-Hour Work Week
Avoid overtime to maintain sustainability and productivity.
On-Site Customer
A customer works full-time with the team to clarify requirements.
Coding Standards
Uniform code style to ensure consistency and anonymity of authorship.
Developer (Programmer)
Writes code, tests, refactors, and integrates continuously. Key rights: clear priorities, quality work, self-estimation.
Customer
Defines user stories, writes acceptance tests, sets priorities, and communicates requirements.
Manager (Tracker)
Facilitates planning, monitors progress, tracks defects, and ensures adherence to schedules.
Coach
Guides the team in XP practices, identifies problems, and ensures self-reliance.
Unit Tests
Automated tests by developers for individual code components.
Acceptance Tests
Customer-defined tests to validate system functionality.
Scrum Principles
Transparency – Everyone is aware of each other’s challenges to prevent miscommunication and bottlenecks.
Reflection – Frequent reviews help assess progress and guide future planning.
Adaptation – Tasks can be reprioritized based on changing customer requirements.
Scrum Values
Commitment – Team members are dedicated to achieving goals and continuous improvement.
Courage – Members are encouraged to ask honest, challenging questions.
Focus – Teams concentrate on selected tasks from the Product Backlog during a Sprint.
Openness – Willingness to explore new ideas and promote learning.
Respect –
Scrum Artifacts
Product Backlog – A dynamic list of features, fixes, and requirements maintained by the Product Owner.
Sprint Backlog – Tasks selected from the Product Backlog to be completed in the current Sprint.
Increment – The usable product or result delivered at the end of a Sprint.
Scrum Roles
Product Owner – Ensures the development team delivers maximum value and prioritizes customer needs.
Scrum Leader (Scrum Master) – Coaches the team, facilitates meetings, and ensures the team follows Scrum processes.
Development Team – Cross-functional team members who collaborate to complete Sprint tasks.
Scrum Events
Regular meetings including :
Planning – The team estimates and plans what can be achieved in the upcoming Sprint.
Sprint – A fixed time frame (typically 2 weeks) where a deliverable is developed.
Daily Scrum (Stand-up) – A short meeting to review daily progress and challenges.
Sprint Review – Informal meeting to showcase work and gather feedback from stakeholders.
Sprint Retrospective – Reflective meeting to discuss what went well and what can be improved.
Importance of Scrum in Software Development
Maintain Quality – Quality checks and iterative reviews ensure high standards.
Increased ROI – Prioritization and early feedback reduce defects and costs.
Happier Teams – Self-managed teams boost creativity and morale.
Better Estimation – Teams choose and refine metrics to predict time and budget more effectively
Scrum vs. Agile
Agile – A mindset promoting continuous improvement and customer value.
Scrum – A specific Agile framework with defined roles, events, and artifacts..
Benefits of a Scrum Team
Scrum enables simultaneous work, clear workflows, better ROI, and higher team morale through structure and autonomy.
Scrum
A management framework that teams use to self-organize and work towards a common goal using defined meetings, tools, and roles.
Scrum Guide
A comprehensive reference co-created by Jeff Sutherland and Ken Schwaber outlining how to apply Scrum effectively.
Transparency
Everyone is aware of each other’s challenges to prevent miscommunication and bottlenecks.