software engineering collection 1
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.