-
tips
-
1. Based on non functional requirements
-
Non-functional requirements
-
solutions
- Performance
- Typical Design/Architectural principles to look for:
- Connection pooling
- Load balancing
- Distributed processing
- Caching
- Lazy instantiation
- Transaction Concurrency
- Process isolation between OLTP and OLAP
- Replication of data
- Typical unit of measurement you could use:
- Transactions per unit time
- Amount of time it takes to complete a transaction
- Reliability
- Typical Design/Architectural principles to look for:
- Using preventive measures (administration) e.g. recycling of server processes in IIS.6 ASP.NET /COM+ 1.5
- Containment - COM+ server process isolation
- Database transaction logs (rollback)
- Typical unit of measurement you could use:
- Mean time to failure
- Availability
- Typical Design/Architectural principles to look for:
- Fail-over
- Transaction Manager
- Stateless design
- Typical unit of measurement you can use:
- Length of time between failures
- Subtopic 1
- How quickly the system is able to resume operation in the event of failure.
- Security
- Typical Design/Architectural principles to look for:
- Authentication
- Authorisation
- Auditing
- Integrity
- Confidentiality
- Denial of Service
- Data isolation
- Modifiability
- Typical Design/Architectural principles to look for:
- Client-server
- Independence of interface from implementation
- Separation
- Encoding function into data meta-data and language interpreters
- Run-time discovery no hard
- Typical unit of measurement
- Using specific changes as benchmarks and recording how expensive those changes are to make
- Portability
- Typical Design/Architectural principles to look for:
- Virtual machine
- Functionality
- Typical unit of measurement:
- Number change request
- Extensibility
- Typical unit of measurement:
- Easy, incremental addition of functionality (time, budget, etc.)
- Coupling/cohesion
- Conceptual Integrity
- Underlying theme or vision that unifies the design of the system at all levels.
- Interoperability
- Typical Design/Architectural principles to look for:
- Simple data-types
- Subtopic 1
- XML
- Web services
- Usability
- Typical Design/Architectural principles to look for:
- GUI standards between product line
- Typical unit of measurement:
- Number of errors made by a user familiar with prior releases or other members of the product line.
- Maintainability
- Typical unit of measurement:
- Easy localisation
- Ripple effects of change
- Efficiency
- Typical Design/Architectural principles to look for:
- Acquire late, release early
- Reducing round-trips
- Lowering traffic throughput (only send what is necessary, only retrieve what is necessary)
- Testability
- Typical Design/Architectural principles to look for:
- Interface based programming
- Inversion of control/Dependency injection
- Classes with well defined responsibilities
- Reusability
- Ease of Deployment
- Typical measures:
- Installer programs (wizards)
- Typical unit of measurement:
- Can be measured by the time and resources required to install the product and /or distribute a new unit of functionality
- Ease of Administration
- Scalability
- Typical Design/Architectural principles to look for:
- Stateless design
- Load-balancing
- Concurrency (optimistic)
- Debug-ability /Monitoring
- Typical Design/Architectural principles to look for:
- Tracing support
- Logging in exception handling mechanism
- Development Productivity
- Typical Design/Architectural principles to look for:
- Framework
- Templates /code generation
- Best practices Coding checklist & standards
- 2. Rationale, rationale, rationale -có lý, phải lẽ
- 3. Don’t Repeat Yourself
- 4. Slice the cake
- 5. Prototype
- 6. Quantify
- 7. Get it working, Get it right, Get it optimized
- 8. Focus on the boundaries and interfaces
- 9. The Perfect is the enemy of the Good
- 10. Align with your stakeholders
-
principles
- 1. Start with the minimal necessary architecture
- 2. Consider the specifics of your project: Constraints and risks
- 3. Grow as you need.
- 4. Deliver continuously.
- 5. Require a customer
- 6. Avoid waste
- 7.Maximise feedback and transparency