This topic covers the classification and purpose of systems and application software, including operating system functions like memory management and sched
Topic Synopsis
This topic covers the classification and purpose of systems and application software, including operating system functions like memory management and scheduling. It also explores software development methodologies, such as waterfall and agile, and the characteristics of various programming paradigms including procedural and object-oriented languages.
Key Concepts & Core Principles
- Software development lifecycle (SDLC): The stages of analysis, design, implementation, testing, evaluation, and maintenance that guide the creation of software.
- Waterfall vs. agile methodologies: Waterfall is a linear, sequential approach where each stage must be completed before the next begins; agile is iterative, with frequent feedback and adaptation.
- Programming paradigms: Procedural (step-by-step instructions), object-oriented (using objects and classes), and event-driven (responding to user actions or system events).
- System vs. application software: System software manages hardware and provides a platform for applications (e.g., operating systems, drivers); application software performs specific tasks for users (e.g., spreadsheets, browsers).
- Testing strategies: Unit testing (individual components), integration testing (combined modules), and acceptance testing (meeting user requirements).
Exam Tips & Revision Strategies
- Be prepared to compare different scheduling algorithms in terms of efficiency and fairness
- Ensure you can explain the purpose of virtual machines in executing intermediate code
- Practice tracing assembly language programs using the Little Man Computer (LMC) instruction set
- Use clear, technical terminology when describing the stages of the compilation process
- When discussing software development, focus on the relative merits and drawbacks of each methodology
Common Misconceptions & Mistakes to Avoid
- Confusing the roles of linkers and loaders
- Misunderstanding the difference between paging and segmentation
- Failing to justify the choice of a specific software development methodology for a given scenario
- Incorrectly identifying the stages of compilation in the correct order
- Confusing object-oriented concepts like inheritance and polymorphism
Examiner Marking Points
- Functions of operating systems including memory management (paging, segmentation, virtual memory)
- Role of interrupts and Interrupt Service Routines (ISR) in the Fetch-Decode-Execute cycle
- Scheduling algorithms: round robin, first come first served, multi-level feedback queues, shortest job first, shortest remaining time
- Distinction between open source and closed source software
- Stages of compilation: lexical analysis, syntax analysis, code generation, and optimisation
- Comparison of software development methodologies: waterfall, agile, extreme programming, spiral model, and rapid application development
- Characteristics of programming paradigms: procedural, assembly, and object-oriented (classes, objects, methods, attributes, inheritance, encapsulation, polymorphism)