跳至內容

NSW HSC Software Engineering

HSC · NESAComputer Science46 則筆記,位於 4 個資料夾,275 KB

cookie 製作的 NESA HSC Computer Science 考試準備筆記,共 46 篇,分為 4 個部分,依照課程主題編排。

Notes for NSW HSC Software Engineering (NESA), in folders for the four Year 12 focus areas in the syllabus's order: Secure software architecture, Programming for the web, Software automation and the Software engineering project. They follow the Software Engineering 11-12 Syllabus (2022), with worked code in Python, pseudocode and SQL, and one note per group of related syllabus points.

新增後,這些筆記的副本會放進你的筆記中,並建立自己的資料夾及下方的資料夾,方便你修改,並轉成字卡或題目牌組。下載會取得一個包含 Markdown 檔案的 zip,任何筆記應用程式都能開啟。

內容

  • Secure software architecture
    • Designing secure software6 KB
    • Security concepts and features6 KB
    • Cryptography and sandboxing6 KB
    • Security by design and privacy by design4 KB
    • Testing resilience and handling breaches5 KB
    • Managing the security of code5 KB
    • Defensive input handling5 KB
    • Safe APIs5 KB
    • Efficient execution: memory, session and exception management6 KB
    • User action controls7 KB
    • File attacks and side channel attacks6 KB
    • Collaboration and benefits to an enterprise5 KB
    • Social, ethical and legal issues of safe and secure software6 KB
  • Programming for the web
    • Applications of web programming5 KB
    • How data moves on the internet5 KB
    • Web protocols and ports6 KB
    • Securing the web6 KB
    • Big data and web architecture5 KB
    • The World Wide Web Consortium5 KB
    • Front end, back end and the browser6 KB
    • CSS and front-end libraries6 KB
    • Version control and open-source software5 KB
    • Load times and content management systems5 KB
    • The back end and a web request6 KB
    • Databases: SQL, ORM and non-SQL8 KB
    • Designing a progressive web app6 KB
  • Software automation
    • Automation: DevOps, RPA and BPA6 KB
    • Artificial intelligence, machine learning and how models learn5 KB
    • Applications and models: decision trees and neural networks7 KB
    • Regression and K-nearest neighbour6 KB
    • Programming regression models5 KB
    • Neural networks in code5 KB
    • Impact of automation7 KB
    • Human behaviour and bias in ML and AI8 KB
  • Software engineering project
    • Defining the problem and its requirements6 KB
    • Tools for generating ideas: storyboards, data dictionaries, data types6 KB
    • Algorithm design: pseudocode and Python7 KB
    • Implementation methods5 KB
    • Waterfall, Agile and WAgile7 KB
    • Project management, communication and ethics7 KB
    • Quality assurance6 KB
    • Modelling tools9 KB
    • Back-end engineering6 KB
    • Producing and implementing a solution9 KB
    • Testing, debugging and optimisation8 KB
    • Feedback and evaluation7 KB

第一則筆記

Secure software architecture / Designing secure software

Why security is built in

Software that handles other people's data becomes a target the moment it is deployed. Secure software is written so that the data it holds and the actions it allows are protected from people who should not have them, and it is treated as a requirement from the first day of a project rather than a patch added before release. The reason is cost and reach: a flaw found in design is a change to a diagram, while the same flaw found after installation means changing code, retesting, redeploying and, if data has already leaked, telling the people affected.

The benefits fall into two groups.

Data protection

Most applications store something a person would not want exposed: names, addresses, payment details, health records, passwords, messages. Secure development protects this data while it is stored, while it moves between a user and a server, and while it is being processed. Protecting it keeps a business inside privacy law, keeps customers willing to hand the data over, and avoids the direct costs of a breach such as fines, compensation and the work of investigating what was taken.

Minimising cyber attacks and vulnerabilities

A vulnerability is a weakness that an attacker could use, such as a form field that accepts anything typed into it, and a cyber attack is an attempt to use one. Secure practices shrink the number of vulnerabilities that ship and make the ones that remain harder to use. An attacker looks for the easiest target, so software that validates its input, limits what each user can reach and keeps its components up to date is passed over in favour of software that does not. Fewer successful attacks means fewer outages, less data loss and less time spent on emergency repairs.

The development steps and where security fits

There are eight fundamental steps. They run in this order, and each has a security job as well as its ordinary one.

StepWhat it producesSecurity contribution
Requirements definitionA statement of what the software must do and for whomSecurity requirements are written here: what data is sensitive, who may see it, which laws apply
Determining specificationsPrecise, testable descriptions of each requirementEach security requirement becomes something that can be checked, such as "passwords are stored only as hashes"
DesignStructure of the program, data and interfaceThreats are considered before any code exists; access levels, data flows and encryption points are decided
DevelopmentThe code itselfSecure coding practices: validating input, handling errors, avoiding known weak patterns
IntegrationParts (modules, libraries, services) joined into one systemInterfaces between parts are checked, because data crossing a boundary is where assumptions break
Testing and debuggingEvidence that the software behaves as specifiedSecurity tests are run alongside functional ones, and faults found are fixed and retested
InstallationThe software in its working environmentDefault settings and accounts are changed, permissions are set and the environment is hardened
MaintenanceUpdates, fixes and improvements over the software's lifePatches are applied as new vulnerabilities are discovered, and logs are reviewed for signs of attack

The steps are not always a straight line. A test may send the team back to design, and maintenance often restarts the whole cycle for a new feature. What stays constant is that a requirement missed at the start, such as the need to keep a log of who changed a record, is expensive to add later because design, code and tests all have to change.

A worked illustration

A clinic commissions an appointment booking system. At requirements definition the team records that patient names and phone numbers are personal information and that only reception staff and the patient may see a booking. In specifications this becomes two testable statements: a patient account can read only its own bookings, and reception accounts can read all bookings for their clinic. At design the team decides that every request is checked against the signed-in user's role before any data is returned. At testing, one test signs in as patient A and tries to open patient B's booking and expects a refusal. At installation the default administrator password supplied with the database is replaced. At maintenance a library used for sending reminders is updated when a security fix is published. Each step has a concrete outcome, and none of them is possible unless the requirement was written in the first step.

How end users shape secure design

Security features are only effective when people can use them correctly, so the capabilities and experience of end users affect what is designed. Two principles follow.

The first is that the design must suit what users can actually do. A feature that asks for a long random password and a change every month will lead users who are not technically confident to write passwords down or reuse them, which is less secure than a simpler rule backed by something the user does not have to remember. For such users, a design might use a password manager prompt, a one-time code sent to a phone or sign-in through an existing trusted account. For a team of system administrators, the same software can reasonably expect key-based logins and command-line configuration.

The second is that the interface must make the safe action the easy one. Warnings that appear on every screen are dismissed without being read, so a design that reserves a prominent warning for genuinely risky actions, such as deleting an account or sharing a file publicly, is more effective. Clear wording matters as much as the control: "Anyone with the link can view this file" tells the user something that "Sharing enabled" does not.

Experience also determines how much the software must defend against mistakes. Novice users are more likely to enter data in the wrong format, click a phishing link or share an account, so the software validates more, confirms destructive actions and limits what a single account can do. Users with accessibility needs, including those who rely on screen readers or have low vision or limited motor control, must be able to use the security features too: a CAPTCHA with no audio alternative locks some people out, and a time limit on a one-time code can be impossible for someone who types slowly. A security measure that some legitimate users cannot pass is a defect in the design.

新增或下載後,還會有 45 則。

評分

還沒有文字評論。把這些筆記加到自己的筆記中,就能成為第一個留下評論的人。