Software Engineering and System Analysis and Design
Core concepts
Know the software development life cycle: requirements, analysis, design, implementation, testing, deployment, and maintenance. Compare process models - waterfall, incremental, spiral, prototype, and agile/Scrum - and when each fits. Understand requirement types (functional versus non-functional), feasibility studies, and elicitation techniques. Study design tools: DFDs (context, level 0, level 1), ER diagrams, UML use case, class, sequence, and activity diagrams, and structured charts. Know cohesion and coupling (high cohesion, low coupling is desirable), modularity, and the difference between verification and validation. Testing levels: unit, integration, system, acceptance; techniques: black-box versus white-box, plus regression testing. Cover version control, configuration management, and maintenance categories.
Traps
A classic trap is mixing up DFD components: processes, data stores, external entities, and data flows - a DFD shows data movement, not control flow. Do not confuse verification (are we building it right?) with validation (are we building the right thing?). Questions often ask which model suits unstable requirements - usually spiral or agile. Remember that a level-0 DFD is also called the context diagram and shows the system as a single process.
Worked example
For a library system, the context diagram shows one process, "Library System", with external entities Member and Librarian, and data flows such as loan request and fine notice. Decompose to level 1 into processes like Issue Book, Return Book, and Calculate Fine, each drawing on data stores Book and Loan. Rule of thumb: external entities never talk directly to data stores; a process must sit between them.