Secure Software Development


🏫 University
📆 2023–2023
👨‍🎓 112

Introduction

The course on “Secure Software Development” is meticulously crafted to provide participants with a comprehensive understanding of the intricacies involved in developing software with a strong emphasis on security. In an era marked by increasing cyber threats and vulnerabilities, this course equips participants with the knowledge and skills necessary to create robust, secure software applications. The curriculum delves into foundational concepts of secure coding practices, encryption methodologies, and threat modeling. Participants will gain insights into identifying and mitigating common vulnerabilities, understanding the principles of secure design, and implementing security best practices throughout the software development lifecycle.

The course adopts a hands-on approach, allowing participants to apply theoretical concepts in practical scenarios. Through real-world case studies, participants will analyze security breaches, dissect the root causes, and implement preventive measures. Additionally, the course covers the integration of security testing into the development process, ensuring that participants are adept at identifying and rectifying security flaws during the various stages of software development. The importance of adhering to industry standards and compliance regulations is also emphasized, providing participants with a holistic perspective on secure software development practices.

Furthermore, the course addresses emerging trends and challenges in the cybersecurity landscape, preparing participants to stay ahead of evolving threats. It fosters a collaborative learning environment where participants can engage in discussions, share insights, and work on practical exercises. Whether participants are seasoned developers looking to enhance their security acumen or individuals new to the field, this course aims to empower them with the skills and knowledge needed to contribute to the creation of resilient and secure software systems. Overall, “Secure Software Development” serves as a crucial foundation for professionals seeking to navigate the complex intersection of software development and cybersecurity.

My role

  • 2023–: Instructor.

Course Learning Objectives

The Course Learning Outcomes (CLOs) for “Secure Software Development” encapsulate the essential competencies students will gain. These include the ability to critically evaluate threats and vulnerabilities, apply security principles, model system artifacts with a focus on threat aspects, apply analysis and testing skills for vulnerability mitigation, and explore new dimensions in secure software development. The CLOs collectively emphasize the course’s commitment to providing students with a comprehensive understanding of secure software development practices.

  • Objective 1. Critically evaluate threats and vulnerabilities, applying essential security principles.
  • Objective 2. Model system artifacts with consideration for threat and vulnerability aspects.
  • Objective 3. Apply analysis and testing skills, focusing on vulnerability and threat perspectives, and implement mechanisms for mitigation.
  • Objective 4. Explore new avenues in secure software development, understanding both strengths and limitations.

Students learn

In the “Secure Software Development” course, students will gain a thorough understanding of fundamental principles and practices in secure software engineering. The curriculum begins with an exploration of secure software development cycles, distinguishing them from regular cycles, and delves into the causes of vulnerabilities, covering faults, problems, threats, and various attack vectors. Frameworks like NIST, CRET, and OWASP are introduced, shedding light on vulnerability concepts at different levels. Students then progress to models for secure software elicitation, system design using UML, misuse cases, and features of vulnerabilities. Threat modeling, attacker modeling, and frameworks such as OWASP, NIST, and CERT are covered extensively, providing insights at the implementation level. Vulnerability assessment and management, including topics like string format, overflow, and DevOps security, are explored in depth. The course also emphasizes the vital role of software testing for system quality and addresses software project risk management and assessment.

  • 1. Introduction to secure software engineering principles and studies.
  • 2. Distinction between secure software development and regular development cycles.
  • 3. Causes of vulnerabilities, including faults, problems, threats, and attack vectors.
  • 4. Exploration of frameworks such as NIST, CRET, and OWASP, highlighting vulnerability concepts.
  • 5. Models for secure software elicitation, system design using UML, misuse cases, and vulnerability features.
  • 6. In-depth coverage of threat modeling, including STRIDE and DREAD alignments.
  • 7. Attacker modeling, identification, and resolution of recurring security issues.
  • 8. Frameworks at the implementation level, such as OWASP, NIST, and CERT.
  • 9. A comprehensive exploration of vulnerability assessment and management, covering topics like string format, overflow, and DevOps security.
  • 9. Emphasis on the crucial role of software testing in ensuring system quality.
  • 10. Addressing software project risk management and assessment.

Course setup

The “Secure Software Development” course is strategically structured to provide students with a comprehensive and hands-on learning experience. The course is divided into modules, each meticulously designed to build upon the previous one, ensuring a seamless progression of knowledge. Assessment is multifaceted, incorporating assignments, exams, and practical lab tasks to gauge both theoretical understanding and practical application. The lab component is particularly integral, allowing students to apply concepts in real-world scenarios, and enhancing their proficiency in secure software development practices. The weighting of assessments is calibrated to reflect the significance of each component, with a focus on continuous engagement and a holistic evaluation of students’ capabilities. The course setup is crafted to instill a thorough understanding of secure software development, combining theoretical knowledge with practical skills for a well-rounded educational experience.

Grading

The course grading for “Secure Software Development” is structured to holistically evaluate students’ performance through various assessment components. Assignments, totaling 3 out of 4, form a substantial part of the assessment, providing students with opportunities to apply theoretical knowledge to practical scenarios. Quizzes, numbering 4 out of 5, contribute to continuous engagement and knowledge retention. The sessional assessment, comprising 1, serves as a benchmark for evaluating students’ understanding of the course material. The project, valued at 1, allows students to showcase their application of secure software development principles in a practical setting. The final exam, carrying significant weight, assesses students comprehensively on the overall course content.

The lab assessment is a crucial element, with assignments (3), quizzes (3), sessional (1), project (1), and lab tasks (10) collectively contributing to the practical evaluation of students’ skills. The final exam in the lab component serves as a comprehensive assessment of practical proficiency. The course grading is meticulously designed to ensure a thorough and fair evaluation, encompassing both theoretical knowledge and practical application.