The delineation principle A functional specification is not necessarily a specification to build something new. It can be used to delineate the existing functions whose attributes are to be impacted by planned changes at planned points in time. Please explain and provide your rationale. Solution ANS : The functional specification (FS for short, aka software requirements specification, system specification, product specification. Definition : A Functional Specification of a (computer) system describes the externally-visible behaviour of that system. A system as a black box. The black box has two interesting features: 1.Interfaces, through which external entities can interact with the system via a series of inputs and outputs. There are two types of external entities – humans and other systems (also collectively referred to as actors of the system), and we need to worry about them both. 2.State, which changes as a result of interactions with the actors. Think of this as the system’s memory, in which it remembers (or stores) data – usually implemented as a database. Here there is a Two Key Elements – Functions and Data : 1.Functions – a description of the interactions between the system and its (human and system) actors. 2.Data – a description of the state of the system. Describing Functions : The functions of a system are the interactions that can occur between the system and its actors (through the interfaces). An interaction is a sequence of actor inputs (e.g. a user clicking a mouse button) and system outputs. Data : Here’s what detail I consider to be allowable for data: Entity name (so that it can be unambiguously referred to) Entity description (explaining what the entity actually is – not always obvious) Attributes: Name Description (again, not always obvious) Type and allowable values, such as: Note that the above are logical, rather than physical, definitions. For example, a logical type of “Male, Female or Not Specified†might be implemented as a NUMBER where 1=Male, 2=Female, 0=Not Specified, or it might be implemented as a nullable VARCHAR where “Mâ€=Male, “Fâ€=Female and NULL=Not Specified Not allowed: .