Design Refinement

By High School Technology Services myhsts.org Objective

● Learn how the system design can be improved Extensibility

● Extensibility is a engineering and systems design principle where the implementation takes future growth into consideration. ● 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 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 . ● 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 ● Metrics Questions?