software-abstraction-modeling.wiki (1573B)
1 == Software abstraction & modeling == 2 software engineering: the application of engineering to software. a programmer writes a complete program, a software engineer creates a component. 3 4 engineers abstract away from details that can be _safely_ ignored. 5 6 model: simplified/partial representation of reality, defined to accomplish a task or reach an agreement 7 8 abstraction: generalizing – setting aside specific and individual features 9 10 software design: creating models representing an abstract view of the system 11 12 === Models === 13 what is a model? 14 * mapping feature: a model is based on an original 15 * reduction feature: a model only reflects a relevant selection of the original's properties 16 * pragmatic feature: a model needs to be usable in place of an original with respect to some purpose 17 18 consumer and intent influence the abstraction level of a model 19 20 descriptive models: 21 * a subject is described by the model 22 * sketches and throw-away models – short life time, used to better understand the reality 23 * models of ideas and vision about the system to be developed – to exploit model for having feedback before actually implementing the system 24 * models extracted from a running system or code – e.g. to visualize all calls between Java classes 25 26 prescriptive models: 27 * a model prescribes the subject 28 * the subject does not yet exist 29 * the models guide the development of the system 30 * most common consumers are code generators 31 * often used for development, so their importance may decay when the system is implemented 32