Module aims: To provide the learner with an understanding of Software Engineering concepts in the design of computational software To provide the learner with a working knowledge of the C programming language and software development tools To enable the learner to work in software development team projects, with special application to computational design material learned throughout the module.
C programming: Revision of C programming language: Variables. Operators. Flow of control. Screen and file I/O. Functions. structs. pointers. Development of these techniques: dynamic data, data structures.
Programming large projects: Software development lifecycles: waterfall, evolutionary, prototyping, V lifecycle. Programming and debugging multi-file applications.
Software Engineering tools and techniques: A closer look at the V lifecycle. Requirements modelling: the software requirements spec and acceptance test plan. Architectural design: encapsulation, structural and behavioural modelling. Component design: coupling and cohesion. Code generation: object libraries, conditional compilation.
Software testing: Unit testing: why and how. Integration testing: test stubs and harnesses. Bottom-up and top-down integration. System testing: black-box testing. Acceptance testing
C programming: Revision of C programming language: Variables. Operators. Flow of control. Screen and file I/O. Functions. structs. pointers. Development of these techniques: dynamic data, data structures.
Programming large projects: Software development lifecycles: waterfall, evolutionary, prototyping, V lifecycle. Programming and debugging multi-file applications.
Software Engineering tools and techniques: A closer look at the V lifecycle. Requirements modelling: the software requirements spec and acceptance test plan. Architectural design: encapsulation, structural and behavioural modelling. Component design: coupling and cohesion. Code generation: object libraries, conditional compilation.
Software testing: Unit testing: why and how. Integration testing: test stubs and harnesses. Bottom-up and top-down integration. System testing: black-box testing. Acceptance testing