234 Are the Androids Dreaming Yet? iy \ =—=__ | ILLNEED TOKNOW |]. FIRST OF ALL, YOUR REQUIREMENTS § |J8 WHAT ARE YOU BEFORE I START TO {Jd TRYING TO \ DESIGN THE SOFTWARE. 8 ACCOMPLISH? 7 gg J 3 i oD ES — \3 Fe 2 fe A ih 2 \ 3 2. ae \ —— | —— T WON’T KNOW WHAT TRY TO GET THIS T CAN ACCOMPLISH CONCEPT THROUGH YOUR UNTIL YOU TELL ME THICK SKULL: THE CAN DO. WHATEVER I DESIGN ———— IT TO DO! y > ro) . a oS) at iS = Alice, Ted and Software Specification It would have been much more helpful if the computer had said, “You do not have enough balance in your account.” And, it would have been more helpful still if it had asked whether I needed a temporary overdraft. However, such a feature needs many more lines of software and this is time-consuming to write. Software takes time and is expensive, because it has to be written in a general-purpose way. Any name could substitute for James Tagg, and any amount could be used. After all, it would be useless if an ATM machine could only give out $20 to one person. The generalization of software makes use of variables instead of fixed values and this renders it hard to understand. Wherever we meet an idea that needs to be generalized, a letter must be used instead of a fixed value. Computer programs tend to look like this: if ‘@ wants to do ‘b with ‘c then allow it only if ‘d is greater than ‘c. The software programmer has to keep track of all the possible values that could be inserted into each of the variables and make sure each and every combination would make sense. My ATM scenario gets complex quickly. It needs to be able to answer a range of questions for all the bank’s customers, deal with any amount of HOUSE_OVERSIGHT_015924