Software Engineering Flashcards
How would you design and write a UML diagram?
Break down the project into classes, then define the fields and methods for each class, with arrows to link and on these show the relationships, are they many to many, one to many
What is the difference between static and dynamic UML diagrams?
Static diagrams emphasise structure and dynamic emphasises behaviour and interaction.
What is a collaboration diagram?
They emphasise the structural organisation of the objects that send and receive messages
What is a sequence diagram?
They are explicit sequences of communications for complex scenarios.
In a sequence diagram, please list the elements in the diagram
- Life line: dashed line representing objects life during interaction
- Self call: message sent to itself
- Condition syntax: [some condition] method
- Iteration marker: message sent many times
In a sequence diagram, the arrows have two names, what are they?
- Synchronous calls: It must wait until the message is done, such as invoking a subroutine
- Asynchronous calls: It can continue processing and does not have to wait for a response
In project management, what is the triple constraint triangle?
It is time, cost and scope.
Increase scope, increase cost and time
Reduce time, increase and or reduce scope
Reduce cost, increase time and or reduce scope
Define agile methodology vs waterfall methodology
Agile
- Iterative development, flexibility, collaboration
- Projects are broken down into smaller more manageable periods ‘sprints’
- Continuous feedback, continuous deployment
Waterfall
- Through planning and execution in stages
- Projects follow a linear, sequential flow with distinct phases (design, implementation, testing, deployment)
What is the scope of a project?
The estimation of the work and the boundaries of what is possible in a given time window. Remember time, cost, scope
What is WBS?
Work breakdown structure, a diagram that takes levels of work and breaks them down to their smallest tasks.
Event
Food, Drink, Entertainment
- Find caterer - Buy drinks - Find entertainers
- Buy food
What is a task table?
A table that contains tasks, with fields for start, duration, end, and dependant on.
- The dependant on, is the dependency on other tasks
What is a GANTT chart?
A chart that shows the time vs the tasks.
The tasks are shown as blocks, with the completion status, that will help to show whether a project was successful or not.
List some cost factors
- Hardware/software costs
- Travelling
- Training
- Salaries
- Overheads
Compare time and effort in a project
Time is from the beginning to the end of the project, usually in months.
Effort is the sum of times for all tasks.
List some estimation techniques
- Algorithmic cost modelling: Based on historical cost information that relates some software metric to the project cost
- Expert judgement: Several experts estimate the project cost
- Estimation by analogy: The cost of a project is estimated by comparing it to other projects completed in the same application domain.
What is Parkinson’s law?
It states that work expands to fill the time available.
If the software needs to be delivered in 12 months and 5 people are working, the effort required will 60 person months
What is the COCO model?
Effort = a * size^ β * M
a is an organisation dependent constant
β reflects the disproportionate effort for large projects
M is a multiplier reflecting product, process and people attributes
List Software Engineering principles
- DRY: don’t repeat yourself
- No silver bullet: There is no single technique for a problem
- KISS and YAGNI: Keep it simple stupid, You ain’t gonna need it
- Premature Optimisation: Optimising code too early
- Occam’s Razor: The simplest explanation is usually the best
- S.O.L.I.D. principles: Single responsibility, open/closed, Liskov substitution, Interface segregation and Dependancy
Define software architecture
A high level overview of a software project, the system components and their interactions.
What are design patterns?
- Some problems are similar to others
- Similar problems can be solved in similar ways
- Common patterns can be discovered that work well for particular types of problems
Give some examples of design patterns
- Builder: A class for constructing specific objects
- Adapter: A wrapper that allows incompatible interfaces to work together
- Decorator: A utility that dynamically alters behaviour of objects
- Observer: A class that allows objects to see certain events in the system
Define component architecture
To use reusable components to build large and complex systems
- The problem needs to be broken down into components
- Communication needs to be established between components
- Development teams should be allocated to work on different components
- Architecture needs to be well documented
What is layered architecture?
Components that are grouped into layers, with communication between adjacent layers.
- Presentation layer
- Application layer
- Domain layer
- Infrastructure layer
Use cases
- OS, kernel, system, user processes
- Web app, web page, server, database
Define service oriented architecture
- Consists of a number of services that call each other
- Different services implement different functionality
- Services may vary in size and functionality