University of Technology Sydney

41128 Software Analysis Studio

Warning: The information on this page is indicative. The subject outline for a particular session, location and mode of offering is the authoritative source of all information about the subject for that offering. Required texts, recommended texts and references in particular are likely to change. Students will be provided with a subject outline once they enrol in the subject.

Subject handbook information prior to 2024 is available in the Archives.

UTS: Engineering: Computer Science
Credit points: 12 cp

Subject level:

Undergraduate

Result type: Grade and marks

Requisite(s): 31251 Data Structures and Algorithms
Anti-requisite(s): 41094 Software Engineering Studio 1B

Description

Software systems, which are deeply rooted in a wide range of industries and businesses, are so pervasive that we are often unaware of their presence until software bugs occur. A single bug can cause critical software failures, resulting in huge social and economic impacts. Despite the increasing attention and efforts in improving software reliability and security, modern complex systems (e.g., containing millions of lines of code) are still plagued with bugs.

This subject develops automated software analysis techniques, based on an open-source framework, to understand and discover common yet important software bugs and defects in software systems. Through this subject, students have the opportunity to apply and practise their system programming skills and software development experience. Particularly, the students design and develop automated code analysis tools to understand, discover and detect programming errors to improve software quality. Students are assessed on their technical capabilities, their understanding of software analysis via open-source software development, their communication skills in speaking and writing, and on their team-working skills.

Subject learning objectives (SLOs)

Upon successful completion of this subject students should be able to:

1. Discuss the role of software analysis in delivering safe and reliable software systems to satisfy social needs. (B.1)
2. Design and develop software analysis tools. (C.1)
3. Demonstrate a range of software analysis techniques. (D.1)
4. Demonstrate effective communication and collaboration skills within a software team. (E.1)
5. Reflect on performance to demonstrate continual improvement. (F.1)

Course intended learning outcomes (CILOs)

This subject also contributes specifically to the development of the following Course Intended Learning Outcomes (CILOs):

  • Socially Responsible: FEIT graduates identify, engage, interpret and analyse stakeholder needs and cultural perspectives, establish priorities and goals, and identify constraints, uncertainties and risks (social, ethical, cultural, legislative, environmental, economics etc.) to define the system requirements. (B.1)
  • Design Oriented: FEIT graduates apply problem solving, design and decision-making methodologies to develop components, systems and processes to meet specified requirements. (C.1)
  • Technically Proficient: FEIT graduates apply abstraction, mathematics and discipline fundamentals, software, tools and techniques to evaluate, implement and operate systems. (D.1)
  • Collaborative and Communicative: FEIT graduates work as an effective member or leader of diverse teams, communicating effectively and operating within cross-disciplinary and cross-cultural contexts in the workplace. (E.1)
  • Reflective: FEIT graduates critically self-review their performance to improve themselves, their teams, and the broader community and society. (F.1)

Contribution to the development of graduate attributes

Engineers Australia Stage 1 Competencies

This subject contributes to the development of the following Engineers Australia Stage 1 Competencies:

  • 1.2. Conceptual understanding of the mathematics, numerical analysis, statistics, and computer and information sciences which underpin the engineering discipline.
  • 1.3. In-depth understanding of specialist bodies of knowledge within the engineering discipline.
  • 1.5. Knowledge of engineering design practice and contextual factors impacting the engineering discipline.
  • 2.2. Fluent application of engineering techniques, tools and resources.
  • 2.3. Application of systematic engineering synthesis and design processes.
  • 2.4. Application of systematic approaches to the conduct and management of engineering projects.
  • 3.2. Effective oral and written communication in professional and lay domains.
  • 3.5. Orderly management of self, and professional conduct.
  • 3.6. Effective team membership and team leadership.

Teaching and learning strategies

The focus of this studio-based subject is on the practical side to encourage students to build open-source tools for software analysis. In small self-managed teams, students are guided through the early stages of team formation and agile project planning before adopting greater autonomy for the remainder of the project. Teams are aided and guided by tutors knowledgeable about and experienced in software development.

To encourage peer learning, all teams formally critique the work of another team at significant stages during the project life cycle. To encourage high technical standards, high achievement and peer learning, all teams develop a system from specified requirements but are free to decide how those requirements can be implemented to achieve greater customer satisfaction.

Tutors provide weekly feedback about progress, intended activities and achievements to date. Formal assessment of the project outcomes and deliverables occurs at mid-term and end of term. Early term team formation and skill development activities provide opportunities for feedback about essential team and technical skills. Students are also expected to participate in peer evaluations of teamwork via SparkPLUS. Students are encouraged to attend all studio sessions to facilitate collaboration and peer learning.

Content (topics)

  1. Software engineering environments and tools
  2. Software construction
  3. Software analysis and testing
  4. Project planning and management
  5. Applying system programming skills
  6. Open-source software development

Assessment

Assessment task 1: Mini Project

Intent:

To practice coding and debugging skills and make necessary preparations for developing a software analysis tool in later assessments.

Objective(s):

This assessment task addresses the following subject learning objectives (SLOs):

2 and 3

This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs):

C.1 and D.1

Type: Project
Groupwork: Individual
Weight: 15%
Length:

Well-documented software tool

Assessment task 2: Software Analysis through Open Source Development - Part 1

Intent:

To understand open-source development methodology and to apply compiler fundamentals for source code analysis.

Objective(s):

This assessment task addresses the following subject learning objectives (SLOs):

2, 3 and 4

This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs):

C.1, D.1 and E.1

Type: Project
Groupwork: Individual
Weight: 25%
Length:

Well-documented software tool

Assessment task 3: Software Analysis through Open Source Development - Part 2

Intent:

To validate the quality and correctness of the developed software analysis tool based on the requirements.

Objective(s):

This assessment task addresses the following subject learning objectives (SLOs):

2, 3 and 4

This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs):

C.1, D.1 and E.1

Type: Project
Groupwork: Individual
Weight: 30%
Length:

Well-documented software tool

Assessment task 4: Software Analysis through Open Source Development - Part 3

Intent:

Prepare open-source software analysis tool and user manual to be evaluated by stakeholders for quality of the tool.

Objective(s):

This assessment task addresses the following subject learning objectives (SLOs):

1, 2, 3, 4 and 5

This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs):

B.1, C.1, D.1, E.1 and F.1

Type: Project
Groupwork: Group, individually assessed
Weight: 30%
Length:

Well-documented software tool

Minimum requirements

To pass the subject, a student must achieve an overall mark of 50% or more.

Recommended texts

Static Value-Flow Analysis Framework for Source Code, https://github.com/SVF-tools/SVF Compilers: Principles, Techniques, and Tools Hardcover, https://www.amazon.com.au/Compilers-Alfred-V-Aho/dp/0321486811

LLVM Compiler, https://llvm.org/

Anders Møller and Michael I. Schwartzbach, Static Program Analysis, https://cs.au.dk/~amoeller/spa/spa.pdf