SWE I Theory Flashcards
Key Concepts of SCRUM
Product backlog: that is a collection of requirement (features) that should be implemented in the final production, requirements are ranked by product owner, picked by the SCRUM master.
Iterative Sprint: this is a short iteration that aims to implement a subset of the functionalities, the ones collected in the sprint backlog. In the sprint backlog, we must pick from the product backlog those requirements that are feasible to be done during the sprint (1 Month, not flexible).
Required meetings:
- Start of the sprint: 1 day planning meeting
- During every day: 15min every morning
- End: demo meeting (max 4 hours)
Roles in the team:
- scrum master (team leader)
- product owner (owner of delegate of the business)
- the development team
Given a set of functional requirements, often many designs are possible. How to select one design option versus other ones?
Given that all designs satisfy the functional requirements, selection should be done considering NON functional requirements
In the context of configuration management, what is the ‘copy modify merge’ approach and what are its pros and cons?
This is a less rigid strategy, allowing many developers to check out the same file and then parallel work on the same file. The only problem here is that there is the necessity to merge the changes introduced by two or more developers (there are tools that can perform automatic merge).
In the context of change control, describe the lock-modify-unlock technique, its pros and cons.
This strategy is like a serialization of the changes. Developer tries to get a lock over the CI using the checkout, if nobody has check out that CI, then that CI can be changed by him, otherwise he cannot checkout the CI and must wait for the lock release. The lock is released only when the developer check in.
The problem of this approach is that, if the locker forgets to unlock no other developer can modify it. Also, there is no possibility to work in parallel, just a developer at a time. This is a too rigid approach.
What is the definition of ‘exhaustive testing’ ? Is it possible?
Try all possible test cases (for a function, a class, a program).
Normally not feasible due to virtually infinite number of test cases
What is ‘mutation testing’ and what is its goal?
Evaluate how a test suite is good by injecting errors (mutations) in a program and verifying how many mutations are caught by the test suite
There are many software processes. What factors characterize a software process?
- Number of iterations
- sequential vs parallel activities
- new development vs maintenance
- emphasis on documents
What techniques can be used to validate the functional requirements of an application to be built?
- Inspection of requirements
- prototype building
- GUI prototype building
- writing acceptance test cases
In the context of configuration management, what is the purpose of ‘check in’ ‘check out’ operations?
Enforce sequential changes to CI (in lock modify unlock mode) or support parallel changes (in copy modify merge mode) without inconsistencies.
Describe briefly the pair programming technique in Xtreme Programming
Two people working on one machine to develop both production code and test cases. One person writes, the other controls and suggests improvements / modifications. The pair reverses roles often.
An application is developed for an organization in 6 months by 3 people. Then it is used by the organization during 12 years. Argument whether maintenance costs could be higher /lower than development costs
Maintenance costs will probably be much higher than development cost, since the duration of operations (12 years) is way longer than development (6 months)
Effort for development: 3*6 = 18 person months
Effort for maintenance: assuming 6 months per year (half a person maintaining the application) = 6*12 = 72 person months
More precisely, if maintenance requires more than 18person months / 12 = 1,5 person months per year = 33 person days per year, then maintenance costs will be higher than development costs.
In the context of verification and validation, describe Weinberg’s law
The creator of a program is unsuitable to test it – for emotional attachment to its creature the programmer tends to overlook defects in it.
In the context of configuration management, explain what is a baseline and when is it used.
A baseline is a configuration (== a set of configuration items) in a stable form (ex compiles, links, passes all regression tests).
Not all configurations are baselines
Used to deliver an application internally / externally, while development continues on next version.
Describe the waterfall process, its pros and cons.
Activities (requirement design implementation unit test intergration test system test) are done in sequence (activity i+1 starts only after activity i is completed).
Document oriented.
Pro: easy structure of activities; agreement on design allows to allocate tasks to many, distributed workers/companies
Con: delivery to customer and validation of requirements and system happen very late. Changes require to restart the process, slowness and lack of flexibility.
Describe the singleton design pattern, and when it can be used.
Creational pattern. Ensures that only one instance of the class is created. Ex in an operating system the load balancer must be unique, and could be implemented by a singleton.