The security risks related to programming languages are examined in-depth in this module from the viewpoints of design and architecture approaches, programming paradigms, testing, the influence and implications of operating systems and libraries on software development, the security risks related to distributed systems and APIs, and future trends in secure software and system design. The idea of the closed software development life cycle will be present across these subjects. This module is more intensive since it allows students to put the essential concepts they have learned in earlier modules into practice.
● Acquire a critical understanding of the concept of abstraction in programming.
● Develop an understanding of the basic principles of secure development methodologies.
● Explore how to undertake analysis, program design, software construction and testing required for software development.
● Demonstrate an understanding of the basic principles of architecture, as well as traditional and contemporary Software Development Life Cycle (SDLC) models, such as TOGAF and Agile.
● The ability to put into practice the techniques learned in a team environment, demonstrating how to deal with conflicts and how to make compromises, and be able to critically evaluate the effectiveness of the approaches.
● Utilise the opportunity to reflect on and evaluate your own personal development.
1. Identify and manage security risks as part of a software development project.
2. Critically analyse development problems and determine appropriate methodologies, tools and techniques (including program design and development) to solve them.
3. Design and develop/adapt computer programs and to produce a solution that meets the design brief and critically evaluate solutions that are produced.
4. Systematically develop and implement the skills required to be effective member of a development team in a virtual professional environment, adopting real-life perspectives on team roles and organisation.
Codio: Equivalence Testing in Python