CS 163 Lecture-Module #14:
A Taste of Software Engineering



our textbook Chapter 1, Appendix B

goals
-----
* get a clear understanding of what the client wants
* make software that will be good: works, robust, efficient, uses resources appropriately
* achieve design that is clear, reasonably implementable
* uses modern paradigm for programming: object-oriented programming
        "OO"
       
       
* flexible as proceed vs. start lots of code not appropriate
* by-product sort of documentation, testing schemas

steps
----
1. Requirements Analysis: getting job spec., what has to be done
2. Design: elements of software: classes and their internals
3. Implementation: write code
4. Testing
5. Maintenance

details
------
1. Requirements Analysis
come up with "use cases": scenarios of how software would get used
throwing out ideas
e.g. Mr. Frederick C. Meijer wants software for checking out of stores
so what is sequence of events when this happens?


any nontrivial project will have several use cases
even here note additional use-case #0:


elaborate use-case #1:


then in object-oriented software engineering design,
note nouns in use-cases; may become classes
e.g. from use-case #1:


decide which nouns will be classes --- complicated things ---
e.g. 
vs. simple variables (inside classes) e.g. 

class diagram to show how classes interact
e.g. of this point-of-sale system

more generally there are four arrows
has-a
extends
implements
uses


(Copyright © 2009 by Hugh McGuire   — for thoughts about this, see   http://www.cis.gvsu.edu/~mcguire/teaching/copyright_thoughts.html .)