System Analysis and Design
Project Assignments
Mesh-based Application Development System
We will develop a object-oriented class library (we call system) for domain users (domain programmers) to develop mesh-based applications. The class library should be a basic foundation to let domain users write and run mesh-based programs (applications).
[Overview of Whole system] Mesh may be created by many different domain tools (pre-processing tools) in different formats. These formats will be as the input of our designing system. Domain users will also privode a mesh-based application (a program) to our designing system. Our system usually outputs the simulation results in some user-defined or pre-defined formats to some post-processing tools. These tools may let us have a visualized view of our simulated results.
[Mesh Structure] In mesh-based application domain, a mesh structure is a text file which created by certain domain tools in certain format. A mesh structure is considered as a static structure to represent a discretelised model of a geometrical object. Creation or generation of mesh structure is not the function of the system to design.
[User Programs, Mesh-based Applications] In a user’s program (a mesh-based application), user typically first loads a mesh from a text file (in certain format) into memory and stores it in the memory as a data structure. The functions of loading and storing mesh are supplied in our class library (the system to design). Then the user’s program continues to define some kernel functions over the node of the mesh structure. Further by using these kernel functions, the user’s program defines an algorithm over the whole mesh structure. The algorithms over mesh structure usually are loops of kernel operations over the mesh. The looping machanigimum is supplied in the system to design.
[Mesh-based Application Development System] Our designed system should provide some basic functionalities to support the programming and executions of mesh-based applications under certain platform and systems (e.g. C++ under Linux). The system (or class library) we are designing first let user create a mesh-based application in a programming language like C/C++. And we should provide an execution environment for user’s program. The work for implementing this environment is mainly to implement a runtime does library for mesh-based programs.
[System Functionalities, partial] The basic functionalities our class library should provide may includes (but not be complete):
• Domain programmer may load in memory a mesh from a text file in a certain format.
• Storing Mesh Structure in Memory in an efficient data structure.
• Save Mesh to a text file in a certain format from Memory
• Domain Programmer can define mesh (elements) directly in his code.
• Domain Programmer can Define Kernel Operations over Mesh
• Domain Programmer can Define Algorithm over mesh (Mesh Application)
• Class library should implement a loop of kernel operations over mesh
• Class library should Output to a text (or binary) file to save computation (simulation) results in each step in some user-defined or pre-defined formats.
• System should be implemented in programming language C/C++, or Fortran
• Domain Programm Run on CPU, multi/many-core, and cluster architectures
• Class library should allow user program to Trace for performance
This is just a partial list, try to collect more requirements concerning about writing and running mesh-based applications by yourself.
1. Define and initial project
Do a UP Inception phase work as described in our class for mesh-based application development system. Submit all deliverables you have done firstly for your project. Your submision may be in a single Word file with the following sections (Each section represents a UP artifact):
• Vision
• Fully dressed use cases
• Use case diagrams
• Domain Model (Conceptual class diagrams)
• Supplementary specifications
• Glossary
• SSD
• System Operation Contracts
Notice that some sections may be empty at this moment.
2. Requirements analysis
Do iterations in a UP elaboration phase for your project. Revise your submision you have done for assignment 1. Submit your revised version of the document. Your submission may include other types of artifacts lik code.
3. Software design-I
As you do iterations in a UP elaboration phase in Assignment 2, you have to do a high Level design for mesh-based application development system. This is the work for Assignment 3.
Your submission for this assignment should include a logical software architecture for the system to be designed.
4. Software design-II
Do low level object design. This may include dynamic modeling and static modeling in software level.
Your submission for this assignment should include design models, specifically the interaction diagrams and design class diagram for the system to be designed
5. Final project docs
Do some implementation. Submit all of above with some implementation code for your design.
You should submit a ReadMe file simply describing the contents of your all submitted files.