Model Based Software Design.pdf
INTRODUCTION Motivation Software Evolution Conceptual Models Software Development Design Documents Models in Brief Overview Modeling Software Effective Models Perspective Reverse Engineering Software Realization Frameworks Expediency vs. Efficiency The Software Cone SOFTWARE MODELS Identifying Models in Software Classification of Models in Software Design Analysis Testing Common Characteristics of Models in Software Persistent Data Inputs and Outputs Transformations Example - Spreadsheets Input and Display of Data Formulas Data Persistence Additional Features PROPERTIES OF SOFTWARE MODELS Quantitative Observable Controllable Orthogonal Annotatable Efficient Discoverable Qualitative Intuitive Abstract Expressive Maintainable Effect on Model DESIGNING MODEL-BASED SOFTWARE Specification Determine Value Added Model/View/Controller Method Platform Requirements Prioritization of Properties DEVELOPING MODEL-BASED SOFTWARE Implementation Data Critical Interfaces Early Integration Iteration for Improvement TESTING MODEL-BASED SOFTWARE Functional Testing Testing Logical Models Test-Only Hooks Property Measurement and Analysis Measurement Quantitative Properties Evaluation of Qualitative Properties Meeting Requirements LOOKING FORWARD Needed Measurement Tools Documentation Quality Orthogonality Discoverability Possible Design and Development Aids Model Registration and Search Static Testability Analysis User Feedback
This reference summarizes the properties and techniques of conceptual modeling and provides analyses of many examples of existing software. It examines the complexity and scale of software systems, including key components, relationships, user interfaces, and persistent data. The authors consider the impact of legacy systems, the inherently local nature of software systems, and the gap between formal software models and effective software development. They show how software models can be used to address increasingly complex systems that include data integrity, regression testing, security, scalability, portability, and usability.