posted on 2022-10-05, 10:43authored byDavid Lorge Parnas
Most software products are too large to be completed by a single person in a short period. To make the development manageable, the software must be divided into components that can be developed (and later maintained) separately. Each component will be a work assignment for a team or individual. It is often thought that this decomposition is a management decision, determined primarily by the talent available. This lecture explains that the decomposition is a critical design decision to be made on the basis of simple technical criteria, which will be stated and illustrated. The result is a very unconventional, but easily maintained, design.