CS 372 Spring 2016 > Notes for February 5, 2016
CS 372 Spring 2016
Notes
for February 5, 2016
Design
Design is a description of a project at a bit higher level than actual source code, based on the requirements. A software design can include the following.
- Software architecture. How is the software organized? Describe, for example, inheritance hierarchies.
- Control hierarchy. What controls what? What determines what code executes?
- Data strucutures. How are data organized and stored, (both in memory and in files)?
- Design patterns. Are standard organization methods used? We will discuss these in depth later in the semester.
- Specifications: function signatures, class members, etc. What functions are there. How are they called? What do they do?
Construction
Definition
Construction is actually creating the software, based on the design. This involves coding, of course. We also need to do verification: have we written correct code. An important part of this is testing, in which we execute code. This leads to debugging: fixing problems. We will discuss testing and debugging in more detail later.
Pair Programming
There are various methodologies for construction. One that has proven effective is pair programming, in which two developers are at a single machine. One types, the other watches, and they discuss what they are doing.
Studies comparing pair programming to traditional single-developer programming have generally shown the following.
- For a single coding session with a single goal, using pair programming makes the session take significantly more time.
- Code produced using pair programming has significantly fewer bugs.
- Thus pair programming reduces overall time & cost of software development.
The Software Development Process will be continued next time.
Introduction to Group Project 1
Project 1 groups were assigned. See the Group Project 1 description.