Design Refinement
By High School Technology Services myhsts.org Objective
● Learn how the system design can be improved Extensibility
● Extensibility is a software engineering and systems design principle where the implementation takes future growth into consideration. ● Softwares are not designed and developed at one go. ● Usually softwares are designed in an iterative process ● Design should include the future scope for extensibility Forms of Extensibility
● White Box ○ Open Box ○ Glass Box ● Black Box ● Gray Box Reusability
● Reusability is the use of existing assets in some form within the software product development process ● Each software component should be reusable ● This keeps the software code less complex Design Features - Reusability
● Adaptable ● Brief: small size ● Consistency ● Correctness ● Extensibility ● Fast ● Flexible Design Features - Reusability
● Generic ● Localization of volatile (changeable) design assumptions (David Parnas) ● Modularity ● Orthogonality ● Parameterization ● Simple: low complexity ● Stability under changing requirements Three Cs of Requirements
● Consistency ● Completeness ● Correctness Testing Business Processes
● BPT is a manual as well as automated testing solution for test design, creation, and execution. It helps reduce testing timelines. ● BPT approach includes: ○ Reusable business components ○ Business process tests ● BPT is a role-based model that allows business analyst and non-technical Subject Matter Experts (SME) to work with business components in a script free environment and create business process tests. Testing Business Processes
● BC1: First Business Component that opens browser and enters login credentials ● BC2: Second Business Component that navigates to accounts screen and searches for account ● BC3: Third Business Component that verifies field values Testing Business Processes
The key concepts involved in BPT are as follows:
● Business Process: Business Process can be defined as the collection of related activities that are performed to achieve a predefined goal. ● Business Components: Business components are considered as set of small and reusable pieces of test cases ● Business Process Tests: Business Process Tests are test cases that include business components. ● Application Area: It is the logical entity and a repository that contains testing resources such as shared object repository, function library etc. Testing Business Processes
BPT is a transformation that is used to solve traditional problems with automation testing, viz.
● Lack of coordination between manual testers/SMEs and automation engineers ● Lack of automation development standards ● Automation engineer’s insufficient knowledge of the application may cause inefficient scripts ● Huge maintenance efforts Design Metrics
● Design metrics are used for effective software development. It allows to achieve the following ● McCall’s triangle explains a whole set of measures that needs to be taken care of during the software design. ● These are the metrics that provide the effective software development McCalls Triangle of Quality OO Design Metrics
● Size ● Complexity ● Coupling ● Sufficiency ● Completeness ● Cohesion ● Primitiveness ● Similarity ● Volatility Discovering Reusable Patterns
● Design patterns are especially useful in turning an analysis model into an implementation model. ● Despite many claims that promise a smooth transition from object-oriented analysis to design, in practice the transition is anything but smooth. ● A flexible and reusable design will contain objects that aren't in the analysis model. ● The programming language and class libraries you use affect the design. ● Analysis models often must be redesigned to make them reusable. ● Many of the design patterns in the catalog address these issues, which is why we call them design patterns. ● A full-fledged design method requires more kinds of patterns than just design patterns. ● There can also be analysis patterns, user interface design patterns, or performance-tuning patterns. Looking Forward
Project Management and Implementation Issues ● Planning for Reusability ● Transition Strategies and Planning Legacy System Integration ● Managing the Development Cycle ● Partitioning Work ● Source Code Organization ● Choosing Tools and Languages ● Software Quality Metrics Questions?