Software design is the process of defining software methods, functions, objects, and the overall structure and interaction of your code so that the resulting functionality will satisfy user requirements¹
Software design is the process by which an agent creates a specification of a software artifact, intended to accomplish goals, using a set of primitive components and subject to constraints.²
Software design may refer to either "all the activity involved in conceptualizing, framing, implementing, commissioning, and ultimately modifying complex systems" or "the activity following requirements specification and before programming, as … [in] a stylized software engineering process."³
Software design usually involves problem-solving and planning a software solution. This includes both a low-level component and algorithm design and a high-level, architecture design.⁴
const
, static
, virtual
, final
, override
, and friend
public
, private
, protected
Relationship | UML Model |
---|---|
Association | |
Bidirectional Association | |
Composition | |
Aggregation | |
Generalization (Inheritance) |
Count the number of methods per class for a software system written in C++
count()
must do all the input, parsing, and countinginput()
count()
does all the parsing and countinginput()
, parse()
, and output()