1.2.3 - Introduction to programming Flashcards

1
Q

What is the SDLC?

A

The systems development life cycle defines the main software development stages.

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

What is the waterfall lifecycle?

A

In the early days of systems development, the stages of a project were carried out sequentially.
This meant that the entirety of each stage had to be completed, formally documented, discussed, agreed, and signed off before the next stage could begin.
This has been described as the waterfall lifecycle

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

What is the order of stages in the waterfall lifecycle?

A
Analysis
Design
Development
Testing
Implementation
Maintenance
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What are the advantages of the waterfall lifecycle methodology?

A

The approach is well structured and well understood.
Having clearly defined stages makes the project easier to plan.
There are clean lines of responsibility.
Large projects can be split into a set of smaller subprojects, each with their own waterfall.

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

What are the advantages of the waterfall lifecycle methodology?

A

The approach is well structured and well understood.

Having clearly define

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

What are the disadvantages of the waterfall lifecycle methodology?

A

The waterfall method is criticised for its rigidity, the large volumes of documentation it requires, and the lack of user involvement.

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

When is the client involved with the waterfall lifecycle methodology?

A

The client is involved in signing off on the analysis and evaluation, but has little input during the design and build stages of the project.

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

What is the waterfall lifecycle heavily dependent on?

A

Accurate specification of the requirements. However, often the client cannot fully articulate what is wrong with the system or what they really want.
They may not understand technological capabilities or the risks of being “early adopters”.
Also, sometimes the development stage takes so long that original requirements no longer reflect what is needed.

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

What is the issue with the testing phase in the waterfall lifecycle?

A

The testing phase is scheduled towards the end, meaning if defects are found there may not be sufficient time to address them. The stakeholders can’t review the end product until after release.

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

What is the spiral model development method?

A

The spiral model is a development method that uses the same steps as the waterfall method, but also uses project cycles, each culminating in a version of the software (a prototype) that is formally reviewed to inform the next cycle. This pattern is repeated until the final product is created.

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

What is each cycle split into in the spiral model?

A

Determine objectives
Identify and resolve risks
Develop and test
Plan the next iteration.

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

What is a key difference between the spiral method and others?

A

The risk management stage is a key difference between the spiral method and other approaches. In any iteration, if the risks cannot be managed successfully, the project can be stopped.

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

What is the main benefit of the spiral method?

A

The emphasis on risk management makes the spiral approach suitable for large-scale, high-risk projects. These could be projects with new technologies or multiple organisations involved.

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

What is the main criticism of the spiral method?

A

Project teams will need to include a risk management expert, which adds to the cost of the project.

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

What is the agile project methodology?

A

The agile approach advocates building prototypes, testing, and incorporating feedback as soon as possible.
Once a prototype is built, it is reviewed to see what is good or bad about it.
At the next stage, the prototype can be modified and new features can be added if required.

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

What is the agile project’s principles around software?

A

1) Deliver working software frequently, form a couple of weeks to a couple of months with a preference to the shorter timescale.
2) The primary measure of progress is working software.

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

What is the agile project’s principles around requirements and customers?

A

1) Welcome changing requirements even late in development.

2) Business people and developers must work together daily through the project.

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

What is the agile project’s principles around design?

A

Simplicity - maximising the amount of work not done - is essential.
Sustainable development - everyone should be able to maintain a constant pace indefinitely..

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

What are the negatives of the agile approach?

A

It can give rise to scope creep - where the client continually adds to the requirements when each prototype is evaluated.
Some argue it is only suitable for small projects, however big projects can be decomposed so work is allocated across multiple teams and separately managed.

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

What is Rapid Application Development?

A

This is an agile approach to software development largely based around prototyping, putting less emphasis on rigid planning and more on the adaptive process.

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

What is a prototype?

A

A prototype is a version of the system that lacks functionality. It can be shown to the user, who can give feedback, informing the development process, and is often easier to understand than paper sketches.

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

What are the benefits of RAD?

A

Well suited for developing software with unclear requirements or important UIs.
Good for smaller projects where the small development teams include users or their representatives.

23
Q

What is the criticism of RAD?

A

It emphasises continuous feedback, so isn’t useful for situations where the client isn’t actively involved.
It encourages sloppiness - a “try and see it approach”.
Projects can take longer than anticipated when users make continuous requests for minor changes.

24
Q

What is extreme programming?

A

Extreme programming is another agile approach, with the core principle that there should be frequent releases in short development cycles, and continual communication with the customer.

25
Q

What are the differences between XP and RAD?

A

The importance of code quality is paramount in XP.
The development and feedback loops are much shorter.
The releases are not called prototypes, but are working versions of a component.

26
Q

What happens during extreme programming?

A

First, there is a planning phase to determine what will be done and how it will be tested.
Programming is then done in pairs, with an emphasis on standards and version control.
At the end of each release, there is a feedback stage.

27
Q

What are the benefits of extreme programming?

A

Code quality is high, meaning there are fewer bugs and so less time bug fixing.
Having a user on each team means there is a strong focus on getting the user journey right.

28
Q

What are the criticisms of extreme programming?

A

Scope creep.
Requires lots of communication and collaboration, which is difficult virtually.
Client has to commit to having users involved throughout.

29
Q

What is the scrum/sprint programming methodology?

A

Projects are run as a series of sprints, each taking no more than a month and delivering something for the client to review, guided by a design and flexible plan.
Every day, there is a daily scrum which is a 15 minute meeting to review progress and create a plan.

30
Q

What happens at the end of a Sprint?

A

In a sprint review:

  • The Team demonstrates the new features to the Product Owner and stakeholders.
  • The Team reports on what went well and what could be improved.
  • The Product Owner reports on progress against the Product Backlog.
  • The participants discuss any new/changing requirements.
31
Q

What is the sprint retrospective?

A

This is a meeting at the end of a sprint which focuses on the relationships between the people in the team - focusing on the working environment, quality of collaboration and Team’s processes.

32
Q

What is the role of the Product Owner in a scrum project?

A

The Project Owner is responsible for maintaining the business aspect of the development: managing stakeholders, setting priorities and ensuring the business value of the product.
They provide “user stories”, which the developers translate into tasks.

33
Q

What is the Product Backlog?

A

The Product Backlog is an ordered list of everything that is known to be needed in the product. The Product Owner determines the priorities within the Backlog (because they know what is valuable in terms of business).

34
Q

What is the role of the Scrum Master in a scrum project?

A

The Scrum Master is not the team leader - there is none.
They instead work to safeguard the team’s performance and quality of the product.
They try to remove any impediments that are preventing the Team from achieving its goals, and facilitate practices to improve the Team’s productivity.

35
Q

What is the role of a Scrum Team in a scrum project?

A

Each Scrum Team is self-organising, and the entire Team addresses any issues or problems together. This means that there is a wide sense of project ownership for the whole Team, and it encourages creativity and innovation.

36
Q

What is the imperative language paradigm?

A

Imperative languages are designed to solve specific problem types. In this paradigm, programmers solve a problem by writing a set of instructions that say how a problem should be solved.

37
Q

What is a big advantage of high-level imperative languages?

A

They have built in function, and libraries of functions to solve specific functions.

38
Q

What is the procedural programming paradigm?

A

This is where program code is divided up into procedures, discrete code blocks that carry out a single task. It focuses on sequence, selection and iteration and local variables.

39
Q

What are the benefits of procedural programming?

A

It is much easier to test and debug.
Less repeated code
Subroutines are reusable in different programs.
Subroutines with clear usernames are self documenting.

40
Q

What are drawbacks of procedural programming?

A

It focuses on what needs to be done, rather than the integrity of the data.

41
Q

What is the issue with global variables?

A

Because they can be accessed and modified by every subroutine in a program, it is hard to work out where a value is changed. It is difficult to debug with a very large application.

42
Q

Give some examples of imperative languages

A

C, Python and FORTRAN

43
Q

What are declarative languages?

A

Declarative languages define what should be achieved by the program.
The programmer declares the problem to be solved, without having to know how the solution is executed.

44
Q

What are declarative languages also known as?

A

Domain-specific languages, because they vary by the domain they are designed to work with.

45
Q

What is an example of a declarative language?

A

SQL, which is designed to work with relational database management systems. The programmer doesn’t need to know how the data search is carried out, only to define what they want to know.

46
Q

What is the object oriented paradigm?

A

The OOP paradigm involves identifying the objects that make up the system. Objects are representations of things in the real world that we wish to model - they do not share data.

47
Q

What does encapsulation mean?

A

The state of an object is private, and other objects can only interact with the object’s public methods.

48
Q

What does inheritance mean?

A

Subclasses can inherit properties and methods from one or more parent classes.

49
Q

What does polymorphism mean?

A

The ability of an object to take on many different forms; specifically for a method with the same name to have many different implementations.

50
Q

Why is OOP useful? (classes)

A
  • Prewitten classes promote code reuse, and can be extended with child classes.
  • Classes are highly modular, meaning they are easy to maintain; if an object needs an extra attribute you only need to go one place to add it.
51
Q

Why is OOP useful (not classes)?

A
  • Easier to think in terms of objects than procedurally.
  • Encapsulation provides a high level of data protection, ensuring the data can never be modified carelessly and ensures any associated actions can also happen.
52
Q

What are some negatives of OOP?(size)

A
  • Might require a much larger and more complex system to be built to achieve the results required.
  • Objects take up a large amount of memory, and this can be an issue if there are hardware restrictions.
53
Q

What are some negatives of OOP?(

A
  • A system relying on lots of message passing can be detrimental to performance even if it is the correct conceptual solution.
  • Inheritance can have unintended consequences, so objects can acquire the ability to do things that don’t make sense.