1 / 51

Software Design Methods & Simulation: Enhancing Design Solutions

Explore software design methods, simulation processes, formal verification techniques, criteria for successful implementation, and strengths/weaknesses. Learn how to model, execute, analyze, and simulate software designs effectively.

oscars
Download Presentation

Software Design Methods & Simulation: Enhancing Design Solutions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Informatics 121Software Design I Lecture 15 Duplication of course material for any commercial purpose without the explicit written permission of the professor is prohibited.

  2. Discussion • No class Thursday (but use your time wisely) • There will be discussion this Friday

  3. Today’s lecture • Design methods (architecture design) • Wrap up

  4. Intermezzo • Experts relax constraints • Experts reshape the problem space • Experts use notations as lenses, rather than straightjackets • Experts design throughout the creation of software • Experts do not feel obliged to use things as intended

  5. Software design methods

  6. Software design methods

  7. Simulation • Simulation is the process of examining the dynamic behavior of a design solution through artificial conditions that exercise a specially-developed secondary design artifact

  8. Procedure • Define objective • Model the internal system behavior • Model the outside conditions • Execute the simulation • Analyze results

  9. Example: define objective • Examine whether the web server architecture scales in the number of requests it can handle • Determine whether the delay introduced by peek loads in the credit card processing software stays within expected bounds • Determine the tradeoff between the size of the routing tables and the number of subscriptions in a publish-subscribe network infrastructure

  10. Example: model the internal system behavior • Implement a skeleton version of the web server architecture that delivers a result in constant time • Implement a skeleton version of the web server architecture that delivers a result within a second 80% of the time and within 5 seconds 20% of the time • Create a model of the response time distribution in a statistical software package such as R, Matlab, Simulink, …

  11. Example: model the artificial conditions • Implement driver software that exercises the skeleton web server at a constant rate • Implement driver software that exercises the skeleton web server at a distribution rate similar to the current web server • Create a model of the request rate distribution in a statistical software package such as R, Matlab, Simulink, …

  12. Example: execute the simulation • Run the skeleton web server and driver • Run the skeleton web server and driver • Run the combined model in R, Matlab, Simulink, … Typically, these kinds of simulations are highly parameterized to enable rapidevaluation of multiple artificial conditions across a range of internal system behaviors

  13. Example: analyze results

  14. Typical notation: source code

  15. Criteria for successful use • Must have a clear understanding of the inner system behavior of the design solution • Must have a clear understanding of realistic outside conditions • Should be comprehensive in examining a breadth of configuration parameters

  16. Strengths and weaknesses Strengths Weaknesses Is entirely based on assumptions regarding future behavior and conditions Realistic simulations might be as complex as the software itself (and thus similarly prone to mistakes) Simulated behavior is not guaranteed to occur in the software Heavyweight method • Helps make dynamic behaviors visible and therefore accessible for exploration • Can verify whether or not certain assumptions hold • Can help identify limits that the current design solution exhibits

  17. Software design methods

  18. Formal verification • Formal verification is the process of proving or disproving the correctness of a system with respect to a certain property

  19. Procedure • Decide on the property to be verified • Model the internal behavior • Execute the analysis

  20. Example: decide on the property to be verified • The web server shall not encounter deadlock • The delay introduced by peek loads in the credit card processing software must stay within 30 seconds

  21. Example: model the internal system behavior

  22. Example: execute the analysis

  23. Typical notation: formal model

  24. Criteria for successful use • Must have a clear understanding of the inner system behavior of the design solution • Attention to detail in developing the formal model

  25. Strengths and weaknesses Strengths Weaknesses It is as easy to make mistakes in creating a formal model as it is in software itself Proof of a property in the model does not guarantee it holds in the actual software (unless the model is automatically extracted) Large, complex models might take a very long time to verify, making iteration difficult • Helps establish certain truths about the design artifact that otherwise would be subject to speculation • Techniques are available for verifying many different properties • Effective for dealing with mission critical concerns

  26. Software design methods

  27. Wrap-up

  28. This course answers three primary questions • What is (software) design? • How to engage in good software design? • What are the habits of professional software designers?

  29. Our definition • To decide upon a plan for novel change in the world that, when realized, satisfies stakeholders

  30. Four types of design what is it to accomplish? satisfactory experience how does one interact with it? change in the world what is its conceptual core? plan for realization what are its implementation details?

  31. Four types of software design what is it to accomplish? application design satisfactory experience how does one interact with it? interaction design change in the world what is its conceptual core? architecture design plan for realization what are its implementation details? implementation design

  32. Software design project software designproblem software designsolution software design project

  33. Design thinking synthesize goals constraints assumptions decisions ideas analyze evaluate

  34. Realistic design process what is it to accomplish? satisfactory experience how does one interact with it? change in the world what is its conceptual core? plan for realization what are its implementation details?

  35. Design methods what is it to accomplish? satisfactory experience how does one interact with it? change in the world what is its conceptual core? plan for realization what are its implementation details?

  36. Design method • A self-contained, structured technique that guides a designer in advancing some aspect of the design project at hand • Serves as a bridge from the overall process of design to actual individual and collaborative design work

  37. Design methods today

  38. Software design methods

  39. From software life cycles to design methods design problem design solution design project Which set of design methods is appropriate to use, when,to successfully complete a design project?

  40. Two fundamental challenges • The nature of software • The nature of people

  41. Nature of software (Brooks) • Complexity • software is among the most complex people-made artifacts • Conformity • software has no laws of nature that simplify its existence; rather, it lives in a world of designed artifacts to which it much conform • Changeability • software is subject to continuous pressure to change • Invisibility • because the reality of software is not embedded into space, it is inherently unvisualizable

  42. Nature of people • Diversity • people differ in how they experience the world • Indiscernibility • experiences are distinctly mental in nature, with tangible reactions and signs not always matching their actual experience • Familiarity • people tend to be risk averse, sticking to role, organizational, and societal norms and values • Volatility • with every new exposure, people reinterpret and modify their opinions and expectations

  43. Minimize backtracking what is it to accomplish? • Strive to minimize backtracking more than absolutely necessary • Strive to minimize backtracking later than absolutely necessary satisfactory experience how does one interact with it? change in the world what is its conceptual core? plan for realization what are its implementation details?

  44. Choosing design methods to apply • Focus on essence • Focus on the unknown • Focus on making progress

  45. Four design studios • bigexpensivehome.com • Educational traffic simulator (design) • Educational traffic simulator (analysis) • FlappyBird – Duo

  46. Four design studios • bigexpensivehome.com • Educational traffic simulator (design) • Educational traffic simulator (analysis) • FlappyBird – Duo Not nearly enough practice, yet

  47. In sum • Understanding all of the design activities that take place in software engineering • Significant shift to this kind of overall approach to software development (innovation, creativity, design) • If you just pick up one method, at one moment in time, and it helps you, that would be an important result • Design methods are much more broadly applicable than the specific ‘box’ in which they are placed

  48. In sum • Do not forget the expert practices, you can apply those irrespective of the design methods

  49. Additional courses • Informatics 122 • technical: patterns, UML, reverse engineering, component reuse, … • Informatics 124 • technical: internet architectures, distributed systems, programming, … • Informatics 131 • conceptual: user interface design, principles, evaluation, … • Informatics 133 • technical: user interaction design, mobile devices, design methods, …

  50. Final intermezzo • Experts design all the time • Experts know design is not done until the code is delivered and running • Experts keep learning • Experts play

More Related