CS 458 - Week 5 Lecture 1 - 2017-09-19
**** ADDITIONAL PROJECTS ****
Brennen Rose -- client/contact
* CAPS looking for a web application to allow users to
* figure out what they are feeling and find resources
about it;
* answer some questions, and the resource list some
suggestions
* resource area - list local Humboldt-area
mental health resources -- could also be dynamic,
based on the phone's IP and/or web-crawling
* list events on campus related to mental health
(list of CAPS groups, etc.)
* allow push notifications for those who opt-in
from Harry Almeraz:
* talked to friend managing properties
* application to manage cleaning supplies
* (add, remove supplies)
* potential auto-purchasing?
* COMMITTED client
* does understand class restrictions
* Harry started cleaning business
* application to streamline daily workflow
* (to improve on existing pieces)
* willing to be client
* Travis Houle
* Work with CMS (Content Management System) to create
commercial quality website using/modifying Joomla Extensions
* Create C# application to update database
* Can choose type (fake company) of website to design
* Must add and modify e-commerce store
* willing to answer questions about such features from
multiple teams
* Lam Ngo
* Design front end for supercomputer to make more usable
* contact/talk to Tim Lauck
**** ADDITIONAL PROJECTS ****
------------------------------------------
Jalote - Chapter 2 - Software Processes
------------------------------------------
* process model - the approach you plan to take for a project
process - actual approach you take
* why worry about having a process?
* because we WANT high QUALITY and high PRODUCTIVITY
...an appropriate process can help with improving both;
* in software, three major factors that influence
quality and productivity:
* people
* processes
* technology
* how do processes help?
can HELP specify WHAT tasks to do, HOW to do them
(I'd add "when" to do them, also...)
* indeed, a focus on PROCESS distinguishes software engineering
from most other computing disciplines;
* there are NUMEROUS software development process models
here are 6 classic ones:
* Waterfall
* Prototyping model
* Iterative development model
* Rational Unified Process (RUP)
* Timeboxing
* Agile process models (e.g., Extreme Programming, Scrum, etc.)
* Waterfall -
requirements, design, coding, testing phases in linear
progression
* specific artifacts from each stage
* conceptually the simplest process model for software
development
* DOES work best when requirements can be
"nailed down" <-- works best for well-understood problems
* when does it not work so well? disadvantages?
* what if the requirements can't be reasonably
determined and "frozen"? unchanging requirements
may not work well;
* entire software is delivered in ONE SHOT at
the end; this is a big risk for the user;
* encourages "requirements bloating"
if you think you MIGHT need it, you might be
tempted to include everything you can think of;
* it is document-driven process that requires
formal documents at the end of each phase
* Prototyping model
* this is ONE version of this classic model
* one or more THROW-AWAY prototypes are built FIRST
with the purpose of FURTHER DEVELOPING the requirements,
to lead to MORE STABLE requirements
* prototype is not considered an actual, final product
or even part of that product; it is just to
help the user figure out what they want/need
* "quick'n'sleazy", doesn't have to be completely operational,
may be a "facade" or even a "paper" prototype;
* the user/client(s) try these out to help to improve the
quality of the requirements (especially when they might be
hard to get "firm" enough otherwise)
* in Jalote Ch. 2's version of this,
you use the (inexpensive, quickly-produced)
prototypes to come up with a more-robust
set of requirements,
and then proceed in a Waterfall-like approach
* (that is, once all agree the requirements are clear
enough, proceed in a waterfall-like fashion from that
point)
* potential advantages:
* better, more stable requirements might result
* experience of developing even these
quick'n'sleazy prototypes
can reduce the cost of the development
of the eventual deliverable version
* ...and might improve its quality as well
* reduces risk that final project won't
actually meet the client's needs
* potential disadvantages:
* there is a cost for these prototypes
(but hopefully you try to minimize this);
* you do have to have a cooperative client;
* still has some of the remaining issues
that Waterfall has -- still an all-or-nothing
single product delivery at the end
* Iterative Development
* so, waterfall and prototype are all-or-nothing,
you get the deliverable product all at the end;
* iterative development reduces that risk by
developing the software in iterations,
EACH iteration resulting in a working
deliverable software system
* depending on the variant, may not need
to know ALL of the requirements at the
start
* more discussion on this --
and RUP
and Timeboxing --
on THURSDAY