The Software Development Lifecycle

Unit Overview

  • Software Development Overview
  • Development Methods
  • Planning and Analysis
  • Design
  • Development
  • Testing

I can just start coding right?

Nope Explosion

The software lifecycle overview

Overview

Overview of the whole process

Client Collaboration

Overview of the whole process

Planning

Overview of the whole process

Design

Overview of the whole process

Design

Overview of the whole process

Design

Overview of the whole process

Development

Overview of the whole process

Testing and Launch

Big Picture

SDLC should result in a high quality system that:

  • meets or exceeds customer expectations
  • reaches completion within time and cost estimates
  • works effectively and efficiently in the current and planned IT infrastructure
  • is inexpensive to maintain and cost-effective to enhance

Unit Overview

  • Software Development Overview
  • Development Methods
  • Planning and Analysis
  • Design
  • Development
  • Testing

Development Methods

SDLC Methods

A company can set up their SDLC depending on:

  • the kind of company it is
  • the type of product (or website) they are making
  • the complexity of the product
  • the number of people on the product team

Two main SDLC approaches:

  • Agile ("adaptive")
  • Waterfall ("predictive")
Watch this video on Agile

Agile

Agile methodologies generally promote:

  • a project management process with frequent inspection and adaptation
  • a leadership philosophy that encourages teamwork
  • self-organization and accountability

Agile typically consists of:

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

Agile: Sprints

Sprints: a set period of time during which specific work has to be completed and made ready for review.

  • The duration of a sprint is determined by the scrum master, the team's facilitator.
  • Once the team reaches a consensus for how many days a sprint should last, all future sprints should be the same.
  • Traditionally, a sprint can last from one week to 30 days.

Agile

Sprint Diagram

Agile Scrum

SCrum Framework

Scrum Intro Video

Here

Review Exercise

DLH Page 96

Unit Overview

  • Software Development Overview
  • Development Methods
  • Planning and Analysis
  • Design
  • Development
  • Testing

SDLC: 1) Planning and Analysis

Important Vocabulary

Software Product

When I say “software product” I mean…

One or more pieces of software code that meet a need -- or want -- someone has.

Minimum Viable Product

MVP

The minimum viable product (MVP) is a version of a new product that is created with the least effort possible to be used for validated learning about customers.

Watch this

MVP

MVP

Iteration

Iterating

Take one step at a time. Build one function at a time. Succeed with that function before moving to the next. Build tools that rely upon one another in a logical order.

Feasability

A software product is “feasible” when…

It is economical: it costs less than it earns.
It is operational: it serves its intended purpose.
It technically works: it doesn’t crash!

Product Backlog

Backlog

The “to do” list of your software development needs.

Metrics

A metric is a standard of measurement. Software metrics are the statistics describing the structure or contact of a program. A metric should be a real objective measurement of something such as the number of bugs per lines of code.

Return On Investment

“ROI” (pronounced by stating each letter)

Given two features that have EQUAL value to the customer, you would first build the one that took less work.

Planning and Analysis: First Step

Who are you building this product for?

What problem is it solving?

What do you want the outcome to be? (aka why are you building this thing?)

More on User Personas

Who is using your product?

Watch Here

Establishing A User Persona

Who is using your product?

User Persona Diagram

Different User Personas

If you have different types of users, what are their different needs?

Different Users

Research

  • User Interviews
  • Validating Your Ideas
  • Re-evaluating Your Assumptions

Research

Feedback Image

Writing Requirements

  1. MARKETING REQUIREMENTS: what you want to sell, and to who.
  2. PRODUCT REQUIREMENTS: operations your product needs to complete.
  3. SYSTEM REQUIREMENTS: external resources your product needs to run.

Why are requirements important?

different hair cuts

Trying to avoid this...

Different versions of a swing

Working with a PRD

Sample

Unit Overview

  • Software Development Overview
  • Development Methods
  • Planning and Analysis
  • Design
  • Development
  • Testing

SDLC: 2) Design

Two Main Types of Design

User Experience Design (UX)

Visual Design

What is UX?

Learn here

User Experience (UX) Design

“All the expectations, all the questions, all the needs and all the ways of thinking in the users mind is like a baseball glove, the solution we come up with is like the baseball, that fits snuggly, right into that glove” (Ryan Singer).

In other words we, as designers, do all the thinking up front, so that when a user comes to our finished project, they don’t even have to think about anything, it just makes complete sense to them.

Goals of a Good UX design

  • Ease of learning and relearning (learnability)
  • Ease of use (efficiency)
  • Consistency within and between products
  • First impressions
  • Error prevention and recovery
  • Memorability
  • Satisfaction or likeability
  • Flexibility and discoverability
  • Improved collaboration for groups of users

Putting it all together

UX Engineering

User Experience includes three distinct groupings:

RESEARCH DESIGN EVALUATION
User Observations & Ethnographic Studies Prototyping (all types) Usability Testing (moderated & un-moderated)
(remote & in-lab)
Card Sorting Storyboarding Expert Review
Surveys Brainstorming Heuristic Review
Focus Groups Surveys
User Interviews

Do's and Don'ts

Click here to read this article.

Flow Chart Types

Macro Flow

Macro Flow

High level, main structure

User Flow

User Flow Example

User Flow

Describes a typical experience to use an app or website to complete a task.

More here

Flow Chart Basic Elements

  • Areas
  • Line Weight
  • Shading
  • Color

Examples!

Don't do this

  • Break flows into small use cases; make it simple!

A Good Example

Facebook signup user flow

Forget Your Passwords Flow

  • Go to an online service like Gmail, Twitter or Yahoo
  • Note all of the interactions in the “Forget your Password” flow.
  • You should account for interactions in the flow. Error messages, success messages, password reset and confirmation, etc.

Email Sign In User Flow Example

App/Site Map

The site map is a list of all main topic areas of the site, as well as sub-topics, if applicable. This serves as a guide as to what content will be on the site, and is essential to developing a consistent, easy-to-understand navigational system.

App/Site Map

Site map example

App/Site Map

Another site map example

Design/Prototyping/Wireframes

  • Drawing from the information gathered up to this point, it’s time to determine the look and feel of your site.
  • Target audience is one of the key factors taken into consideration. It is also important to leave your own creative mark.
  • Wireframes are created for the purpose of arranging elements to best accomplish a particular purpose. The wireframe depicts the page layout or arrangement of the website’s content, including interface elements and navigational systems, and how they work together.
  • Try it out: Mockingbird OR Figma

Wireframes

DLH: Page 98 - 101

Your Project

Work on creating the following for your project idea:

Exercise Gif Trello logo

Visual Design

Your Tasks as a Visual Designer

  • Develop mood and theme(s) for the project
  • Develop color scheme, considering colorblind accessibility
  • Develop typography
  • Develop a visual design layout for mobile, tablet, and desktop platforms including any all images
Colorblindly example

Design Principles

Read here

What is Typography?

Watch here

How to choose a font?

Read here

Color Theory and Material Design

You can read about colors here
and about Google's design here

Thinking about the Developers:

Important to make sure your designs work for the people who will code them!

Read here

Unit Overview

  • Software Development Overview
  • Development Methods
  • Planning and Analysis
  • Design
  • Development
  • Testing

SDLC: 3) Development

This means coding! We will start this step in the Website Development Module! :)

Unit Overview

  • Software Development Overview
  • Development Methods
  • Planning and Analysis
  • Design
  • Development
  • Testing

SDLC: 4) Testing

User Testing vs Software/Quality Assurance Testing

What are the differences?

Exercise

Perform a user test on this website.

Go to the DLH: Page 102 to complete the test

Exercise Gif Trello logo

What is Software Quality Assurance?

SQA is the overarching and systematic process under which a customer specified product or service is created.

SQA organizes, monitors, improves and audits the product or service during every step of the software development lifecycle focusing on the prevention of problems that software development is prone to create.

What is Software Testing?

Software testing describes a series or set of planned activities, under controlled conditions, which are intentionally designed and executed to uncover failures of the product or service being developed.

Errors and bugs are brought to light with testing, and any resulting failures are recorded, detailed and forwarded back to the development team for additional review and/or repair.

"Bug?"


Check out more about Grace Hopper here

Why do companies need this?

They want to know:

  • If the software they built WORKS (does the program run?)
  • Where the software has BUGS (where does the software stop running? What parts of it don’t do what they’re supposed to?)
  • Does it still work for everyone (if you click in an unusual place, does it still work as intended?)
  • What it is missing (do you need a BACK button?)

Why does software have bugs?

  1. Lack of and/or poor communication between the customer and developer
  2. A natural result of human factors, trying to mix human nature with logical programming, compounded by the fact that multiple humans were involved in writing the code
  3. The gluing together of many small fragments (units) of code into one large and unwieldy program
  4. Misinterpretation of the requirements
  5. Compatibility issues between application software, operating systems and target environments
  6. Size and complexity of the product being developed
  7. Programming errors by developers when writing code

It’s not about finding WHETHER the software has defects - all software does.

It’s about finding how many bugs or defects or oversights exist and where they are.

Different Types of Testing

  • Unit testing: The brick of a house
  • Integration testing: The wall made of many bricks
  • System testing: The whole house
  • User acceptance testing: The potential buyer of the house

A Good Requirements Tester

First, look at all the requirements!

  • For each requirement you are testing:
    1. The same meaning should be obvious to everyone in the room.
    2. It can produce a measurable result (so you can verify).
    3. It’s possible.
    4. It’s irreplaceable with other parts of the product/design.
    5. All the requirements together describe the whole product.

A Good Requirements Tester

Second, test the development!

  • You’ll need to have and know:
    1. How long do you have for testing? When are results due?
    2. What external resources will you use to test?
    3. What functions/requirements will you test? How will you test them?
    4. What testing instruction will you follow? What result should you get?

Test Case

Each requirement you are testing should have all this information organized into a TEST CASE.

Each testing project is a collection of TEST CASES.

Expect a TEST CASE for each combination of:

Remember

We’ll always leave time between testing and the planned launch date. Why?

  • Developers need time to fix bugs!
  • Once things are fixed, they need to be tested again!
  • The last thing you test could be the biggest problem!

You win good reviews, happy clients, and more income if you deliver:

  • organized feedback
  • detailed feedback
  • complete feedback
  • timely feedback

on the product that helps the client fix or improve it!

HOW DO YOU TEST?

BE ORGANIZED

BE DETAILED

BE CONSISTENT

USE SCREENSHOTS!

As a bonus, if you run a detailed test on a product you will understand how it works almost as well as the developer who built it!

Bug Reports

In a great bug report, you will find:

  • START the report with a summary of the big problem.
  • DESCRIBE
    • the steps you took to reach the problem
    • the environment your were using
    • how it might affect a customer
  • Include things like:
    • your device type
    • OS version/BIOS version
    • browser type
    • connection speed and type. Note: Make sure the problem is not you (like a weak wifi signal).

Bug Report continued

  • Report problems that are REPRODUCIBLE - in other words, they will be there no matter who follows the steps you took. Make sure you can reproduce every problem at least 3 times with the process in your report.
  • Even if the problem happened only once, make a note and add that it wasn’t reproducible.
  • SEPARATE each bug into a different report segment. Organize them according to how serious they are.

In an Awesome bug report, you'll find:

  • LOTS of details.
  • The same names and terminology found in the product.
  • A comparison of the actual results to the expected results in the test plan.
  • Says, “product wasn’t doing x when y” NOT “there’s a problem.”
  • Statement of Severity….

Sample severity scale:

  • P0: this problem makes the product useless or makes it fail its essential function. It should be fixed ASAP and before all others.
  • P1: this problem seriously affects the product’s usability and needs to be fixed as soon as P0s are fixed.
  • P2: this problem results in a noticeably poor user experience. It’s still a high-priority fix.
  • P3: this problem degrades the user experience in ways that are not obvious to every user, or affects only a small portion of users noticeably.
  • P4: this problem results in a noticeably poor user experience (but not uselessness) for only some users or some cases. It’s still a high-priority fix.
  • P5: this problem would be nice to fix but isn’t mission-critical.

Bug Report: Presentation Matters

Use neutral, descriptive statements to describe issues.

USE THE FORMAT AND TERMINOLOGY WE CREATE FOR THE PROJECT

DON’T insult individual developers or use personalized criticism

DON’T use humor or sarcasm - it won’t come across

Example Bug Report

Click here

Review

What is the most important process in a life cycle of a product and why?

The most important part of the life cycle is the requirement stage.

The majority of bugs can be found in bad requirements and can cost a company millions of dollars.

Bad requirements can cause confusion between teams and can create chaos in the workplace.

Review

Why would you log a defect?

It is the job of a tester to find bugs. If bugs are not logged, then there would be no record of the bug found and it would not get fixed.

These errors would remain in the code when the customer receives the product.

Bugs can impact brand trust.

Review

What are metrics?

A metric is a standard of measurement.

Software metrics are the statistics describing the structure or content of a program.

A metric should be a real objective measurement of something such as number of bugs per lines of code.

Review

What are requirements?

A requirement is a guideline for what the program or product is supposed to do.

A good requirement needs to be clear, concise and unambiguous, because there may be a large group of people that will read the requirement.

A requirement also needs to be verifiable, feasible, necessary and complete.

When reading requirements, remember to ask:

Defect Lifecycle

Defect Lifecycle

Defect Lifecycle

Defect Lifecycle

Defect Lifecycle

Defect Lifecycle

Defect Lifecycle

Defect Lifecycle

Defect Lifecycle

Review Exercise

Read about different kinds of testing in DLH,
pages 104 and 105 (pages 2 and 3 in the link below)
to complete the exercise on page 1 in the link:
DLH: Page 106

Exercise Gif Trello logo

Testing Project

Introducing the tools you will be using.

  • Harvest
  • Google Sheets
Harvest Logo

Track your time!

Clock Gif
Harvest Logo

Steps To Get Started

  • Accept your invitation to AnnieCannons team
  • Add Harvest as a bookmark in Chrome
  • Download the Harvest App on Your Phone
Harvest Logo

A New Project

Harvest Chart
Harvest Logo

Entering Your Time

Harvest Time Dashboard
Harvest Logo

Enter Your Time in Class Hours Tracking as the Project/Task

Be sure to select the correct project and task.

Also, leave detailed notes on what you worked on. 1-2 sentences.

Harvest Logo

Submitting and Reviewing Time

  • Go to Time --> Timesheet
  • From Time --> Timesheet click the Submit for Approval button (lower right corner).
  • If you’ve tracked only time, your timesheet will then submit.
  • If you forget to enter hours daily, you only have until THAT FRIDAY to record those hours in Harvest. After payment is issued, we WILL NOT make corrections or adjustments.
Harvest Logo

Troubleshooting

Forgetting To Enter Time

  1. Do your best estimate.
  2. Get in the habit of always having harvest open when you are working.
  3. Do not track hours somewhere else and then enter them in Harvest - use Harvest first.
Harvest Logo

Troubleshooting

Leaving Your Timer On

  1. Harvest will send you an email
  2. Harvest will also show you an alert when you log back in.
  3. Edit the time to the best of your knowledge as soon as you can.
Harvest Logo

Number One Rule

You Don't Enter Hours On Time, You Don't Get Paid.

Sad Cat
Harvest Logo

Practice Project

For the next week of class, track your hours in class. Keep detailed notes and keep time accurately.

Exercise Gif Trello logo

Testing Project Kickoff

Time for a Software Quality Assurance Testing Project!

  1. In Harvest, start your timer.
  2. Review kickoff document.
  3. Complete and turn in the Google Sheets to your TL.
  4. Be sure to stop the timer in Harvest!
Exercise Gif Trello logo

Unit Overview

  • Software Development Overview
  • Development Methods
  • Planning and Analysis
  • Design
  • Development
  • Testing

THE END

Thank you for your attention!