Software Engineering Midterm
UML Protected
#
UML Public
+
UML Private
-
What is a 'potentially shippable product increment'?
A code increment that is of product-quality i.e. the code has been completely tested, reviewed and documented.
What is a self-organizing team?
A development team that makes their own decisions about work allocation, coordination, schedule and external interactions.
Explain how features can be described and defined using user stories.
A feature description should include an overall description of the feature, a set of user stories where each story describes different aspects of the feature, constraints on the feature implementation and a comments section for any other information that may be useful when implementing the feature.
What is a 'feature' of a software product?
A feature is a fragment of functionality that is offered by a software product.
Agile Software Development
A method for software development that uses new approaches, focusing on close collaboration between programming teams and business experts
What is a scenario?
A narrative that describes how a user or group of users might use a software system to do something that they want to do
What is a persona?
A persona is an imagined user where you create a character portait of a type of user that might use your product.
What is a product roadmap?
A plan for the development, release and marketing of a software product
Software Product Lines
A set of software products that share a common core. Each member of the product line includes customer-specific adaptations and additions. Software product lines may be used to implement a custom system for a customer with specific needs that can't be met by a generic product.
What is a service-oriented architecture?
An architecture where the fundamental software components are stateless, independent software services.
Why is software architecture important?
Architecture is important because it affects the performance, usability, security, reliability and maintainability of a software system.
What is the IEEE definition of software architecture?
Architecture is the fundamental organization of a software system embodied in its components, their relationships teach other, and to the environment and the principles guiding its design and evolution.
Show a typical form of a user story and explain its constituent parts.
As a <role> I <want/need> to <do something> so that <reason>
Product management concerns
Business needs, Technology constraints, customer experience
Suggest three ways of controlling architectural complexity.
Components should focus on implementing a single concern, functionality should not be duplicated at different places in a system, component interfaces should be stable.
What architectural choice is likely to increase system maintainability
Constructing a system from a number of fine-grain interacting components where each component has a single responsibility.
List 5 technology choices that you have to make when designing a software architecture
Database, platform, server, open source, development tools
What are the 3 main objectives of agile software engineering?
Deliver functionality quickly, respond quickly to changing product specifications, minimize development overheads.
Information Sources: Prototyping and playing around
Developers may have an idea for software but need to develop a better understanding of that idea and what might be involved in developing it into a product. They may develop a prototype system as an experiment and 'play around' with ideas and variations using that prototype system as a platform.
What are the information sources for developing a product vision?
Domain experience, product experience, customer experience, prototyping and playing around
What are the two stages of prototyping?
Feasibility demonstration & Customer demonstration
Product Backlog 3 things
Features, Bugs, Product Improvement
Why is is sometimes impossible to localize component interactions within a single layer?
For efficiency reasons, it may be necessary to divide functionality so that is implemented in separate layers (otherwise functionality would be duplicated). Some concerns are cross-cutting and cannot to localized within a layer.
What types of integration are possible when multiple services are included in a software product?
Full integration where services are aware of and can communicate with other services through their API, partial integration where services share components and databases but do not interact directly and independent where there are no shared services or databases.
Explain how you can identify features from a scenario description.
Highlight key phrases in the interactions description that describe specific software functionality that is used.
What are the three fundamental questions you should consider during the architectural design process?
How should a system be organized as a set of architectural components? How should components be distributed and communicate? What technologies should be used to build the system.
What are the most important characteristics of software features?
Independence, coherence and relevance.
What information should be included in a persona description?
Information about the person themselves, their job, their educational background and experience and why they might be interested in using the product.
What factors have to be considered when implementing a mobile product?
Intermittent connectivity, processor power, power management, on-screen keyboard.
What are the 5 Agile Development Principals:
Involve the customer, embrace change, Develop and deliver incrementally, Maintain simplicity, Focus on people not things
What is JSON and how does it differ from XML?
JSON is a language for describing data that is communicated between components in a system; it differs from XML in that it is based on a structured organization without the need for explicit tags for every data item.
What is the function of the fundamental components of the MVC pattern?
Model , which manages the data that is to be displayed; View, which manages the representation or representations of the data as presented to the user; Controller, which manages changes made to the model and communicates with the View to ensure the representations are updated.
List the most important architectural issues for product development
Non-functional product characteristics, product lifetime, software reuse, number of users, software compatibility.
Hybrid Model
Part of the software's functionality is implemented on the customer's computer but some features are implemented on the product developer's servers.
List 4 types of software component relationships.
Part-of, uses, is-located-with, shares-data-with.
Explain how personas, scenarios and user stories can contribute to feature design.
Personas inspire scenarios; scenarios are developed into stories and inspire feature; stories define features
What are the principal product backlog activities in Scrum?
Refinement, estimation, creation, prioritization.
What are the three principal project management activities? For each of these, list two associated activities that are management responsibilities.
Reporting to company management (risk reporting, progress reporting, budget drawdown), administration (managing compliance, procurement of equipment and materials, approving expenditure), people management (managing absence, work reviews, hiring)
List the items that might be part of a code completeness checklist
Reviewed, unit tested, integrated, integration tested, accepted.
What are the most important elements that may be included in a scenario description?
Scenario name, overall objective, what's involved in reaching the objective, personas of actors involved, problem that can't be addressed by existing system, possible ways that problem can be tackled and their may be a requirement to include a very specific feature in a system.
What is SCRUM programming?
Scrum is a framework for agile project organization
List six important factors in feature set design.
Simplicity, functionality, familiarity, novelty, automation, control.
Software product management
Software product management is a business activity focusing on the software products that are developed and sold by the business. Product manag-ers (PMs) take overall responsibility for the product and are involved in planning, development, and marketing
3 Software Execution Models
Stand-alone, Hybrid, Software service
Why does informal verbal communication not always work as a means of team coordination?
Team members may not work full-time, team members may work remotely, team members may work on several projects at once and so cannot be available for daily scrums.
Why is it important to develop a prototype as the first stage of product development?
To check what you want to do is feasible and to demonstrate the software to prospective customers and company funders.
UML
Unified Modeling Language
List five benefits of using Scrum
Unstable requirements don't hold up progress, stakeholders can relate to product increments, customers see on-time delivery of increments, team communication is improved, trust is established between developers and customers.
Explain why user research on its own is not necessarily sufficient when designing software products.
User research shows how people do things at the moment and tends to lock in existing ways of working. It does not take into account the possibility of product innovations changing the ways that things are done.
Why should you use user stories as well as scenarios when deriving a feature list for a software product?
User stories add detail to a scenario and can serve as a system feature description. They are sufficiently detailed that they can be used for planning the system implementation.
Software Development Projects
no external customer that generates requirements and pays for the software. Examples: Student Projects, research software, internal tool development
What is a Scrum?
A scrum is a daily meeting where the team discuss what has been achieved and coordinate their work for that day.
Platform
A software (or software+hardware) product that includes functionality so that new applications can be built on it. An example of a platform that you probably use is Facebook. It provides an extensive set of product functionality but also provides support for creating 'Facebook apps'. These add new features that may be used by a business or a Facebook interest group.
What is meant by a Scrum development team's velocity?
A team's velocity is the sum of the size elements that have been completed during a fixed-length sprint.
What is a product backlog?
A to-do list that sets out what has to be done to complete the product development
Briefly describe the notion of a client-server architecture.
A user interacts using a client computer or mobile device, which hosts the user interface for the system; system functionality is implemented on a remote server. Communication now is usually based on the http protocol.
What is a user story?
A user story is a fine-grained narrative that sets out, in a structured way, a single thing that a user wants from a software system.
What are the advantages and disadvantages of using open-source software.
Advantages: lower cost, tested software and faster time to market; disadvantages are lack of control over software evolution, lack of competitive edge and possibly restrictive license conditions.
Software Services Model
All of the product's features are implemented on the developer's servers and the customer accesses these through a browser or a mobile app.
Explain what is meant by system availability
Availability is expressed as the percentage of time when a system is up and running and available to deliver its services.
What factors drive the design of most software products?
Business and consumer needs that are not met by current products, Dissatsfaction with existing products, technology changes that make new types of product possible.
Briefly explain the three main benefits of using timeboxed sprints
Demonstrable progress where there is a tangible output at the end of each sprint, work planning where the team understand how much work can be completed, problem discovery so that rework required is limited to the duration of a sprint.
What three things should a Scrum team do when planning a sprint?
Establish an agreed sprint goal, decide on PBIs that should be implemented, create a sprint backlog.
What are the differences between a centralized and a distributed security architecture?
In a centralized security architecture, all assets are stored in one place with layers of security protection around them. In a distributed architecture, assets are stored in different places so that a single successful attack does not gain access to all assets.
What are the most widely adopted Extreme Programming practices?
Incremental planning/user stories, Small releases, test-driven development, continuous integration, refactoring
What are the problems of writing goal-based scenarios?
It is often easier for users to articulate how the do some task using an existing system, rather than provide a more abstract description of their goals. Sometimes, it makes sense to include implementation details as the scenario involves using well-known universal functionality such as cut and paste.
How are XP teams managed?
Management is a collective team activity, with no designated project manager
What technical activities from XP should always be used in a Scrum development process?
Test automation and continuous integration
Why do you need to consider the technologies used in a layered architecture when decomposing a system into components?
The choice of technologies used in a layer affects the components in the layer above.
What is incremental development and delivery?
The development and delivery of a software product in discrete stages where, in each stage, some of the product features are implemented and tested
Feasibility demonstration
The first stage in prototyping, You create an executable system that demonstrates the new ideas in your product. The aims at this stage are to see if your ideas actually work and to show funders and/or company management the original product features that are better than those in competing products.
What is 'feature creep'?
The number of features in a product 'creeps up' as new potential uses of the product are envisaged.
Information Sources: Domain Experience
The product developers may work in a particular area (say marketing and sales) and understand the software support that they need. They may be frustrated by the deficiencies in the software they use and see opportunities for an improved system.
What factors should be taken into account when deciding how many story points are required to complete a backlog item
The size of the task, its complexity. the technology required and the unknown characteristics of the work.
Information Sources: Customer experience
The software developers may have extensive discussions with prospective customers of the product to understand the problems that they face, constraints, such as interoperability, that limit their flexibility to buy new software, and the critical attributes of the software that they need
Stand-alone Model
The software executes entirely on the customer's computers.
What are cross-cutting architectural concerns?
These are concerns, such as security and performance, that cannot be localized to a single layer in the system architecture.
How can users get involved in the development of scenarios?
Users are best involved as critics of a scenario rather than as scenario writers. Based on an initial scenario, users can point out what is wrong, suggest how it can be extended and ask questions about aspects they don't understand.
Information Sources: Product experience
Users of existing software (such as word processing software) may see simpler and better ways of providing comparable functionality and propose a new system that implements this. New products can take advantage of recent technological developments such as speech interfaces.
What is the main problem with using a structured approach to scenario description?
Users who have to understand scenarios find structured descriptions intimidating and hard-to-understand.
Scrum
Uses small teams to produce small pieces of deliverable software using sprints, or 30-day intervals, to achieve an appointed goal
What is the principal responsibility of the Product Owner in a Scrum team?
What is the principal responsibility of the Product Owner in a Scrum team.
Explain why you should normally avoid writing 'negative stories'.
You should avoid negative stories because it is impossible to write tests that conclusively demonstrate a negative.
Product Vision
simple statements that define the essence of the product to be developed. Needs to answer: what is the product to be developed? who are the target customers and users? why is it unique?
Customer demonstration
the Second stage in prototyping, You take an existing prototype created to demonstrate feasibility and extend this with your ideas for specific customer features and how these can be realized. Before you develop this type of prototype, you need to do some user studies and have a clearer idea of your potential users and scenarios of use.
Scrum Master
the person in charge of a Scrum project—similar to a project manager
Moore's vision template
• FOR (target customer) • WHO (statement of the need or opportunity) • The (PRODUCT NAME) is a (product category) • THAT (key benefit, compelling reason to buy) • UNLIKE (primary competitive alternative) • OUR PRODUCT (statement of primary differentiation)