Showing posts with label System Design. Show all posts
Showing posts with label System Design. Show all posts

Describe Top-down and bottom-up Design

Top-down and bottom-up are strategies of information processing and knowledge ordering, mostly involving software, but also other humanistic and scientific theories . In practice, they can be seen as a style of thinking and teaching. In many cases top-down is used as a synonym of analysis or decomposition, and bottom-up of synthesis.

A top-down
approach is essentially breaking down a system to gain insight into its compositional sub-systems. In a top-down approach an overview of the system is first formulated, specifying but not detailing any first-level subsystems. Each subsystem is then refined in yet greater detail, sometimes in many additional subsystem levels, until the entire specification is reduced to base elements. A top-down model is often specified with the assistance of "black boxes" that make it easier to manipulate. However, black boxes may fail to elucidate elementary mechanisms or be detailed enough to realistically validate the model.

A bottom-up approach is essentially piecing together systems to give rise to grander systems, thus making the original systems sub-systems of the emergent system. In a bottom-up approach the individual base elements of the system are first specified in great detail. These elements are then linked together to form larger subsystems, which then in turn are linked, sometimes in many levels, until a complete top-level system is formed. This strategy often resembles a "seed" model, whereby the beginnings are small but eventually grow in complexity and completeness. However, "organic strategies" may result in a tangle of elements and subsystems, developed in isolation and subject to local optimization as opposed to meeting a global purpose.

Java System Design & Analysis Patterns

1. What is an analysis pattern?
2. What are the differences between analysis patterns and design patterns?
3. How does "Extreme Programming" (XP) fit with patterns?
4. What is the disadvantage of using the Singleton pattern? It is enticing to use this pattern for all the classes as it makes it easy to get the reference of the singleton object.
5. How do you write a Thread-Safe Singleton?
6. What is the Reactor pattern?
7. What are Process Patterns?
8. How and where did the concept of design patterns get started?
9. Where can I find good examples of the Prototype pattern?
10. What are Anti-Patterns?
11. What is a software design pattern?
12. Why is the study of patterns important?
13. How do I document a design pattern?
14. Where can I learn more about design patterns?
15. What is an example of a design pattern?
16. Calendar is an abstract class. The getInstance() method tries to instantiate GregorianCalendar() i.e., parent instantiating a derived class. This looks Non-OO? Ex: Calendar a=Calendar.getInstance(); Can somebody explain why is it so?
17. What major patterns do the Java APIs utilize?
18. How can I make sure at most one instance of my class is ever created?
19. When would I use the delegation pattern instead of inheritence to extend a class's behavior?
20. Which patterns were used by Sun in designing the Enterprise JavaBeans model?
21. What patterns are particularly useful in building networked applications?
22. Are there any good Java-specific patterns books available?
23. What are Collaboration Patterns?
24. Is it correct from a design point of view to make an object both an Observer and Observable at the same time?
25. How can I maintain a single instance of an object in an applet?
26. What is the best way to generate a universally unique object ID? Do I need to use an external resource like a file or database, or can I do it all in memory?
27. Is there some kind of Design pattern which would make it possible to use the Same code base in EJB and non EJB context?
28. What is session facade?
29. How is JDO different from VO ?
30. How can I implement the MVC design pattern using JSP?