Final Exam Handout - MQ-COMP1050/module-wiki GitHub Wiki
- Software Engineering (SE) is the systematic application of engineering principles to develop software in a reliable and efficient manner.
SDLC (SOFTWARE DEVELOPMENT LIFE CYCLE)
Process model (like an instruction)
- a reference set of best practices that can be used for both process improvement and process assessment does not define a process, but its characteristics
Process (actually do things) a sequence of steps performed for a given purpose”
- the set of activities performed to develop, maintain, and deliver a software solution
Models
Waterfall: Requirement Gathering, Design, Implementation, Verification, Deployment, Maintenance
Prototyping (Iterative model) is rapid throwaway program w evolutionary prototyping
Spral - planning objectives or identify alternative solutions, a risk analysis and resovling, develop the next level of the product, plan the next stage phase
RAD(Rapid application Development) The rapid application development is you split the system into submodules into modules, and develop them separately and then you put them together.
V model (tests): User acceptance, system, integration, unit testing
Agile
Agile is the most common one!! 12 Principles
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software
- Welcome changing requirements, even ate in development. Agile process harness change for the customer’s competitive advantage
- Deliver working software frequently from a couple of weeks to a couple of months, with a preference to the shorter timescale
- Business people and developers must work together daily throughout the project
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation
- Working software is the primary measure of progress
- Agile processes promote sustainable development. The sponsors, developers and users should be able to maintenance a constant pace indefinitely
- Continuous attention to technical excellence and good design enhances agility
- Simplicity — the after or maximising the amount of work not done is essential
- The best architectures, requirements and designs emerge from self organizing teams
- At regular intervals the team reflects on how to become more effective then tunes and adjusts its behavior accordingly.
Common practices consist of Scrum meetings, sprints, pair programming, retrospectives, coding standards, refactoring, Test-First and Test-Driven Development
Scrum roles: Project owner(chooses and prioritises features), Scrum master(track the team and removes blockers), Customer(feedback), Team(builds and tests features).
Scrum board: Backlog view(all tasks), Sprint view(current), includes ToDo, InProgress, Done.
KANBAN (more flexible):[Cardboard, billboard] Backlog → To Do → In Progress → Review → Done.
Requirements
Functional a feature or function that the system must perform.
Non-functional quality or performance. HOW WELL the system does(how fast, how secure, how many users, how hot...)
Acceptance criteria: GIVEN... WHEN... THEN... Detailed conditions that ensure that the requirements are met. DoD AC is part of dod. Establishes the criteria user story must meet, To be ready for release and deployment, Checklist, acceptance gate Element: Acceptance Criteria Met, Unit Tests Passed, Code Reviewed, Product Owner Acceptance
User stories: As a ROLE I want to GOAL so that BENEFIT
Use case: capture requirement, describe how users will perform tasks. Shows system behaviour from the user’s point of view. A simple sequence of steps that starts with a user’s goal and ends when the goal is completed. Elements: Actor, Stakeholder, Primary Actor, Preconditions, Triggers, Main success scenarios [Basic Flow], Alternative paths [Alternative Flow]
Structure: Theme = the big picture goal→ Made up of multiple Epic → Each Epic contains multiple Stories -> subtasks
Version Control
Github is a control system that is distributed NOT localized | Git is the application, GitHub is a way to view/interact
Git commands: git clone url dir| git add file(s) | git commit | git status | git diff | git help command | git pull | git push | git branch | git init | git reset | git checkout | git merge | git log | git tag
Debugging methods; hand tracing | Using print statements | Debugger
Coding styles define; Naming (variable, classes, functions), indentation, brackets, documentation
Test format; ID | Objective | Environment | Steps | Expected outcome | Actual outcome | Pass/Fail status
Acceptance testing; tests if a system meets customer expectations | System testing; Comprehensive testing of functional and non functional requirements | Integration testing; Tests combination of individual modules to form larger sub systems | Unit testing; tests individual program units such as functions or methods, in isolation
Test Driven Development (TDD) is writing a test to fail, write the minimum code, run all tests, refactor code
Definition of Done (DoD; Criteria to determine whether a task is actually completed | Defined by the team