We talked about the program with the TAs for a few minutes, then we broke up. 'Nuff said.
Chapter 1
This chapter mainly deals with the concept of large systems programming. Brooks divides the system into four distinct pieces. The Program, Programming System, Programming Product, and the Programming Systems Product.
The Programming System in a bunch of coordinating programs that work together in a disciplined way to perform a larger task. The System is about 3 times as costly as a program.
The Programming Product is a program that can be run, repaired, and extended by everyone. The product is about three times as costly as a program.
The Programming Systems Product is a system of programming products, in other words, it is a large modular group of programs. The Systems Product is about nine times as costly as a program.
Chapters 16 and 17
The basic theme of chapter 16 is that there is no panacea to increase
the speed at which software is developed. Programming's inherent
flexibility and complexity make it difficult to deal with. Tools such as object oriented design,
time sharing, and high level languages help increase productivity by
eliminating reoccuring errors that occur by programming in assembly, for
example.
In chapter 17, brooks addresses issues brought up in responses to the
essay in chapter 16. Brooks reiterates that there will be eventual
increases in productivity, and such things as a quality philosophy and
top down design help. But, an order of magnitude leap in productivity is
not something to be expected.
Booch in chapter 1 addresses the issue of complexity inherent in
programming. He attributes a few main factors to the complexity. These
issues are The complexity of the program domain, the difficulty of
managing the development process, the flexibility possible with
software, and the Problems of characterizing the behavior of
discrete systems.
The difficulty in managing the development process stems from the
fact that large projects require large amounts of people who mush
communicate and cooperate. That, by itself, is a difficult task.
The problem of inherent flexibility comes from the ability of the
programmer to use up large amounts of time creating a specifically tailored
piece of code.
With any system, testing is a crucial step. In order to test completely,
one must characterize the behavior of the discrete system. With
the literally thousands of variables present in a program, testing
becomes difficult.
Notes from Booch, Chapter 1
The complexity of the problem domain comes from the mismatch
between design specification and programmer product. The mismatch comes
from lack of communication and the inability of the user to fully express
their needs.
Booch offers the tool of object oriented
programming to help alleviate
some of the complexity the development process. With Object Oriented
design, one can better conceptualize the problem, and lead to a better
solution.
CHAPTER 1 - OBJECTS AND CLASSES:
II. Comments
III. Output
IV. Types and Variables
V. Operators
VI. Arrays
VII. Strings
VIII. Blocks
IX. Control Flow
X. Functions
XI. Input (use iostream.h header)
XII. Assertions (use assert.h) - checks if conditions "cannot" happen,
program fails if they do
CHAPTER 3: IMPLEMENTING CLASSES
void Date::advance(int nday)
II. Implementation of Operations
int Date::month() const
III. Object Construction
Date::Date(int d, int m, int y)
I. Objects and Classes
III. Object-Oriented Design
IV. Contrast with Traditional Design Techniques
V. Design Hints
II. The development process takes place in three steps:
CHAPTER 2: CRASH COURSE IN C++
I. Header Files
else if (CONDITION) BLOCK2
else BLOCK3
I. Classes
class Date
{
public:
void advance(int nday);
// ...
};
{...}
class Date
{
public:
int mont() const;
// ...
private:
int _day;
int _month;
int _year;
};
{ return _month;
}
IV. Design Hints
{
public:
Date(int d, int m, int y);
// ...
};
: _day(d),
_month(m),
_year(y)
{}
public
constructors
private
mutators
accessors
mutators
accessors