This lecture is concerned with software structure. We discuss several well-known structural patterns
and why you need to know about them.
Readings and Activities for the Week:
-
Read Blogs Software Structure,
Parsing, and Code Analysis.
The parser and code analyzer - based on the parser - are good examples of interesting software structures. - Look at SampleProject #2 packages.
- Complete the packages for your Project #2 application.
Glossary of Terms
-
Module a.k.a. Subsystem:
A collection of packages that:- Work in concert to implement some focused part of an application.
- Share consistent I/O formats.
- Often provide an interface and object factory used by other subsystems.
- May implement one of several processes that collaborate to provide required system functionality.
-
System:
A Collection of modules, each of which implements some specific part of an application's functionality:- There is usually an Executive module that interacts with users and directs activities of lower-level modules
- Often a module is dedicated to collecting the data on which the application operates, e.g., its working set.
- Several modules may cooperate to transform the input working set into output data.
- Most non-trivial systems need a module dedicated to transforming output data into information for users.
- The Syllabus describes topics to be covered, reading material for you to digest as part of each lecture, and due dates for assigned projects.
-
Projects:
Discuss Sample Project #2 in detail. Components Sample Project #2, Sample Project #3, Sample Project #4 Project #2, Project #3, Project #4 -
Software Structure Presentations:
Software Structure Research, ppt
Motivation for studying Software Structure. Software Structure, pptx, Software Structure - more discussion about same topics
Discusses software structures driven by:data managementCommunication using Message Queues
computation
concurrency
events
communication
federation of services.
Discusses communication of multiple concurrent clients with a server process through message queues.
This will be important for your Project #3 and Project #4. Components, Loosely-coupled systems, Partitions, Delegation Using Dynamic Link Libraries (DLLs)
Shows how to build and execute dynamic link libraries - make sure you study both the code and comments.References:
Wikipedia - Dependency Injection
Wikipedia - MVC
MVC to Unit Test
Wikipedia - N-Tier -
Preparation for Synchronous Discussion:
- Create a list of the main tasks of your Project #2 application.
- Be ready to discuss turning your list into an activity diagram.
-
Lecture Take-aways:
The most important things we discussed are: