1. I agree with using Extreme Programming (XP) for this project, because:
- Main practices of XP align well:
+ Pair programming: Our team has 3–5 experienced developers, making this very effective.
+ Test-driven development (TDD): Fits perfectly since we need frequent testing from small to large units.
+ Continuous integration: Helps us handle changes easily, which is important since requirements might evolve.
+ Small releases: XP supports fast iterations, which matches our 3–6 month release target.
+ Collective code ownership: Boosts team productivity, anyone can fix/improve code without waiting.
+ Coding standards: Keeps our codebase clean and maintainable.
+ Sustainable pace (40-hour week): Prevents burnout and ensures consistent delivery quality.
+ On-site customer: We have direct support from department staff who can answer questions immediately.
- Project characteristics:
+ It's a brand-new system → XP is ideal for new development projects.
+ Requirements are likely to change → XP is built for flexibility.
+ The team is experienced → XP expects mature developers.
+ We need fast results → XP encourages frequent, working releases.
For the above reasons, Extreme Programming (XP) is a very good fit for this project.
2. - Unit Testing: Focuses on verifying the program’s internal structure (individual modules).
+ Unit Tests → based on code.
- Integration Testing and System Testing: Focus on verifying the system’s functional requirements.
+ Integration Test: Test the integration between modules.
+ System Test: Test the entire system according to the function.
3. Functional Requirements:
- Customers can select types of steel and place an order.
- Customers can track their order status.
- Customers can track payment status for their orders.
- Customers can view their order history.
- Sales staff can accept or reject customer orders.
Security Requirements:
- Sensitive information like customer details and payments must be encrypted.
- User activities must be logged for tracking and auditing purposes.
Performance Requirement:
- The system should efficiently manage large datasets, optimizing memory and CPU usage.
Usability Requirements:
- Users should be able to use the system by simply reading a manual, without needing a training course.
- Training time for users should be close to zero.