260 likes | 290 Views
This comprehensive review covers various software paradigms including Algorithmic Paradigm, Artificial Intelligence, and Theory of Evolutionary Design. It also delves into software architecture elements like processing and data elements. Additionally, it examines design patterns and frameworks used in software development.
E N D
CSci 210 -- Advanced Software Paradigms –Exam Review A. Bellaachia Department of Computer Science School of Engineering and Applied ScienceThe George Washington University Washington, DC 20052
Introduction • Software Development Process • Language and Computer Architecture • Language paradigms • Language Evaluation Criteria: • Readability • Examples: Data type, data structures, and control statements • Writability • Reliability • Type checking • Exception handling • Aliasing • Maintainability • Cost Csci 210 -- A. Bellaachia
Software Paradigms • Five Software Paradigms • AP: Algorithmic Paradigm • AP assumes problem is well structured • application = program to map input to output • finite number of steps, no errors • ASE: Analysis-Synthesis-Evaluation • like Waterfall Model • assumes problem is well structured • It uses problem decomposition • FD: Formal Design • FD assumes problem is well structured • It is a refinement of ASE, but uses abstraction • problem becomes a mathematical proposition • AI: Artificial Intelligence • It is explicitly founded on the concepts of search, knowledge and heuristics • It does not assume problem is well structured • TED: Theory of Evolutionary Design • It uses the fast that software design is an evolutionary process • It does not assume problem is well structured • Nothing is fixed, everything can evolve Csci 210 -- A. Bellaachia
Software Architecture Paradigms • Architectural Elements • Processing elements • Connecting elements • Data Elements • Configuration file Csci 210 -- A. Bellaachia
Software Architecture Paradigms (Cont.) • Architectural Styles (major ones) • Dataflow Systems • Pipelines • Each layer is client for layer below it • output of one stage = input to next • Example: Compilers • Call & Return Systems • Layered • Each layer is client for layer below it • advantages: incremental, extendable • N-tier / Client-Server • layers can be developed independently • Examples: Operating Systems, Web-based applications • Independent-Process • Communicating Processes: • Using CSP to describe different process topologies • Repository • Blackboard • central repository for shared info • 3 components – knowledge source, controller, repository (blackboard) • Example: no one single answer – fingerprints • Architecture Evaluation: Good Structure • Cohesion • Coupling Csci 210 -- A. Bellaachia
DSSA • Requirement analysis and software architecture of a domain of applications. • Examples: Wed browsers, Web servers, Word processors, etc. • There are three main elements of a DSSA: • Domain Model • Complete description of the domain • Achieved by experts in the domain, users, developers who have experience in the domain, etc. • Reference Requirements • Stable (or Fix) • Variable (or optional) • Requirements can also be broken into: • Functional, Non-functional, Design, Implementation • List a reference of each requirement of the domain. • Reference Architecture • Make sure to state the right architecture style for the domain. • List a reference of each architectural element. Csci 210 -- A. Bellaachia
Components • Why use components? • Major elements of a component: • Specification • One or more implementations • Component Model: • Each of these component models addresses the following issues: • How a component makes its services available to others? • How component are named? • How new components and their services are discovered at runtime. • A packaging approach: • Example: 2EE application is packaged as an Enterprise ARchive (EAR) file, a standard Java JAR file with an .ear extension. • A deployment approach: • J2EE uses deployment descriptors that are defined as in XML files named ejb-jar.xml. • Component Architecture • Blackbox vs. Whitebox • Components vs. Objects • Components in industry verses in-house solutions • Component disadvantages Csci 210 -- A. Bellaachia
Design Patterns • Definitions • What is a Pattern? • Categories of Patterns • Pattern Characteristics • Essential Elements of a Design Pattern • Examples of design patterns: • Singleton • Adapter • Strategy • Design Pattern Selection • How to Use a Design Pattern? • Idioms Csci 210 -- A. Bellaachia
Frameworks • Definitions • Frameworks • Classification • Frameworks Evaluation • Examples Csci 210 -- A. Bellaachia
Basic of Programming Languages • Built-in Types and Primitive Types • Data Aggregates and Type Constructors • Constructors • User-defined Types and Abstract Data Types • Strong Typing & Type Checking • Type Compatibility • Type Conversion • Type and Subtypes • Generic Types • Monomorphic versus Polymorphic • The Type Structure of Representative languages • Implementation Models • Implementation of Structured Types Csci 210 -- A. Bellaachia
Object-Oriented Programming • Object-oriented characteristics: • Object Definition and instance creation • Encapsulation • Inheritance • Polymorphism: “Polymorphism (Greek for many forms) means that the same operation can be defined for many different classes, and each can be implemented in their different way. “ • Binding in OOP: • Static vs. Dynamics • Implementation of OO constructs Csci 210 -- A. Bellaachia
Functional Programming • Functional programming characteristics • Functions in FP: composition, Apply-to-all, etc. • Performance Csci 210 -- A. Bellaachia
Logic Programming • Logic programming characteristics: • based on relations. • Horn clause • User query processing: • Resolution • Unification • Performance Csci 210 -- A. Bellaachia
Concurrency • Concurrency requirements • Problems with concurrency: • Deadlock • Starvation • Etc. • Process Interactions • Syntax for parallel processes • Independent processes • Competing processes (Critical sections) • Communicating processes (May need to communicate) • Low-level Concurrency Primitives • Process creation and control: • Event: Event-wait(e) and Event-signal(e) • Messages: • Remote Procedure Calls (RPCs) • Synchronization • Semaphores, Monitors, etc. • Concurrency in Java. Csci 210 -- A. Bellaachia
Sample Question • Problem : In this problem, we would like to define a DSSA for web server applications such as Apache and Internet Information Server (IIS). The major operations of a web server include the following: • A resource handler to determine the type of operation requested by a browser. • Interpretation of a request protocol such as the HTTP protocol. • An operation, called Access Control, to enforce access rule employed by the server. • A request analysis operation to translate the location of the resource (URL) from a network location to a local file name. • A web server has also the ability to gather information (log) about all the requests and their results. Provide a complete DSSA for this type of applications. Csci 210 -- A. Bellaachia
Sample Question • Problem: State the major software paradigms that can be examined during the steps of the software life cycle of an application and explain why. Csci 210 -- A. Bellaachia
Sample Question • Problem: Component-based software development greatly depends on an efficient component integration strategy. You have been hired by a company and you are asked to develop a component-based system. (a) What are the issues that you need to address in your design? Csci 210 -- A. Bellaachia
Sample Question • Problem: Give an architectural description in CSP for the following architecture: M0 M2 M5 F1 F2 O1 M4 M1 F3 F4 M3 Csci 210 -- A. Bellaachia
Sample Question • Problem: We have used cohesion and coupling to compare different software architectures. In this problem, we introduce a new metric, called Component Structural Complexity (CSC). The structural complexity of a component i is defined as follows: CSC(i) = f2out(i), Where fout(i) is the number of components immediately subordinate to the component i, that is, the number of components directly invoked by component i • Design a system structural complexity (SSC) metric for the whole system using CSC metric, assuming you have a system of n components • Measure SSC for pipeline and layered architectures. • Compare SSC metric to coupling and cohesion. Csci 210 -- A. Bellaachia
Sample Question • Problem: (a) Describe why you would use design patterns in your application. (b) Give an example of a design pattern and show how you would use it for a specific application. State clearly your application. Csci 210 -- A. Bellaachia
Sample Questions: Different Paradigms • What the major design decisions you need to consider for: • Object-oriented programming • Requirements of OOP • Polymorphism • Class Instance Record (CIR) • FP • Requirements of FP • Be familiar with Scheme: be able to understand scheme code • LP: • Requirements of LP • Resolution algorithm • Unification • Query processing • Concurrency • Requirements of concurrency. Csci 210 -- A. Bellaachia
Sample Question • Problem: class A { public: int a; virtual void what(){ … } virtual void who() { … } }; class B{ public: int b virtual void what{ … } }; class C: public A, public B { public: int c; virtual void what(){ … } virtual void who() { … } virtual void dud() { … } }; Draw the Class Instance Record (CIR) of each class. Csci 210 -- A. Bellaachia
Sample Question • Problem: One of the programming language paradigms we have covered is logic programming. 1. Describe this paradigm and compare it to a programming language paradigm of your choice. 2. Give detailed description of the different parts of a logic program. 3. One of the drawbacks of logic programming is low performance. How would your enhance the efficiency of a logic programming compiler? Csci 210 -- A. Bellaachia
Sample Question • Problem: You are asked to extend a procedural language to become an object-oriented (OO) language. (1) State the OO features that you need to add to your procedural language (2) Explain how you would implement each of the features in (1) Csci 210 -- A. Bellaachia
Sample Question • Problem: Consider the following logic program: • mother (mary, sue). • mother (mary, bill). • mother (sue, nancy). • mother (sue, jeff). • mother (jane, ron). • father (john, sue). • father (john, bill). • father (bob, nancy). • father (bob, jeff). • Father(bill,ron). • Parent(A,B) :- father(A,B). • Parent (A,B) :- mother(A,B). • Grandparent(C,D) :- parent(C,E), parent(E,D). Show the trace of the processing of the following queries: ?- grandparent(Who, ron). Add a sibling relationship to the above program and answer the following question: ?- sibling(sue, X). Csci 210 -- A. Bellaachia
G o o d L u c k Csci 210 -- A. Bellaachia