Sample Answer
Role as System Analyst and Use of Object-Oriented Approach
As a system analyst for the project, my role encompassed understanding user requirements, translating them into functional and technical specifications, and designing a system that aligns with the needs of stakeholders. I acted as the intermediary between end-users and the development team, ensuring that requirements were accurately captured, clarified, and modelled to inform the system design. This involved extensive data gathering through interviews, questionnaires, and observation, followed by the creation of models that accurately represented business processes and system workflows. The goal was to provide a blueprint that developers could use to implement an efficient and scalable system while minimizing ambiguities and risks.
For the system design, I employed the Object-Oriented (OO) approach, which focuses on modelling the system as a collection of interacting objects, each encapsulating data and behaviour. This paradigm allowed me to represent real-world entities as classes, supporting abstraction, inheritance, polymorphism, and encapsulation. I created UML (Unified Modelling Language) diagrams such as use case diagrams to capture functional requirements, class diagrams to model system entities, sequence diagrams to illustrate object interactions over time, and activity diagrams to map workflows and processes. These diagrams facilitated clear communication among stakeholders and the development team, providing a visual representation of system structure and behaviour that is easy to understand and validate.
The OO approach provided multiple benefits. It improved modularity by encapsulating data and behaviour within classes, enabling easier maintenance and future system extensions. Reusability was enhanced through inheritance, allowing common functionality to be shared across classes. The approach also improved the alignment of the system with real-world scenarios, making it more intuitive for users and developers alike. UML diagrams supported precise documentation, served as tools for validation and verification, and facilitated collaborative understanding of complex system interactions.
However, the OO paradigm also has disadvantages. It can introduce complexity in systems with a large number of interacting objects, potentially leading to over-engineering. Initial design and modelling require significant time investment compared to simpler procedural approaches. Moreover, OO systems can demand higher computational resources and may involve a steep learning curve for team members unfamiliar with OO principles (Booch, 2007; Rumbaugh et al., 2010). Despite these drawbacks, the benefits in terms of scalability, maintainability, and alignment with user requirements justify the adoption of the OO approach for our system.
Part B: Lessons Learned, Improvements, and Development Methodology
Through the course of this project, several key lessons were learned. Firstly, the importance of thorough requirement analysis became evident. Early clarification of user needs and expectations significantly reduced redesigns during the development phase. Secondly, visual modelling with UML diagrams proved invaluable in communicating complex system structures and interactions to both technical and non-technical stakeholders. Thirdly, effective time management and iterative validation were essential to ensure milestones were met while maintaining design quality.
If I were to repeat this project, I would place greater emphasis on stakeholder involvement throughout the design process. Engaging users continuously would have allowed for earlier detection of gaps and inconsistencies, reducing potential rework. I would also implement more rigorous version control and documentation practices to track changes systematically and improve collaboration among team members. Additionally, refining the granularity of UML diagrams, particularly sequence and class diagrams, would enhance clarity and reduce ambiguity in the system specification.
Areas for improvement include balancing the complexity of OO design with system simplicity. In some instances, over-engineering resulted in unnecessary classes and interactions. To mitigate this, I would adopt a more pragmatic approach to object modelling, focusing on essential entities and interactions, which would also improve maintainability. I would also incorporate automated validation tools to ensure consistency between UML diagrams and system requirements, reducing manual verification errors.
For the development of the system, an Agile methodology, specifically Scrum, is recommended. Scrum provides iterative development cycles (sprints) that allow continuous feedback, rapid adjustment, and progressive refinement of the system design. Its emphasis on collaboration and incremental delivery aligns well with OO design principles, enabling flexibility to accommodate requirement changes and fostering ongoing stakeholder engagement (Schwaber & Beedle, 2017). Using Scrum, each sprint can focus on implementing a subset of classes and functionality, integrating continuous testing and review, which would enhance quality and responsiveness. The combination of OO modelling and Agile methodology ensures that the system remains adaptable, user-centered, and maintainable, while reducing risks associated with late-stage design changes.