software engineering collection 1

Lakukan tugas rumah & ujian kamu dengan baik sekarang menggunakan Quizwiz!

What are some Architectural Design decisions?

- Is there a generic application that can act as a template? - How will it be distributed? - What architectural patterns or styles might be used? - What strategy will control the operation of the components in the system? - How should the architecture of the system be documented? - What arch. organization is best for delivering the non-functional requirements?

Test Driven Development (TTD)

- Approach to program development in which you inter-leave testing and code development - Tests are written before coding and 'passing' the tests is the critical driver of development - Introduced as a part of agile development methods like extreme programming but can also be employed in plan-driven development processes.

Two levels of abstraction in software architecture

- Architecture in the small - Architecture in the large

Regression Testing

- Benefit/Part of Test Driven Development - A test suite is developed incrementally as a program is developed. - Checking to ensure that changes to the code have not broken the previously working code.

System Quality Assessment Components

- Business process assessment: How well does the business process support the current goals of the business? - Environment assessment: How effective is the system's environment and how expensive is it to maintain? - Application assessment: What is the quality of the application software system?

The 4+1 Views of Software Architecture

- Logical View - Process View - Development View - Physical View - Related use cases or scenarios (+1)

Software Process

A set of actions/tasks that results in the specification, development, validation, and/or evolution of a software product.

A cross profile shows...

A slice through a river.

Scrum is iterative, what is an iteration is called?

A sprint

Constraint requirement

Constrains the solution beyond what is needed to meet functional-, performance-, and quality requirements.

Domain requirements

Constraints on the system from the domain of operation rather than the from the specific needs of the system users

Q - In traditional development, customer interaction is discouraged

False, It's less common, but not discouraged.

Q - In agile projects, no requirements are defined before an iteration starts.

False, Req. can be set before first iteration. Thereafter they evolve during the project.

What 2 steps are required to calculate all the values in each activity node?

Forward pass and THEN backward pass

Rules of thumb for which development process to use (4 rules)

High uncertainty -> Evolutionary Low uncertainty, High complexity -> Incremental Low uncertainty, Low Complexity -> Waterfall (aka "one-shot") Schedule is tight -> Evolutionary or Incremental Evolutionary = spiral model

Why is the feature list important in FDD?

It is important because it gives a backlog of features that need to be implemented in the next sprint

Elicitation methods

Kolla mer noga • Explicit (interviews, questionnaires) • Reflective (thinking aloud) • Creativity/Consensus (brainstorming, focus groups) • Implicit (observations) • Refining (drawings, prototypes) • Reactive (use cases)

In Scrum, what is the overall prioritized work for a project called?

Product Backlog

Repository architecture

Shared data is held in a central database and may be accessed by all sub-systems -good: components can be independent, data managed consistently -data driven systems

In Scrum, each sprint ends with what ceremonies?

Sprint Review Meeting

Q - Essentially, use cases are more design-oriented than task descriptions.

True

Dependencies (2) - The science of RP

Two types: • (C) Coupling relation: released jointly because of dependency. • (P) Precedence relation: released in order, one feature now might rely on a later feature which then makes no sense to release now.

Where are the customer requirements stored?

Typically stored on a spreadsheet

Universal Modeling Language

UML is a set of 13 different diagram types that may be used to model software systems. Emerged from work in the 1990s on object-oriented modeling, where similar object-oriented notations were integrated to create the UML.

Domain knowledge

Understanding of the field where the software is about to get implemented. Ex. a supplier needs understanding of the hospital system in order to successfully engineer a software solution.

When should MVC patterns be used?

When there are multiple ways to view and interact with data. Also when the future requirements for interaction and presentation of data are unknown.

Should documented requirements exist in FDD?

Yes

product backlog

a list of to do items, can be feature definitions, requirements, user stories, or supplemental tasks, anybody can add to it, is owned by the product owner, can change without affecting the sprint

goal

a requirement that is not well defined, general intention of the user such as ease of use, verifiable non functional requirement

architectural pattern

a stylized description of good design practice, which has been tried and tested in different environments

decorator pattern

allows extending the functionality of an existing class at run time

Baseline

definition of a specific system, specifies the component versions included in system plus libraries, config files, etc. important b/c often have to recreate specific version of a complete system (e.g. to recreate bugs, etc.)

pattern

describe best practices, good designs, and capture experiences in a way that is possible for others to reuse this experience

software lifecycle

development, evolution, servicing, retirement

Agile is good but we must also - Guest Lecture

draw and visualise things sometimes - "draw the map"

What are the types of design patterns?

observer, facade, iterator, decorator

waterfall pros

offers a clear, straight forward process, stages can be easily tracked and managed, it's easy to see progress,easy to document

block comments

sometimes use a combination of the forward slash andd asterisk to mark the start and end of a block.

Open source development involves making the ___________ of a system publicly available. This means that many people can propose changes and improvements to the software.

source code

open source licensing

source code is freely available, does NOT mean that anyone can do as they wish with the code, the developer still owns it

user requirements

statements in natural language plus diagrams, written for customers

functional requirement

statements of services that the system should provide and it should behave in particular situations and inputs, may state what the system should not do

development testing

testing during development to discover bugs and defects (unit, component, system)

probabilistic duration estimation

used when there is uncertainty in how long an activity will take; use basic statistics to account for uncertainty in activity duration estimates; the activity duration is based on the combining of three estimates rather than just one; experts are asked to provide an optimistic estimate (O), a pessimistic estimate (P), and a most likely estimate (M)

LGPL

variant of GPL where you can link to open source code without having to publish the source of these components

sprint velocity chart

velocity compares to rolling average(10 sprints) and overall average

What does the Scrum agile process allows developers and managers to focus upon?

The work of the sprint and the goals of the scrum team

Software Evolution

The stage in a software system's life cycle where it is in operational use and is evolving as new requirements are proposed and implemented in the system.

Who grants authority to a Scrum Master?

The team

vulnerability

weaknesses that could be exploited to cause harm

Special interfaces (1/4)

• Platform requirements: what the platform shall run on. • Technical interfaces: interactions with other systems.

Program - big picture of agile requirements

• Release planing • Requirements analysis • Roadmapping and prioritisation • Agile release train: coordinate a set of teams for a set of releases

3 main activities in the requirements engineering process.

• Requirements elicitation and analysis • Requirements specification • Requirements validation

Where can a prototype be used? (3)

• The requirements engineering process to help with requirements elicitation and validation. • In design processes to explore options and develop a UI design • In the testing process to run back-to-back tests.

Development Platform Tools

- An integrated compiler and syntax-directed editing system - A language debugging system - Graphical editing tools - Testing tools - Project organizing tools

Levels of Reuse

- The Abstraction Level - The Object Level - The Component Level - The System Level

Software Process Model

An abstract representation of a process.

What is Extreme Programming (XP)?

An agile method.

What is a floodplain?

An area of low lying ground adjacent to the river, formed mainly over river sediments, prone to flooding.

Decide programs needed

Design

Determine relationships between the programs

Design

Plan for implementation

Design

Q - Agile projects are generally small and of low criticality.

False

Q - Domain events include user interface events, which can be complicated in nature.

False

T or F: A "customer" must be from an external source outside the company.

False! A "customer" can be an organization from within the company as well.

What is valued more than processes and tools in the Agile Manifesto?

Individuals and interactions

You are a Scrum Master or coach facilitating a retrospective meeting. What is the main purpose that you must ensure during the meeting?

Inspect and adapt, look back at how, not what to do (even) better next time.

Scrum

Involves implementing a small number of customers requirements in sprint cycles

example rules for creating identifies

Capital letters to create constant values,

Agile creativity and its issues

Projects are more agile, lean, and flexible. Lack of incubation time. Focus on current work.

Single Sign On

SSO shell sends user password and token to applications, applications perform authentication

Include all possible cases for inputs

Testing

Risk Management

The practice of identifying, analyzing, and controlling or mitigating risks.

velocity

estimate of how much backlog effort a team can cover in a single sprint, measure for improving performance

risk

probability x impact, probability often rated from 1 to 4

Agile

refers to four simple principles outlined in the Agile Manifesto. Individuals and interactions Working software Customer Collaboration Responding to change

True/false The estimating process is iterative

true

True/false The only way to have a project end sooner is to reduce the critical path

true

True/false Work days are often defined as 8 hours a day and 5 days a week

true

5 phases of waterfall model

idea, analysis, design, development, test

Branching and Merging

independent sequences of versions rather than single linear one, can merge branches to create new version of component, if changes involve different parts of code can be merged automatically

prototyping

initial version of a system used to demonstrate concepts and try out design options (can be used in requirements, design, or testing), they are thrown away after development

Meaningful Identifiers

int PI (Capital letters to create constant values) class Student (using initially caps words for class names) string firstName (lowercasing methods and variable names) float hourlyWage void doStuff

disadvantage of waterfall model

it is rigid and does not easily allow for modifications.

Why is incremental an improvement over waterfall?

it provides more opportunity to make adjustments as needed with less cost involved in making changes along the way.

single line comments

often uses two forward slashes

open source license models

General Public License (GPL), Lesser General Public License (LGPL), Berkeley Standard Distribution License (BSD)

What is a product backlog in an agile method?

A list of work to be done for a project.

What is a meander?

A loop-like bend in the course of a river.

the three estimates

optimistic estimate (O), pessimistic estimate (P), most like estimate (M)

Middle course profile

Gentle gradient, wider size, v shape widens, vertical and lateral erosion

What does Load quantity represent on The Bradshaw Model?

How much stuff is being carried

What does occupied channel width represent on The Bradshaw Model?

How wide the channel is

Which company first introduced increment development?

IBM

Construct the product according to the design

Implementation

How is a meander formed?

In the middle course the river has more energy and a high volume of water. As the river erodes laterally, to the right side then the left side, it forms large bends, and then horseshoe-like loops called meanders. The formation of meanders is due to both deposition and erosion and meanders gradually migrate downstream.

What is an interlocking spur?

Ridges of more resistant rock that the river flies around. In the upper course, the river eroded downwards to create a v-shaped valley. It does erode sideways so flows around the hard rock rather than cutting through it.

Examples of Agile Processes

Extreme Programming and Scrum.

Descriptive Model

What actually happens in a Software Process.

What are the three questions addressed in the daily scrum?

What did you do yesterday? What will you do Today? What obstacles are in your way?

Prescriptive Model

What should happen in a Software Process.

How do we know we can enter the post-game phase?

When all the requirements are complete

lag time

delay between activities

sprint

development iteration

waterfall model

-good when changes are limited and requirements are well understood

sprint planning

4 hours, run by scrum master, declare sprint goal, form sprint backlog, adjust features by estimates against sprint capacity

Velocity

An estimate of how much product backlog effort that a team can cover in a single sprint.

verification

Are we building the product right?

What is a good way to end a stand-up meeting?

Ask team members to share any wins they've experienced on the project.

Most important requirement for software systems

Rapid development and delivery

What's the ideal resource histogram look like

Smooth

Diagram

The graphical presentation of a set of things connected through relationships

checked exception

checked during compile time

pair programming

two people, one keyboard, better understanding but less productive

duration

the number of time periods required to complete some portion of the work

nonfunctional requirement

-constraints on the services or functions, often apply to the system as a whole rather than individual features or services

What was the origin of the Scrum approach to Agile software development?

Rugby

_____________diagrams are used to model a system's behavior in response to internal or external events.

State

Prototype

Working model of some or all of a finished product.

generalization hierarchy

a qualified doctor is NOT a general practitioner, lower level classes are subclasses that inherit attributes and operations from their superclasses

A model is an __________ view of a system that ignores system details. Complementary system models can be developed to show the system's __________, interactions, structure and ___________.

abstract context behavior

user story format

as a <type of user>, i want <some goal> so that <some reason>

methods of computer security

authentication, access control/authorization, cryptography

requirement

basis for a bid or contract, range in specificity (can come from any stakeholder)

who uses a requirements document?

customers, managers, engineers, testers, maintainers

Open source development

distributed version control essential b/c several ppl may work simultaneously, devs may maintain public server repo where they push new component versions (integration manager pulls change to definitive system)

waterfall cons

does not build in iteration, does not build testing and review into each step, therefore changes can be costly, assumes requirements are clear and unchanging

blocks list

list of blocks and pending decisions, owned by scrum master, stay on list until resolved

WBS Chart

logical decomposition of tasks, captures 100% of tasks, no overlaps (alternative is story map)

4 + 1 view model

logical view, process view, development view, physical view, related use cases or scenarios (+1)

Spiral Model

risk-driven process model generator for software projects. Guides a team to adopt elements of one or more process models, such as incremental, waterfall, or evolutionary prototyping. Before any changes are made...a risk assessment is performed, helping to decide the nature and degree of the recommended change.

what is the difference between scrum and agile?

scrum is for software development, while agile is the overarching term that could apply to other areas as well

process models

show the other systems in the environment, not how the system being developed is used in that environment - what is the outcome/impact?

process view

shows how at run time, the system is composed of interacting processes

How to measure creativity?

• Number of patents • Number of patent filings • Number of generated ideas • Gut feeling (often most accurate)

Why prioritise requirements?

• To focus on the most important • To find high- and low prio requirements • To implement in sufficient order • To same time and money

interviewing

1. closed: based on pre determined list of questions 2. open: various issues are explored with stakeholders

Types of diagrams used for behavioral models

- Activity Diagrams - Sequence Diagrams

Types of diagrams used for context models

Activity diagrams

Risk

An occurrence with negative consequences.

Heavyweight Processes

Waterfall, Spiral, RUP

Pitfall of Ethnography

Ethnography is effective for understanding existing processes but cannot identify new features that should be added to a system.

Write and compile programs

Implementation

Discharge

Increases, as more streams join the river as it moves downstream.

In the Agile Manifesto, working software is valued more than what process characteristic?

Over comprehensive documentation

Which approach to identifying activities is used in PRINCE2 and Step Wise?

Product-based

What is "snowplowing"?

Pushing user stories into future iterations

SRS

Software Requirements Specification

What's the Step Wise definition of a product?

The result of an activity

scrum master

guides team in effective use of scrum, interfaces with the rest of the company and keeps team on task (NOT the PM); teach scrum, manages process, protects team, enforce rules, removes blocks

threat

set of circumstances that could cause harm

negative float

the calculated completion date of the last activity is later than the targeted completion date established at the beginning of the project

unchecked exception

thrown during runtime

Lightweight Processes

Agile, Prototype

How often should Scrum project status meetings (Standups) be held?

Daily

State-transition matrices

Diagram that shows different states something can be in. Suitable when there're many combinations of states, rather than sparse ones. Ex: how a patient can change states from observation to canceled or valid. The diagram also shows what transitions are possible.

Specification Level / Perspective

Diagrams describe platform/language independent software abstractions / components.

Compressing the schedule could mean:

Do the work faster — using more or better resources often results in more costs or reducing quality. Do less work — finish the tasks with less functionality. Reduce the quality of the work, accepting the potential consequences.

How are controllable activities created

Break up long activities into smaller activities or bundle up very short activities

Elements of: Test Driven Development

- Identify - Write - Run - Implement - Repeat

Configuration Management Activities

- Version Management - System Integration - Problem Tracking

User requirement

A condition or capability needed by a user to perform a task or objective.

Reuse: The System Level

At this level, you reuse entire application systems.

What authority does a ScrumMaster have for a project?

Authority over the process

"Scaling out" agile methods

Concerned with how agile methods can be introduced across a large organization with many years of software development experience.

How often are there team meetings in Scrum?

Daily

Load particle size

Decreases, the rocks are bigger at the top because attrition hasn't yet happened. They get smaller by abrasion and attrition.

Slope angle

Decreases, there is more of a slope due to lateral erosion taking place.

Make necessary modifications

Deployment

Train the user (customer)

Deployment

What is artifact transparency? What is an artifact in Scrum?

Everyone involved correctly understands the state of the artifact, completion, functionality, maintainability, goal completion.

T or F and Why?: Scaling agile methods for large systems is easy.

False! Large systems need up-front design and some documentation and organizational practice may conflict with the informality of agile approaches.

Sprint Burndown Chart

Graphically illustrates the number of hours remaining for a task.

Agile methods rely on what type of approach to software engineering?

Incremental

Examples of open source software

Linux, Java, Apache web server, MySQL

Waterfall Model

Product Vision, Requirements (SRS), Design (SDD), Implementation (Code), Testing, [merge node], Software Product and Maintenance.

Quality Grids

Quality aspects on y-axis, e.g. performance, usability, reliability, or portability. Importance on x-axis, e.g. Ignore, As usual, critical. Each aspect gets matched with a quality level.

Who creates the prioritized wish list called a product backlog?

Scrum master, Product Owner, and Team

Difference between what Step Wise and PRINCE2 software project planning frameworks focus on

StepWise - focus on planning techniques PRINCE2 - focus on processes

Implementation

Task in Software Process that includes development, code/documentation management, debugging, and verification and validation.

What is the main argument for proponents of MDE

They argue that this raises the level of abstraction in software engineering so that engineers no longer have to be concerned with programming language details or the specifics of execution platforms

Q - A data model (e.g. E/R) can survive implementation with minor modifications.

True

How is a V shaped valley formed?

Vertical erosion, weathering, mass movement

properties of security

CIA: confidentiality(viewing of an asset), integrity (modification of an asset), availability (usage of an asset)

user testing

user tests the system in their own environment (alpha, beta, acceptance)

What is involved in "System testing"? (3)

• System components are integrated to create a complete system. • This process is concerned with finding errors that result from unanticipated interactions between components and components interface problems. • Also concerned with showing that the system meets its functional and non-functional requirements, and testing the emergent system properties.

Define sub-critical paths

Chains of activities, not on the critical path, but with small floats. Could easily become the critical path as the project develops

Validation

Checking that documented requirements reflect customers' needs. It is not enough to check each req. against a goal/need. The whole specification needs to be understood properly.

What role is the Scrum Master often likened to for the Scrum team?

Coach and trainer

Reuse: The Component Level

Components are collections of objects and object classes that you reuse in application systems.

Modeling levels of abstraction with UML

Conceptual Level / Perspective, Specification Level / Perspective and Implementation Level / Perspective

How does XP deal with degrading software structure?

Constant Refactoring

Cons of Agile Process

Customers and users have to commit time and effort, incremental design may not be a good thing, difficult to use on large projects, and hard to predict outcomes.

2 Positives and 5 negatives of Off The Shelf Applications

+ cheaper - development costs spread over lots of customers + no delay - is already there - customers may need to change the way they work to fit in with the application - application may need changes to fit your needs - no competitive advantage - danger of over reliance on the application supplier - if customers don't buy the code for the application, they can't make changes to the application

Elements of: User Testing

- Alpha - Beta - Acceptance

Alpha Testing

- Stage of user testing - Users of the software work with the development team to test the software at the developer's site.

How can non-ideal resource histograms be "smoothed" (2 points)

- by taking advantage of floats to start some activities after their earliest start time - by delaying the end of the project

When would we use scrum?

1) In an existing project 2) With complex technology 3) To improve self confidence and customer confidence

When is often a good time of day to hold a Scrum status meeting?

8 or 9 am

When are system models used?

During the requirements engineering phase to help explain the proposed requirements to other stakeholders.

What does the "Implementation and unit testing" stage involve?

During this stage, the software design is realised as a set of programs or program units. Unit testing involves verifying that each unit meets its specification.

Name the 5 types of function points + what does each category have for the weighting?

EI - external input EO - external output EQ - external inquiry LIF - logical internal file EIF - external interface file Each category has complexity multipliers (numbers) for low, medium and high complexity tasks

WAS (weighted average satisfaction) - RP

Each stakeholder's value and urgency of a feature. Objective is to optimise the total WAS for each release.

What is a simple design?

Enough design that when carried out meets the current requirements and no more.

According to the Lynda.com Agile Project Management video, what are the five stages of the Agile life cycle?

Envision -> Speculate-> Explore-> Adapt-> Close

T or F: Systems developed incrementally will, typically, have more detail in the requirements document.

FALSE, they will typically have less detail

Q - Acceptance​ ​test​ ​is​ ​a​ ​requirements validation​ ​technique.

False,

Q - Unexpected ideas are creative and is the ability to produce work that is novel, i.e. original and unexpected.

False, Creativity is "the ability to produce work that is both novel (i.e. original, unexpected) and appropriate (i.e. useful, adaptive, concerning task constraints)"

Q - Storyboarding helps exploratory creativity through divergence from an agreed system model.

False, Storyboarding only helps transformational- and combinational creativity

Q - It's generally difficult for developers to understand task descriptions.

False, Task description makes it (sooooooo) much easier

T or F: A model is meant to be a complete representation of a system.

False, it purposely leaves out detail to make it easier to understand.

Finish-to-start relationships

Finish-to-start is a logical relationship in which a successor activity cannot start until a predecessor has finished. The purchase of materials—including paint, flooring, furniture, and decorations—cannot be done until the design is approved by the owner

What does feature driven development focus on?

Focus on the design and building phase, not the whole development process

Quality requirements

How good the system shall do it. Measured on a scale. Performance, reliability, usability, safety, security, interoperability, maintainability, functionality, ... QR are often manifested as extra functionality, i.e. FR.

Define float

How long start time of activity can be delayed without impacting the project completion time

What does river discharge represent on The Bradshaw Model?

How many m3 per second are flowing down in the river.

Objectives of resource allocation (3 points)

Identify resources required for project Make the demand for resources more even throughout the project's lifespan Produce a work plan and resource schedule

Define Critical Path Analysis

Identifying the critical path (sequence of activities whose start date cannot be delayed without impacting project completion time)

free float

If activities that are not on the critical path have a difference between their early start date and their late start date, those activities can be delayed without affecting the project completion date; the float on these activities is called free float; Be careful in this calculation because an extension of items off the critical path may make that path longer than the critical path and thus make the new or changed path become the critical path!

Problems with $100 test.

If amount of req. grows the scale might be to small. Then we can just do the $10.000 test or so. Also, it can be very hard to ensure that the sum of all req. = 100.

COTS

In MDRE the buyer have to investigate what software they need to buy. The supplier is out of control in this aspect. This selection process is called COTS.

start-to-start relationships

In a start-to-start relationship, we cannot start the successor activity until the predecessor activity has started. These relationships are less common and do not occur in our restaurant example. An example from gas pipeline construction would be that as soon as the crew begins placing the pipe into the trench, the process of filling in the trench can occur. That way the tasks are occurring at the same time, but we recognize that filling the trench cannot begin until the pipe is placed into the trench.

Atomic requirement

In detail and smallest sub part, free from unambiguousness.

Affect of changes in the level of personnel resources over time (1 point) + how (3 points)

Increases cost of the project - may involve recruiting temporary staff - may require training of new or redeployed staff - staff may be idle for periods of time

Channel Width

Increases, because the river erodes laterally, this causes the sides to erode using surplus energy.

Extreme programming (describe and give 5 negatives/limitations)

Increments of 1-3 weeks, developers work in pairs to develop code to meet current needs only - not for beginner programmers - intense! - relies on availability of high quality developers - dependent on personal knowledge of the software - after development, that knowledge is lost, making future development difficult - rationale for decisions may be lost (undocumented) - less likely to reuse existing code because of lack of documentation

Post-condition

Indicate what result can be expected from a process

Real software processes

Inter-leaved sequence of technical, collaborative and managerial activities. A structured set of activities for software development.

How should the business value of a legacy system be assessed?

Interview different stakeholders and collate the results! - System end-users - Business customers - Line managers - IT managers - Senior managers

The investment cycle

Investment plan - Product roadmap - Product req. - Design - Software build - Product release - Sales & services - Revenues Corporate Strategy - Product strategy - Release process - Development process - (reverse) See Onenote

Program Testing

Involves executing the system with test cases derived from real data. It is the most commonly used V&V activity.

Verification

Is the system implemented according to the requirements?

Change Implementation

Iteration of the development process where the revisions to the system are designed, implemented and tested.

Resource Requirements List

Lists resources needed for each activity

Maintenance Prediction

Maintenance prediction is concerned with assessing which parts of the system may cause problems and have high maintenance costs

How are activities diagrammed/represented in medium-large vs small orgs

Medium-large: activity networks Small: a simple bar chart

What happens in the daily Scrum or standup?

Meetings are typically held in the same location and at the same time each day. Ideally, a daily scrum meeting is held in the morning, as it helps set the context for the coming day's work. These scrum meetings are strictly time-boxed to 15 minutes.Then the Scrum Master asks a series of 3 questions: 1.What did you do yesterday?What will you do today?Are there any impediments in your way?

Osborn's Creative Problem Solving (CPS) 6 steps

Mess finding, data finding, problem finding, idea finding, solution finding and acceptance finding.

4+1 View Model of Software Architecture

Model proposed by Philippe Kruchten in 1995 that views a software systems from 5 different views: Scenarios View, Logical View, Development, Process View and Physical View

____________________ is an approach to software development in which a system is represented as a set of models that can be automatically transformed to executable code.

Model-driven engineering

Resources constraints - The science of RP

Must consider what resources are available and assign them to each release so that later releases won't miss out.

When defining activities, what are the 3 musts and 1 may (rules) for an activity?

Must have clearly defined start and end points Must have a duration that can be forecasted Must have resource requirements that can be forecasted May be dependent on other activities (precedence networks)

What do you infer or conclude from the following user story? As a sales agent, I want a client search feature so that I can find my preferred clients quickly and easily. Is it too broad? Is it too detailed and too narrow in scope?

Need clarification on quick and easy for UI testing.

Can the Scrum Master and the Product Owner be the same individual?

Not if the product owner is considered to be the client.

Cons of Spiral Model

Not very many people are trained in and good at risk management, very general and adaptable, demands expertise in tailoring software processes.

Nominal Load

Number of transactions the system must be able to handle per second with the specified response times.

Symmetry of ignorance

One of four elicitation difficulties. • Customer may know their problem or need, but do not know existing technology • Supplier knows existing technology, but does not understand problem • Neither of them can map potential solutions to problem • Even together, it is not easy, since no common language exists

Aspects to consider when prioritising req.

Only basing prioritising on impact is not hard, combining it with other important factors however. • Impact/customer value • Cost • Development time • Volatility: change in market, req. legislative aspects, or users. • Risk

PRINCE2 (what does it stand for + where is it mainly used + what's the main difference between this and Step Wise)

Projects in controlled environments version 2 Mainly used in government domains (NHS, military) and in banks Steps the same as StepWise, but in each step all decisions must be reported to the project board (corporate or program management)

What are Scrum pros and cons?

Pros: -Completely developed and tested features in short iterations -Simplicity of the process -Clearly defined rules -Increasing productivity -Self-organizing -Each team member carries a lot of responsibility -Improved communication -Combination with extreme programming Cons: -"Undisciplined hacking" (no written documentation) -Violation of responsibility -Current mainly carried by the inventors

Involving a Scrum team in planning and estimating task times and providing early feedback on delivery velocity helps mitigate what kind of risk?

Schedule flaws

Agile methods are more amenable or appropriate for what type of a development environment?

Scrum

What agile method is used for project management?

Scrum

In Scrum, what is the person in charge of the tracking progress and the updates for the Scrum called?

Scrum Master

In the Scrum framework, who is responsible for enacting Scrum values and practices?

Scrum Master

Who is thought of as a process owner for a Scrum team?

Scrum Master

Development View

Shows how the software is decomposed for development

User requirements

Statements in natural language plus diagrams of the services the system provides and its operational constraints. Written for customers.

Upper course profile

Steep gradient, narrow size, v shape valley, vertical erosion

Which software project planning framework is good for scalability (using it for small and large projects

Step Wise

_____________ models show the organization and architecture of a system. ___________are used to define the static structure of classes in a system and their associations.

Structural Class diagrams

Engineering Design

Task in Software Process that includes creation of static and dynamic models, and consideration of architectural styles and design patterns.

Project Planning

Task in Software Process that includes financial/economic analysis, scheduling, resource allocation, cost estimation, and risk management.

Product Owner

The person responsible for the business value of the project and for deciding what work to do and in what order when using a Scrum method. Updates the Product Backlog.

Software Retirement (Phase-out)

The software may still be used but no further changes are made to it.

Deployment View

This describes the nodes that form the hardware topology on which the system executes.

Q - Trust between customer and provider is a prerequisite for agile RE.

True

Planguage

Use a set of closely defined identifiers to quantify elements of the req. Reason being that customers leave req. unambiguous to be able to change them later on.

Context Models

Used to illustrate the operational context of a system - they show what lies outside the system boundaries.

How are product requirements captured in Scrum?

User Stories in the Product Backlog

Two types of requirements

User and system

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 term that describes how many functions/features/user stories an Agile team completes in the average sprint?

Velocity

When is prioritisation of activities required?

When several activities are competing for the same limited resource at the same time

scrum

an agile methodology for software development

Gantt chart

bar graph that can show time relationships with lag and lead time

forward pass

begins with the start date; start assigning dates based on the earliest start date, adding dates based on our estimates for each task in the diagram until we get to the earliest end date

What is the difference between software engineering and computer science?

computer science focuses on theory and fundamentals, while software engineering is concerned with the practicalities of developing and delivering useful software

Architectures may be documented from several different perspectives or views such as a _____________view, a logical view, a _____________view, and a development view.

conceptual process

stakeholders

observe and advise

control

prevents threats from exercising vulnerabilities

defense in depth

security at each layer (data, app, host, etc.) reduces the chance of a successful attack

user story

self contained unit of work agreed upon by the developers and the stakeholders

phase out

software may still be in use but no further changes

development

where the software is designed and programmed

Difficulty in prioritising QR

• Elicitation of QR • Lack of well specified QR • Quantification of QR • What is good enough? • Knowledge about QR

Difficulty to manage NFR

• Trade-offs • Often not binary, fulfilled to a degree. • Cross-cutting - may impact many FR • Hard to test

Creativity definition

"the ability to produce work that is both novel (i.e. original, unexpected) and appropriate (i.e. useful, adaptive, concerning task constraints)"

Give 4 positives and 2 negatives of incremental development

+ feedback from earlier stages used to develop later stages + easier to cope with changing requirements + user gets some benefits earlier + project can be put aside temporarily - loss of economies of scale - same costs repeated - later increments may break earlier increments ("software breakage")

Maintenance Effort Distribution

- 25% Fault Repair - 20% Environmental Adaptation - 55% Functionality Addition and Modification (I adapted these numbers from the book as the book's numbers on the graph represented 101%....)

Design Patterns

- A design pattern is a way of reusing abstract knowledge about a problem and its solution. - A pattern is a description of the problem and the essence of its solution. - It should be sufficiently abstract to be reused in different settings. - Pattern descriptions usually make use of object-oriented characteristics such as inheritance and polymorphism.

Open Source Licensing

- A fundamental principle of open-source development is that source code should be freely available, this does not mean that anyone can do as they wish with that code. - Legally, the developer of the code (either a company or an individual) still owns the code. They can place restrictions on how it is used by including legally binding conditions in an open source software license.

Maintenance Costs: Why is it more expensive to add new features during maintenance than it is to add the same features during development?

- A new team has to understand the programs being maintained - Separating maintenance and development means there is no incentive for the development team to write maintainable software - Program maintenance work is unpopular - Maintenance staff are often inexperienced and have limited domain knowledge. - As programs age, their structure degrades and they become harder to change

ERP Architecture

- A number of modules to support different business functions. - A defined set of business processes, associated with each module, which relate to activities in that module. - A common database that maintains information about all related business functions. - A set of business rules that apply to all data in the database.

What happens during the Pre-Project/Kickoff meeting?

- A special form of Sprint Planning Meeting -Meeting before the begin the Project -Scrum Master goes through checklist

Development Testing

- AKA Defect Testing, the system is tested to discover bugs and defects - Includes all testing activities that are carried out by the team developing the system - Testing activities include Unit testing, Component testing, and System testing

Benefits of Software Reuse

- Accelerated development - Effective use of specialists - Increased dependability - Lower Development costs - Reduced process risk - Standards compliance

Repository Architectural Pattern

- All data in a system is managed in a central repository that is accessible to all system components - Components do not interact directly, only through the repository

Layered Pattern: Advantages

- Allows for replacement of entire layers so long as the interface is maintained. - Redundant facilities can be provided in each layer to increase the dependability of the system.

Pros of Model Driven Engineering

- Allows systems to be considered at higher levels of abstraction - Generating code automatically means that it is cheaper to adapt systems to new platforms.

Model-View-Controller: Advantages

- Allows the data to change independently of its representation and vice versa. - Supports presentation of the same data in different ways with changes made in one representation shown in all of them

ERP Systems

- An Enterprise Resource Planning (ERP) system is a generic system that supports common business processes such as ordering and invoicing, manufacturing, etc. - These are very widely used in large companies - they represent probably the most common form of software reuse. - The generic core is adapted by including modules and by incorporating knowledge of business processes and rules.

Generalization

- An everyday technique that we use to manage complexity. - Rather than learn the detailed characteristics of every entity that we experience, we place these entities in more general classes.

Approaches that Support Software Reuse

- Application frameworks - Application System Integration - Architectural Patterns - Aspect-Oriented Software Development - Component-based Software Development - Configurable Application Systems - Design Patterns - ERP Systems - Legacy System Wrapping - Model-Driven Engineering - Program Generators - Program Libraries - Service-Orientated Systems - Software Product Lines - Systems of Systems

Problems with Interviews

- Application specialists may use language to describe their work that isn't easy for the requirements engineer to understand. - Interviews are not good for understanding domain requirements

Service-Oriented Interfaces

- Application system integration can be simplified if a service-oriented approach is used. - A service-oriented approach means allowing access to the application system's functionality through a standard service interface, with a service for each discrete unit of functionality. - Some applications may offer a service interface but, sometimes, this service interface has to be implemented by the system integrator. You have to program a wrapper that hides the application and provides externally visible services.

Application System Reuse

- Application system product is a software system that can be adapted for different customers without changing the source code of the system - Application systems have generic features so can be used/reused in different environments. Products adapted by using built in configuration mechanisms. - Allow functionality of the system to be tailored

Integrated Application Systems

- Applications that include two or more application system products and/or legacy application systems. - You may use this approach when there is no single application system that meets all of your needs or when you wish to integrate a new application system with systems that you already use.

What are the responsibilities for a Scrum Master?

- Arrange Daily Meetings - Tracks the Backlog - Records Decisions - Measures Progress - Communicates with Stakeholders - Facilitates

Uses for models of application architecture

- As a starting point for architectural design - As a design checklist - As a way of organizing the work of a development team - As a means of assessing components for reuse - As a vocabulary for talking about application types

Two main uses of architectural models

- As a way of facilitating discussion about the system design (High level view of a system is useful for communication with system stakeholders and project planning) - As a way of documenting an architecture that has been designed

What are the four parts to the sprint cycle in Scrum?

- Assess - Select - Develop - Review

Keys to effective interviewing

- Be open-minded, avoid pre-conceived ideas about the requirements and are willing to listen to stakeholders. - Prompt the interviewee to get discussions going using a springboard question, a requirements proposal, or by working together on a prototype system.

Model-View-Controller: Disadvantages

- Can involve additional code and code complexity when the data model and interactions are simple

Types of diagrams used for structural models

- Class Diagrams

When should a Pipe and Filter pattern be used?

- Commonly used in data processing applications where inputs are process in separate stages to generate related outputs.

Repository Pattern: Advantages

- Components can be independent, they do not need to know of the existence of other components - Changes made by one component can be propagated to all components. - All data can be managed consistently!

Requirements Validation

- Concerned with demonstrating that the requirements define the system that the customer really wants. - Requirements error costs are high so validation is very important. (Fixing a requirements error after delivery may cost u to 100 times the cost of fixing an implementation error)

Configurable Application Systems

- Configurable application systems are generic application systems that may be designed to support a particular business type - Domain-specific systems, such as systems to support a business function (e.g. document management) provide functionality that is likely to be required by a range of potential users.

Refactoring

- Constant code improvement - Programming team look for possible software improvements and make these improvements even where there is no immediate need for them.

Problems with Software Reuse

- Creating, Maintaining and using a component library - Finding, understanding and adapting reusable components - Increased maintenance costs - Lack of tool support - Not-invented-here syndrome (Also means lack of documentation)

What are the principles of agile methods?

- Customer Involvement - Incremental Delivery - People Not Process - Embrace Change - Maintain Simplicity

Process stages of OO Design Process

- Define the the context and modes of use of the system - Design the system architecture - Identify the principle system objects - Develop design models - Specify object interfaces

Application Architectures

- Designed to meet an organizational need - Generic application architecture is for a type of system to be configured and adapted to meet specific requirements.

"Bad Smells" in Code that can be fixed with Refactoring

- Duplicate code: The same or very similar code may be included at different places in a program. This can be removed and implemented as a single method or function that is called as required. - Long methods: If a method is too long, it should be redesigned as a number of shorter methods. - Switch (case) statements: These often involve duplication, where the switch depends on the type of a value. The switch statements may be scattered around a program. In object-oriented languages, you can often use polymorphism to achieve the same thing. - Data clumping: Data clumps occur when the same group of data items (fields in classes, parameters in methods) re-occur in several places in a program. These can often be replaced with an object that encapsulates all of the data. - Speculative generality: This occurs when developers include generality in a program in case it is required in the future. This can often simply be removed.

Client-Server Pattern: Disadvantages

- Each service is a single point of failure, susceptible to denial of service attacks or server failure. - Performance can be unpredictable because it depends on both the network and they system.

Pipe and Filter Pattern: Advantages

- Easy to understand and supports transformation reuse - Workflow style matches the structure of many business processes. - Evolution by adding transformations is straight forward. - Can be implemented as either a sequential or concurrent system

Types of stakeholders

- End users - System managers - System owners - External stakeholders

License Management

- Establish a system for maintaining information about open-source components that are downloaded and used. - Be aware of the different types of licenses and understand how a component is licensed before it is used. - Be aware of evolution pathways for components. - Educate people about open source. - Have auditing systems in place. - Participate in the open source community.

System Boundaries

- Established to define what is inside and what is outside the system. - They show other systems that are used or depend on the system being developed.

What are the six steps in XP's release cycle?

- Evaluate System - Select User Stories for this Release - Break Down Stories to Tasks - Plan Release - Develop / Integrate / Test Software - Release Software

Types of Maintenance

- Fault repairs: Changing a system to fix bugs/vulnerabilities and correct deficiencies in the way meets its requirements. - Environmental adaptation: Maintenance to adapt software to a different operating environment or changing a system so that it operates in a different environment (computer, OS, etc.) from its initial implementation. - Functionality addition and modification: Modifying the system to satisfy new requirements.

Pipe and Filter Pattern: Disadvantages

- Format for data transfer has to be agreed upon between communicating transformations. - Each transformation must parse its input and un-parse its output to an agreed upon form. This increases system overhead and may mean that it's impossible to reuse functional transformations that use incompatible data structures.

Reuse

- From the 1960s to the 1990s, most new software was developed from scratch, by writing all code in a high-level programming language. - The only significant reuse or software was the reuse of functions and objects in programming language libraries. - Costs and schedule pressure mean that this approach became increasingly unviable, especially for commercial and Internet-based systems. - An approach to development based around the reuse of existing software emerged and is now generally used for business and scientific software.

License Models

- GNU General Public License (GPL): So called reciprocal license. Means that if you use open source software licensed under the GPL, then you must make that software open source - GNU Lesser General Public License (LGPL): a variant of the GPL license where you can write components that link to open source code without having to publish the source of these components. - Berkley Standard Distribution (BSD) License: Non-Reciprocal license

Configuration Management

- General process of managing a changing software system. - Aim of configuration management is to support the system integration process so that all developers can access the project code and documents in a controlled way, find out what changes have been made, and compile and link components to create a system.

Benefits of Pair Programming

- Helps develop common ownership of code and spreads knowledge across the team. - It serves as an informal review process as each line of code is looked at by more than 1 person. - It encourages refactoring as the whole team can benefit from improving the system code.

What does an aggregation model show?

- How classes that are collections are composed of other classes. - Aggregation models are similar to the part-of relationship in semantic data models.

Questions to be asked when considering using agile methods

- How large is the system being developed? (Agile methods are most effective a relatively small co-located team who can communicate informally. ) - What type of system is being developed? (Systems that require a lot of analysis before implementation need a fairly detailed design to carry out this analysis.) - What is the expected system lifetime? (Long-lifetime systems require documentation to communicate the intentions of the system developers to the support team.) - Is the system subject to external regulation? (If a system is regulated you will probably be required to produce detailed documentation as part of the system safety case. )

Reasons for urgent change requests

- If a serious system fault has to be repaired to allow normal operation to continue - If changes to the system's environment (e.g. an OS upgrade) have unexpected effects - If there are business changes that require a very rapid response (e.g. the release of a competing product).

Layered Pattern: Disadvantages

- In practice, providing clean separation between layers in often difficult - Performance can be a concern because of the multiple levels of interpretation of a service request as it is processed in each layer.

Agile Manifesto Tenets

- Individuals and Interactions over processes and tools - Working software over comprehensive documentation - Customer collaboration over contract negotiation - Responding to change over following a plan

Key Points (cont.)

- It is often cheaper and less risky to maintain a legacy system than to develop a replacement system using modern technology. - The business value of a legacy system and the quality of the application should be assessed to help decide if a system should be replaced, transformed or maintained. - There are 3 types of software maintenance, namely bug fixing, modifying software to work in a new environment, and implementing new or changed requirements.

Legacy System Replacement Risks

- Lack of complete system specification - Tight integration of system and business processes - Undocumented business rules embedded in the legacy system - New software development may be late and/or over budget

Application system integration problems

- Lack of control over functionality and performance: Application systems may be less effective than they appear - Problems with application system inter-operability: Different application systems may make different assumptions that means integration is difficult - No control over system evolution: Application system vendors not system users control evolution - Support from system vendors: Application system vendors may not offer support over the lifetime of the product

Legacy Systems

- Legacy systems are older systems that rely on languages and technology that are no longer used for new systems development. - Legacy software may be dependent on older hardware, such as mainframe computers and may have associated legacy processes and procedures. - Legacy systems are not just software systems but are broader socio-technical systems that include hardware, software, libraries and other supporting software and business processes.

Architectural Patterns

- Means of representing, sharing, and reusing knowledge. - Good design practice - Patterns should include information about when they are and when they are not useful - Can be represented using tabular or graphical descriptions

State Models

- Model the behaviour of the system in response to external and internal events. - Show the system's responses to stimuli so are often used for modelling real-time systems.

Cons of Model Driven Engineering

- Models for abstraction and not necessarily right for implementation. - Savings from generating code may be outweighed by the costs of developing translators for new platforms

Application Frameworks

- Moderately large entities that can be reused - Sub-system design made up of a collection of abstract and concrete classes and the interfaces between them. - Sub-system is implemented by adding components to fill in parts of the design and by instantiating the abstract classes in the framework.

Software Maintenance

- Modifying a program after it has been put into use. - The term is mostly used for changing custom software. Generic software products are said to evolve to create new versions. - Maintenance does not normally involve major changes to the system's architecture. - Changes are implemented by modifying existing components and adding new components to the system.

Benefits of Application System Reuse

- More rapid deployment - See what functionality is provided - Development risks are avoided by using existing software - Businesses can focus on core activity w/out having to devote IT resources - Updates can be simplified

Host-Target Development

- Most software is developed on one computer (the host), but runs on a separate machine (the target). - More generally, we can talk about a development platform and an execution platform. - A platform is more than just hardware. It includes the installed operating system plus other supporting software such as a database management system - Development platform usually has different installed software than execution platform; these platforms may have different architectures.

Reasons for Software Change

- New requirements emerge when the software is used - The business environment changes - Errors must be repaired - New computers and equipment is added to the system - The performance or reliability of the system may have to be improved

Why is it called Extreme Programming?

- New versions may be built several times per day; - Increments are delivered to customers every 2 weeks; - All tests must be run for every build and the build is only accepted if tests run successfully.

Legacy System Change Costs (Why so expensive?)

- No consistent programming style - Use of obsolete programming languages with few people available with these language skills - Inadequate system documentation - System structure degradation - Program optimizations may make them hard to understand - Data errors, duplication and inconsistency

Interface Specification

- Object interfaces have to be specified so that the objects and other components can be designed in parallel. - Designers should avoid designing the interface representation but should hide this in the object itself. - Objects may have several interfaces which are viewpoints on the methods provided. - The UML uses class diagrams for interface specification but Java may also be used.

The Software Requirements document

- Official statement of what is required of the system developers. - Should include both a definition of user requirements and a specification of the system requirements. - It is NOT a design document. As far as possible, it should set of WHAT the system should do rather than HOW it should do it.

Object Class Indentifcation

- Often difficult part of object orientated design - No magic formula! Relies on skill, experience, and domain knowledge of system designers - Object identification is an iterative process, unlikely to get it right the first time!

Architectural Design

- Once interactions between the system and its environment have been understood, you use this information for designing the system architecture. - Identify the major components that make up the system and their interactions, and then organize the components using an architectural pattern such as a layered or client-server model.

Layered Architectural Pattern

- Organizes the system into layers wuith related functionality associated with each layer. - A layer provides services to the layer above it. - Services of the lowest layer are then used throughout the system.

What are unique practices of XP?

- Pair Programming - On-Site Customer

Pair Programming

- Pair programming involves programmers working in pairs, developing code together.

Requirements Based Testing

- Part of Release Testing - Involves examining each requirement and developing a test or tests for it. - Testing what was written up for and documented for the system. - It is validation rather than defect testing: you are trying to demonstrate that the system has properly implemented its requirements.

Performance Testing

- Part of release testing - AKA Stress Testing - Concerned with both demonstrating that the system meets its requirements and discovering problems and defects within the system. - You are testing the system by making demands that are outside the design limitations.

Scenario Testing

- Part of release testing. - An approach to release testing whereby you devise typical scenarios of use and use these scenarios to develop test cases for the system.

What are block diagrams useful for?

- People from different disciplines can easily understand the scope of a project. - Useful for communication with stakeholders.

Product Line Specialization

- Platform specialization: Different versions for different platforms - Environment specialization: Different versions created to handle different environments - Functional specialization: Different versions created for different requirements - Process specialization: Different versions created to support different business processes

User Testing

- Potential users of a system operate the system in their own environment.

Change Prediciton

- Predicting the number of changes requires and understanding of the relationships between a system and its environment. - Tightly coupled systems require changes whenever the environment is changed. - Factors influencing this relationship are: 1) Number and complexity of system interfaces 2) Number of inherently volatile system requirements 3) The business processes where the system is used.

Complexity Metrics

- Predictions of maintainability can be made by assessing the complexity of system components. - Studies have shown that most maintenance effort is spent on a relatively small number of system components. - Complexity depends on: 1) Complexity of control structures 2) Complexity of data structures; 3) Object, method (procedure) and module size.

Structure (sections) of a Requirements Document

- Preface - Introduction - Glossary - User requirements definition - System architecture - System requirements specification - System models - System evolution - Appendices - Index

Process Metrics

- Process metrics may be used to assess maintainability: 1) Number of requests for corrective maintenance 2) Average time required for impact analysis 3) Average time taken to implement a change request 4) Number of outstanding change requests - If any or all of these is increasing, this may indicate a decline in maintainability.

Release Testing

- Process of testing a particular release of a system that is intended for use outside of the development team - A separate testing team tests a complete version of the system - Primary goal is to convince the supplier of the system that it is good enough for use. - Usually a black-box testing process where tests are only derived from the system specification.

Pipe and Filter Architectural Pattern

- Processing of data in a system is organized so that each processing component (filter) is discrete and carries out one type of data transformation. - The data flows (pipe) from one component to another for processing.

Common characteristics of agile development

- Program specification, design and implementation are inter-leaved - The system is developed as a series of versions or increments with stakeholders involved in version specification and evaluation - Frequent delivery of new versions for evaluation - Extensive tool support (e.g. automated testing tools) used to support development. - Minimal documentation - focus on working code

Refactoring vs Reengineering

- Re-engineering takes place after a system has been maintained for some time and maintenance costs are increasing. You use automated tools to process and re-engineer a legacy system to create a new system that is more maintainable. - Refactoring is a continuous process of improvement throughout the development and evolution process. It is intended to avoid the structure and code degradation that increases the costs and difficulties of maintaining a system.

Examples of refactoring

- Re-organization of a class hierarchy to remove duplicate code. - Tidying up and renaming attributes and methods to make them easier to understand. - The replacement of inline code with calls to methods that have been included in a program library.

Automated Testing

- Recommended wherever possible for Unit Testing - Making use of a test automation framework (such as JUnit) to write and run program tests. - These frameworks provide generic test cases that you extend to create specific test cases.

Advantages of Reengineering

- Reduced risk: There is a high risk in new software development. There may be development problems, staffing problems and specification problems. - Reduced cost: The cost of re-engineering is often significantly less than the costs of developing new software.

Refactoring

- Refactoring is the process of making improvements to a program to slow down degradation through change. - You can think of refactoring as 'preventative maintenance' that reduces the problems of future change. - Refactoring involves modifying a program to improve its structure, reduce its complexity or make it easier to understand. - When you refactor a program, you should not add functionality but rather concentrate on program improvement.

Elements of: Release Testing

- Requirements - Scenario - Performance

Natural Language Specification

- Requirements are written as natural language sentences supplemented by diagrams and tables. - Used for writing requirements because it is expressive, intuitive and universal. This means that the requirements can be understood by users and customers.

Problems of Application System Reuse

- Requirements usually need to be adapted - COTS product may be based on assumptions - Choosing the right COTS system for an enterprise can be difficult - Lack of local expertise to support systems - COTS product vendor controls system support and evolution

Software Rengineering

- Restructuring or rewriting part or all of a legacy system without changing its functionality. - Applicable where some but not all sub-systems of a larger system require frequent maintenance. - Reengineering involves adding effort to make them easier to maintain. The system may be re-structured and re-documented.

Implementation Issues

- Reuse - Configuration Management - Host-Target Development

What types of software would plan-driven approaches be better suited than agile methods?

- Safety-Critical Control Systems - Heavily Regulated Systems

Legacy System Management Strategic Options

- Scrap the system completely and modify business processes so that it is no longer required - Continue maintaining the system - Transform the system by re-engineering to improve its maintainability - Replace the system with a new system

WAF Features

- Security: WAFs may include classes to help implement user authentication (login) and access. - Dynamic web pages: Classes are provided to help you define web page templates and to populate these dynamically from the system database. - Database support: The framework may provide classes that provide an abstract interface to different databases. - Session management: Classes to create and manage sessions (a number of interactions with the system by a user) are usually part of a WAF. - User interaction: Most web frameworks now provide AJAX support, which allows more interactive web pages to be created.

The Model-View-Controller (MVC) Pattern

- Separates presentation and interaction from the system data - Model component manages the system data and associated operations - View component defines and manages how the data is presented to the user - Controller component manages user interaction and passes these interactions to the view and model components.

Client-Server Pattern: Advantages

- Servers can be distributed across a network - General functionality (e.g. a printing service) can be available to all clients and does not need to be implemented by all services.

Elements of: Automated Testing

- Setup - Call - Assertion

Design Models

- Show the objects and object classes and relationships between these entities

Data-Driven Models

- Show the sequence of actions involved in processing input data and generating an associated output. - Particularly useful during the analysis of requirements as they can be used to show end-to-end processing in a system.

Sequence Models

- Shows sequence of object interactions that take place - Objects are arranged horizontally across the top - Time is represented vertically

What type of system would be a good candidate for agile methods?

- Small or Medium Size Products for Sale - Custom System Development within an Organization

Key Points

- Software development and evolution can be thought of as an integrated, iterative process that can be represented using a spiral model. - For custom systems, the costs of software maintenance usually exceed the software development costs. - The process of software evolution is driven by requests for changes and includes change impact analysis, release planning and change implementation. - Legacy systems are older software systems, developed using obsolete software and hardware technologies, that remain useful for a business.

Key Points (cont.)

- Software product lines are related applications that are developed from one or more base applications. A generic system is adapted and specialized to meet specific requirements for functionality, target platform or operational configuration. - Application system reuse is concerned with the reuse of large-scale, off-the-shelf systems. These provide a lot of functionality and their reuse can radically reduce costs and development time. Systems may be developed by configuring a single, generic application system or by integrating two or more application systems. - Potential problems with application system reuse include lack of control over functionality and performance, lack of control over system evolution, the need for support from external vendors and difficulties in ensuring that systems can inter-operate.

Software Product Lines

- Software product lines or application families are applications with generic functionality that can be adapted and configured for use in a specific context. - Set of applications with a common architecture and shared components

Open Source Development

- Source code of a software system is published and volunteers are invited to participate in the development process - Roots are in the Free Software Foundation which advocates that source code should not be proprietary but rather should always be available for users to examine and modify as they wish. - Internet helped to recruit a much larger population

Reengineering Process Activities

- Source code translation: Convert code to a new language - Reverse engineering: Analyse the program to understand it - Program structure improvement: Restructure automatically for understandability - Program modularisation: Reorganise the program structure - Data reengineering: Clean-up and restructure system data.

Reasons why MDA/MDE has not become more mainstream

- Specialized tool support is required to convert models from one level to another - There is limited tool availability and organizations may require tool adaptation and customisation to their environment - For the long-lifetime systems developed using MDA, companies are reluctant to develop their own tools or rely on small companies that may go out of business - Models are a good way of facilitating discussions about a software design. Howeverthe abstractions that are useful for discussions may not be the right abstractions for implementation. - For most complex systems, implementation is not the major problem - requirements engineering, security and dependability, integration with legacy systems and testing are all more significant.

Metrics for specifying non-functional requirements

- Speed - Size - Ease of use - Reliability - Robustness - Portability

System Testing

- Stage of Development testing - Involves integrating components to create a version of the system and then testing the integrating system - Focus is testing the interactions between components - Checks to ensure that components are compatible, interact correctly, and transfer the right data at the right time. - Might include stress testing

Unit Testing

- Stage of Development testing - Process of testing individual components in isolation. - It is a defect testing process - Components to be tested could be individual functions or methods, object classes, or composite components with defined interfaces used to access their functionality.

Component Interface Testing

- Stage of Development testing - Software components are often composite components that are made up of several interacting objects accessed through defined component interfaces. - This type of testing should then focus on showing that the interface behaves according to its specification. - Objectives are to detect faults due to interface errors or invalid assumptions about interfaces

Beta Testing

- Stage of user testing - A release of the software is made available to users to allow them to experiment and to raise problems that they discover with the system developers.

Acceptance Testing

- Stage of user testing - Customers test a system to decide whether or not it is ready to be accepted from the system developers and deployed in the customer environment. Primarily for custom systems.

Difficulties of Requirements Elicitation

- Stakeholders don't know what they really want. - Stakeholders express requirements in their own terms. - Different stakeholders may have conflicting requirements. - Organisational and political factors may influence the system requirements. - The requirements change during the analysis process. New stakeholders may emerge and the business environment may change.

Functional Requirements

- Statements of services the system should provide, how the system should react to particular inputs and how the system should behave in particular situations. - May state what the system should not do.

Difference between static and dynamic structural models

- Static: Show the structure of the system design. - Dynamic: Show the organization of the system when it is executing.

Two kinds of Design Models

- Structural Models: Describe the static structure of system in terms of object classes and relationships - Dynamic Models: Describe the dynamic interactions between objects

Object-Oriented Design Process

- Structured object-oriented design processes involve developing a number of different system models. - They require a lot of effort for development and maintenance of these models and, for small systems, this may not be cost-effective. - However, for large systems developed by different groups design models are an important communication mechanism.

Examples of design models

- Subsystem models - Sequence models - State Machine Models - Use-Case - Aggregation - generalization

Factors used in environment assessment

- Supplier Stability - Failure Rate - Age - Performance - Support Requirements - Maintenance Costs - Interoperability

Web Application Frameworks

- Support the construction of dynamic websites as a front-end for web applications. - WAFs are now available for all of the commonly used web programming languages e.g. Java, Python, Ruby, etc. - Interaction model is based on the Model-View-Controller composite pattern.

Context and Interaction Models

- System context model is a structured model that demonstrates the other systems in the environment of the system being developed. - Interaction is a dynamic model that shows how the system interacts with its environment as it is used.

Components of Legacy Systems

- System hardware: Legacy systems may have been written for hardware that is no longer available. - Support software: The legacy system may rely on a range of support software, which may be obsolete or unsupported. - Application software: The application system that provides the business services is usually made up of a number of application programs. - Application data: These are data that are processed by the application system. They may be inconsistent, duplicated or held in different databases. - Business processes: These are processes that are used in the business to achieve some business objective. - Business policies and rules: These are definitions of how the business should be carried out and constraints on the business. Use of the legacy application system may be embedded in these policies and rules.

Model-View-Controller

- System infrastructure framework for GUI design. - Allows for multiple presentations of an object and separate interactions with these presentations. - MVC framework involves the instantiation of a number of patterns

Framework Classes

- System infrastructure frameworks: Support the development of system infrastructures such as communications, user interfaces and compilers. - Middleware integration frameworks: Standards and classes that support component communication and information exchange. - Enterprise application frameworks: Support the development of specific types of application such as telecommunications or financial systems.

Software Reuse

- Systems are designed by composing existing components that have been used in other systems. - There has been a major switch to reuse-based development over the past 10 years.

Architecture Reuse

- Systems in the same domain often have similar architectures that reflect domain concepts.* - Application product lines are built around a core architecture with variants that satisfy particular customer requirements. - The architecture of a system may be designed around one of more architectural patterns or 'styles'. - These capture the essence of an architecture and can be instantiated in different ways.

Guideline-based Testing

- Test case selection strategy for Unit testing - A set of rules are used to choose test cases - These rules reflect previous experience of the kinds or errors that programmers often make when developing components.

Partition Testing

- Test case selection strategy for Unit testing - Identify groups of inputs that have common characteristics and should be processed in the same way. - Test cases are chosen from these groups

Changing requirements

- The business and technical environment of the system always changes after installation. (New hardware, new legislation, changing business priorities etc.) - The people who pay for a system and the users of that system are rarely the same people. - Large systems usually have a diverse user community, with many users having different requirements and priorities that may be conflicting or contradictory.

The Client-Server Pattern

- The functionality of the system is organized into servers, with each service delivered from a separate server. - Clients are users of these services and access servers to make use of them.

Component/System Deployment factors

- The hardware and software requirements of a component - The availability of requirements of the system - Component Communications

System Measurement (Quantitative data collected to make an assessment of the quality of the application system)

- The number of system change requests: The higher this accumulated value, the lower the quality of the system. - The number of different user interfaces used by the system: The more interfaces, the more likely it is that there will be inconsistencies and redundancies in these interfaces. - The volume of data used by the system: As the volume of data (number of files, size of database, etc.) processed by the system increases, so too do the inconsistencies and errors in that data. Cleaning up old data is a very expensive and time-consuming process

Requirements specification

- The process of writing down the user and system requirements in a requirements document. - User requirements have to be understandable by end-users and customers who do not have a technical background. - System requirements are more detailed requirements and may include more technical information.

Reengineering cost factors

- The quality of the software to be reengineered. - The tool support available for reengineering. - The extent of the data conversion which is required. - The availability of expert staff for reengineering (This can be a problem with old systems based on technology that is no longer widely used)

Repository Pattern: Disadvantages

- The repository is a single point of failure so problems in the repository can affect the whole system. - May be inefficiencies in organizing all communication through the repository. - Distributing the repository across several computers may be difficult.

Software Design and Implementation

- The stage in the software engineering process at which an executable software system is developed. - Software design and implementation activities are invariably inter-leaved. - Software design is a creative activity in which you identify software components and their relationships, based on a customer's requirements. - Implementation is the process of realizing the design as a program.

Software Evolution Processes depend on:

- The type of software being maintained - The development processes used - The skills and experience of the people involved

Issues in Business Value Assessment

- The use of the system: If systems are only used occasionally or by a small number of people, they may have a low business value. - The business processes that are supported: A system may have a low business value if it forces the use of inefficient business processes. - System dependability: If a system is not dependable and the problems directly affect business customers, the system has a low business value. The system outputs: If the business depends on system outputs, then the system has a high business value

Key Points

- There are many different ways to reuse software. These range from the reuse of classes and methods in libraries to the reuse of complete application systems. - The advantages of software reuse are lower costs, faster software development and lower risks. System dependability is increased. Specialists can be used more effectively by concentrating their expertise on the design of reusable components. - Application frameworks are collections of concrete and abstract objects that are designed for reuse through specialization and the addition of new objects. They usually incorporate good design practice through design patterns.

What are the downsides to simple, informal block diagrams?

- They lack semantics - They do not show the different types of relationships between entities, nor their properties

Costs associated with reuse

- Time spent looking for software to reuse and assessing whether or not it meets your needs - Costs of buying the reusable software - Cost of adapting and configuring - Cost of integrating the reusable software elements with each other

2 Approaches to Prioritising Activities (explain)

- Total Float Priority: Activities with smallest float = highest priority - Ordered list priority: accounts for duration of activity and the float. Shortest, Critical activities = highest priority

Two most widely used generic application architectures

- Transaction Processing systems: Ecommerce, reservation systems - Language Processing Systems: Compiler, command interpreters

Factors used in application assessment

- Understandability - Documentation - Data - Performance - Programming Language - Configuration Management - Test Data - Personnel Skills

Architectural Design

- Understanding how a software system should be organized and designing the overall structure of that system. First stage in the software design process. - Critical link between design and requirements engineering. - Output is an architectural model that describes how the system is organized as a set of communicating components.

System Context and Interactions

- Understanding the relationships between the software being designed and the external environment. - Helps you to establish the boundaries of the system

Elements of: Development Testing

- Unit - Component - System

What two diagrams are used for interaction modeling?

- Use Case Modeling - Sequence Diagrams

Types of diagrams used for interaction models

- Use Cases - Sequence Diagrams

Approaches to Object Class Identification

- Use a grammatical approach based on a natural language description of the system. - Base the identification on tangible things in the application domain. - Use a behavioral approach and identify objects based on what participates in what behavior. - Use a scenario-based analysis. The objects, attributes and methods in each scenario are identified.

State Diagrams

- Used to show how objects respond to different service requests and the state transitions triggered by these requests. - State diagrams are useful high-level models of a system or an object's run-time behavior. - Don't need a state diagram for all objects in the system

Tabular Specification

- Used to supplement natural language. - Particularly useful when you have to define a number of possible alternative courses of action. - For example, the insulin pump systems bases its computations on the rate of change of blood sugar level and the tabular specification explains how to calculate the insulin requirement for different scenarios.

User Stories

- User requirements are expressed as user stories or scenarios. - These are written on cards and the development team break them down into implementation tasks. These tasks are the basis of schedule and cost estimates. - The customer chooses the stories for inclusion in the next release based on their priorities and the schedule estimates.

Maintenance Costs

- Usually greater than development costs (2x to 100x depending on the application). - Affected by both technical and non-technical factors. - Increases as software is maintained. Maintenance corrupts the software structure so makes further maintenance more difficult. - Ageing software can have high support costs (e.g. old languages, compilers etc.).

Verification & Validation

- Verification: "Are we building the product right?" - Validation: "Are we building the right product?"

When should a layered architectural pattern be employed?

- When building new facilities on top of existing systems - When development is spread across several teams with each team responsible for a layer - When there is a requirement for multi-level security

When should you use a Client-Server Pattern?

- When data in a shared database has to be accessed from a range of locations.

When should you use a repository pattern?

- When you have a system in which large volumes of information are generated that has to be stored for a long time.

Handover problems when software is handed over to another development team

- Where the development team have used an agile approach but the evolution team is unfamiliar with agile methods and prefer a plan-based approach. The evolution team may expect detailed documentation to support evolution and this is not produced in agile processes. - Where a plan-based approach has been used for development but the evolution team prefer to use agile methods. The evolution team may have to start from scratch developing automated tests and the code in the system may not have been refactored and simplified as is expected in agile development.

Test-first development

- Writing tests before code clarifies the requirements to be implemented. - Tests are written as programs rather than data so that they can be executed automatically. The test includes a check that it has executed correctly.

How is generalization implemented in OO langauges?

- class inheritance mechanisms - the attributes and operations associated with higher-level classes are also associated with the lower-level classes. - The lower-level classes are subclasses inherit the attributes and operations from their superclasses. These lower-level classes then add more specific attributes and operations.

7 Reasons for prototyping

- learn by doing - improved communication - improved user involvement - establishes a feedback loop - reduces need for documentation - reduced maintenance costs from changes to product after it's released - prototype can be used for producing expected results

Model Driven Architecture

- precursor of more general model-driven engineering -model-focused approach to software design and implementation that uses a subset of UML models to describe a system.

What 4 things do activity networks help us to do?

- see whether planned project completion time is feasible - identify when resources will need to be deployed to activities - calculate when costs will be incurred - globally, it helps the coordination and motivation of the team

4 benefits of using frameworks for software project planning

- they help you identify where to start with planning a project - lists the main steps involved in project planning - suggests best practices in carrying out these steps - indicate an order to carry out steps in

4 Negatives of prototyping

- users may misunderstand the role of the prototype -> their expectations get too high - lack of project control - expensive to build prototype - focus on good UI design may be at expense of machine efficiency

Ethnography

-A social scientist spends a considerable time observing and analyzing how people actually work. -People do not have to explain or articulate their work. -Social and organisational factors of importance may be observed.

Non-Functional Requirements

-Constraints on the services or functions offered by the system such as timing constraints, constraints on the development process, standards, etc. -Often apply to the system as a whole rather than individual features or services.

Examples of Application types

-Data Processing Apps - Transaction Processing Apps - Event Processing Apps - Language Processing Apps

client server architecture

-Distributed system model which shows how data and processing is distributed across a range of components/servers. - clients are users of these services and access servers to make use of them -good for general functionality availability

What statements are included in the Agile manifesto?

-Individuals and interactions over processes and tools -Working software over comprehensive documentation -Customer collaboration over contract negotiation -Responding to change over following a plan

Requirements elicitation and analysis

-Involves technical staff working with customers to find out about the application domain, the services that the system should provide and the system's operational constraints.

What does a Sprint Burn Down Chart show?

-Is a "big picture" view of project's progress (all the releases) -Helps monitor progress -Depicts the total spring backlog hours remaining per day -Shows the estimated amount of time to release

Ways of writing a system requirements specification

-Natural language -Structured and natural language - Design description languages - Graphical notations - Mathematical specifications

What tasks might a Scrum Master do to help a team perform at their highest level?

-Removes any impediments to progress -Facilitates meetings -Works with the product owner to make sure the product backlog is in good shape and ready for the next sprint

Stories and Scenarios

-Scenarios and user stories are real-life examples of how a system can be used. -Stories and scenarios are a description of how a system may be used for a particular task. -Because they are based on a practical situation, stakeholders can relate to them and can comment on their situation with respect to the story.

What is appropriate during the daily scrum?

-Stand up, don't sit -Is NOT for problem solving -Is NOT a way to collect information about who is behind the schedule -Is a meeting in which team members make commitments to each other and to the Scrum Master -Is a good way for a Scrum Master to track the progress of the team

transfer data use case

-actors(can perform more than one use/action): the stick figures -description: a receptionist may transfer data to a general patient record database. the info can be updated personal info or a summary -stimulus: user command issued by medical receptionist -response: confirmation that PRS has been updated

Pipe and filter architecture

-each filter is discrete and carries out one type of transformation -data flows from one filter to another -used for data processing applications, easy to understand and adding transformations is straightforward

layered architecture

-organizes the system into layers with related functionality associated with each layer -builds new facilities on top of existing systems, multi level security -each sub system a different layer, when a layer interface changes only the adjacent layer is affected -each layer provides services to the layer above it (lowest levels used throughout whole system)

MVC

-separates presentation and interaction from the system data -used when there are multiple ways to interact with data, future requirements are unknown, data can change independently of its representation

sequence diagram

-shows the sequence of interactions that take place during a particular use case

What occurs in the Scrum Sprint Review Meeting?

-the Scrum team shows what they accomplished during the sprint -the project is assessed against the sprint goal determined during the sprint planning meeting

We know what we're doing, if? - Guest lecture

... we know what we're doing. 1 cause gives many effects.

sprint retro

1 or 2 hours, run by scrum master, attended by team and product owner, discuss process improvements, successes and failures, adjust

A scenario should include:

1) A description of the starting situation 2) A description of the normal flow of events 3) A description of what can go wrong 5) Information about other concurrent activities 6) A description of the state when the scenario finishes

System Perspectives

1) An external perspective: where you model the context or environment of the system. 2) An interaction perspective: where you model the interactions between a system and its environment, or between the components of a system. 3) A structural perspective: where you model the organization of a system or the structure of the data that is processed by the system. 4) A behavioral perspective: where you model the dynamic behavior of the system and how it responds to events.

Three ways in which graphical models are used

1) As a means of facilitating discussion about an existing or proposed system 2) As a way of documenting an existing system 3) As a detailed system description that can be used to generate a system implementation

Types of Interviews

1) Closed: interviews based on pre-determined list of questions 2) Open: where various issues are explored with stakeholders.

Levels of Deployment Time Configuration

1) Component selection: where you select the modules in a system that provide the required functionality. 2) Workflow and rule definition: where you define workflows (how information is processed, stage-by-stage) and validation rules that should apply to information entered by users or generated by the system. 3) Parameter definition: where you specify the values of specific system parameters that reflect the instance of the application that you are creating

Types of MDA Models

1) Computational Independent Model (CIM) 2) Platform Independent Model (PIM) 3) Platform Specific Model (PSM)

What are the typical duties or tasks of a Scrum Master?

1) Considered a coach for the team, helping the team do the best work it possibly can 2) Process owner for the team, creating a balance with the project's key stakeholder, who is referred to as the product owner 3) Removes any impediments to progress 4) Facilitates meetings 5) Works with the product owner to make sure the product backlog is in good shape and ready for the next sprint

Five principles of Agile Methods

1) Customer involvement 2) Incremental delivery 3) People not process 4) Embrace change 5) Maintain simplicity

Two types of behavior when discussing Behavior Models

1) Data: Some data arrives that has to be processed by the system 2) Events: Some event happens that triggers system processing. Events may have associated data, although this is not always the case.

Product Line Configuration

1) Design time configuration: Modifies a common product to create a new system for customer 2) Deployment time configuration: Generic system designed for configuration by a customer

Agile methods are useful for what two kinds of system development?

1) Developing a small or medium-sized product for sale 2) Custom system development within an organization, where there is a clear commitment from the customer to become involved in the development process and where there are few external rules and regulations that affect the software

Key factors when Determining to Reuse Software

1) Development schedule for the software 2) The expected software lifetime 3) The background, skills, and experience of the development team 4) The criticality of the software and its non-functional requirements 5) The application domain

Process for Extending a Software Product Line

1) Elicit stakeholder requirements: Use existing family member as prototype 2) Choose closest-fit family member: Member best meets the requirements 3) Re-negotiate requirements: Adapt requirements as necessary 4) Adapt existing system 5) Deliver new family member

Important agile fundamentals to remember when scaling

1) Flexible planning 2) Frequent system releases 3) Continuous integration 4) Test-driven development 5) Good team communications.

XP applied to the Agile Manifesto

1) Incremental development is supported through small, frequent system releases. 2) Customer involvement means full-time customer engagement with the team. 3) People not process through pair programming, collective ownership and a process that avoids long working hours. 4) Change supported through regular system releases. 5) Maintaining simplicity through constant refactoring of code.

Practices of Extreme Programming

1) Incremental planning 2) Small releases 3) Simple design 4) Test-first development 5) Refactoring 6) Pair programming 7) Collective ownership 8) Continuous integration 9) Sustainable pace 10) On-site customer

Two fundamental approaches to requirements elicitation

1) Interviewing 2) Observation or ethnography

Guidelines for writing requirements

1) Invent a standard format and use it for all requirements. 2) Use language in a consistent way. Use shall for mandatory requirements, should for desirable requirements. 3) Use text highlighting to identify key parts of the requirement. 4) Avoid the use of computer jargon. 5) Include an explanation (rationale) of why a requirement is necessary.

Problems with natural language

1) Lack of clarity - Precision is difficult without making the document difficult to read. 2) Requirements Confusion - Functional and non-functional requirements tend to be mixed up 3) Requirements amalgamation - Several different requirements may be expressed together.

Agile methods and software maintenance concerns

1) Lack of product documentation 2) Keeping customers involved 3) Development team continuity

Design Pattern Elements

1) Name: A meaningful pattern identifier 2) Problem Description 3) Solution Description: Not a concrete design by a template for a design solution 4) Consequences: The results and trade-offs of applying the pattern

Non-Functional requirements that the choice of architectural style and structure should depend on:

1) Performance - localize critical operations 2) Security - Use a layered architecture with critical assets in an inner layer. 3) Safety - Localize safety-critical features in a small number of subsystems. 4) Availability - Include redundant components and mechanisms for fault tolerance. 5) Maintainability - Use fine-grain, replaceable components.

Three principle stages to a change management process

1) Problem analysis and change specification 2) Change analysis and costing 3) Change implementation

Types of non-functional requirements

1) Product: Requirements which specify that the delivered product must behave in a particular way e.g. execution speed, reliability, etc. 2) Organisational: Requirements which are a consequence of organisational policies and procedures e.g. process standards used, implementation requirements, etc. 3) External: Requirements which arise from factors which are external to the system and its development process e.g. interoperability requirements, legislative requirements, etc

Problems with a test-first environment

1) Programmers prefer programming to testing and sometimes they take short cuts when writing tests. (debatable!) 2) Some tests can be very difficult to write incrementally. 3) It difficult to judge the completeness of a set of tests.

Stages of Requirements Elicitation

1) Requirements discovery 2) Requirements classification and organization 3) Requirements prioritization and negotiation 4) Requirements specification

Requirements Engineering process activities

1) Requirements elicitation 2) Requirements analysis 3) Requirements validation 4) Requirements management

Requirements management decisions

1) Requirements identification - Each requirement must be uniquely identified so that it can be cross-referenced with other requirements. 2) A change management process - This is the set of activities that assess the impact and cost of changes. 3) Traceability policies - These policies define the relationships between each requirement and between the requirements and the system design that should be recorded. 4) Tool support - Tools that may be used range from specialist requirements management systems to spreadsheets and simple database systems.

Techniques for Requirements Validation

1) Requirements reviews - Systematic manual analysis of the requirements 2) Prototyping - Using an executable model of the system to check requirements. 3) Test-case generation - Developing tests for requirements to check test-ability

What is the role of the Scrum Master?

1) Responsible for ensuring the project is carried through 2) Interacts with different members of the team and management 3) Responsible for removal of obstacles

Steps to reduce the critical path

1) Review resources and see if we can add or improve the resources to be used...such as add more painters to get the job done faster 2) Review all the task dependencies to see if we can start work on a dependent task sooner. Can we start laying the floor while the painting is being done in a different area of the dining room? 3) Eliminate tasks that may not be required. Can we open without hanging pictures? 4) Use management tools like crashing and fast tracking as well as communications as tasks are done to monitor progress and to identify contingency plans in case there are issues.

ERP Configuration

1) Selecting the required functionality from the system. 2) Establishing a data model that defines how the organization's data will be structured in the system database. 3) Defining business rules that apply to that data. 4) Defining the expected interactions with external systems. 5) Designing the input forms and the output reports generated by the system. 6) Designing new business processes that conform to the underlying process model supported by the system. 7) Setting parameters that define how the system is deployed on its underlying platform.

Levels of Software Reuse

1) System Reuse: Complete systems, which may include several application programs may be reused. 2) Application Reuse: An application may be reused either by incorporating it without change into other or by developing application families. 3) Component Reuse: Components of an application from sub-systems to single objects may be reused. 4) Object and Function Reuse: Small-scale software components that implement a single well-defined object or function may be reused.

Extreme Programming Testing Features

1) Test-first development 2) Incremental test development from scenarios 3) User involvement in test development and validation 4) Automated test harnesses are used to run all component tests each time that a new release is built.

Practical problems with Agile Methods

1) The informality of agile development is incompatible with the legal approach to contract definition that is commonly used in large companies. 2) Agile methods are most appropriate for new software development rather than software maintenance. Yet the majority of software costs in large companies come from maintaining their existing software systems. 3) Agile methods are designed for small co-located teams yet much software development now involves worldwide distributed teams.

Three phases of Scrum

1) The initial phase is an outline planning phase where you establish the general objectives for the project and design the software architecture. 2) This is followed by a series of sprint cycles, where each cycle develops an increment of the system. 3) The project closure phase wraps up the project, completes required documentation such as system help frames and user manuals and assesses the lessons learned from the project.

Benefits of Scrum

1) The product is broken down into a set of manageable and understandable chunks. 2) Unstable requirements do not hold up progress. 3) The whole team have visibility of everything and consequently team communication is improved. 4) Customers see on-time delivery of increments and gain feedback on how the product works. 5) Trust between customers and developers is established and a positive culture is created in which everyone expects the project to succeed.

Practical and influential XP practices

1) User stories for specification 2) Refactoring 3) Test-first development 4) Pair programming

Requirements Checking Types

1) Validity - Does the system provide the functions which best support the customer's needs? 2) Consistency - Are there any requirements conflicts? 3) Completeness - Are all functions required by the customer included? 4) Realism - Can the requirements be implemented given available budget and technology? 5) Verifiability - Can the requirements be checked?

Review Checks

1) Verifiability - Is the requirement realistically testable? 2) Comprehensibility - Is the requirement properly understood? 3) Traceability - Is the origin of the requirement clearly stated? 4) Adaptability - Can the requirement be changed without a large impact on other requirements?

What do you report in your scrum meeting?

1) What have you done since your last scrum? 2) What will you do in your next scrum? 3) What blocks your way in getting there?

The 10 steps in Step Wise framework

1- Select Project 2a - Identify project objectives (the project authority, your stakeholders, their expectations, how parties will contact each other) 2b - Establish project infrastructure(why they want the project, what standards must be followed, project team organisation) 3- Analyse Project Characteristics (objective vs product based project, what's different about this project, project risks, choose development methodology) 4- Identify Project Products and Activities (produce Product Breakdown Structure (products within a product in a hierarchy), Product Flow Diagram (showing which products need to exist before other products can be created), Activity Network diagram and stages and milestones) 5- Estimate effort for each activity (bottom up estimates, revise plan to create controllable activities) 6- Identify Activity Risks (estimate damage if risk occurs a likelihood of risk occurring, plan risk reduction and contingency measures, adjust plan to account for risks) 7- Allocate Resources (and account for resource constraints like staff not available or they're currently on another project) 8- Review/Publicise Plan 9- Execute Plan 10- Lower Level Planning during Project Execution

General Steps in the Software Evolution Process

1. Change Requests 2. Impact Analysis 3. Release Planning (Includes fault repair, platform adaptation, and system enhancement) 4. Change Implementation 5. System Release

Debugging process (7)

1. Identify bug 2. Find code 3. Analyse code 4. Prove cause 5. Gather unit tests 6. Fix code 7. Run tests

General Steps in Change Implementation

1. Proposed changes 2. Requirements analysis 3. Requirements updating 4. Software development

Software Timeline (Life Cycle)

1. Software Development 2. Software Evolution 3. Software Servicing 4. Software Retirement (Phase-out)

Main advantages of designing and documenting software architecture

1. Stakeholder communication 2. System Analysis 3. Large Scale Resuse

scope document components

1. executive overview(who, why, what, when) 2. background(context, stakeholders, environment) 3. problem/opportunity(why, metrics to improve) 4. vision (end goal, lofty) 5. mission (how to act to reach vision, continually do) 6. goals (specific outcomes) 7. guiding principles (business priorities, resolve conflicts) 8. scope (success criteria, alternative approaches, solution

process activities

1. requirements discovery - elicitation/interviewing 2. requirements classification and organization 3. prioritization and negotiation 4. requirements specification

A Scrum team meets daily for approximately how many minutes?

15 minutes

Approximately when was Scrum proposed by Jeff Sutherland and Ken Schwabe?

1995

How long is a typical spring or incremental development period in agile methods?

2 - 4 weeks

sprint review

2 or 4 hours, run by scrum master, team demonstrates increment, informal, informational, discussion

In general, how many people are members of a Scrum team?

5-9

Define resource clashes + 3 ways they can be resolved

:- same resource needed in more than 1 place at the same time To resolve: - by delaying one of the activities (taking advantage of float to change start date OR delaying start of 1 activity until other one is finished which means later project completion time) - moving resource from a non-critical activity - bring in extra resource (will increase costs)

Work area

A bundle of tasks to user and environment. Ex: a reception

What tool is best for showing a team's progress against estimates?

A burn down chart

Goal-domain analysis - elicitation technique

A checking technique that looks at the relation between business goals and tasks. If unattended, the requirements doesn't assess the goals. Thins to elicit: goals and key issues, consequences and risks, completeness.

System

A collection of subsystems described by a set of models from different viewpoints.

What is Agile Software Development?

A conceptual framework for software engineering that promotes development iteration throughout the lifecycle of the project

System requirement

A condition or capability that must be met to satisfy a contract, standard, or specification.

Scrum

A daily meeting of the Scrum team that reviews progress and prioritizes work to be done that day. Short, face-to-face meeting that includes the whole team.

Software design

A description of the structure of the software to be implemented, the data models and structures used by the system, the interfaces between system components and sometimes the algorithms used.

Sprint

A development iteration. Sprints are usually 2-4 weeks long.

Use Case cases represent what?

A discrete task that involves external interaction with a system

Feasibility Study

A feasibility study decides whether or not the proposed system is worthwhile. It determines obvious constraints, facts and assumptions. It is a short focused study that checks: contribution; engineering and budget; and integration.

Finish-to-finish relationships

A finish-to-finish relationship is logical relationship where the successor task cannot be completed until the first task is completed. We cannot, for instance, finish the design until the owner gives us approval of the decor after reviewing the design proposal. The design will need to be refined as the owner reviews it, and the owner won't approve it until his feedback is integrated into the design. While the design task starts first, it will not be completed until the approval task has been completed. The approval task will begin after some initial progress on the design has occurred. Both tasks will finish at the same time.

What is a sprint?

A fixed duration of time where user stories are worked on

What is a sprint in Scrum?

A fixed time period when a system increment is developed.

Subsystem

A grouping of elements, some of which constitute a specification of the behavior offered by the other contained elements.

Feature-driven development (FDD)

A model-driven , short - iteration process

Extreme Programming (XP)

A pragmatic approach to program development that emphasizes business results first an takes an incremental, get-something-started approach to building the product, using continual testing and revision.

View

A projection into the organization and structure of a system's model, focused on one aspect of that system.

Protocols of technical interfaces

A protocol is the most complex part of a technical interface specification. A protocol has to describe all legal message sequences and how to handle error situations.

Software Prototyping

A prototype is an initial version of a system used to demonstrate concepts, try out design options, and find out more about the problem and its possible solutions.

In XP a "spike" is?

A prototype.

Attribute requirement

A quality requirement such as performance or usability. A non-functional requirement is hence a attribute- or a constraint requirement.

Development process requirement

A req. that follows a particular procedure. Can​ ​be​ ​used​ ​when requirements​ ​are​ ​vague​ ​and​ ​time​ ​is short. Ex: All developers shall spend at least two days working with the users on their daily tasks. Ex: A special review shall be conducted at the end of each development activity to verify that all requirements and system goals are duly considered. The customer's representative shall participate in the review. Ex: Customer and supplier shall meet at least two hours bi-weekly to review requests for change and decide what to do, based on cost/benefit estimates of the changes.

Model

A semantically closed abstraction of a system, represents a complete and self-consistent simplification of reality

Agile Unified Process

A simplified version of the Rational Unified Process (RUP) developed by Scott Amble

start-to-finish relationships

A start-to-finish relationship is where we cannot end the first task until the second task has started. This is often where there is task dependency. In the case of our restaurant, a cooking shift cannot leave until the second shift has arrived and started. This prevents orders from being delayed for customers in the dining room. In the case of our construction project, the painter does work first but cannot leave until the floor is done because the walls may need touch up after the flooring is put down.

system requirements

A structured document setting out detailed descriptions of the system's functions, services and operational constraints. Defines what should be implemented so may be part of a contract between client and contractor.

A set of Algorithms

A subset of the set of processes.

What is the most appropriate definition and explanation of a 'user story' in Scrum/Agile?

A user story is a simple description of a product requirement in terms of what that requirement must accomplish for whom.

Task demonstration - elicitation technique

A variant of interviewing and observation. You ask the users to show you how they perform a specific task which on aggregate is usually hard, i.e. a person's daily work is hard to explain due to variations. However, when asked to explain specific tasks of their daily job, that is easier. In the end most realise that the variations in their aggregate tasks aren't as huge as they believe. Thins to elicit: present work/problems

Extreme Programming

A very influential agile method, developed in the late 1990s, that introduced a range of agile development techniques.

___________ diagrams may be used to model the processing of data, where each activity represents one process step.

Activity

Describe 2 Types of activity networks (including what the arrows denote)

Activity on node: activities are represented inside each node, the arrows denote precedence and dependency Activity on arrows: activities are represented on the arrows between each node, arrows denote start/completion time of activity

Explain the 3 Approaches to Identifying Activities

Activity-based: Create a work breakdown structure (WBS) listing the work items needed based on analysis of similar past products Product-based: List the deliverable and immediate products of the project (in a Product Breakdown Structure - PBS) THEN, identify the order in which products have to be created (Product Flow Diagram - PFD) THEN, work out the activities needed to create the products Hybrid: Start with a simple list of final deliverables (product-specific) THEN, apply the activity-based approach to each deliverable

Why use Agile?

Addresses problems with structured development (lots of documentation and need to keep it updated, user exclusion from the decision process, long lead times)

AAR

After Action Review (wrap-up)

What types of projects are good candidates for Agile project management?

Aggressive deadlines, a high degree of complexity, and a high degree of novelty (uniqueness) to them.

Scrum

Agile method that focuses on managing iterative development rather than specific agile practices.

How is Agile planning different from the traditional approach to planning?

Agile planning places the emphasis on the planning process and is iterative

Lower course profile

Almost flat gradient, widest size, almost flattened v shape valley, lateral erosion

What is a Plan-Driven approach to software engineering?

An approach that identifies separate stages in the software process with outputs associated with each stage.

Model-Driven Engineering

An approach to software development whereby models rather than programs are the principle outputs of the development process.

Structured language specifications

An approach to writing requirements where the freedom of the requirements writer is limited and requirements are written in a standard way. (works well for say embedded systems but is too rigid for business system requirements)

Programming

An individual activity, and there is not general process that is usually followed. Some programmers start with components they understand and move on to less understood components. Others take the opposite approach. Some will define data early in the process and use this to drive the program development; others leave data unspecified for as long as possible.

Definition of a Framework

An integrated set of software artifacts (such as classes, objects and components) that collaborate to provide a reusable architecture for a family of related applications.

Class Diagram

An object-oriented system model to show the classes in a system and the associations between these classes.

What is the left over / abandoned meaner called?

An oxbow lake.

Decide the end result of the project based on customer's requirements

Analysis

Determine inputs

Analysis

Write a description of the project

Analysis

Conceptual Level / Perspective

Analysis and modeling of the problem domain for the purpose of understanding and defining the problem to be solved. Used to create domain models that are solution independent

What occurs during sprint planning?

Answers the questions: What can be done during this sprint? -Create Product Backlog -Determine the Sprint Goal -Participants: Product Owner, Scrum Master, Scrum Team How will the get done? -Creates the Sprint Backlog -Participants: Scrum master, Scrum Team

System Stakeholders

Any person or organization who is affected by the system in some way and so who has a legitimate interest

validation

Are we building the right product?

How are meandering rivers shaped?

Asymmetrically, the outside bank is undercut by lateral erosion causing it to curve.

When to prioritise?

At decision points: - Project start - Start of construction - Release planning - Increment planning When big changes occur With intervals

What-if scenarios - The science of RP

At the later stages of a RP cycle, decision makers should ask e.g.: • What if some of the stakeholder weights change? • What if some of the capacities are in- creased (or decreased)? • What if we modify the objective function or some of the constraints?

Reuse: The Object Level

At this level, you directly reuse objects from a library rather than writing the code yourself.

Reuse: The Abstraction Level

At this level, you don't reuse software directly but use knowledge of successful abstractions in the design of your software.

Software Servicing

At this stage, the software remains useful but the only changes made are those required to keep it operational i.e. bug fixes and changes to reflect changes in the software's environment. No new functionality is added.

Factors to Consider when Allocating Individuals to Activities (which is not always quantifiable)

Availability Criticality - use experienced staff on critical activities Risk - activities that must be completed to high quality standard Team-building - find people who work well together Training - take risk in order to develop staff by allocating non-critical tasks to less experienced staff

Plan-driven development

Based around separate development stages with the outputs to be produced at each of these stages planned in advance.

Why are agile methods difficult for large systems?

Because they require up-front design and some documentation.

When are tests written XP?

Before code is written.

___________models are used to describe the dynamic behavior of an executing system. This behavior can be modeled from the perspective of the data processed by the system, or by the events that stimulate responses from a system.

Behavioral

What does it mean to say a team lead and a Scrum Master are servant leader?

Being a servant leader is being a servant first than a leader first. Being a servant leader means you are committed to putting your personal interest last. In other words, servant leadership is a commitment to humility. Being a servant leader is not about your success but it is about the success of those you are serving. You are not the center of the attention, the people whom you are serving should be the center of the attention.

1 similarity between Step Wise and PRINCE2

Both frameworks are product-based

Extreme Programming

Breaks a project into tiny phases, and developers cannot continue on to the next phase until the first phase is complete. Uses storyboards.

Legacy System Assessment Criteria

Business Value vs System Quality - High Business Value but Low Quality (make an important business contribution but are expensive to maintain. Should be re-engineered or replaced if a suitable system is available.) - Low Business Value and Low Quality (should be scraped) - Low Business Value but High Quality (replace with COTS, scrap completely or maintain.) - High Business Value and High Quality (continue in operation using normal system maintenance)

How are gorges formed?

By the waterfall retreat.

Process

Collection of related tasks that transforms a set of inputs into a set of outputs

Risk with AHP (Analytical Hierarchy Process)

Comparison of each req. to all the other req. becomes very expensive with increasing amount of req.

Architecture in the large

Concerned with the architecture of complex enterprise systems that include other systems, programs, and program components. These enterprise systems are distributed over different computers, which may be owned and managed by different companies

Architecture in the small

Concerned with the architecture of individual programs. At this level, we are concerned with the way that an individual program is decomposed into components.

"Scaling up" agile methods

Concerned with using agile methods for developing large software systems that cannot be developed by a small team.

_____________ management is the process of managing changes to an evolving software system. It is essential when a team of people are cooperating to develop software.

Configuration

______________ models show how a system that is being modeled is positioned in an environment with other systems and processes.

Context

Open innovation - creativity

Creativity scheme where a firm takes in internal and external technology and puts it out to new and existing markets. In the process the firm interacts with these technologies with the "OSS ecosystem" partners to the firm that are external to the OSS ecosystem.

Prioritisation criteria and objetives

Criteria: - Customer value - Development cost - Development lead-time - Engineering Risk - Fitness to market window - Fitness to brand - Volatility Objective: Maximise/Minimise

Daily Scrum

Daily meeting in Scrum.

Channel bed roughness

Decreases, rocks get smother by attrition so it is less likely for them to be sharp.

Resource Histogram

Depicts the amount of resources of each type required during lifetime of project

Install the applications

Deployment

Refine the programs to improve performance

Deployment

Implementation Level / Perspective

Diagrams describe software implementation that are language and platform specific

task dependencies

Discretionary- where the PM can choose based on resource availability, including people, money/budget, and other materials Mandatory/logical dependencies of one activity or task to another or legal requirements Internal dependencies- such as impact on milestones as defined by the project requirements or under management control External dependencies- that rely on external resources or forces Physical dependencies- where primer must be applied before the final paint or where the plumber and electrician cannot work in the same utility closet at the same time

Calculations involved in forward pass (3 points)

Earliest start = 0 for activities with no dependency Earliest start for activities with dependencies = largest earliest-finish of a preceding activity Earliest finish = earliest start + duration

What's the labelling convention for each node on an activity diagram (not including the start and end nodes)?

Earliest start | Duration | Earliest Finish Activity label, activity description Latest start | Float | Latest Finish

Pros of Prototyping

Easy to handle changes, getting working product quickly, less documentation or management required, lightweight.

Effort vs Elapsed Time

Effort - number of staff-days/weeks/etc (e.g. person months) required to complete a task Elapsed time - calendar time between task start time and task end time

Pros of Spiral Model

Explicit incorporation of increases in fidelity/detail and risk, iterative.

Q - Trust between customer and provider will automatically be established in agile projects.

False

Q - Task descriptions are generally specified as product-level requirements.

False, Always on domain level

Too often, customers cannot understand context diagrams.

False, Context diagrams help understanding (sooooo much)

Q - It's​ ​generally​ ​unnecessary​ ​to identify​ ​all​ ​events​ ​in​ ​the​ ​inner​ ​and outer​ ​domains and customers​ ​can​ ​generally​ ​validate​ ​a list​ ​of​ ​product​ ​events​ ​better​ ​than​ ​they can​ ​validate​ ​a​ ​list​ ​of​ ​domain​ ​events.

False, Seems like you have to identify all inner and outer domain events. And, it's easier to validate a list of domain events than product events.

Q - When conducting group interviews, it is enough if only some representatives give their opinion on behalf of the rest of the group. The rest of the group can keep listening and correct the speakers if needed.

False,F

Debugging

Finding and fixing program defects. It is concerned with locating and corrective these defects which may be found in testing.

dependencies

Finish to Start(cant start until preceding task finishes), Start to Start(cant start until preceding task starts), Finish to Finish(cant finish before preceding task finishes), Start to Finish (rare)

What is function point analysis of software

For estimating software size in terms of functionalities, instead of SLOC Each function point (FP) has a weight (which depends on complexity of the software component) Then each FPxWeight is summed to get total software size

What are examples of Scrum backlog items?

For product backlog it is the requirements for a system expressed in user stories. Enforce user names: in main screen and in import

Specification

Formal documentation of user- and system requirements, i.e. of 1 or 2. 1. A condition or capability needed by a user to solve a problem or achieve an objective 2. a condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard,specification, or other formally imposed document

Pros of RUP

Fully specified process, comes with templates, adaptable to projects of different sizes/needs. Less risk, gets usable product quickly and is iterative.

Pros of Agile Process

Handles changes very well, quick delivery of a working product to customer, can recognize bad projects early, and reduces waste and duplication of effort.

Cons of Prototyping

Hard to predict time and cost, product may be unmaintainable, little discipline -> bad quality control -> buggy product.

Kano mode (See Onenote)

How a supplier shall relate to the balance between over performing and under performing, i.e. when basic requirements are met and when more functionality is added to make customers more delighted.

What does Load particle size represent on The Bradshaw Model?

How big the stuff is

Prototyping - elicitation technique

Ideal for finding actual requirements.

What decade did agile development methods become popular?

In the 1990's (yes another anal question)

Channel depth

Increases, because the river is eroding vertically.

Average velocity

Increases, because there is less friction and more water.

Load quantity

Increases, there are more things being eroded and transported.

The Systems Development Life Cycle (SDLC) method uses sequential development, what type of development occurs in Scrum and other Agile methods?

Incremental and Iterative

What does Agile Methods rely on?

Incremental approaches to software specification.

Difference between Iterative and Incremental

Incremental: Intermediate outputs are versions of the product.

What is produced during the requirements engineering process?

It aims to produce an agreed requirements document that specifies a system satisfying stakeholder requirements. End-users and customers need a high-level statement of the requirements; system developers need a more detailed system specification.

What does it mean to say a Scrum team is cross functional?

It means that the team has all the skills necessary to turn Product Backlog Items into a done Increment.

______________processing systems are used to translate texts from one language into another and to carry out the instructions specified in the input language. They include a translator and an abstract machine that executes the generated language.

Language

Behavior Models

Models of the dynamic behavior of a system as it is executing.

What are characteristics of Agile Methods?

Modularity Iterative time-Bound Incremental Convergent People-oriented Collaborative

Elements of the Observer Pattern

Name: Observer Description: Separates the display of an object state from the object itself Problem Description: Used when multiple displays of data are needed Solution Description: See UML Description Consequences: Optimizations to enhance display performance are impractical

In XP is there overtime?

No, because it has a net effect that reduces code quality and medium team productivity.

Usability testing

Observe users carry out some realistic tasks by means of the system or a simple mockup of it. It is not a usability test when a developer shows how to perform various tasks with the system. Usability has to be tested and measured with real, potential users.

How is a waterfall formed?

Occurs when river passes over hard rock. The river erodes the soft rock underneath and creates a plunge pool. Hydraulic action and abrasion help to undercut the hard rock until the overhand is too heavy and collapses. The waterfall then moves back and the process starts again

Open metric and open target

Part of specification where metrics are left open intentionally. Ex (open target). R4: Product shall compute a room occupation forecast within ___ minutes. Ex (open metric). R7: The supplier shall specify the forecast accuracy for hotels similar to ours.

ScrumMaster

Person responsible for ensuring that the Scrum process is followed and guides the team in the effective use of Scrum. He or she is responsible for interfacing with the rest of the company.

Pros of Waterfall Model

Predictable, easy to estimate, easy to fix, a lot of documentation, distributable.

Process descriptions

Primarily related to design- level requirements. May be used for some domain-level functions (business rules). Typically don't mandate conformity, whilst used as requirement, to the details specified, but rather that the functions should produce the same result as the specification.

Product Backlog

Prioritized list of requirements/features. Includes the size, to dos, exploratory work, and known bugs. Updated by the Product Owner.

Incremental Process

Process that produces its output (working version) in phases.

The first step in Scrum is for the Product Owner to articulate the product vision. Eventually, this evolves into a refined and prioritized list of features called the

Product Backlog

In general, who can cancel a sprint?

Product Owner

In the Scrum framework, who decides on release date and content of the product?

Product Owner

Who is responsible for maximizing return on investment (ROI) by identifying product features, translating these into a prioritized feature list, deciding which should be at the top of the list for the next Sprint, and continually re-prioritizing and refining the list?

Product Owner

Who should control the priority of features implemented in a project?

Product Owner

What are the main roles in Scrum?

Product Owner Scrum Master Scrum Team

What are the three roles in the Scrum framework?

Product Owner, Scrum Master, Team

Prototype Model

Product Vision, ([merge node], Design, Implementation, (Prototype), Demo and Evaluation, [decision node]), Software Product or back to Design.

Spiral Model

Product Vision, ([merge node], Identify Objectives and Constraints, (Problem), Identify Alternatives, (Potential Solutions), Analyze risks, Resolve Risks and Evaluate Solutions, (Selected Solution), Realize Solution, (Draft Realization), Verify and Validate, (Realization), [decision node]), Software Product or back to Identify Objectives.

Rational Unified Process (RUP)

Product Vision, ([merge node], Inception, (Draft Specification), Elaboration, [Detailed Specification][High-Level Design][Central Code], Construction, [Code][Tests], Transition, (Product Release), [decision node]), Software Product or back to Inception.

Agile Process

Product Vision, ([merge node], Refine Specifications, Create Increment, (Deliverable Product), Evaluate Increment, Improve Process, [decision node]), Software Product or Refine Specifications.

How does the product backlog differ from the sprint backlog?

Product backlog: -List of desired work on the project -prioritized by product owner -Created during the Sprint Planning Meeting -Can be changed and reprioritized before each planning meeting Sprint backlog: -a subset of Product backlog items, which define the work for a sprint -created by team members -each item has own status -updated daily -Team can add or subtract from list - product owner cannot

Product based vs Objective based projects

Product-based: create a product and defined activities to get there. Solution is known Objective-based: problem that needs solving is defined. More uncertainty

Q - The product shall have a function for storing new items based on their associated keywords - domain/product level req?

Product-level requirement

What is a user story in the Scrum framework?

Requirements for a system, expressed as a prioritized list of Backlog Items in the Product Backlog

Cons of RUP

Requires knowledgeable and experienced developers, a lot of documentation and management effort (heavyweight), and cannot handle requirements changes.

Cons of Waterfall Model

Requiring stable, complete and correct requirements, too much documentation, communication overhead, management, takes too long.

Agile Methodologies examples

SCRUM, XP, Kanban

What are three problems of the Waterfall model or method for software development?

Schedule Risk,Limited Flexibility,Reduced customer involvement.

Who should attend the Sprint Retrospective meeting?

Scrum Master and Scrum Team

SeORIF(ASEK)*SdCI - Guest lecture

Sd - desired situation Se - existing situation P - problem R - roles (having the problem) I - negative Impact if we do nothing about the problem. F - flows in which this is actually a problem S - solution(s) A - actors getting benefit from the solution E- positivt Effect how the solution change the world. K - KANOprio * - many solutions C - condition on satisfaction, the measurable success indicator I - implement it

Define critical path

Sequence of activities with float = 0 throughout the network

Integrated Development Environments (IDEs)

Set of software tools that supports different aspects of software development, within some common framework and user interface.

State Diagrams

Show how the system reacts to internal and external events.

Sequence Diagrams

Show interactions between actors and the system and between system components.

Activity Diagrams

Show the activities involved in a process or in data processing

Use Case Diagrams

Show the interactions between a system and its environment.

Class Diagrams

Show the object classes in the system and the associations between these classes.

Event-Driven Models

Shows how a system responds to external and internal events

Subsystem Models

Shows how the design is organised into logically related groups of objects

Process View

Shows how, at run-time, the system is composed of interacting processes.

Logical View

Shows the key abstractions in the system as objects or object classes.

Physical View

Shows the system hardware and how software components are distributed across the processors in the system

What is The Bradshaw Model?

Simple model designed to show how the characteristics of a river change as it moves downstream. The width of each triangle represent a characteristic getting bigger or smaller.

SDD

Software Design Document

Product-level requirement

Specification of what goes in, and out, of the product. Essentially we just identify the function or feature without giving all the details. Ex: The product shall have a function for recording experience data and associated keywords. It shall have a function for retrieving the data based on keywords.

Design-level requirement

Specification product interfaces in detail. Although a design-level requirement specifies the interface exactly, it doesn't show how to implement it inside the product. Ex: The product shall provide the screen pictures shown in app. xx. The menu points shall work as specified in yy.

Agile Development

Specification, design, implementation and testing are inter-leaved and the outputs from the development process are decided through a process of negotiation during the software development process.

Describing Processes

Specify the inputs to and outputs from the process, specify the tasks, specify the inputs to and outputs from each task, specify the order of tasks and the conditions under which they occur (control flows).

Around what does a Scrum team self-organize and prioritize tasks?

Sprint Backlog

Calculations involved in backward pass (6 points)

Start from the last activity Latest finish for last activities = largest earliest finish (of all the last activities) Latest start = latest finish for activity - duration Latest finish for current activity = latest start for the following activity/of the following activities Latest start = latest finish - duration Float = Latest finish - Earliest start - Duration

Types of UML Diagrams

Structural Diagrams and Behavioural Diagrams

Structured vs Agile Software Development

Structured - heavyweight approach, focus on getting quality right first time, thorough documentation, each step taken is carefully defined Agile - for speed of delivery rather than documentation

Domain-level requirement

Support the activities that go on outside the product - in the domain. Ex: The product shall support the cost registration task including recording of experience data. It shall also support the quotation task with experience data.

Product Design

Task in Software Process that includes identification of needs and desires, specification of requirements, and prototyping.

Sprint Backlog

Tasks being completed in order of priority from the Product Backlog.

Verify the results of each program

Testing

Product Backlog

The "to-do" items which the Scrum team must tackle.

What is the agile part of the scrum approach?

The Development phase

What is meant by "Requirements specification"?

The activity of translating the information gathering during requirements analysis into a document the defines a set of requirements. User requirements are abstract statements the system requirements for the customer and end-user; system requirements are a more detailed description of functionality to e provided.

According to Schwaber and Sutherland, what theory is Scrum founded upon?

The chicken and the pigs.

factors that can influence the impact of learning curves include:

The complexity of the activity The level of human input required The duration of the activity The skill level required

What does the "Integration and system testing" stage involve?

The individual program units or programs are integrated and tested as a complete system to ensure that the software requirements have been met. After testing, the software system is delivered to the customer.

In extreme programming story cards are?

The main inputs to the XP planning process.

What do structural models display?

The organization of a system in terms of the components that make up that system and their relationships.

Stakeholder analysis - elicitation technique

The people who are needed to ensure the success of the project, for instance the future daily users and their managers. It is essential to find all the stakeholder groups and find out their interests. Answer these questions: • I Who are the stakeholders? • I What goals do they see for the system? • I Why would they like to contribute? • I What risks and costs do they see? • I What kind of solutions and suppliers do they see? Thins to elicit: Goals and key issues

What is the primary purpose of the Speculate phase in an Agile process?

The primary purpose of the speculate phase is for the business and technical teams to identify the features for this iteration. If this is not the 1st iteration you need to review past features that have not been completed

What is meant by "Requirements elicitation and analysis"?

The process of deriving the system requirements through observation of existing systems, discussions with potential users and procurers, task analysis etc. This may involved the development of one or more stem models and prototypes to help understand the system to be specified.

System Modeling

The process of developing abstract models of a system, with each model presenting a different view or perspective of that system

System Implementation

The process of developing an executable system for delivery to the customer. Sometimes this involves separate activities of software design and programming.

Requirements Management

The process of managing changing requirements during the requirements engineering process and system development.

Requirements elicitation

The process of seeking, uncovering, acquiring, and elaborating requirements for software systems.

Software Specification (or requirements engineering)

The process of understanding and defining what services are required from the system and identifying the constraints on the system's operations and developments. It is particularly critical stage of the software process as mistakes made inevitably lead to later problems.

How often is the product backlog reviewed and by who?

The product backlog is reviewed by the Scrum Team after each iteration

What does the Requirement Backlog contain?

The project backlog contains all the requirements that are currently known

What is a Project Brief?

The project brief is the final stage in the process of defining the client's requirements for the development of a built asset.

Long profile shows...

The river from the side. A typical river.

How is a floodplain formed?

The rivers lateral erosion as it meanders helps create the floodplain, during a flood the floodplain is inundated, layers of sediment cover the floodplain.

What do sequence diagrams show?

The sequence of interactions that take place during a particular use case or use case instance.

What does the "Requirements analysis and definition" stage involve?

The system's series, constraints and goals are established by consultation with users. They are then defined in detail and serve as a systems specification.

What does the "System and software design" stage involve?

The systems design process allocates the requirements to either hardware or software systems. It establishes an overall system architecture. Software design involves identifying and describing the fundamental software system abstractions and their relationships.

How are projects managed and implemented in Agile project management?

The team itself assumes agile project management roles when determining how to best achieve the product goals (as established by the product owner). Team members will collaboratively decide which person should work on which tasks, which technical practices are necessary to achieve stated quality goals, and so on.

What is the role of the scrum team?

The team with the authority to decide the necessary actions to complete goals of the sprint

What is meant when saying that defining a system boundary is a political judgment?

There may be pressures to develop system boundaries that increase / decrease the influence or workload of different parts of an organization.

Tacit knowledge

These are obvious aspects of e.g. requirements. Hopefully you're not needed to state these in detail. Issues might arise however, when one party thinks that some aspect is tacit and therefor leaves it out.

Platform specific models (PSM)

These are transformations of the platform-independent model with a separate PSM for each application platform. In principle, there may be layers of PSM, with each layer adding some platform-specific detail.

Computation independent model (CIM)

These model the important domain abstractions used in a system. CIMs are sometimes called domain models.

Platform independent model (PIM)

These model the operation of the system without reference to its implementation. The PIM is usually described using UML models that show the static system structure and how it responds to external and internal events.

What is meant by "Requirements validation"?

This activity checks the requirements for realism, consistency and completeness. During this process, errors in the requirements document are inevitably discovered. It must then be modified to correct these problems.

Implementation View

This describes the artifacts used to assemble and release the physical system. It is used in configuration management. Not supported by UML anymore.

Use-case View

This describes the behaviour of the system as seen by its users and is the starting point of the Unified Process which is use-case driven

Design View

This describes the classes, interfaces and collaborations that form the vocabulary of the problem and its solution

Behavioural Diagrams

This describes the dynamic aspects of the system, its behaviour. It defines / describes the functionality of the system and is centered around behavioural elements as exhibited by things.

Interaction View

This describes the flow of control between system's active components, concurrency and synchronization addressing performance, scalability and throughput

Structural Diagrams

This describes the static aspects of the system, its structure. It Defines / describe the structure of the system and is centered around things and relationships between them.

What does the "Operation and maintenance" stage involve?

This is usually the longest life-cycle phases. The system is installed and put into practical use. Maintenance involves correcting errors that were not discovered in earlier stages of the life cycle, improving the implementation of system units, and enhancing the system's services as new requirements are discovered.

What happens in the Explore phase of an Agile process?

This phase is all about collaboration between business to technical team members. The daily standup meeting happens and discuss anything they need. The project manager just observes the team to see what is unresolved.

Goal-level requirement

This requirement states the business goal that can be verified, after some time. Ex: The product shall ensure that precalculations match actual costs within a standard deviation of 5%. Impossible for the supplier to guarantee, hence, something that the customer takes responsibility for.

Two types of Prototypes

Throwaway Prototypes and Evolutionary Prototypes.

What does time-boxed mean in the context of Agile processes?

Timebox is a defined period of time during which a task must be accomplished, fixed

What is the goal of the first sprint?

To demonstrate a key piece of user functionality

When collaborating during the Explore phase, what is one role of the project manager?

To observe the team and to see what is unresolved.

What's the objective of activity + give 4 thing activity planning ensures

To produce a schedule that shows start and completion times for each project activity - ensures appropriate resources are available when required - avoids resource overload - can use to derive a timed cash flow forecast - enables project replanning to correct drift from target completion time

_____________ processing systems are interactive systems that allow information in a database to be remotely accessed and modified by a number of users.

Transaction

Q - (CPS) proposes divergence from an agreed current system model, followed by a convergence towards a revised agreed model that includes new ideas.

True

Q - A data model is insensitive to the level we work on (aggregation level)

True

Q - A problem with using virtual windows is it can take up a lot more time than reasonable for specifying requirements.

True

Q - Context​ ​diagram​ ​arrows​ ​can​ ​refer​ ​to either​ ​dataflow​ ​or​ ​events.

True

Q - Correctness can be a quality criterion for requirements specifications.

True

Q - Dataflow diagrams can outline user tasks in a graphical way. They use and produce activities, either on the domain level or the product level.

True

Q - In agile projects, informal communication replaces time- consuming documentation and approval processes.

True

Q - In general, the platform requirements are closely related to speed and capacity requirements.

True

Q - It can be beneficial to let domain events be accompanied by for instance task descriptions, use cases, dataflow diagrams and activity diagrams.

True

Q - Managers can generally only help with defining goals and visions in domain workshops.

True

Q - Tracing between demands and requirements is done to see if all requirements have a purpose (have been demanded) and all demands agreed on are covered by requirements.

True

Q - Virtual windows let customers validate the screen design.

True

T or F: Individual components implement the functional system requirements, but the dominant influence on the non-functional system characteristics is the system's architecture.

True!

T or F: When developing a class diagram, objects represent something in the real world.

True!

Q - Requirements validation is about customers checking that requirements reflect their demands correctly.

True, strange that customers validate their own req. could be that suppliers also do validate before implementation.

Q - Task descriptions make design harder, compared to corresponding requirements expressed as product features.

True, Feature "button" is easier to design than task description "check in to hotell"

Q - Many agile methods advocate the development of code without waiting for formal requirements analysis and design phases.

True, Formal req. and design phases are not commonly seen in agile RE.

Some standards can be reasonably well verified before the system is put into operation.

True, It is also important to specify goals for each standard.

Q - The result of experimenting with a prototype may be design-level requirements.

True, The experiment with the prototype has shown that such an interface satisfies the goals of the system.

Q - When specifying response times in multi-user systems, maximum response times shall never be specified.

True, The maximum limit is very costly to guarantee.

Q - In​ ​practice,​ ​we​ ​have​ ​to​ ​live​ ​with tacit​ ​requirements.

True, They will always find their way into specifications. Mostly due to different domain knowledge.

Q - It is easier for a supplier to satisfy feature requirements than ensuring support for user tasks.

True, features req. are "shall"-statements and are more vague than user tasks.

Q - Requirements validation is about customers checking that requirements reflect their demands correctly.

True, validation could concern both customers and suppliers maybe.

Q - In​ ​principle,​ ​we​ ​can​ ​assume​ ​that domain​ ​knowledge​ ​is​ ​non-obvious and​ ​specify​ ​all​ ​requirements​ ​in​ ​detail.

True, which is very contradicting yes.

Best way to communicate message - Guest Lecture

Use all type of communication, not only a picture, but also e.g. text. or steps (peeing, recording, youtube for a littering can)

Observation - elicitation technique

Users are not always aware of what they really do and how they do it. Ex: find a section in a cookbook. People recomend to use the list of contents. 80% of cases where this would be a good approach, people start skimming through the book in actual cases. Thins to elicit: present work

Software Validation

Verification and Validation (V & V) is intended to show that a system both conforms to its specification and meets the expectations of the system customer. It involves checking and revising processes, and system testing.

Definition of done - Guest Lecture

Very important for RE projects

Functional/Non-functional requirements

What the system should do/a function that the system needs to be able to perform. Or, operational requirements: the description of behavioural aspects of a system. I.e. specifying the inputs to the system, the outputs from the system and behavioural relationships. Rest is non-functional requirements.

When is it good to use waterfall development

When the project is very similar to previous projects as there is much less uncertainty

Configuration Management: Problem Tracking

Where support is provided to allow users to report bugs and other problems, and to allow all developers to see who is working on these problems and when they are fixed.

Configuration Management: System Integration

Where support is provided to help developers define what versions of components are used to create each version of a system. This description is then used to build a system automatically by compiling and linking the required components.

Configuration Management: Version Management

Where support is provided to keep track of the different versions of software components. Version management systems include facilities to coordinate development by several programmers.

What is meant by "Interface design"?

Where you define the interfaces between system components. This interface specification must be unambiguous. With a precise interface, a component may be used by other components without them having to know how it is implemented.

What is meant by "Database design"?

Where you design the system data structures and how these are to be represented in a database. Again, the work here depends on whether an existing database is to be reused or a new database is to be created.

What is meant by "Architectural design"?

Where you identify the overall structure of the system, the principal components, their relationships and how they are distributed.

What is meant by "Component selection and design"?

Where you search for reusable components and if no suitable components are available, design new software components. The design at this stage may be a simple component description with the implementation details left to the programmer. Alternatively it may be a list of changes to be made to a reusable component or detailed design model expressed in UML.

Divergent- and convergent thinking (1/2 creativity workshop)

Workshop period: • Diverge: generate creative ideas through exploring multiple alternatives • Converge: select "correct" ideas amongst alternatives.

Will there always be a critical path in an activity network

Yes

To make a product smart - Guest Lecture

You have to put it into context, scenario to figure out what is smart for certain situations.

learning curves

a concept that suggests that as a person repeats a task, the time required to complete the task decreases; basically, the more often you do something, the better and faster you become; can be important for creating accurate activity duration estimates when the project includes tasks that are repeated; often applied based on a percentage improvement (10%, 20%, 30%, etc.)

network diagram/precedence diagram

a graphic that visually shows the team and stakeholders how the schedule will unfold;shows what will be done, when, in what order, and how these activities or tasks interrelate with each other; primary function is to provide everyone involved on the project with a clear representation of the schedule and the critical path(s) so the assumptions made during the planning process can be validated

beta distribution activity estimate standard deviation

a statistical measure of how much the actual activity duration is likely to vary (i.e. +/- 3 days)

what is the difference between a story board and a story map?

a story board tracks the tasks for a single sprint, while a story map plans out multiple sprints

immediate predecessor

a task is needed immediately before another task

agile manifesto - why do we do agile?

agile values: 1. individuals and interactions over processes and tools 2. working software over comprehensive documentation 3. customer collaboration over contract negotiation 4. responding to change over following a plan

what is the difference between a theme and an epic?

an epic isn't useful/delivered until all of the underlying stories are complete, while stories comprising a theme are independent enough to be delivered separately AND still provide measurable value

Exception

an error in programming this "thrown' when something bad happens in a program, usually during runtime. 2 types, checked and unchecked.

product owner

an individual or group whose job is to identify product features or requirements and continuously review/groom the backlog; sets priorities and manages pbl

deterministic duration estimation/one-point estimate

appropriate when the activity durations are very predictable; requires that the team expert provide a reliable estimate of the time necessary to complete the activity; expert provides a single estimate for an activity based on either his or her own knowledge or historical information; people providing the estimate can easily be too optimistic or too pessimistic, which results in unreliable duration estimates

A software's _______________ is a description of how a software system is organized.

architecture

backward pass

begins with the end date;shows the latest date we can start the project and finish on time

Agile approach's are....

both incremental and iterative. They emphasizes continuous delivery of working software that is coded, tested and fixed over short intervals that are typically one to three weeks in duration.

Fast-tracking

common alternative to schedule crashing; certain tasks are overlapped despite their dependencies

style conventions

crucial part in writing programs by documenting work that is done. spacing and indenting, use of meaningful identifiers, comments-single and block

Examples of Architectural design ___________include the type of application, the distribution of the system, and the architectural styles to be used.

decisions

sprint backlog

decomposed task list, driven by portion of pbl, owned and modified by team

Incremental model

defines the system software development process in small steps, completing all the SSLC phases for each subset of the application and then repeating the cycle for each portion until the project is complete.

system requirements

describe functional and nonfunctional requirements in more detail, description of system services and constraints that are generated during requirement engineering process

The process of object-oriented design includes activities to ________ the system architecture, ___________ objects in the system, __________ the design using different object models and ___________ the component interfaces.

design identify describe document

2 general categories of activity duration estimation

deterministic and probabilistic; both techniques require input from the people who will be doing the work

testing

dynamic verification, concerned with exercising and observing product behavior, system is executed with test data and operational behavior is observed

requirements engineering

establishing the services that a custom requires, and the constraints

exception handling

exception is an error that might occur during the execution of a program. example: try catch block

prototype development

focuses on areas that are not well-understood, not the errors that might happen, no error checking (benefits: improved usability, maintainability, reduced development effort)

Crystal Family of methods

heavy emphasis on the importance of communication among people involved in the project.

Most software development is _______-target development. You use an IDE on a host machine to develop the software, which is transferred to a target machine for execution.

host

planning poker

how to estimate product backlog item story points, high and low estimates explain

node label/node

identifier/sequence for activities; usually a number (3.1, 3.2)

Version Control System

identify, store, and control access to different versions of components key features: version + release identification, change history recording, support for independent development, project support, storage mgmt

Federated Identity Management

identity manager performs authentication of user, is then allowed in to applications

Software design and implementation are _____________ activities. The level of detail in the design depends on the type of system and whether you are using a plan-driven or agile approach.

inter-leaved

Project Plan Components

intro, WBS, Gantt, Assumptions/Dependencies, Risks/Mitigations, Quality, Communications, Change Management

Incremental pros

introduces more flexibility to change, builds in customer testing and evaluation, and easier to manage risk.

daily stand up

meeting of scrum team that reviews progress and prioritizes work to be done, stakeholders do not speak, update sprint backlog and blocks list

mvp

minimum viable product - deliverable of a sprint, potentially shippable

Distributed version control

multiple versions of component repository that exist at same time Git is example master repo created, devs clone repo and commit changes to private repo then push changes to master benefits: backup method if master repo corrupted can restore from local, devs can work off-line, project support default way of working (friendly to testing)

BSD

non reciprocal license, you are not obligated to republish any changes or modifications, can be included in proprietary systems that are sold

ethnography

observing and analyzing how people actually work, social and organizational factors, people do not have to explain or articulate their work

padding the estimates

overestimating the time required for a project or activities within; considered a bad practice; if the estimates are not accurate then the plan will not be believable and it will not be followed;if padding is done frequently, the credibility of the PM is at risk.

beta distribution activity duration

places emphasis on the most likely estimate;

what is the difference between plan driven and agile processes?

plan driven processes(waterfall) is sequential and all of the activities are planned in advance, while agile planning is iterative and is easier to change the process to reflect changing customer requirements

increment

potentially shippable version of the project, tested and documented enough to be done

SCRUM Cons

prone to "feature Creep" and over-budget...documentation can suffer

iterator pattern

provides a standard way of accessing the elements in a collection, irrespective of how that collection is implemented

GPL

reciprocal license, if a software uses open source software, it must also be open source

Why use Style Conventions

reduce the cost of maintenance, (40-80 of lifetime cost of software goes to maintenance), improves the readability of the software.

incremental Cons

requires good planning and design to work effectively

design pattern

reuses abstract knowledge about a problem and its solution, makes use of object oriented characteristics such as inheritance and polymorphism

Architectural patterns are a means of __________knowledge about generic system architectures. They describe the architecture, explain when it may be used and describe its advantages and disadvantages.

reusing

When developing software, you should always consider the possibility of ___________existing software, either as components, services or complete systems.

reusing

release testing

separate testing team tests a complete version of the system before it is released to users (requirements, scenario, performance)

Codeline

sequence of versions of source code where later versions in sequence derived from earlier versions, normally applies components of systems

development view

shows how the software is decomposed for development

logical view

shows the key abstractions in the system as objects or object classes

physical view

shows the system hardware and how software components are distributed across the processors in the system

Centralized version control

single master repository, maintains all versions of software components Subversion is example devs check-out components from repo then check-in when done, if component has been checked-out system warns other users

software evolution

software is in operational use and is evolving as new requirements are proposed and implemented

software servicing

software remains useful but the only changes made are those required to keep it operational (no new functionality)

Pre-condition

special block comments which designate what a process needs to be effective

fundamental software engineering activities (software process activities)

specification, development, validation, evolution

A range of different models may be produced during an object-oriented design process. These include __________ models (class models, generalization models, association models) and ___________ models (sequence models, state machine models).

static dynamic

inspection/review

static verification, check conformance with a specification, cannot check customer's real requirements or non functional characteristics

Gantt Chart

summary of tasks and sub tasks, milestones, progress and dates, color indicators(task type, resources, team, critical path)

observer pattern

tells several objects that the state of an object has changed, separates the display of object state from the object itself, used when multiple displays of state are needed

Float/slack

the amount of time an activity, network path, or project can be delayed from the early start without changing the completion date of the project

Total float

the difference between the finish date of the last activity on the critical path and the project completion date

Camel Case

the first letter of each word in a multi word identifier is capitalied to help the reader. (void doStuff or float hourlyWage)

beta distribution activity estimate range

the level of uncertainty can be specifically measured based on the range or the standard deviation; the range is simply the difference between the best-case and worst-case estimates. A large range would suggest that there is greater uncertainty in the time that will actually be required to complete the activity

Unit Testing

the process of testing each individual process to ensure it is working in all possile condition so that when it is incorporated into a larger process, its function is flawless

schedule compression

the reduction of the overall project timeline to the least possible length for the least cost to the project; can cause increased costs or reduced functionality or quality

activities

the starting point for developing the project schedule because they identify specific work that will need to occur in order to execute the project; they are best described using a verb-noun approach to clarify what is to be accomplished (i.e., edit documentation, install hardware, test user interface); it is important that the team member doing the work has input into the duration estimates

software engineering

the theories, methods, and tools for professional software development (how to develop software)

Input Protection and Data Validation

these ideas go hand in hand in developing robust software.

triangular distribution/simple average

three estimates are averaged together; the best-case and worst-case estimates are included in the calculation of the activity duration estimate; useful when there is any uncertainty about how long the activity will take to complete

facade pattern

tidy up the interfaces to a number of related objects that have often been developed incrementally

lead time

time overlap so that the successor task starts before its predecessor ends; can be advantageous to shortening the schedule

robust

to be able to withstand or overcome adverse conditions.

crashing costs

to obtain the greatest amount of compression of the schedule/critical path for the least incremental cost or time;often done as the last resort for a project with hard end dates that can't be shifted

sprint burnup chart

tracks completed tasks over each iteration (and compares to the total)

sprint burndown chart

tracks remaining effort over each day (and compares to the ideal)

True/false A crashing analysis is a key part of contingency planning

true

True/false All activity durations in any given method are estimated in work days

true

True/false As the project team develops the activity duration estimates they may divide activities or identify additional activities that need to be added to the WBS.

true

True/false If we have the opportunity and the resources to do so, we should do tasks concurrently

true

Strategies for Robust code development

unit testing, input protection, data validation, and exception handling.

Waterfall model

used in standard industry production. This model is sequential in nature, with progress flowing steadily down (like a waterfall) through the phases

Non-executable comments

used to document parts of the programs

Use case diagrams and sequence diagrams are used to describe the interactions between _________ and _____________ in the system being designed. _____________ describe interactions between a system and external actors; ______________add more information to these by showing interactions between system objects.

users systems Use cases sequence diagrams

what's the difference between validation and verification?

validation is concerned with what the user requires, and verification is concerned with whether it conforms to its specifications

Public repository vs private workspace

version control systems usually have both, public repo maintains master version of all components (used for baselines), devs check-out/copy from repo into workspace, then check-in changes when done

SCRUM Pros

very flexible, builds in rapid iteration and feedback, and can reduce total number of bugs in final product

requirements

what is required of the system developers, what the system does not how it works, NOT a design document

specification

where customers and engineers define the software that is to be produced and the constraints on its operation

validation

where the software is checked to ensure that it is what the customer requires

evolution

where the software is modified to reflect changing customer and market requirements

test driven development

writing test before the code clarifies the requirements to be implemented

UML Diagram Types

~Activity diagrams ~Use case diagrams ~Sequence diagrams ~Class diagrams ~State diagrams

Dismissal of QR - QR in Industrial Practise

• 1/5 QR are dismissed without considering consequences. • Poor cost estimation and QR's lower prio compared to FR is the main reason.

Stakeholders

• A person or role (also: group) • Affected by system under construction • Should have influence on requirements

Common design activities

• Architectural design • Database design • Interface design • Component selection and design

Most important QR factor - QR in Industrial Practise

• B2C (also in general): usability • B2B: safety • Not all QR are equally important for every industry/company/customer

Challenges for Market Driven RE

• Balancing technology push with demand pull • Chasm between development and marketing teams. These have different views on RE and need to collaborate more. • Organisation instability and market turbulence. • Simple tools for basic needs. It's hard to find solutions that are not too complex. • Requirements dependencies are complex to schedule sufficiently in release planning. • Cost-value relation and release planing. Over estimating a cost may loose out on important req. Underestimation might lead to an extended deadline. • Overloaded requirements management. Req. are essential. Management when these over flood is therefor as important.

Forms of creativity

• Big-C: clear cut eminent contributions • Little-C: everyday activities for non-experts • Pro-C: professional-level expertise • Mini-C: novel and personally meaningful interpretations of experiences, actions and events

Two approaches to reduce the costs of rework?

• Change Anticipation - where the software process includes activities that can anticipate or predict possible change before significant rework is required. e.g prototype system. • Change Tolerance - where the process and software are designed so that changes can be easily made to the system. This normally involves some form of incremental development.

Stages in the testing process? (3)

• Component testing • System testing • Customer testing

Inspection checks include

• Contents check • Structure check • Consistency check • CRUD matrix (Create, Read, Update, Delete) • Checks against surroundings

Functional requirements techniques (1/4)

• Context diagram: diagram of product and its surrounding. Defines product scope. • Event- and function list: Domain/business event: guest books, guest checks in, ... Product events: find free room, record guest, print confirmation, ... God for verification • Feature requirements: a textual shall requirements. The product "shall", the product shall, ... Older way of finding requirements, we can do it from task descriptions but not the other way around since information isn't sufficient. • Screens and prototypes: design level requirements, screen pictures, what buttons do. • See remaining ones (L3 p.49)

Overscoping - solved by agile RE

• Continuous flow of prioritised requirements from customer. • Gradual detailing helps to reduce risk of overscoping • Cross functional teams can work on important features when sharing responsibilities.

Importance of specification

• Coordinates work • Plan work • Foundation for customer-/supplier agreement • Manages liability (safety critical systems)

A good requirement specification is (CCUCRMVT):

• Correct: each req. reflects a need. • Complete: all necessary requirements are included • Unambiguous: all parties agree on meaning on the terminology used • Consistent: all parts match • Ranked: for importance and stability. Priority and expected changes per requirement stated. • Modifiable: easy to change, maintaining consistency. • Verifiable: possibility to see whether requirements are met. • Traceable: possible to trace goals/purposes and design/code to req.

Feature Dependencies - release planing

• Coupling: features should be released simultaneously because of their dependency. • Precedence: features of different importance can be released at different occasions.

Data requirement techniques (1/4)

• Data model (E/R-diagram): block digram describing data inside, and outside of product. • Data dictionary: Textual description of data inside and outside the product • Data expressions: Compact formulas for describing data sequences • Virtual windows: simplified screens with graphics and data, but no buttons and menys. For both experts and users. Easy to validate and verify

Form-Based Specifications

• Definition of the function or entity. • Description of inputs and where they come from. • Description of outputs and where they go to. • Information about the information needed for the computation and other entities used. • Description of the action to be taken. • Pre and post conditions (if appropriate). • The side effects (if any) of the function.

Agile processes

• Develop the software in a series of increments with the functionality of each increment dependent on overall progress in the development. • Easier to change the plan and the software to reflect changing customer requirements as everything is not fixed • Outputs far more fluid, in continual negotiation • Reduces overheads by limiting documentation • Use extensive tool support (automated testing etc)

For which systems is the waterfall model only appropriate for? (3)

• Embedded systems where the software has to interface with hardware system. Because of the inflexibility of hardware, it is not usually possible to delay decisions on the software's functionality until it is being implemented. • Critical systems where there is a need for extensive safety and security analysis of the software specification and design. The spec and design documents must be complete so that this analysis is possible. • Large software systems that are part of broader engineering systems developed by several partner companies. Complete specifications may be needed to allow for the independent development of different subsystems.

Portfolio - big picture of agile requirements

• Epics span multiple releases • Architecture

Prototyping approaches

• Exploratory: identifying requirements • Experimental: assess technical alternatives • Evolutionary: fitting system despite changing requirements.

Types of creativity

• Exploratory: open up problem space for ideas. • Transformational: changing problem space so that something that was impossible now is possible • Combinatorial: combining the two.

Elicitation activities

• Exploring and Understanding the domain/context • Identifying and Characterising the stakeholders • Selecting Elicitation Methods, Tools and Techniques • Applying the Selected Method, Tool and Technique to Elicit the Requirements • Organise, Review and Revise the Elicited Requirements (maybe)

Prioritisation chalenges

• Finding a good abstraction level • Combinatorial explosion • Inter-dependencies • Not easy to predict the future • Power and politics

Communication issues - solved by agile RE

• Frequent fact-2-face meetings, eradicating communication gaps. • Collocated teams, i.e. teams closer to each other. • Alternative customer representation with proxy customers. • Cross functional agile teams help in the understanding of requirements. • Integrated RE process to development to limit miscommunication.

General rules for elicitation

• Genuinely care about your stakeholders' problems • Focus on stakeholder not on you 'looking good' • Be human - admit weaknesses, become vulnerable, show humor • Listen - eye contact, don't glaze over • Expect changes • Maintain a glossary - many req problems from simple misunderstandings/miscommunication

Characteristics of Market Driven RE

• Goals: profit, margins, market share, revenue in comparison to customer satisfaction and user acceptance in RE. • Life cycle: long series of releases rather than development and maintenance as in RE. • Inventing requirements, not only collecting. Interviewing mig for example be difficult since we don't know the end customer. • Validation is not possible until the very late stages of the project. • Stakeholders: market segments, competitors (to stay on top of shit). • Since we do not know our customer need, much more time is spent on trying to prioritise req. • Planning: time to market. • Continuous inflow of requirements • The developing organisation makes all the decisions but also takes all the risk.

Elicitation tasks

• Identify stakeholder • Identify other sources of requirements • Collect raw recuirements

Benefits of prototyping? (5)

• Improved system usability • A closer march to users' real needs • Improved design quality • Improved maintainability • Reduced development effort

Waterfall model problems (2)

• Inflexible partitioning (affect modification) = appropriate when the requirements are well understood and changes are limited but few systems have truly stable requirements. • Not suitable where informal team communication is possible.

Inspection - validation techniques

• Inspection: a systematic method for reading through specifications. Methods to guide reading: • ad-hoc: no structure • Checklist: things to relate to in the reading. • Perspective-based reading: take a role and read from that perspective. • N-fold inspection: divide into n groups that read in parallel.

Why should we discard prototypes after development? (4)

• It may be impossible to tune the system to meet non-functional requirements • Prototypes are normally undocumented • Prototype structure is usually degraded through rapid change • The prototype probably will not meet normal organisational quality standards.

Tests - validation techniques

• Manual simulation based on scenarios/use cases/task descriptions • Mock Ups • Executable prototypes (more expensive, but closer to the actual product and therefore easier to feedback on) • Pilot tests

Challenges for agile RE

• Minimal documentation: backlogs and user stories are the only documentation. • Customer availability: is low which reduces possibility to negotiate requirements. • Budgets time estimation: initial estimates of time and cost varies when requirements changes. • Neglecting NFR: user stories do only cover product features

Cost estimation - QR in Industrial Practise

• No distinction between FR and QR while estimating cost. • Often based on expert opinion • B2B is much more inaccurate than B2C. Reason: QR often span the whole system, i.e., all FR.

Optimisation - The science of RP

• Optimisation: assigns weight to stakeholders at the company depending on their importance and chooses the most weighted improvements. • Or, selects features that have low cost and high impact.

What is meant by the "Waterfall Model"?

• Plan-driven model. • Separate and distinct phases of specification and development. • This takes the fundamental process activities of specification, development validation and evolution and represents them as separate process phases.

Difficulties with quality requirements - QR in Industrial Practise

• Poorly understood • Stated informally in an non-quantifiable manner • Contradicting • Difficult to validate

Four steps of creativity (1/2 creativity workshop)

• Preparation: collect information/data • Incubation: Relaxing period during which people combine ideas with a freedom that denies linear and rational thought • Illumination: Shorter period in which creative ideas suddenly emerges, often at the most unlikely time - the EUREKA effect (aha moment) • Verification = Check realism

Techniques for prioritisation

• Priority grouping, grades: ordinary scale (e.g. low-, mid-, high priority). • $100-test: ratio scale (e.g. 0-100) • Ranking: ordinary scale • Top-ten: ordinary scale Analytical Hierarchy Process: ordinary scale, compares set of requirements against each other.

Requirements imprecision

• Problems arise when requirements are not precisely stated. • Ambiguous requirements may be interpreted in different ways by developers and users. • Consider the term 'search' - User intention - search for a patient name across all appointments in all clinics; - Developer interpretation - search for a patient name in an individual clinic. User chooses clinic then search.

Plan-drive processes

• Processes where all the process activities are planned in advance and progress is measured against this plan. • Based around outputs from stages • Not necessarily waterfall model - plan-driven, incremental development is possible. • Iteration occurs within activities.

Feasibility Study Implementation

• Produces a short report • Explores the risks associated with a potential project • Independently produced if at all possible •Usually done by people outside the organisation although rarely used.

Incremental development - release planning

• Provides customer with part system early • Each iteration gives some more value to customer.

Most important QR interdependencies - QR in Industrial Practise

• REQUIRES (B2B) and CVALUE (B2C) are most common and important • AND and OR are least common and important R1 REQUIRES R2: R1 requires R2 to function, but not vice versa. R1 CVALUE R2: R1 affects the value of R2 for a customer. R1 AND R2: R1 requires R2 to function, and R2 requires R1 to function. R1 OR R2: only one of {R1, R2} needs to be implemented.

Advantages of re-use oriented software engineering, based around configuration and integration? (2)

• Reduced costs and risks as less software is developed from scratch • Usually leads to faster delivery and deployment of a system.

Requirements Reviews

• Regular reviews should be held while the requirements definition is being formulated. • Both client and contractor staff should be involved in reviews. • Reviews may be formal (with completed documents) or informal. Good communications between developers, customers and users can resolve problems at an early stage.

Stages of waterfall model (5)

• Requirements analysis and definition • System and software design • Implementation and unit testing • Integration and system testing • Operation and maintenance

Disadvantages of re-use oriented software engineering, based around configuration and integration? (2)

• Requirements compromises are inevitable and may lead to a system that does not meet the real needs of users. • Some control over the system evolution is lost as new versions of the reusable components are not under the control of the organisation using them.

Requirements validation - solved by agile RE

• Requirements prioritisation • Prototyping helps customer by giving them a blueprint

Key process stages in a general process model for re-use based developed, based on integration and configuration (5)

• Requirements specification • Software discovery and evaluation • Requirements refinement • Application system configuration • Component adaptation and integration

Team - big picture of agile requirements

• Roles: product owner, agile coach, developer/tester • User stories: card (what to do), conversation (discussion), confirmation (proof of deliverable) • Spikes: do research, learn about technology, improve. •

What do all software processes involve? (4)

• Specification • Design and implementation • Validation • Evolution

Why is elicitation difficult?

• Stakeholders from different domains • Have never met • Have different "language" • Symmetry of ignorance

Types of software components that are frequently reused? (3)

• Stand-alone application systems that are configured for use in a particular environment. These systems are general-purpose systems that have many features, but they have to be adopted for use in a specific application. • Collections of objects that are developed as a package to be integrated with a component framework such as the Java Spring framework. • Web services that are developed according to service standards and that are available for remote invocation over the internet.

Functional details 1/4

• State diagrams: a diagram that shows the different states of e.g. a hotel room. (See Onenote) • Class diagram: data model with operations on data (worse than E/R-diagram) • Sequence diagram: diagram over how objects communicate

Interview types - elicitation technique

• Structured: prepared questions and perhaps also response alternatives • Semi-structured: some Q prepared, but freedom in order and depth • Unstructured: no preconceived closed questions; open questions to start off: "What is your view on the system?" Thins to elicit: present work/problems

How are business affected by change? (3)

• System requirements change as businesses respond to external pressurises, competition and changed management priorities. • As new technologies become available, new approaches to design and implementation become possible. • Change adds to the costs of software development as it means that work that has been completed has to be redone. This is called rework.

What is involved in "Component testing"? (3)

• The components making up the system are tested by the people developing the system. • Each component is tested independently. • Components may be simple entities such as functions or object classes or may be coherent groupings of these entities.

Incremental development advantages (3)

• The cost of implementing requirements changes is reduced. The amount of analysis and documentation that has to be redone is significantly less than is required with waterfall model. • Easier to get customer feedback on the development work that has been done. Customers can comment on demonstrations of the software and see how much has been implemented. • Early delivery and deployment of useful software to the customer is possible, even if all of the functionality has not been included. Customers are able to use and gain value from the software earlier than is possible with waterfall.

Incremental development problems (2)

• The process is not as visible. Managers need regular deliverables to measure progress. If systems are developed quickly, it is not cost effective to produce documents that reflect every version of the version. • System structure tends to degrade as new increments are added. Regular change leads to messy code as new functionality is added in whatever way possible. It becomes increasingly difficult and costly to add new features.

What is meant by "Integration and Configuration"?

• The system is assembled from existing configurable components and relies on the availability of these reusable components/systems. • The system development process focuses on configuring these components for use in a new setting and integrating them into a system. • May be plan-driven or agile.

Software Process Model examples

• The waterfall model • Incremental development • Integration and configuration

What is meant by "Incremental Development"?

• This approach interleaves the activities of specification, development and validation. • The system is developed as a series of versions (increments) with each version adding functionality to the previous version. • May be plan-driven or agile.

What is involved in "Customer testing"? (4)

• This is the final stage before the system is accepted for operational use. • The system is tested by the system customer rather than with simulated test data. • For custom-built software, customer testing may reveal errors in the system requirements definition because the real data exercise the system in different ways from test data. • May also reveal requirement propels where the system's facilities do not really meet the users' needs or the system performance is unacceptable.

Use Cases

• Use-cases are a kind of scenario that are included in the UML. • Use cases identify the actors in an interaction and which describe the interaction itself. • A set of use cases should describe all possible interactions with the system. • High-level graphical model supplemented by more detailed tabular description • UML sequence diagrams may be used to add detail to use-cases by showing the sequence of event processing in the system.

Requirements documentation - solved by agile RE

• User stories • Face-2-face interactions reduces the need for long documentation and risk for ambiguity.

Potential questions to ask people in an organisation for a feasibility study? (6)

• What if the system wasn't implemented? • What are current process problems? • How will the proposed system help? • What will be the integration problems? • Is new technology needed? What skills? • What facilities must be supported by the proposed system?

A good RP should (4)

• maximise business value in sequence of releases. • Satisfy the most important stakeholders • Be feasible with available resources • Reflect existing dependencies between features.

Software evolution

•The world changes so thus software changes. This means that software should be inherently flexible and support change. • There used to be a split between development and evolution (maintenance) but there are very few systems that are completely new so it is more realistic to think of software engineering as an evolutionary process, where software is continually changed over its lifetime in response to changing requirements and needs.


Set pelajaran terkait

Chapter 23 Study Guide - Shorter Answers

View Set

Chapter 4: Documentation and Interprofessional Communication

View Set

Week 12 Day 6 문자 text message PHRASE

View Set

Week 10 Global Nutrition Assignment

View Set

Chapter 10: Accounting for Long-Term Liabilities

View Set