Software Engineering

0.0(0)
studied byStudied by 0 people
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/49

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

50 Terms

1
New cards

Key agile development principles

- customer involvement

- Embrace change

- incremental delivery

- maintain simplicity

- people, not process

2
New cards

customer involvement

- closely involved in development

- provide & prioritise new system requirements.

3
New cards

Embrace change

expect system requirements to change - design to accommodate.

4
New cards

incremental delivery

developed in increments—customer specifies requirements for each

5
New cards

maintain simplicity

both in software and process - Eliminate complexity where possible

6
New cards

people, not process

Team members are left to develop in own way - Use people's advantages.

7
New cards

agile contractual problems

less defined requirements, less clarity - cause friction

8
New cards

non-incremental when life at risk

All requirements established. at gathering stage - agile delivered in phases

9
New cards

imperative programming

program statements and maintain state - to achive results - most common

10
New cards

declarative programming

Focuses on output by expressing logic & constraints - doesn't say how to achieve

11
New cards

Functional programming

making use of pure functions

12
New cards

why use functional programming?

- no side effects - output is based on the input

- more reliable software - no hidden dependencies

13
New cards

Event-driven programming

- responds to user/event interactions

- more responsive code

14
New cards

Object oriented programming

reusable objects (more modular and easier to maintain)

- Encapsulation

- Abstraction

- Inheritance

- Polymorphism

15
New cards

Encapsulation

- all data is stored within the object

- Only select data externally viewable

16
New cards

Inheritance

classes based on existing parent classes - inherit properties and no redefining

17
New cards

Polymorphism

allows objects to take on different forms or behaviors

18
New cards

Abstraction

focuses on a system's essential elements - construct more understandable programs

19
New cards

Development life cycle key elements?

- Software Specification

- Software Development

- Software Verification

- Software Validation

- Software Maintenance

20
New cards

Software Specification

Define functionality/user requirements (use a requirements-gathering exercise)

21
New cards

Software Development

Design and production of the system

22
New cards

Software Verification

testing and check the program does what it is designed to do

23
New cards

Software Validation

Ensure that the system meets the required specification

24
New cards

Software Maintenance

Ensure that the software is maintained and can be evolved

25
New cards

Two types of verification

- Unit testing (done by developer team programmers - not author)

- System testing (done by program teams within developers)

26
New cards

Ways to mitigate errors in code

- Code Review

- Pair Programming

-Test driven Development

27
New cards

Unit Testing advantages

- Early bug detection

- improved code quality - modular approach

- enforces clarity - expected purpose documented

28
New cards

Unit Testing Disadvantages

More work/effort (every component needs a test)

29
New cards

customer development

conducted by actual users - onsite hardware

30
New cards

Integrated or systems testing

Bring together systems to see how they interact. Ensure data is correctly transferred.

31
New cards

edge case

test for a component with extreme boundaries or limits - inputs just inside/outside valid range

32
New cards

How to complete unit testing

- call function with test case (arguments)

- compare to result expected

- report result

33
New cards

corner case

test scenarios for exceptional or multiple edge cases

34
New cards

Key points of waterfall approach (x6)

- Sequential and linear

- Fixed requirements

- Minimal customer involvement

- Detailed Specification

- Limited Flexibility

- Late Defect Detection

35
New cards

Waterfall—sequential and linear

each phase is completed before moving on - flows downwards like waterfall

36
New cards

Waterfall - fixed requirements

Defined at the start— hard to change

37
New cards

Waterfall—Minimal customer Involvemnt

Customer limited to the gathering phase. Fewer oppertunities for feedback

38
New cards

Waterfall - Detailed documentation

extensive documentation for each phase. Serves as reference for each completed stage

39
New cards

Waterfall - Limited Flexibility

Linear means less adapdability - once a phase is complete is hard to make changes

40
New cards

Waterfall - Late defect detection

As testing is completed right at the end - high risk bugs are found late - costly

41
New cards

Key points of the incremental approach (x6)

- Iterative and incremental

- Evolving requirements

- Large customer involvement

- Working prototypes

- fleciibility and adapability

- early detecion of defects

42
New cards

Incremental - iterative

divided up into multiple iterations. each iteration should be shippable

43
New cards

Incremental - Evolving requirements

- initial set of requirements is defined.

- Subsequent increment evolves - more requirements

- based on customer feedback

44
New cards

Incremental - Customer involvement

- involved throughout design process

- provide feedback and promotes collaberation

45
New cards

Incremental - Working prototypes

- focused on delivering working iterations

- customer can evaluate products' functionality.

46
New cards

Incremental - flexibility & adaptability

Greater flexibility - accommodate changes

- Each iteration builds upon previous

47
New cards

Incremental - Early defect detection

- Testing is performed at each iteration

- less risk of major issues - imporved quality

48
New cards

Types of external threats

- fishing

- malware

- DDOS & hacking

- supply chain attacks

49
New cards

Python vunrabilities

- Outdated dependencies

- Directory traversal

- Malicious packages

- Insecure temp files

50
New cards

C vunrabilities

- buffer overflows

- format string attacks

- integer overflows

- unsafe library functions