TK Study

Software Engineering › Notes › The Software Engineering Project (Year 12)

The Software Engineering Project (Year 12)

Define and analyse the requirements of a problem

Implementation (conversion) methods

Waterfall

Agile

WAgile (hybrid) and Waterfall v Agile comparison

Project management, communication and ethics

Modelling tools: DFD, structure charts, storyboards, flowcharts, class diagrams

Data dictionary

Quality assurance, testing methods and test data

Debugging tools and error types

Maintenance, version control, stubs and drivers, optimisation

Skeleton: Compare two methods (Waterfall v Agile or implementation methods) (4-5 marks)

Skeleton: Justify an implementation method or approach for a scenario (5 marks)

Part 2. School notes (Canvas, 12SENX2) by syllabus dot point

Corrections are marked in the text. Anything not marked is the school wording.

Define and analyse the requirements of a problem, including demonstrating need(s) or opportunities, assessing scheduling and financial feasibility, generating requirements including functionality and performance, defining data structures and data types and defining boundaries.

The process of defining and analysing a problem's requirements is critical because it influences the project's outcome. Requirements are a system's specific features to solve a problem. They provide clear, measurable goals to guide development and ensure the system meets user needs and can be tested for success.

Step 1: Demonstrating Needs or Opportunities

Why is the project needed?

Questionnaires to gather input from a wide range of users.

Observations of current systems or processes to pinpoint inefficiencies.

Step 2: Scheduling and Feasibility

By assessing both scheduling and financial feasibility, the development team ensures that the project remains within scope and can be delivered on time and within budget.

Scheduling feasibility - estimating the duration of the project, Gantt Chart

Financial feasibility – estimating developmental costs and comparing them with the budget.

Step 3: Generating Requirements

Specific requirements in terms of functionality and performance should be generated and documented in a software requirements specification (SRS), which will be a reference throughout the development process.

Functional requirements describe the specific actions the system must perform.

Performance requirements specify how well the system should perform these functions.

E.g.: Speed, Reliability, Scalability

Step 4: Data Structures and Data Types

Defining the data structures and types is essential for fast, efficient, reliable data management and processing.

E.g.: Product names are strings and quantities are integers in an inventory management system.

Defining Boundaries

Defining a system's boundaries controls the project's scope, preventing scope creep and added expenses.

Explore tools used to develop ideas and generate solutions, including brainstorming, mind-mapping and storyboards, data dictionaries, selecting appropriate data types, algorithm design, code generation, testing and debugging, installation, and maintenance.

Brainstorming, mind-mapping and storyboards

Brainstorming helps generate ideas and explore potential solutions. It involves team members contributing their thoughts freely. Mind mapping allows developers to structure information non-linearly, showing how different concepts are connected.

Algorithm Design

Algorithm design involves creating step-by-step instructions to solve a specific problem. Effective algorithms are designed to be both efficient and scalable.

Code Generation

Code generation is the process of translating the algorithm or system design into actual code in a programming language.

Testing and Debugging

Testing involves running the program under various conditions to identify any issues or bugs.

Unit testing: Testing individual components or functions.

Integration testing: Ensuring that different modules of the system work together correctly.

System testing: Testing the entire system to verify that it meets the requirements.

Installation

Installation is the process of transferring the software from the development environment to the end-user environment. It often involves setting up databases and configuring hardware. Thorough documentation and testing of the installation process are essential to ensure the system works as intended in the target environment.

Maintenance

Maintenance is the ongoing process of updating and improving the software after its installation. Effective maintenance ensures the software meets user needs and remains relevant in a changing technological landscape.

Corrective maintenance: Fixing problems or defects that arise post-deployment.

Adaptive maintenance: Updating the software to work in a new or changing environment (e.g., when hardware or operating systems are updated).

Perfective maintenance: Enhancing or adding new features to improve performance or functionality.

Investigate types of software implementation methods, including direct, phased, parallel, and pilot.

Direct

In direct conversion, the old system is entirely replaced by the new system at a specific time. This is used when it is impractical to operate both systems simultaneously.

Parallel

Parallel conversion involves running both the old and new systems simultaneously for a period.

Phased

In phased conversion, the new system is introduced gradually, often in stages. As parts of the new system are implemented, the corresponding parts of the old system are removed.

Pilot

The pilot conversion method involves installing the new system for a small group of users before rolling it out to the entire organisation. This allows the system to be tested in a real-world environment, providing valuable feedback to developers and ensuring that any issues are addressed before full-scale implementation. The pilot users can also assist in training others when the system is eventually rolled out.

Used for new or highly complex systems where there is uncertainty about how the system will perform under real-world conditions. It limits the impact of any issues to a small group.

E.g.: A new ticketing system for a travelling circus could be piloted at a single location to ensure it works properly before being used across all venues.

Research and use the Waterfall software development approach, including logical progression of steps used throughout the life cycle, stages of ‘falling water’, advantages and disadvantages and scale and types of developments.

Refer to the above notes.

The Waterfall approach is a traditional, linear methodology where each phase of the project must be completed before moving on to the next.

Advantages

The clear linear structure is easy to follow and manages large teams with different skill sets, as each team knows precisely what is expected at each stage.

The developers and stakeholders have a shared understanding of the project's goals, where requirements are fully documented before the project starts.

A structured approach ensures every aspect of a large-scale project is meticulously planned and executed.

Disadvantages

Inflexibility: it is difficult to go back and make changes without causing delays and increasing costs.

Late Testing: Issues or defects may not be discovered until the completion of the developmental phase.

Poor Adaptation to changes in requirements

Longer timeframes because of the sequential nature of the Waterfall

Scale and Types of Developments

The Waterfall approach is typically used for large-scale and complex projects where the requirements are well understood from the outset and unlikely to change. These projects involve significant time, money, and resources, and usually have strict performance, safety, or regulatory requirements.

E.g.:

Aviation software that requires extensive testing and validation is well-suited to Waterfall due to its structured, rigorous testing phase.

Research and use the Agile software development approach, including the rate of developing a final solution, method tailoring, iteration workflow, and scale and types of development.

Agile is a flexible and iterative approach to software development that focuses on delivering small, functional increments of a solution quickly while continuously adapting to changes based on user feedback and collaboration.

Rate of Development

Agile is fast at delivering working versions of solutions through fast iterations. Each iteration focuses on delivering a functional increment of the software, allowing the team to respond quickly to changing requirements or feedback.

Method Tailoring

Method tailoring refers to the flexibility Agile offers in adapting its developmental process to suit the project's unique demands rather than adhering to rigid guidelines.

Agile includes a variety of frameworks with flexibility in their cores. By mixing frameworks, the developmental process can be customised.

Iteration Workflow

Agile development is conducted through short, repeatable development stages called iterations. Each iteration results in a working software version that stakeholders can test, review, and evaluate.

Planning

Design and Development

Testing

Feedback and Evaluation

Iterative Cycle

Scale and Types of Developments

Agile is highly adaptable and can be applied to both small and large-scale projects

Small Projects: The flexibility of small teams allows for quick decision-making and fast adaptation to change.

Large Projects: Agile can be applied by breaking the project down into smaller, self-organising teams focusing on a component or feature of the larger system.

E.g.:

Research the WAgile software development approach, including understanding it is a hybrid model, analysis of the ‘when’ and ‘how’ intervention is applied during the development life cycle, and scale and types of developments.

WAgile is a hybrid software development approach that combines the structured, linear nature of the Waterfall methodology with the flexible, iterative elements of the Agile methodology.

Understanding WAgile as a Hybrid Model

WAgile combines the predictability of Waterfall with the adaptability of Agile. WAgile integrates both by starting with the structured planning and documentation from the Waterfall approach, which provides clarity and a roadmap for the project. Then, Agile’s iterative development cycles are incorporated into the later stages of development, allowing for flexibility, regular feedback, and adaptation to change. This makes WAgile suitable for projects that need a balance between formal planning and flexibility in execution.

When and How Intervention Is Applied During the Development Lifecycle

When How
Initial Planning Phase Pre-planned reviews Flexible intervention at end of each cycle
Iterative Phase Early structured checkpoints Daily stand-ups, sprint reviews

Scale and Types of Developments

WAgile is suited to medium- to large-scale projects where both structure and flexibility are needed. The hybrid approach works well when the project’s requirements are well-defined upfront, but are expected to change during the development process.

Small-scale projects: WAgile’s overhead of initial planning may be excessive.

E.g.:

Apply project management to plan and conduct the development and implementation of a project and software engineering solution, including scheduling and tracking using a software tool, including Gantt charts, using collaboration tools.

Project Management Tools

System Modelling Tools

Explore social and ethical issues associated with project work, including working individually, collaboratively and responding to stakeholders.

Working Individually [Ethical]

Without input from others, individuals allow personal biases to influence the design and implementation of the project, potentially overlooking vital details. Ethically, it’s important to challenge one's assumptions and seek feedback from external sources when necessary.

Working Collaboratively [Ethical]

An ethical approach to teamwork involves ensuring that tasks are distributed fairly among team members based on their skills and capacities.

Responding to Stakeholders [Ethical]

Ethical project management requires prioritising the needs and safety of users, ensuring that the software does not harm them or compromise their privacy and data.

Explore communication issues associated with project work, including involving and empowering the client, enabling feedback, and negotiating.

Involving and Empowering the Client

Involving the client early and consistently ensures that the final product aligns with their vision and needs. It also enhances the client’s trust in the project team and allows for smoother collaboration.

Strategies to Empower the Client

Provide the client with detailed project plans, timelines, and updates

Regularly delivered prototypes help clients visualise progress and meet their needs.

Visibly act on Feedback

Negotiating

Negotiation plays a key role in resolving conflicts and ensuring that both the client and the development team are satisfied with the project's direction, helping balance the client’s desires with the realities of development.

Effective Negotiation Techniques

Understand Both Sides

Focus on Solutions

Be Transparent

Set Clear Boundaries

Any negotiated changes to the project should be documented

Investigate how software engineering solutions are quality assured, including defining criteria on which quality will be judged, ensuring requirements are met using a continual checking process, addressing compliance and legislative requirements.

Quality Assurance (QA) is a systematic process that ensures a software product meets defined quality standards. QA also addresses legal and regulatory compliance, ensuring the software is functional, safe, and lawful.

E.g.: QA of a mobile application would test key performance metrics such as scalability against the requirement definition.

Part 3. Where this has been examined (see ../../question_bank.md)

ID Marks Source Topic / type
hsc2025-q1 1 2025 HSC Implementation methods (multiple choice)
hsc2025-q2 1 2025 HSC Software development approaches (dropdown (fill in blanks))
hsc2025-q4 1 2025 HSC Optimisation (multiple choice)
hsc2025-q14 1 2025 HSC Data structures (dropdown (fill in blanks))
hsc2025-q15a 3 2025 HSC Data dictionary (dropdown (data dictionary))
hsc2025-q15b 3 2025 HSC Testing and debugging (short answer)
hsc2025-q17 3 2025 HSC Algorithm design (pseudocode)
hsc2025-q22 3 2025 HSC Modelling tools (drawing (class diagram))
hsc2025-q26 5 2025 HSC Design, construct and implement a solution (Python) (Python)
sample-q1 1 Sample Exam Software development steps (multiple choice)
sample-q4 1 Sample Exam Collaboration (multi-select)
sample-q5 1 Sample Exam Implementation methods (drag and drop (match))
sample-q7 1 Sample Exam Python to pseudocode (multiple choice)
sample-q9 2 Sample Exam Algorithm design (guessing game) (drag into order (algorithm))
sample-q10 2 Sample Exam Structure charts (multi-select (structure chart))
sample-q11 3 Sample Exam Testing (test data) (table (test data))
sample-q14 3 Sample Exam Algorithm design (subroutines) (pseudocode)
sample-q21a 1 Sample Exam 2D arrays (Python) (multiple choice (Python))
sample-q21b 5 Sample Exam Python: subroutines, lists, loops (Python (subroutines, 2D list))
sample-q24 4 Sample Exam Modelling tools (class diagram) (drawing (class diagram))
fam-q4 2 Familiarisation Structure charts (multi-select (structure chart))
fam-q5 3 Familiarisation Testing (test data) (table (test data))
fam-q8 3 Familiarisation Algorithm design (linear search) (pseudocode (fix algorithm))
fam-q9a 3 Familiarisation Prototype and user interface design (drawing (user interface))
fam-q13 6 Familiarisation Python: lists, loops, selection (Python)
sdd2021-q22 3 Old SDD (old syllabus) Testing (live test data) (short answer / extended)
sdd2021-q24 3 Old SDD (old syllabus) Documentation (log book) (short answer / extended)
sdd2021-q26 4 Old SDD (old syllabus) Algorithm design (guessing game) (short answer / extended)
sdd2021-q28 5 Old SDD (old syllabus) Debugging an algorithm (binary search) (short answer / extended)
sdd2021-q29 3 Old SDD (old syllabus) Tracing an algorithm (linear search) (short answer / extended)
sdd2021-q30 4 Old SDD (old syllabus) Algorithm design (string matching) (short answer / extended)
sdd2022-q22 6 Old SDD (old syllabus) Maintenance (short answer / extended)
sdd2022-q25 11 Old SDD (old syllabus) Development approach, implementation, testing, quality of experience (extended)
sdd2022-q27 10 Old SDD (old syllabus) Modelling and design (IPO, data structure, Gantt) (extended)
sdd2022-q28 6 Old SDD (old syllabus) Desk check and debugging an algorithm (short answer / extended)
sdd2022-q29 3 Old SDD (old syllabus) Data types (short answer / extended)
sdd2022-q30 5 Old SDD (old syllabus) Algorithm design (arrays) (short answer / extended)
sdd2023-q21 2 Old SDD (old syllabus) Prototypes (short answer / extended)
sdd2023-q22 3 Old SDD (old syllabus) Communication with clients; development cycle (short answer / extended)
sdd2023-q26 9 Old SDD (old syllabus) Code reading, maintainability and testing (extended)
sdd2023-q27 10 Old SDD (old syllabus) User interface, structure chart, quality assurance (extended)
sdd2023-q28 6 Old SDD (old syllabus) Desk check and debugging (validation) (short answer / extended)
sdd2023-q30 3 Old SDD (old syllabus) Algorithm design (menu) (short answer / extended)
sdd2023-q32 8 Old SDD (old syllabus) Test data and algorithm design (date validation) (short answer / extended)
sdd2024-q21 6 Old SDD (old syllabus) Teams and Gantt charts (short answer / extended)
sdd2024-q22 11 Old SDD (old syllabus) Documentation, data dictionary, testing (shopkeeper website) (extended)
sdd2024-q23 6 Old SDD (old syllabus) Desk check and debugging an algorithm (short answer / extended)
sdd2024-q24 10 Old SDD (old syllabus) Social and ethical issues (extended)
sdd2024-q25 4 Old SDD (old syllabus) Documentation (short answer / extended)
sdd2024-q26 6 Old SDD (old syllabus) Context diagram; subroutines (short answer / extended)
sdd2024-q27 3 Old SDD (old syllabus) Reading and modifying an algorithm (short answer / extended)
sdd2024-q28 3 Old SDD (old syllabus) Debugging output statements v breakpoints (short answer / extended)
sdd2024-q30 7 Old SDD (old syllabus) Algorithm design (random allocation); testing with stubs (short answer / extended)