Software Engineering Flashcards

1
Q

Define HCI.

A
  • Human-computer interaction researches the design and use of computer technology, focused on the interfaces between people and computers.
    Observe the ways in which humans interact with computers and design technologies that let humans interact with computers.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Define a mental model.

A
  • A mental model is an explanation of someone’s thought process about how something works in the real world.
    • It is a representation of the surrounding world, the relationships its various parts and a person’s intuitive perception about his or her own acts and their consequences.
    • An explanation in someone’s thought process for how something works in the real world.
      A mental model is what the user believes about the system at hand
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Describe perception and how it is carried out in technology?

A
  • How information is acquired from the environment via our senses
    • Obvious implication is to design representations that are readily perceivable
      ○ Icons should be easy to distinguish and read - use icons and other graphical representations; will enable users to easily recognise their meaning
      ○ Sounds or synthesized speech distinguishable - Sounds should be audible and distinguishable
      ○ Touch sensation - tactile feedback - Allow users to recognise and distinguish different meanings
      ○ Visual groupings can help - Bordering and spacing effective at grouping and finding info
      Text should be legible - Text should be legible and distinguishable from the background
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What are the advantages and disadvantages in Reading, Listening and Speaking

A
  • User preference
    • Reading can be quicker than speaking or listening
    • Listening requires less cognitive effort than reading or speaking
    • Written language tends to be grammatical while spoken language is often ungrammatical
    • Certain disabilities create challenges:
      ○ Dyslexia - difficulties understanding and recognising written words making it hard to write grammatical sentences and spell correctly.
      ○ Deaf / Hard of hearing - restricted in the way language is processed
    • Speaking - Keep the length of speech-based menus and instructions to a minimum.
    • Listening - Accentuate the intonation of artificially generated speech voice, as they are harder to understand than human voices
      Reading - Provide opportunities for making text large on a screen without affecting the formatting, for people who find it hard to read small text.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What are the usability goals that any system should strive to implement (think of group project) ?

A

• Effective - How good a system is at dong what its supposed to do
• Efficient - The way a system supports users in carrying out their task
• Safety - Protecting the user from dangerous conditions and undesirable
• Utility - The extent to which the system provides the right kind of functionality that users can do what they need or want to do
• Learnability - How easy a system is to learn to use (users don’t like to spend too much time doing this)
Accessibility - can be used by many different people including those with a disability

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are dark patterns?

A
  • Deceptive approach to UX to trick people into doing things; encourage user to take a path they didn’t mean to take
    • Colour theory is manipulated to misdirect language used to confuse rather than clarify and user is exploited to boost company reach or profits.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What are constraints and consistency a system should have?

A
  • Determining ways of restricting user interaction at a given moment
    • As much as possible, design the system so the user cannot make a serious error or be able to exit - user error control and freedom -> e.g. Deactivate certain menu options by shading them grey.
      Consistent sequence of actions for similar situations, identical terminology for prompts, menus and help screens. Consistent commands used throughout
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What are the core principles any prototype should have?

A
  • Allow users to
    ○ Interact with envisioned product
    ○ Gain experience of using it in a realistic setting
    ○ Explore imagined uses
    • A prototype is a limited representation that allows interaction and helps users explore its suitability
      ○ A series of screen sketches
      ○ A storyboard i.e. A cartoon-like series of scenes
      ○ A PowerPoint slide show
      ○ A video simulating the use of a system
      ○ A lump of wood (e.g. PalmPilot)
      ○ A cardboard mock-up
      A piece of software with limited functionality written in the target language or in another language.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Why should a company develop a prototype before developing the real thing?

A
  • Can present examples to stakeholders to hold, interact for advice/feedback.
    • Allows developers to verify requirements
      Encourages reflection and testing out ideas
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What are the differences between Wireframe, Mockups and Prototypes?

A
  • They are different but there is overlap between them
    • Wireframes - are basic illustrations of structure and components of a web page
    • Mockups - often close or identical to the actual final web site design and include graphics - generally just image files
    • Prototypes - semi functional and generally give the ability to click around and simulate the wat the site will eventually work
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What are the differences between low fidelity and high fidelity prototyping?

A

• Low fidelity - early stages, you should develop paper prototypes - wireframes of screen designs - and walk through these with end users.
○ Pros:
§ Lower development cost
§ Evaluate multiple design concepts
§ Useful for identifying market requirements
§ Proof-of-concept
○ Disadvantages:
§ Limited error checking
§ Poor detailed specification to code to
§ Limited utility requirements established
§ Navigational and flow limitations
• High fidelity - refining the design and develop increasingly sophisticated automated prototypes, which will then be available for users to test.
○ Uses materials that you would expect to be in the final product
○ Prototype looks more like the final system than a low fidelity version
○ Danger that users think they have a full system … Need to manage user expectations.
§ Take too long to build
§ Reviewers and testers tend to comment on superficial aspects rather than content
§ Developers are reluctant to change something have crafted for hours
§ A software prototype can set expectations too high!
Just one bug in a high-fidelity prototype can bring testing to a halt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What are story boards?

A

• Used with scenarios to bring more detail and a chance to role play
○ Details how the system will handle certain situations
• A series of sketches showing how a user might progress through a task using the device
○ A series of sketched screens for a GUI interface
A series of scene sketches showing the user performing an activity

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What are card based prototypes?

A

• Index cards (3 x 5 inches)
• Each card represents one screen or part of screen
User steps through the cards pretending to perform a task

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What are the pros and cons of the ‘Wizard-of-Oz’ prototyping system?

A

• Prototyping is evaluated with human interventions to provide the missing functionality.
• Developer is generating the output rather than the system itself - computer remotely controlled by developer
• Pros:
○ You can move very quickly - you can typically make changes, get feedback, and learn from your customer in minutes instead of weeks or months
○ Inexpensive
○ You can find real customers
• Cons:
○ It’s not real - you still have to build something eventually
○ Mixed signals - You may get confused with what the customer really wants
§ Learn to listen well and you’ll eventually learn what feedback to take and what feedback to throw away.
Typically not polished - It can sometimes be difficult to fake a product or service but still make it look polished. This isn’t always a bad thing as it’s easier for people to give you feedback if you don’t have a polished product.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What are the managements problems for prototyping?

A

• Time
○ Building prototypes takes time
○ Need to be fast - rapid prototyping. Careful this does not lead to rushed evaluation and erroneous results
• Planning
○ Hard to do adequately and cost a design involving prototype
• Non functional requirements
○ Such features sacrificed in prototypes
○ May be critical to product acceptance e.g. Safety
• Contracts
○ Design bounded by contractual agreement on technical and managerial issues
Prototypes are quick to change but this needs to be reflected in the requirements document which serves as the binding development agreement

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Describe the what, why and where in HCI evaluation.

A

• Why - to check users’ requirements and that users can use the product and they like it
• What - a conceptual model, early prototypes of a new system and later, more complete models
• Where - in natural laboratory settings
○ Depends on what is being evaluated e.g.
§ Web accessibility generally evaluated in a laboratory
• When - Throughout design; finished products can be evaluated to collect information to inform new products
○ Evaluations done during design are known as formative evaluations
Evaluations done to assess the success of a finished product are known as summative evaluations

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

What are the different types of evaluations?

A

• Controlled settings involving users- usability testing and experiments in labs
○ Evaluation of UI
○ Collecting data through experiments, observations, interviews, questionnaire
○ Conducted in research labs in universities and industry
○ Living Labs - Evaluate people’s everyday lives
• Natural Settings involving users - Field studies, see how product functions in real world cases
○ Evaluate people in their natural settings
○ Observations recorded as notes, audio or video recordings
○ Goal to unobtrusive and not affect what people do
• Any settings not involving the users - Consultants, researchers critique, predict and model through inspection, walkthroughs, models and analytics
○ Inspection methods used to predict user behaviour and identify usability problems
○ Heuristic evaluation: guides design or critique decisions. Critique based on principles and guidelines.
§ Critique gives severity rating 0 = 0 I don’t agree there is a problem and 4 = 4 usability catastrophe
○ Cognitive walkthrough: analysis of action sequences the interface required the user to perform
Analytics : measurement, collection, and reporting of internet data

Evaluation methods can be combined e.g. Lab testing combined with observations in a natural setting to identify the range of usability problems and find how users typically use a product.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

What is cross-cultural design?

A
• Designing technology for different cultures, languages, and economic standings to ensure usability and user experience across cultural boundaries.
		○ Language
		○ Script and fonts
		○ Layout and space
		○ Colours
		○ Icons and symbols
		○ Images and graphics
		○ Times and dates
Numbers etc ...
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

What are the issues with cross-cultural design?

A

• Exported software frequently required modifications to suit:
○ Local customs; laws or conventions
• The development of multiple interfaces is costly
• Age, gender, race, sexuality, class, religion and politics all effect people differently
Important to make generic, and easily modifiable as much of the interface as possible

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Describe the three levels of interface specialisation.

A

• Globalisation
○ Fully available and functional in multiple languages
○ An end goal
• Internationalism
○ A process of multiple localisation for several regions
• Localisation
○ Refers to the adaptation of a product, application or document content to meet the language, cultural and other requirements
○ Developing specific interfaces to meet a particular market
§ Translation - voice and written characters
§ Seamless Integration - Web and back-end system
§ Cultural Elements - Numbers, Measures, Imagery
§ Brand Management - Logos and Interpretation
§ Business Practices - Currency System, Payment Methods
Governmental Regulations - Legal, Import, Tax, Privacy, Electrical, Safety

Things to think about:
• Character sets - e.g. The Latin alphabet, the Arabic and Hebrew character systems
• Date / Calendar formats
• Numeric formats/Time formats/Telephone numbers/ Icons, symbols, graphics
• Name formatting e.g. Surname first then forename or vice versa
• Text Directionality
Currency, Units of measure, Cultural values, Symbols, Aesthetics

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Project estimation is an important activity undertaken by a Project Manager. Briefly describe THREE key influences which can contribute to the production of inaccurate estimates.

A

• Complexity of the proposed application system
• Required integration with existing system
• Size of the system expressed as number of function or programs
• Capabilities of the project team members
• Project’s team’s
○ Experience with the application, the programming language, and hardware
○ Capabilities of the project team members
○ Number of project team member
Extent of programming and documentation standards

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Problems with Agile

A

i. Managing large teams without documentation
ii. Contractual problems - developers unhappy to accept a fixed-price as requirements can creep;
iii. Can’t prepare tests in parallel with implementation as don’t have an independent V&V team (verification and validation)
iv. Maintenance difficult as system changes quickly so often done by large teams which need to be managed and the time from conception to delivery can be a long period of time with planning, designing and documenting the system being crucial.
In contrast traditional software development is often done by large teams which need to be managed and the time from conception to delivery can be long period of time with planning, designing and documenting the system being crucial.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Problems: Plan driven

A

i. Tries to develop a full set of stable requirements, design etc. And can lead to long development time - not acceptable to many customers
Large amounts of documentation

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Describe the Scrum process including the roles within it.

A

a. Roles: Product Owner, Scrum team, Scrum Master
i. Product Owner - The person that has the final vision of the product, makes business decisions and decides priorities in the sprint backlog
ii. Scrum Team - A group of engineers that will actually build a shippable product by the end of each sprint
iii. Scrum Master - Protects team from distractions and interruptions and teaches people how to use scrum. Also enforces time boxes
b. Process -> Sprint cycle lasts 2-4 weeks. There is
i. Product back log -> a list of all things that need to be done within the project. It replaces the traditional requirements specification artifacts. These items can have a technical nature or can be user-centric e.g. In the form of user stories.
Sprint backlog -> A list of tasks identified by the scrum team to be completed during the Scrum sprint. During the sprint planning meeting, the team selects some number of product backlog items, usually in the form of user stories, and identifies the tasks necessary to complete each user story.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Describe what is meant by rapid software development.

A
  • Specification, design and implementation are inter-leaved
    • System is developed as a series of versions with stakeholders involved in version evaluation
      User interfaces are often developed using an IDE and graphical toolset
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Describe plan driven development.

A
  • Plan driven approach to software engineering based around seperate development stages with the outputs of these stages planned in advance.
    E.g. Planning specifications, design before the project starts
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Describe Agile development.

A
  • Specification, design, implementation and testing are inter-leaved and the outputs are decided through a process of negotiation during the software development process.
    • 12 principles of Agile manifesto:
      ○ Highest priority - satisfy customer through early delivery
      ○ Welcome changing requirements
      ○ Deliver working software frequently
      ○ Working software is the primary measure of progress
      ○ Customer and developers work together
      ○ Build projects around motivated people
      ○ Face to face communications important
      ○ Simplicity
      ○ Best work emerges from self-organising teams
      Team regularly reflects on how they can improve
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Describe the roles in scrum.

A
  • Product Owner (PO)
    ○ Single person who has the vision behind the product dev
    ○ Makes a final call on what the priorities of the work are
    ○ What is top of the list in the sprint back log
    ○ Makes business decisions focused on what not how and people go through him/her to the team
    • Scrum Team
      ○ No hierarchy; 4-9 people ideally; build a shippable product in each sprint; each sprint they improve and collaboration increases between the team
    • Scrum Master
      Has no managerial authority over the team; facilitates team needs without authority. Protects teams from distractions and interruptions; and teaches people to use scrum, good engineering practices, and enforces time boxes.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Describe the types of scrum meetings.

A

• Daily Scrum - Meet daily; 15 minute stand up and report to each other NOT to the PO or SM. What you did yesterday, what you will do today, what problems have you got.
• Sprint Review - Demo potentially shippable product increment to PO and anyone interested. PO declares what is complete and what doesn’t satisfy user requirements.
• Retrospective meeting - At end of every sprint what went well, what can be improved, what have you learned, feedback to each other - teams takes ownership of the process
Refinement meeting - Team and PO look ahead a little at the PBI’s to determine possible candidates and maybe break down for the next couple of sprints.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

What are the benefits of Scrum?

A
  • The product is broken down into a set of manageable and understandable chunks.
    • Unstable requirements do not hold up progress
    • The whole team have visibility of everything and consequently team communication is improved.
    • Customers see on-time delivery of increments and gain feedback on how the product works
      Trust between customers and developers is established and a positive culture is created in which everyone expects the project to succeed
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

What are the problems with agile methods?

A
  • Can be difficult to keep the interest of customers who are involved in the process
    • Prioritising changes can be difficult where there are multiple stakeholders
    • Maintaining simplicity requires extra work
    • Contracts may be a problem as with other approaches to iterative development
      Team members may be unsuited to the intense involvement that characterises agile methods
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

Discuss why it is important to have a code of ethics for Software Engineers.

A
  • Software valuable
    • Software key role in all dimensions of life and as professional’s software engineers must conduct their practices at a level of professionalism.
    • Society well-being
    • Honesty and trustworthy
    • Acquire and maintain competency
    • Improve others understanding of IT
    • Property rights and contributions or others
    • Be fair and no discrimination
    • Respect privacy
      Only access authorised resources
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

Briefly describe the types of maintenance that can be undertaken when a system has been deployed.

A

a. Corrective -> maintaining control over day-to-day functions
b. Adaptive -> maintaining control over system modifications
c. Perfective -> perfecting existing functions
Preventive -> preventing system performance from degrading to unacceptable levels

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Briefly describe what system re-engineering is and when we would consider using this approach.

A

Re-engineering takes place after a system has been maintained for some time and maintenance costs are increasing. Re-engineering involves adding effort to make them easier to maintain. The system may be re-structured and re-documented. You use automated tools to process and re-engineer a legacy systems to create a new system that is more maintainable. Re-structuring or re-writing part or all of a legacy system without changing its functionality.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

Give TWO advantages of adopting a re-engineering approach.

A

a. Reduced risk - There is a high risk in new software development. There may be development problems, staffing problems and specification problems.
Reduced cost - The cost of re-engineering is often significantly less than the costs of developing new software.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

Describe TWO other advantages of reusing software components.

A

a. Increasing dependability -> components used in a similar system - tried and tested
b. Effective use of specialists -> the ready components already encapsulate expert knowledge
c. Standards compliance -> use of e.g. Interface standards conformance - improves dependability because uses of the system are less likely to make mistakes when presented with a familiar interface
Accelerated development can speed up system productions as development and validation time should be reduced.

37
Q

Describe ONE risk associated with COTS reuse.

A

a. Vendor risk - little support; vendor goes out of business
b. Product risk -> Requirements may have to be adapted to reflect the functionality and mode of operation of COTS products; poor performance when integrated; product not dependable in intended operating environment.
Process risk -> time requires to understand how to integrate product is higher than expected,

38
Q

What does COTS mean?

A

Commercial Off-the-Shelf

39
Q

TWO examples of low fidelity prototyping and TWO examples of high-fidelity prototyping

A

a. Low fidelity - Uses a medium which is unlike the final medium. E.g. Paper, cardboard is quick, cheap and easily changes; Important for early stages of design;
i. Post-it notes
ii. Storyboards
b. High fidelity -> uses materials that you would expect to be in the final product. Prototype looks more like the final system than a low-fidelity version.
i. Visual Basic
Smalltalk

40
Q

TWO advantages and TWO disadvantages of each of low fidelity and high fidelity

A

a. Advantages
i. Low fidelity
1) Cheap
2) Address screen layout
3) Proof of concept
4) Useful for id market requirements
5) Evaluate multiple design concepts
ii. High Fidelity
1) Complete functionality
2) Look and feel of final product
3) Fully interactive
4) User-driven
5) Marketing and sales tool
b. Disadvantages
i. Low fidelity
1) Limited error checking
2) Facilitator-driven
3) Limited usefulness
ii. High fidelity
1) More expensive to develop
2) Not effective for requirements gathering
Danger that users think they have a full system

41
Q

TWO reasons why prototyping should be undertaken in the e-PCCS scenario

A

a. Allows users to interact with envisioned product
b. Gain experience of using it in a realist setting
c. Explore imagined uses
d. Helps users explore it’s suitability
e. De-risks future products
Verifies requirements -> helps in choosing alternative

42
Q

List FOUR usability goals

A
• Effective to use
	• Efficient to use
	• Safe to use
	• Having good utility
	• Easy to learn
Easy to remember how to use
43
Q

What does perspective and viewpoint mean in modelling and analysis.

A
  • Perspective -> relates to a software development role, such as a manager, an end user, a customer (commissioning the software). Each has their own set of interests and needs.
    Viewpoint -> relates to a set of particular characteristics of a model, which in turn reflect some specific aspect of software (behaviour, construction, information flow, …) Usually captures through some particular representation.
44
Q

What is the ultimate criterion for any decision in a design process.

A
  • Fitness for purpose -> in that a design should be well structured; should do its job well; and have no unnecessary features.
45
Q

What are the problems that we may encounter during the design process?

A
  • The design must have both static and dynamic characteristics
    • We need to use static forms of description to model these characteristics, usually by using ‘box and line’ diagrams
      Software is invisible and so we have no intuitive ways of visualising its form or describing it diagrammatically.
46
Q

What should be the outcomes of any design.

A
  • A model or plan which can be used to guide the task of implementation, where this describes:
    ○ The characteristics of the set of elements that will make up the ‘solution’
    ○ Structure (how these elements are related to one another)
    How t he elements will interact when the system is executed
47
Q

Two characteristics of software that complicate task of modelling software systems are invisibility and the mix of static form and dynamic behaviour that software exhibits.

Briefly explain the effect that each of these has upon the choice of notations used for modelling software.

A

Invisibility means that there are no ‘natural’ representations that provide a visual match, so we end up using artificial ‘box and line’ forms. The mix means that we need multiple forms, and these need to be kept consistent.

48
Q

Architectural style

A

• Components: the basic building blocks used in a system built in this style.
• Connectors: the way the components interact
Context: How the elements and their interactions are organised and managed (scheduled) at run-time

49
Q

Explain how these are interpreted for a data-flow architecture style, such as that provided by Unix process and pipes.

A

The components are the processes, the connectors are the pipes that provide the data flow between processes, and the context is the scheduling that determines how this operates, with a ‘push’ model sending data upstream.

50
Q

Call-and-Return

A

Order of computation (sequencing of control), with only a single thread of control (no concurrency). Systems of this form have structures which are organised around computational tasks, with these often being sub-divided into sub-programs or ‘methods’.
Usually hierarchical, organised around control being passed around from ‘higher’ to lower items. The overall task is again performed by a set of subtasks, but unlike data flow, there are explicit control linkages between these sub-tasks and the algorithm of the program determines calling order.

51
Q

Interacting-Processes

A

Characterised by: communicating patterns among independent, usually concurrent, processes.
Systems are non-deterministic in their behaviour, since the scheduling (sequencing) of system elements is performed by seperate, independent computers.

52
Q

Data-centred Repository

A

characterised by: a dominant central data store that is manipulated by independent computations. Systems of this form are centred around the issues relating to data access (they are not necessarily databases). So data is at the focus.
Includes modern compilers, which construct and use complex structures such as parse trees and symbol tables.

53
Q

Data-sharing

A

Such systems are dominated by the client sharing of data between the components. The key distinction between this form and the data-repository style is that the data may be distributed between many elements, but these share a common from of ‘representation’ for using and sharing this data.
Based upon the data representation itself and ensuring that this is common to all elements. This form describes both programs and also ‘documents’ (i.e. Forms that are not necessarily directly executable)

54
Q

What type of architectural style should one choose?

A
  • For strongly sequential tasks: batch sequential or pipe-and-filter.
    • For tasks which involve transformation on continuous streams of data, use pipe-and-filter.
    • If a central issue in your system is understanding the data used in the application, consider a repository style.
      For flexibility, loose coupling between tasks and reactive tasks, consider interacting processes.
55
Q

Describe the model-view-controller (MVC).

A
  • Divides an interactive application into three elements:
    ○ The model -> contains the core functionality and data
    ○ Views -> display information to the user
    ○ Controllers -> handle user input. Each view has an associated controller that also handles related inputs (e.g. Mouse, keyboard).
    • User interface consists of views and controllers together, and is independent of the model. In turn, the model needs to propagate information about changes to controllers.
      Structuring a system in this way makes it easy to change the interface, for a different ‘look & feel’ on a new platform, or to provide new forms of presentation (eg pie charts in place of bar charts).
56
Q

What is the difference between Architectural Patterns and Architectural Styles?

A
  • Architectural Patterns are concerned with
    ○ Defining the basic structure for an application
    ○ Addressing a specific problem as well as the proposed solution
    • Architectural Styles are concerned with:
      ○ Families of software systems in terms of their structural organisation
      The forms of, and the interactions between components, connectors and the context within which these exist.
57
Q

What are elements of a design pattern?

A
  • Pattern name -> provides a handle which aims to encapsulate a design problem, its solutions and any consequences arising from its use.
    • Problem -> describes when the pattern can be applied, and may include any conditions which must be met before it makes sense to apply that pattern.
    • Solution -> provides an abstract description of the elements that make up the design as well as their relationships and responsibilities (as an abstract outline solution rather than as a concrete design or implementation)
      Consequences -> the results and trade-offs from applying the pattern - needed to help assess design options
58
Q

What are the three groups in the design pattern space?

A
  • Creational -> patterns are concerned with the process of object creation
    • Structural -> patterns are concerned with the composition of classes or objects
      Behavioural -> patterns characterise the ways in which classes or objects interact and distribute responsibility.
59
Q

With the aid of a diagram, briefly describe the form of the observer pattern and identify its main characteristic.

A
  • Main characteristic of observer is that it is based upon a ‘publish-subscribe’ model whereby subscribers register to be updated when publishing object makes changes, and when this occurs, they look to see what has changed.
60
Q

What are the limitations of testing?

A
  • Testing cannot demonstrate that software is free of defects or will behave as specified in every situation.
    In no sense does it ‘prove’ anything, it can only be a means of providing confidence about software.
61
Q

What is a test oracle?

A
  • A “mythical being” that “knows all the answers”. It produces all the predictions for testing
    Thus designing test cases involves specifying both input and output value/states. For more complex stages, such as acceptance testing, the oracle may actually take the form of a set of expert users who ‘judge’ whether or not the outputs are acceptable.
62
Q

Draw the V-model

A

Look at notes

63
Q

What is regression testing?

A
  • If changes are made to the elements of the system, then we need to test everything again
    • To ensure that the changes have not affected code that previously worked
64
Q

Define the term canary release.

A

Initially release new system to selected users (perhaps selected randomly, or because of their role in the organisation), before making it more publicly available.

65
Q

Describe functional and structural testing.

A
  • Functional testing
    ○ Essentially ‘black box’ testing, where we have no details of the inner workings of the parts of the system being tested. Helps establish confidence
    • Structural testing
      ‘white/clear box’ testing, for which the implementation is ‘visible’ and can be used to generate test cases
66
Q

What is user acceptance testing?

A
  • Certifying that the system satisfies the end customers scope and detailed requirement specifications after system testing is complete.
    ○ Drawn up by the customer’s test designers/end-users
    ○ Derived from the requirements specification
    ○ Forming the final test activity before the system is approved for delivery
    • To provide confidence that the system delivered to the customer is the one that they need. So the customer acts as the test oracle
    • Testing is done from the customer’s point of view
      And, from their understanding of the requirements
67
Q

What are the types of UAT?

A
  • Benchmark test -> customer prepares a set of test cases that represent typical operational scenarios - may be performed with actual users or a special testing team who also evaluate the outcomes.
    • Pilot test -> involves installing the system on an experimental basis and letting users employ it as if it were permanently installed, relying upon everyday use to test all the functions - so less formal and structured than a benchmark test.
      Parallel testing -> the new system runs alongside an existing one, addressing compatibility and function testing.
68
Q

What are some challenges of UAT (User acceptance tests)

A
  • Coverage. Ensuring that all aspects of a system are covered by tests. Difficult to have a really formal record of this.
    • Regression testing. Where end-users are employed to exercise the system, it can be difficult to ensure that regression testing is performed rigorously.
      Training. The end-users do need to have a good understanding of their role and the activities that they need to perform.
69
Q

What is unit testing?

A

A software testing method by which individual units of source code, sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures, are tested to determine whether they are fit for use.

70
Q

Describe functional testing.

A

A quality assurance process and a type of black-box testing that bases its test cases on the specifications of the software component under test. Functions are tested by feeding them input and examining the output, and internal program structure is rarely considered.
You can feed different ranges of inputs to see whether an expected output is given

71
Q

Describe what is meant by equivalence partitioning.

A
The test objective should enable us to seperate input values into equivalence classes. These are organised such that:
	• Every possible input belongs to one class, so the set of classes together cover the complete set of possible inputs.
	• No input value belongs to more than one class
	• An element represents all other elements in the class, so if a fault can be detected using one member of the class, there is a high probability that every other member of that class will reveal the same fault.
This means that the overall test set only needs to contain a representative member of each and every class.
72
Q

Describe two forms of code reviews.

A

• Walkthrough -> led by the coder who presents the code to the team, the members comment on its correctness in an informal atmosphere (the code is critiqued, not the coder), the aim is to find faults, not to fix them.
Code inspection -> more formal than a walkthrough, with the team checking code and documentation against a prepared list of concerns.

73
Q

Describe structural testing approaches

A
  • Statement testing -> every statement in the component is executed at least once in some test.
    • Branch testing -> for every decision point, each branch is chosen at least once in a test.
    • Path testing -> every distinct path through the code is executed at least once in some test
    • Definition-use (du) path testing -> every path between the definition of every variable to every use of that definition is exercised in some test.
      All-uses testing -> the test set includes at least one path from every definition to every use that can be reached by that definition.
74
Q

Why is automating tests important?

A

Testing by hand is:
• Slow
• Tedious
• Error prone
To automate unit testing, code is written to:
• Set up the unit
• Formulate inputs to methods
• Execute methods with inputs to get outputs
• Compare outputs with expected (correct) value
Tests can then be run at any time (including overnight where there is a large set of tests). But again, needs a dependable oracle.

75
Q

When should one stop testing?

A

• Ideally, when we have found all of the faults!
• However, if we find a lot of faults, then there is a good probability that a lot more remain at whatever point we stop testing.
Beyond a certain point, the effort needed to detect each fault will arise - no real correlation with the importance of the remaining ones either

76
Q

Describe fault seeding.

A

• One member of the team inserts a known number of errors (seeds) in the code and this seeded code is then tested by the rest of the team.
○ Team should be expected to find both seeded and unseeded (indigenous) errors
○ Proportion of seeded errors not found then provides an indicator of how many indigenous faults may still remain undetected
§ Assuming that: detected seeded/total seeded = detected unseeded/total unseeded
Does depend upon the assumption that the seeded errors are of the same form and complexity as the actual ones occurring in the code.

77
Q

What is integration testing?

A

The phase in software testing in which individual software modules are combined and tested as a group. Integration testing is conducted to evaluate the compliance of a system or component with specified functional requirements. It occurs after unit testing and before validation testing.

78
Q

Describe Bottom-up integration and it’s issues.

A

• Aim to complete unit testing for components at the lowest level of hierarchy first
• Then test the next level of components (which call the lowest level ones), using the lowest ones
• Continue with this to the complete system level
• Helps identify sources of problems quite well, for example, if a fault occurs in testing B,E,F in combination, then error is probably in B or in the interface, since E & F have passed their unit tests.
Lower level components get tested first and the key ones get tested later. So it emphasis on finding errors in code, rather than in design/specification.

79
Q

Describe top-down integration and it’s issues.

A

• Involves starting with the key components at the top of the hierarchy.
• Since lower level elements may not be ready or tested, can use a stub (which emulates the missing component in a simplified manner) for each one. A stub does not need to be complex or logically complete, but its design may be quite a critical factor.
• Test cases can be expressed in terms of overall system functionality
• Writing the stubs and drivers may be quite complex, and as integration progresses, some may need to become rather more complete
Devising an oracle can be quite challenging

80
Q

What is sandwich integration?

A

A hybrid strategy to combine the top-down and bottom-up approaches. Effectively start from both ends, which can reduce the number of stubs needed.

81
Q

Describe system testing.

A

More concerned with conformance to the specification (requirements) than with finding bugs.

82
Q

Describe performance tests.

A
Address the 'non-functional' issues such as:
	• Security
	• Speed
	• Accuracy
Reliability
83
Q

Describe the difference between plan-driven and agile approach.
Plan driven

A

• Well-established means for transferring knowledge about how to structure and design systems.
○ Plans are typically generated by the following: Project broken down into stages/tasks. Each task broken into its composite activities.
○ An example would be waterfall
Agile
• A software engineering framework that promotes iterative development throughout the life-cycle of the project
Close collaboration between the development team and business side, constant communication, and tightly-knit teams.

84
Q

Describe XP (Extreme Programming).

A

• Agile
• Intended to improve software quality and responsiveness to changing customer requirements
• Advocates frequent “releases” in short development cycles, which is intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted.
• Other elements include programming in pairs or doing extensive code review, unit testing of all code, avoid programming of features until they are needed.
• A set of five values that underpin its practices and that provide the rationale for them
○ Simplicity
§ Every aspect of the system must be justified
○ Respect
§ Core underpinning of an effective team approach
○ Communication
§ Rich collection of procedures and activities to support this
§ Stakeholders include customers, users, developers
○ Feedback
§ Emphasis is on delivering quality, rather than on speed
○ Courage
Confidence to do risky things and accept change

85
Q

Describe how the concept of pair programming works in XP.

A

All programming is undertaken by teams of two
• One person (the driver) uses the keyboard, and the other (the observer or navigator) looks at the screen while they discuss what they are doing
• The pair swap roles on a regular basis (may also swap between pairs)
• Provides learning benefit for less experienced programmers
To work it does require
• Mutual respect between the team
Getting used to talking while programming

86
Q

What does Test-first mean in XP?

A

• All code must have unit tests that are written before any code is produced
• All code must pass the unit tests before it is released
• When a bug is found, tests are created
Acceptance tests are run often and score from these is published

87
Q

Proxy

A

Proxy is where you expose an object that acts as a middleman almost between two objects so you can control how an object can access another object

88
Q

Observer

A

Observer is where clients can subscribe to objects and objects notify them of changes, (look at bus station scenario as an example of how it could be useful)