Within a research project that I'm currently working on, we're trying to define the notion of application model, and we're investigating methodologies/formalisms to represent application models, with a focus on Web applications.

After having done some research on the Web, I haven't found specific information on comprehensive application models. So I thought that it was worth asking the question to enthusiast programmers, who can give me a concrete and practical perspective on this topic. I'm not sure if this question fits better on programmers stackexchange: if so, feel free to migrate it. What I'm interested in is getting feedbacks/ideas on my notion of application model, and on possibly related methodologies/formalisms.

I currently have no precise definition of application model, but I think that at least three aspects are important to define this notion:

  • human computer interaction design choices: an application that interact with users should carefully define its interaction patterns to improve and simplify usability; this area should take into account user preferences and characteristics (user models), and (possibly) device characteristics (device models);

  • architecture design choices: any complex application should be based on an architectural model that is shared and understood by its designers and developers;

  • implementation design choices: when implementing an application it is a good practice to identify known and recurring problem, and to solve them by reusing appropriate design solutions.

Am I missing any important aspect?

I think the following is a non-exhaustive list of relevant methodologies/formalisms:

  • ConcurTaskTrees: useful for design of interactive applications, and to model their human-computer interaction;

  • UML: widely known and used modelling language for software design; it can address various aspects of architecture and implementation design;

  • Design Patterns: a set of known and reusable solution for software design; they are often used during the implementation phase.

Any other suggestion?

To summarize: I'm interested in what are the relevant aspects to define the model of an application (see the first list above), and what are the useful formalisms in this area (see the second list above).

有帮助吗?

解决方案

It may look very odd (and outdated) considering we are in 2011 now, but I'd think you may be interested in Structured Analysis - maybe using the most "recent" flavour (IEM).

While the concepts are "old" I think that they are still valuable - and not necessarily worse than more modern attempts at providing an all-enclosing methodology.

Or maybe I am just showing my age - now please get off my lawn...

其他提示

If you are looking for best practices on how to actually model an application, I'd highly suggest looking into "Domain Driven Design" (a.k.a. "DDD").

DDD is basically best practices flown from the idea of "talking the same language" between domain experts (those who know the problem area) and the developers, and to actually model the problem domain itself (typically using UML), rather than thinking to model an application. Experience tells that this will in the end typically give you the best model for an application too, since it represents the realities of the problem domain, as complex as it can be, and this is typically what the application needs to deal with anyway.

The main source for DDD is Eric Evans book with the same name. Also you should not miss Mr Evans' two talks "Putting the model to work" and "strategic design" on InfoQ. The Wikipedia article has some links also (Doesn't seem to be the best introduction to the subject though).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top