Busy. Please wait.

Forgot Password?

Don't have an account?  Sign up 

show password


Make sure to remember your password. If you forget it there is no way for StudyStack to send you a reset link. You would need to create a new account.

By signing up, I agree to StudyStack's Terms of Service and Privacy Policy.

Already a StudyStack user? Log In

Reset Password
Enter the email address associated with your account, and we'll email you a link to reset your password.

Remove ads
Don't know (0)
Know (0)
remaining cards (0)
To flip the current card, click it or press the Spacebar key.  To move the current card to one of the three colored boxes, click on the box.  You may also press the UP ARROW key to move the card to the "Know" box, the DOWN ARROW key to move the card to the "Don't know" box, or the RIGHT ARROW key to move the card to the Remaining box.  You may also click on the card displayed in any of the three boxes to bring that card back to the center.

Pass complete!

"Know" box contains:
Time elapsed:
restart all cards

Embed Code - If you would like this activity on your web page, copy the script below and paste it into your web page.

  Normal Size     Small Size show me how


Introduction to Software Engineering & Object-Orientated Programming

What does software include? Documentation for future developers, Instruction manuals for users, configuration components that may affect the program, installation/upgrade components to maintain the program.
What are the four generic activities involved in software engineering? SPECIFICATION - What the system should do and it's development constrains, DEVELOPMENT - production of the new software system, VALIDATION - Checking the software is what the customer wants, EVOLUTION - changing code in response to demands.
What issues exist with the waterfall/v models for software engineering? Need stable and "perfect" requirements, Cannot always anticipate what you have to do, Doesn't account for refactoring, Too inflexible, Depends on getting each stage exactly right.
What are Agile methods? A bottom up approach that allows rapid prototyping and iterative design. It is based on five principles.
What are the issues with iterative processes? Lack of process visibility leading to poorly structured systems, Too much bottom up and not enough planning, Special skills (for rapid prototyping etc.) may be required, Lightweight documentation is taken to mean no documentation.
Define maintainability: Software must evolve to meet changing needs, whilst simultaneously remaining of high quality.
Define dependability: Software must be trustworthy and reliable.
Define efficiency: Software must not make wasteful use of system resources - this isn't just about code efficiency.
Define acceptability: Software must be accepted by it's users, whilst being understandable, usable and compatible with related systems.
What is a feasibility study? Find out if the current user needs be satisfied given the available technology and budget.
What is requirements elicitation and analysis? Find out what the stakeholders require from the system. Define the requirements in a form understandable to the customer.
What is requirements definition and specification? Define the requirements in detail.
What is requirements validation? Check the requirements and specification don't conflict. Check the requirements and designs with the customer.
What is a user requirement? What the stakeholders want/have to do. High level descriptions / natural language statements / diagrams to show things.
What is a system specification? What the system should actually do. Specific detail for someone who is building the system. WHAT but not HOW.
What does functional mean? Exact functions the system should provide. E.g. allow login, provide account creation.
What does non-functional mean? Constrains on the system. e.g. performance, security, up-time.
Define specification: Detailed descriptions of the software system's functions, services and operational constrains.
Define System requirement: These should define exactly what is implemented in terms of software.
What are specifications usually linked to? Each specification is usually tied to a requirement.
What are the advantages of Natural Language specifications? Expressive, intuitive and universal.
What are the disadvantages of Natural Language specifications? Ambiguous, vague and can be interpreted differently.
What are structured specifications? These go further than natural language specifications by enforcing certain details using templates. They can be used to specify additional information.
What do you want to find out when gathering requirements? All the types of people that will use the system. All the tasks people need to achieve and why. What they use to do the task and what happens afterwards. All the technology they have to use.
What is the purpose of defining goals before interviews? Goals help you to phrase questions, helping keep both direction and focus. They help you identify the main topics that you wish to discuss with each stakeholder.
What is a survey? A well defined and well-written set of questions to which an individual is asked to response.
What are the advantages of a survey? Contacting lots of people, finding the majority opinion on things, see how different stakeholders answer the exact same question.
What are the disadvantages of a survey? They don't enable you to actually understand something. They presume you already understand the problem and know the correct questions to ask.
What are the issues in survey designing? Questions with 2 parts, negation within the question, leading questions, highly-deabtable topics that can draw un-necessary focus. Lengthy surveys.
What are the advantages of interviews? They allow you to ask follow up questions.
What should be done before an interview? A script should be prepared, containing a variety of questions you wish to ask. Essentially a to do list.
What are the issues with interviews? Overwhelming amounts of summative data. You get more understanding but fewer specific requirements. You hear what they think, but don't see what they do (this could be different).
What are the advantages of focus groups? More people at once, faster coverage. Allow the discussion of differences and opposing opinions.
What are the disadvantages of focus groups? Possible conflict. Avoid a dominant speaker. Takes longer per question.
What do observations help you identify? The process of activities. The social factors of activities. The organisational/contextual requirements (and other non functional requirements).
What is contextual inquiry? This is a mixed method of observation and interviewing. (one-on-one interviews in context of the activity) It focuses on the process and people.
Describe the Hawthorn effect: When people are under observation they do not act as they usually would rather, they act in the optimal/desired way.
What is Ethnography? Observing an environment, asking about whats happening and getting involved in the activity yourself.
What is the process of a technology tour? Start by explaining what you're studying. Ask your participants to describe their process. Focus on the 4 main questions. At the end, create documentation about it.
What is modelling? Synthesising all the requirements you collected into key ones. You begin by making diagrams that represent "all" the requirements in one diagram.
Describe personas: These are a stand in for a real user type. They allow you to identify motivations, expectations, goals and knowledge.
What do personas contain? Photo, role, demographics, elaborated POV, key quote, personality elements.
What are the benefits of personas? They ensure that the designers are creating a system that fits all the key user types. Externalisation.
Describe user stories: A one sentence statement of a clear requirement for a user. Includes a role, goal and an outcome.
What are the advantages of user stories? Concise and clear, very little maintenance, creates a clear requirements checklist, breaks up the project, can be ranked for importance.
What are the disadvantages of user stories? Difficult to use in BIG projects, loose detail and formality, do not describe the process/tasks/context.
Describe task analysis: A complete breakdown of what has to be done (and what steps are required to do this). It is not how a system is used.
What are the benefits of task analysis? Details task-focused requirements for a system. Use of a system. Structure the interface. Define procedures.
What is heuristic evaluation? Actually analysing their current tools. It helps you determine why the current system isn't very good (so can help in the design phase to ensure the new system improves where the other failed).
What is a use case diagram? The represent the people who do an activity and the tasks it consists of.
What is a process model? These are used to elaborate key areas of activity. It explains the process so we can see stages of when the system will be used.
What does a sequence diagram show? These elaborate how specific tasks are accomplished.
What are context models? They allow you to represent the context of the problem. They also define the boundaries of the system (what NOT to develop).
Why do we validate requirements? Check that you are right. Avoid re-working. Contractually agreeing.
What is a prototype? The UML models from the User Requirements, and the specific of the System Requirements Specifications. A prototype demonstrates how these might work in a system.
What is an analytical Specification review? A formal review process involving a range of stakeholders and a user. You go through the specifications you found and review each of them. Ensuring they are correct, necessary and important.
Why do specifications need to be testable? So that when it comes to checking whether you built it right, you can test and prove all of the specifications that you resolved.
Why are prototypes good? They are a way of envisioning how all your specifications work together. They are a way of testing the consistency of your specifications. They give you something to show to people and discuss.
Define what a prototype is: A concrete but partial representation or implementation of a system.
What is a low fidelity prototype? It captures the point, functions, etc. It helps envisage the ideas.
What is a high fidelity prototype? Represents part of the reality, and allows you to agree on the final designs.
What are the benefits of prototypes? Quick, easy and cheap to construct. Give concrete form to system requirements. Accessible to stakeholders. Communicate requirements effectively. Can be quickly and easily revised.
What are the risks of prototyping? Investing too much time/energy in hi-fi prototypes. Adhoc prototype code being used in the real system. Using it instead of documentation.
What is an architectural design? Where you identify the overall structure of the system, the principle components, their relationships and how they are distributed.
What is an interface design? Where you define the interfaces between system components. This interface specification must be unambiguous so that they can be built independently.
What is a component design? Where you take each system component and design how it will operate. This may be used to automatically generate an implementation.
What is a database design? Where you design the system data structures and how these are to be represented in a database.
When doing Object Orientated design using Natural language, what do the nouns and verbs represent? Nouns are objects or variables/attributes of it. Verbs are typically functions that objects permit.
What is testing? Testing is designed to show that the software does what it is supposed to, and discover program defects before it is put to use.
What is a test plan? A list of ways to test whether functions are working the way they are suppose to.
Why build test plans? Developers can use them to test the code they are writing. Manages can estimate testing workload, and schedule it. Testing documentation serves as evidence to clients.
When should coders test? During development testing. They can tell for themselves if they have got it right, before wasting other peoples time.
When should an independent test team get involved? During release/acceptance testing. They are more likely to document the process. They are more likely to believe it is broken, and less likely to find something that is "acceptable".
What are the contents of a test plan? Testing process, requirements traceability, tested items, testing schedule, test recording procedures, hardware/software requirements, constraints and system tests.
What is validation testing? Tests that show the software produces the correct answer.
What is defect testing? Tests that show the software doesn't break.
What does a test case include? A statement of what is being tested. Specifications of the inputs to the test. What the expected output from the system is. Specify the steps needed to carry out the test.
Why do we need to do comprehensive testing? Tests only show the presence of errors, not their absence.
What is partition testing? Grouping similar tests together to avoid carrying out unnecessary tests.
What is test driven development? Writing the test for the function first, then write and test the function until it passes them all. You do not move on to the next class until all the tests have been passed.
What are the benefits of test-driven development? If every piece of code has a test, then all your code has been tested. It helps with debugging. The tests form a documentation.
What are the disadvantages of test-driven development? You can't test how objects use a class. You can't use the tests to prove the system does what it is supposed to do overall. You can't test that it meets all the requirements.
What is White box testing? You know how the code is supposed to work. Your tests test how it is supposed to work.
What is Black box testing? You know what the output is meant to be for an input.
How do you manage the team coding process? Coding conventions. Work allocation. Bug reporting/fixing.
How do you manage code quality? Paired coding. Test driven development. Comment driven development. Dependable coding.
What is the top down approach for work allocation? Start building the main classes first. Prescribes all the uses of other classes. May identify additional requirements.
What is the bottom up approach for work allocation? Start with all the simple classes. Complete more classes fully. May have to refactor the classes later on.
What is the scrum approach to work allocation? Plan and outline what you will achieve. Set a series of sprint cycles doing the work. Document the current phase.
What is a sprint cycle? A fixed time period to achieve the current plan. They are intermittent points with meetings in between.
What are the benefits of paired coding? Problem solving & coding can be well separated. No single person has ownership. It has an informal review process built in. Good practice is spread across the team.
What are coding heuristics? Good principles of Object Orientated code.
What is dependable programming? Control the visibility of information. Check all inputs for validity. Provide a handler for all exceptions. Minimise the use of error-prone constructs. Provide restart capabilities. Check array bound. Include timeouts. Name all real world constants.
What are the four checks that can be used to check for input validity? Range checks, size checks, representation checks, reasonableness checks.
What do exceptions do? Report to a higher component that an error has occurred. Do something different to the normal code. Call a support component in the system to handle it.
What is debugging? Locate and remove the cause of bugs.
What are breakpoints? The software will pause, allowing you to check the value of each data point. You can move through step-by-step.
What is release testing? Testing that everything works together to meet the requirements - rather than the specification.
What are the differences between release and integration testing? A separate team that has not been involved in development is responsible for release testing. The objective of release testing is not finding integration bugs.
What is acceptance testing? This is a formal test by the customer, before they agree that it is ready. It is tested with real data supplied by the customer.
What are the six stages of acceptance testing? Define acceptance criteria. Plan acceptance testing. Derive acceptance tests. Run acceptance tests. Negotiate test results. Accept or reject the system.
Before acceptance testing, what should they have already accepted? The requirements. The lo-fi prototype. The hi-fi prototype. The final system.
Why might customers choose to use a not yet fully functioning system? The cost of not using the software may be greater than the costs of working around the problems.
What is Alpha user testing? A few specific users trial the software for real work tasks.
What is Beta user testing? The software is released for limited general use. A limited group is allowed to use a release candidate and users will feedback problems as bug reports.
What are the three principle concerns of Software Quality Management? Defining standards and procedures for the whole company. Checking that a project conforms to the company standards. Help create quality plans so that quality goals are set.
What is a project quality plan? It defines what "high-quality software" means for a particular system.
What are the common software inspection problems? Criticising the person who built the document. People worry that their performance will be judged. People don't properly before before the inspection. People try to discuss every single problem as they find it.
What measures can you have when trying to determine software quality? Number of lines of code. Fog index (readability of comments). Number of reported faults after delivery. Number of person days for coding.
What is a control/process measure? Measuring the success of your SE process. Helps to decide whether to improve processes later.
What is a code/predictor measure? Help you to judge aspects of the code quality.
Define specification: What the system should do and it's development constraints.
Define development: Production of the software system.
Define validation: Checking that the software is what the customer wants.
Define evolution: Changing code in response to demands.
What does maintenance involve? Correcting errors that were not discovered earlier in the life cycle. Improving the implementation of system units. Enhancing the system's services as new requirements are discovered.
Why is building new software instead of updating existing software riskier? Errors may be made in the new specification. New software may take longer to arrive. A whole new project may be more expensive.
Why is it so costly for maintenance? Team changes, staff skills, program age and structure and poor development practices.
What do poor development practices include? Undocumented requirements. Undocumented designs. Low readability of code (meaning it is hard to work out).
What is a fault repair? Fix coding errors. Usually cheap to fix and do not involve much re-design.
What is an environment adaptation? Updates for a new OS. Slightly more expensive to fix as there are many changes however it does not involve much re-design.
What is a functionality adaptation? To meet business changes. This is much more expensive and often involves a lot of re-design.
What is requirements management? The process of understanding and controlling change to requirements. Tracing which ones have changed in light of new information. They should have unique id's allowing cross-referencing to take place.
Define refactoring? The process of making improvements to a program to slow down degradation through change. It is often considered preventative maintenance.
What is the best way to handle an emergency change? Document it, to allow a later proper solution to be designed for release in the next official version.
What is the danger of emergency changes? Multiple changes occur, masking the fixes of the original changes causing the code to get more unmanageable.
What happens when the cost of change gets too high? Rebuild the software. Build different software to handle other jobs. Or if the requirements are so different you may have to build entirely new software.
Is software evolution different to software engineering? Most SE involves re-using/adapting previous code anyway. It is rare to build entirely from scratch with no external components.
Describe the process of evolving from software version 1 to software version 2: Creating new specification, implementing the new designs, testing the implementation and then releasing it.
What are the limitations of plan-based methods? Depends on lots of documentation to be successful. Lots of waiting times between different teams. Very expensive to fix buggy code. Not much freedom for developers. Hard to manage change during the project.
What is a top-down approach? Do all the planning, then all the work, then all the testing.
In the agile manifesto, what is valued over processes and tools? Individuals and interactions.
In the agile manifesto, what is valued over comprehensive documentation? Working software.
In the agile manifesto, what is valued over contract negotiation? Customer collaboration.
In the agile manifesto, what is valued over following a plan? Responding to change.
What are the five key agile principles? Customer involvement. Incremental delivery. People not the process. Embracing change. Maintaining simplicity.
Describe customer involvement in terms of the agile principles: Involving customers closely throughout the development process. Providing and prioritising new system requirements and evaluating iterations of the system.
Describe incremental delivery in terms of the agile principles: The software is developed in increments with the customer specifying the requirements to be included in each.
Describe people not the process in terms of the agile principles: Recognising and exploiting the skills of the development team. Leave members to develop their own ways of working without prescriptive processes.
Describe embracing change in terms of the agile principles: Expecting the system requirements to change and so design the system to accommodate these changes.
Describe maintaining simplicity in terms of the agile principles: Focus on simplicity both in the development of the software and the development process. Actively work to eliminate system complexity.
What is extreme programming? New versions of the system are built everyday. Increments are delivered to customers every 2 weeks, and all tests are applied before a build is accepted (and they are only released once all tests are passed).
What is the process of extreme programming? Select user stories for this release. Break down stories to tasks. Plan release. Develop software. Release software. Evaluate system.
When are agile methods valuable? Small of medium sized projects. Customer system development with an involved customer.
What are the drawbacks to agile methods? It is not always easy to have a long term involved customer. Team members may have incompatible personalities. Hard to prioritise change. Simplification takes time and can be forgotten. High risk to companies. Harder to plan for project.
It is important to have a very detailed specification and design before moving to implementation. Agile or plan? Plan-driven development.
Is the software small enough to be built by a small co-located team? Or can be broken down so? Agile or plan? Agile development.
What are the four goals of project management? Deliver software to the customer on time. Keep overall costs within budget. Deliver software that meets customer expectations. Maintain a happy and well-functioning team.
What are the three strategies to combat risk planning? Avoidance strategies to reduce the risk happening. Minimisation strategies to reduce the impact of it happening. Contingency plans allowing you to know what to do if it does happen.
Created by: Sparksy