CSC 395 - Chapters 6, 7 Flashcards
Describe the difference between architecture in the small and architecture in the large.
Architecture in the small – concerned with the architecture of individual programs. At this level, it is concerned with the way an individual program is decomposed into components.
Architecture in the large – concerned with the architecture of the complex enterprise systems that include other systems, programs and components. These enterprise systems may be distributed over different computers, which may be owned and managed by different companies.
Describe the five parts of the 4+1 View Model of Software Architecture.
Four fundamental architectural views, which can be linked through common use cases or scenarios.
• A logical view – which shows the key abstractions as objects or object classes
• A process view – which shows how the running system is composed of interacting processes
• A development view – which shows how the software is decomposed for development
• A physical view – which shows the system hardware and how the software components are distributed across the processors
• Related using use cases or scenarios (+1)
Describe what Architectural Patterns are.
A means of representing, sharing and reusing knowledge. A stylized description of good design practice that has been tried and tested in different environments. It should include information about when the pattern should and should not be used. Architectural patterns may be represented using tabular and graphical descriptions.
Describe one of the four examples of application types that were discussed.
Transaction processing applications – database-centered applications that process user requests and updates information in a system database. They are organized in such a way that user actions can’t interfere with each other and the integrity of the database can be maintained. Ex: banking systems
Describe context and interaction models.
A context model is a structural model that demonstrates the other systems in the environment of the system being developed
A interaction model is a dynamic model that shows how the system interacts with its environment as it is used
Describe one way to identify object classes, their attributes, and methods.
Use a grammatical analysis based on a natural language description of the system. Objects and attributes are the nouns; operations or services are verbs.
Describe what design patterns are and why they are useful.
Design patterns are a way of reusing abstract knowledge about a problem and its solution. The pattern is a description of a problem and the essence of its solution, so that the solution may be reused in different settings. Design patterns are usually associated with Object Oriented Design. Published patterns often rely on object characteristics such as inheritance.
Design patterns are useful because any design problem may have an associated pattern that can be applied. Using patterns means that you can reuse ideas but adapt the implementation.
Describe the three main activities of configuration management.
Version management – keeps track of the different versions of each component and includes facilities to coordinate development by several programmers.
System integration – helps developers define what versions of components are used to create each version of a system. This is then used to build a system automatically by compiling and linking the required components.
Problem tracking – support for users to report bugs and other problems. Allows all developers to see who is working on these problems and when they are fixed.
Describe Open Source development.
When source code of a software development is published publically and volunteers are invited to participate in development. Its roots are in the Free Software Foundation. Open Source uses the internet to recruit a large population of volunteer developers.
The open source community allows software to be developed cheaper, quicker and with a built in community of users.
There are still limits on what can be done with the code even though it is freely available – the developer still owns the code. They can place restrictions on how it is used by including legally binding conditions in an open source software license.
Examples: Linux OS, Java
Companies involved in open source software development need to be aware of two issues:
• Should the product being developed make use of open source components?
• Should an open source approach be used for the software’s development?