دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
دسته بندی: برنامه نویسی: زبانهای مدل سازی ویرایش: 1 نویسندگان: Jim Cooling سری: ISBN (شابک) : 9781839216589 ناشر: Packt سال نشر: 2020 تعداد صفحات: 825 زبان: English فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) حجم فایل: 28 مگابایت
کلمات کلیدی مربوط به کتاب مهندسی نرم افزار برای سیستم های بلادرنگ (نسخه کامل): UML زمان واقعی c ++ الزامات تحلیلگر تجاری مهندسی نرم افزار رفت و برگشت
در صورت تبدیل فایل کتاب Software Engineering for Real-Time Systems (The Complete Edition) به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب مهندسی نرم افزار برای سیستم های بلادرنگ (نسخه کامل) نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
ویژگی های کلیدی تاثیر سیستم های بلادرنگ بر طراحی نرم افزار را بررسی کنید درک نقش نمودار در فرآیند توسعه نرم افزار بیاموزید که چرا عملکرد نرم افزار یک عنصر کلیدی در سیستم های بلادرنگ است ------------------------------------ توضیحات کتاب از سیستمهای کنترل ترافیک هوایی گرفته تا سیستمهای چند رسانهای شبکه، سیستمهای بلادرنگ همه جا هستند. صحت سیستم بلادرنگ بستگی به لحظه فیزیکی و نتایج منطقی محاسبات دارد. این کتاب مقدمهای مفصل برای مهندسی نرمافزار برای سیستمهای بلادرنگ، شامل طیف وسیعی از فعالیتها و روشهای مورد نیاز برای تولید یک سیستم بلادرنگ عالی ارائه میدهد. این کتاب با توصیف سیستم های بلادرنگ، کاربردهای آنها و تأثیر آنها بر طراحی نرم افزار شروع می شود. شما با مفاهیم طراحی نرم افزار و برنامه، و همچنین انواع مختلف برنامه نویسی، خطاهای نرم افزار و چرخه عمر نرم افزار، و اینکه چگونه یک ساختار چندوظیفه ای برای طراحی سیستم مفید است، آشنا خواهید شد. با حرکت رو به جلو، خواهید آموخت که چرا نمودارها و نمودارها نقش مهمی در فرآیند توسعه نرم افزار دارند. شما مستندسازی کارهای مرتبط با کد را با استفاده از زبان مدلسازی یکپارچه (UML) تمرین خواهید کرد و کد منبع را در هر دو سیستم میزبان و هدف تجزیه و تحلیل و آزمایش خواهید کرد تا بفهمید که چرا عملکرد یک محرک اصلی طراحی در برنامه ها است. در مرحله بعد، شما یک استراتژی طراحی برای غلبه بر سیستم های بحرانی و مقاوم در برابر خطا ایجاد خواهید کرد و اهمیت مستندسازی در طراحی سیستم را یاد خواهید گرفت. در پایان این کتاب، دانش و مهارت های مناسبی برای توسعه سیستم های جاسازی شده بلادرنگ خواهید داشت. -------------------------------- آنچه خواهید آموخت بین نرم افزار صحیح، قابل اعتماد و ایمن تفاوت قائل شوید روش های طراحی مدرن را برای طراحی یک سیستم بلادرنگ کشف کنید از وقفه ها برای پیاده سازی همزمانی در سیستم استفاده کنید کد را تست، ادغام و اشکال زدایی کنید مشکلات تست سازه های OOP را نشان دهید غلبه بر عیوب نرم افزار با تکنیک های مبتنی بر سخت افزار ----------------------------------- این کتاب برای چه کسی است اگر علاقه مند به توسعه یک سیستم جاسازی شده در زمان واقعی هستید، این کتاب ایده آل برای شماست. با درک اولیه از برنامه نویسی، سیستم های ریزپردازنده و منطق دیجیتال ابتدایی، با این کتاب به حداکثر می رسید. آشنایی با زبان اسمبلی مزیت محسوب می شود. ------------------------------ درباره نویسنده جیم کولینگ کار خود را با نیروی هوایی سلطنتی به عنوان طراح سیستم آغاز کرد. پس از 12 سال خدمت، مدرک کارشناسی خود را در رشته مهندسی برق و الکترونیک خواند، سپس با شرکت هواپیماسازی بریتانیا کار کرد و روی سیستمهای کنترل الکترونیکی نیروی دریایی کار کرد. او 20 سال آینده خود را در تحقیقات آکادمیک در دانشگاه لافبورو گذراند و همچنین دکترای خود را دریافت کرد. در سیستم های جاسازی شده بلادرنگ در سال 1998، جیم دانشگاه را ترک کرد تا شرکت خود، Lindentree Associates را راه اندازی کند. او 12 کتاب در موضوعات مختلف از جمله نرم افزارهای Real-time Operating Systems و Modeling همراه با تصاویر منتشر کرده است.
Key Features Explore the impact of real-time systems on software design Understand the role of diagramming in the software development process Learn why software performance is a key element in real-time systems ------------------------------------- Book Description From air traffic control systems to network multimedia systems, real-time systems are everywhere. The correctness of the real-time system depends on the physical instant and the logical results of the computations. This book provides an elaborate introduction to software engineering for real-time systems, including a range of activities and methods required to produce a great real-time system. The book kicks off by describing real-time systems, their applications, and their impact on software design. You will learn the concepts of software and program design, as well as the different types of programming, software errors, and software life cycles, and how a multitasking structure benefits a system design. Moving ahead, you will learn why diagrams and diagramming plays a critical role in the software development process. You will practice documenting code-related work using Unified Modeling Language (UML), and analyze and test source code in both host and target systems to understand why performance is a key design-driver in applications. Next, you will develop a design strategy to overcome critical and fault-tolerant systems, and learn the importance of documentation in system design. By the end of this book, you will have sound knowledge and skills for developing real-time embedded systems. --------------------------------- What you will learn Differentiate between correct, reliable, and safe software Discover modern design methodologies for designing a real-time system Use interrupts to implement concurrency in the system Test, integrate, and debug the code Demonstrate test issues for OOP constructs Overcome software faults with hardware-based techniques ----------------------------------- Who this book is for If you are interested in developing a real-time embedded system, this is the ideal book for you. With a basic understanding of programming, microprocessor systems, and elementary digital logic, you will achieve the maximum with this book. Knowledge of assembly language would be an added advantage. ------------------------------ About the Author Jim Cooling started his career with the Royal Air Force as a system designer. After 12 years of service, he studied a BSc degree in Electrical and Electronic Engineering, then went to work with the British Aircraft Corporation and worked on naval electronic control systems. He spent his next 20 years in academic research at Loughborough University and also got his Ph.D. in real-time embedded systems. In 1998, Jim left the university to start his own company, Lindentree Associates. He has published 12 books on various subjects, such as Real-time Operating Systems and Modeling software with pictures.
Cover FM Copyright Table of Contents Preface Chapter 1: Real-Time Systems – Setting the Scene 1.1 Categorizing Computer Systems 1.2 Real-Time Computer Systems 1.2.1 Time and Criticality Issues 1.2.2 Real-Time System Structures 1.2.3 Characteristics of Embedded Systems 1.3 The Computing Elements of Real-Time Systems 1.3.1 Overview 1.3.2 General-Purpose Microprocessors 1.3.3 Highly Integrated Microprocessors 1.3.4 Single-Chip Microcomputers 1.3.5 Single-Chip Microcontrollers 1.3.6 Digital Signal Processors 1.3.7 Mixed-Signal Processors 1.3.8 System-On-Chip Designs – Overview 1.3.9 Programmable SOCs – FPGA-Embedded Processors 1.3.10 SOC Devices – Single and Multicore 1.4 Software for Real-Time Applications – Some General Comments 1.5 Review 1.6 Useful Reading Material Chapter 2: The Search for Dependable Software 2.1 What Do We Want in Our Software? 2.2 Software Errors 2.2.1 Overview 2.2.2 System Design Errors 2.2.3 Design and Coding Errors 2.2.4 Environmental Factors 2.2.5 Why Do We Get Poor Software? 2.2.6 Testing – How Useful? 2.3 The Basics of Good Software 2.3.1 General 2.3.2 Specification Correctness 2.3.3 Feasibility and Suitability 2.3.4 Modularization 2.3.5 Portability and Reusability 2.3.6 Error Avoidance and Defensive Programming – Robust Programs 2.3.7 Design Codes of Practice – Style, Clarity, and Documentation 2.4 A Final Comment 2.5 Review 2.6 References Chapter 3: First Steps – Requirements Analysis and Specification 3.1 The Software Life Cycle 3.1.1 Introduction 3.1.2 A Mythical Model of the Software Life Cycle 3.1.3 Bringing Realism to the Life Cycle 3.1.4 Requirements Issues – a Practical Approach 3.2 The Importance of the Requirements Stage 3.3 Making Mistakes – Sources and Causes 3.3.1 A General Comment 3.3.2 Problems in Formulating Specifications 3.3.3 Problems in Communicating Requirements 3.3.4 Problems in Understanding Requirements 3.4 Practical Approaches to Analysis and Specification 3.4.1 General Aspects 3.4.2 Tool Support and Automation 3.4.3 Viewpoint Analysis 3.4.4 Viewpoints – Analysis versus Specification 3.4.5 Use Case Analysis 3.4.6 Functional, Non-Functional, and Development Requirements Specifications 3.5 Communication Aspects – the Role of Prototyping 3.5.1 Prototyping – an Introduction 3.5.2 Software Prototyping 3.5.3 Requirements Prototyping 3.5.4 Practical Rapid Prototyping of System Requirements 3.5.5 Animation Prototyping – Concepts and Application 3.6 Review 3.7 Exercises 3.8 References and Further Reading Chapter 4: Software and Program Design Concepts 4.1 Design Fundamentals 4.1.1 The Design and Development Process – an Introduction 4.1.2 Fundamental Design Strategies 4.1.3 How to Generate Abysmal Software – the Good Kludge Guide 4.2 The Elements of Modular Design 4.2.1 Introduction 4.2.2 Modules and Modularization 4.2.3 Coupling – a Measure of Module Independence 4.2.4 Cohesion – a Measure of Module Binding 4.2.5 Size and Complexity 4.2.6 Some General Comments on Modules 4.3 Program Control Structures – the Influence of Structured Programming 4.3.1 Introductory Comments 4.3.2 Fundamental Control Structures 4.3.3 Uncontrolled Branching of Control – the Great GOTO Debate 4.4 Structured Software Designs 4.4.1 Background 4.4.2 Problem Decomposition Using Abstract Machines 4.4.3 Example Implementation 4.5 Object-Oriented Design 4.5.1 An Introduction 4.5.2 Object-Oriented Design – the Identification Process 4.5.3 Relationships and Communication between Objects 4.5.4 Object Interfaces 4.5.5 Object-Oriented Design – Implementation-Related Issues 4.5.6 Reuse and Runtime Flexibility Issues 4.5.7 Composite Objects – Aggregation 4.5.8 Devising the Object Model – a Responsibility-Based Technique 4.6 Functionally Structured Design and Functional Flow Modeling 4.6.1 Software Design and Structured Charts – Limitations 4.6.2 The Materials Flow Model of Software Processing 4.6.3 Software Design Using Functionally Structured Techniques 4.6.4. Organizing the Execution Sequence of the Software Machines 4.6.5 Functional Flow Design Using Graphical Techniques 4.7 Design Patterns 4.7.1 Introduction and Basic Concepts 4.7.2 Program-Level Patterns 4.7.3 System-Level Patterns for Real-Time Embedded Systems 4.8 Review 4.9 Exercises 4.10 Useful Reading Material Chapter 5: Multitasking Systems – an Introduction 5.1 The Task Model of Software 5.1.1 Modeling – What and Why 5.1.2 Modeling Executing Software – the Single-Task Structure 5.1.3 Multiple Tasks – Why? 5.1.4 Using Interrupts to Concurrent Task Operations 5.1.5 Introduction to the Operating System 5.2 Controlling Task Execution – Scheduling 5.2.1 Scheduling and Time Slicing Operations 5.2.2 Scheduling and Priority-Driven Operations 5.2.3 System Responsiveness and Mixed Scheduling Policies 5.3 Sharing Resources in Multitasking Systems 5.3.1 Problems with Sharing Resources 5.3.2 The Binary Semaphore 5.3.3 The General or Counting Semaphore 5.3.4 Semaphore Weaknesses 5.3.5 The Mutex 5.3.6 The Simple Monitor 5.4 Contention Problems in Multitasking Systems 5.4.1 Resource Contention and Deadlocks 5.4.2 The Priority Inversion Problem 5.4.3 The Priority Ceiling Protocol 5.5 Inter-task Communication 5.5.1 Introduction 5.5.2 Task Coordination and Synchronization without Data Transfer – General Aspects 5.5.3 Task Interaction without Data Transfer 5.5.4 Data Transfer without Task Synchronization or Coordination 5.5.5 Task Synchronization with Data Transfer 5.6 Review 5.7 Background Reading Material Chapter 6: Diagramming – an Introduction 6.1 Diagrams – Why? 6.1.1 Introduction 6.1.2 Diagrams as a Design Tool 6.1.3 Diagrams for Design Documentation 6.1.4 Diagrams for Maintenance 6.1.5 Diagrams for Communication 6.2 The Essentials of Software Diagrams 6.2.1 Fundamentals 6.2.2 Basic Qualities 6.2.3 Real-Time Systems Diagramming – Matching Ends to Needs 6.2.4 Practical Diagramming Techniques – a General Comment 6.3 Review 6.4 Exercises 6.5 References and Further Reading Chapter 7: Practical Diagramming Methods 7.1 Introduction 7.2 Diagrams for Functionally Structured Methods 7.2.1 Context Diagrams 7.2.2 Entity-Relationship Diagrams (ERDs) 7.2.3 State Transition Diagrams and State Transition Tables 7.2.4 Functional and Data Flow Diagrams 7.2.5 Specifying Program Structures – Structure Charts, Flowcharts, and Program Description Languages 7.2.6 Message Sequence Diagrams 7.2.7 SDL (Specification and Description Language) Process Diagrams 7.2.8 Event-Response Lists 7.3 UML Diagrams for Object-Oriented Designs 7.3.1 Use Case Diagrams 7.3.2 Deployment Diagrams 7.3.3 Packages and Package Diagrams 7.3.4 Class Diagrams 7.3.5 Object and Object Communication Diagrams 7.3.6 Wiring Objects Together – Ports and Interfaces 7.3.7 Statecharts 7.3.8 Sequence Diagrams 7.3.9 Activity Diagrams 7.3.10 Components and Component Diagrams 7.3.11 Artifacts 7.4 Extensions, Variations, and Project-Specific Diagrams 7.5 Diagrams and the Design Process 7.6 Review 7.7 Exercises 7.8 References and Further Reading Chapter 8: Designing and Constructing Software – Code-Related Issues 8.1 Fundamental Design and Construction Methods 8.1.1 Introduction 8.1.2 An Evaluation of Design and Construction Methods 8.2 Code Development and Packaging 8.2.1 Code Development and the Physical Software Model 8.2.2 Software Construction Methods – General 8.2.3 Introduction to Component Technology 8.2.4 Code Packaging and Components 8.2.5 Classes, Packages, and Artifacts 8.3 Important Features of Programming Languages 8.3.1 Introduction 8.3.2 Choosing a Programming Language – the Real Questions 8.3.3 High-Level Languages – General Requirements 8.3.4 Modularity, Encapsulation, and Information Hiding 8.3.5 Program Syntax and Layout Rules – the Readability Factor 8.3.6 Variable Usage – Scope, Visibility, Lifetime, and Declaration. 8.3.7 Data Types – Concepts and Uses 8.3.8 Program Flow Control 8.3.9 Interfacing to Other Languages 8.3.10 Exception Handling 8.3.11 Accessing Processor Hardware – Low-Level Facilities 8.3.12 Assembly Language Programming 8.3.13 Miscellaneous Items 8.4 Choosing a High-Level Language for Embedded Systems 8.4.1 Basic Requirements 8.4.2 Assessed Languages – Background 8.4.3 Assessed Languages – Comparison and Comment 8.4.4 Python and MicroPython 8.5 Review 8.6 Important and Useful Reading Chapter 9: Software Analysis and Design – Methods and Methodologies 9.1 The Development Process 9.1.1 General Description 9.1.2 Methods, Methodologies, and Tools 9.2 Viewpoint Analysis for Deriving Requirements 9.2.1 Viewpoint Analysis and CORE 9.2.2 CORE Fundamentals 9.2.3 Detailed Aspects and Notation 9.2.4 Design Example – Steam Propulsion System 9.2.5 A Comment on Analysis Tools 9.3. Design Implementation Using Functionally Structured Techniques 9.3.1 Overview of the Design Process 9.3.2 Developing the Ideal Model 9.3.3 Developing the Practical Model 9.4 Object-Oriented Analysis and Design 9.4.1 Design Example – Dipmeter Wireline Logging Tool 9.4.2 A Practical OOAD Development Process 9.4.3 Defining System Usage 9.4.4 Developing the Subsystem Structures 9.4.5 Developing the Ideal Model Object Structures 9.4.6 Developing the Specification Model Object Structures 9.4.7 Developing the Individual Processor Object Models 9.4.8 Developing the Multitasking Model 9.4.9 Developing Individual Tasks 9.4.10 Packaging the Software 9.5 Model-Driven Architecture 9.5.1 Fundamental Concepts 9.5.2 The PIM in Detail 9.5.3 Example Structural Model – from PIM to PSM to Code 9.5.4 Closing Comments 9.6 Model-Based Design (MBD) 9.6.1 MBD versus MDA 9.6.2 MBD – an Overview 9.6.3 Applying the MBD Process – a Brief Outline 9.7 Agile Software Development 9.7.1 Introduction and Basic Concepts 9.7.2 Agile Methods for Embedded Applications – the Interface Issue 9.7.3 The Issue of Project Development Methods – Agile versus Embedded 9.7.4 Practical Incremental Development Methods for Embedded Systems 9.8 Review 9.9 Further Useful Reading Chapter 10: Analyzing and Testing Source Code 10.1 Introduction 10.1.1 General Concepts 10.1.2 Software Evaluation Issues 10.1.3 Software Testing – the Broader Issues 10.2 Static Analysis 10.2.1 Introduction 10.2.2 Manual Static Analysis Methods 10.2.3 Automated Static Analysis Methods 10.3 Source Code Metrics – Code Size, Content, and Complexity 10.3.1 General 10.3.2 Halstead Software Metrics 10.3.3 The McCabe Cyclomatic Complexity Metric 10.4 Dynamic Analysis – Testing and Coverage Analysis 10.4.1 Overview of Dynamic Testing 10.4.2 Dynamic Testing in a Manual Environment 10.4.3 Dynamic Testing in an Automated Environment 10.4.4. Coverage Analysis 10.4.5. Practical Automated Dynamic Analysis 10.5 Integration Testing 10.5.1 Fundamentals 10.5.2 Integration and Test Strategies (1) – Combined Module and Integration Testing 10.5.3 Integration and Test Strategies (2) – Integration Testing Based on Unit Calls 10.5.4 Integration Complexity 10.6 Metrics for OO Designs 10.6.1 General Aspects 10.6.2 Inheritance, Polymorphism, and Testing Issues 10.7 Review 10.8 Further Reading Chapter 11: Development Tools 11.1 An Outline of the Modern Development Process for Embedded Systems 11.2 The Software Development Process for Embedded Systems 11.2.1 The Software Production Cycle 11.2.2 Programming the Target Microcontroller 11.2.3 Simplifying the Process – Processor Configuration Tools 11.2.4 Finding and Fixing Software Problems 11.2.5 The Basics of Efficient Development Processes 11.3 Software Debugging – What and Why? 11.3.1 Debugging – Fundamental Concepts 11.3.2 Debugger – Basic Requirements and Operation 11.3.3 Development and Debugging Environments 11.4 Software Debugging on the Host 11.4.1 Host System Debugging – a Broad Overview 11.4.2 The Pros and Cons of Host System Debugging 11.5 Software Debugging on the Target – Software-Based Techniques 11.5.1 General 11.5.2 A Simple Monitor Program 11.5.3 In-Target Source-Level Debugging 11.5.4 The Last Comment 11.6 Software Debugging in the Target – Hardware-Based Methods 11.6.1 Introduction 11.6.2 A Basic Test Tool – the Bus Monitor 11.6.3 The Logic Analyzer 11.6.4 The In-Circuit Emulator 11.7 Software Debugging in The Target – Combined Hardware/Software Techniques 11.7.1 Host/Target Interactive Debugging – Software Tracing 11.7.2 On-Chip Debugging Methods – Overview 11.7.3 Simple Static On-Chip Debugging Methods 11.7.4 Dynamic OCD Schemes 11.8 Debugging in Host-As-Target Combinations 11.8.1 Background 11.8.2 PC-Based Targets – The Embedded PC 11.8.3 A PC as a Target 11.9 Testing Multitasking Software 11.9.1 Basic Issues 11.9.2 Practical Tool Aspects 11.10 Installing Code on the Target – Non-Volatile Software (Firmware) 11.10.1 Overview 11.10.2 The PROM Programmer 11.10.3 EPROM Emulators 11.10.4 In-Circuit Programming 11.11 Integrated Development Toolsets 11.11.1 Backend Toolsets 11.11.2 Fully Integrated Real-Time Development Environments 11.12 Review Chapter 12: Mission-Critical and Safety-Critical Systems 12.1 Introduction 12.1.1 Overview of Critical Systems 12.1.2 How Critical is Critical? 12.1.3 Improving System Reliability and Availability – General Strategies 12.2 System Specification Aspects 12.2.1 The Specification Problem – Again 12.2.2 Why Mathematics? 12.2.3 Formal Methods – General Concepts 12.2.4 Formal Specification Languages 12.2.5 An Example Formal Specification Using VDM 12.3 Numerical Issues 12.3.1 Problems in Disguise 12.3.2 Making Measurements 12.3.3 Basic Number Representation and Arithmetic 12.3.4 The Limitations of Finite Number Systems – General Points 12.3.5 Infinite Numbers, Model Numbers, and Error Bounds 12.3.6 Problems in Floating-Point Working 12.3.7 Problems in Fixed-Point Working 12.3.8 Internal Representation and Binary Notation 12.4 Application Software Aspects 12.4.1 Basic Design and Programming Issues (or Doing It Right in the First Place) 12.4.2 Dealing with Runtime Problems 12.5 Real-World Interfacing 12.5.1 Background 12.5.2 Fault Types and Identification – Inputs 12.5.3 Fault Detection Methods – Inputs 12.5.4 Fault Handling – Outputs 12.6 Operating Systems Aspects 12.6.1 General 12.6.2 Protection Techniques 12.6.3 Tasking Models and Scheduling 12.6.4 Operating Systems and Critical Distributed Applications 12.7 Processor Problems 12.7.1 Overview 12.7.2 Power-On Aspects 12.7.3 Runtime Issues 12.8 Hardware-Based Fault Tolerance 12.8.1 General Aspects 12.8.2 Fault-Tolerant Structures 12.8.3 Matching Structures to Requirements 12.9 Review 12.10 References and Further Reading 12.11 Some Important Standards Chapter 13: Performance Engineering 13.1 Why Performance Engineering Is Important 13.1.1 Time as a Design Driver 13.1.2 Ignore Performance at Your Peril – Reactive versus Proactive Techniques 13.2 Performance Engineering – Requirements, Targets, and Achievables 13.3 Top-Down (Requirements-Driven) Performance Modeling 13.3.1 Specifying Targets – the Project-Management Analogy 13.3.2 Performance Targets and Time Budgeting in Real-Time Systems 13.4 Bottom-Up (Results-Driven) Performance Modeling 13.5 Middle-Out (Risk-Driven) Performance Modeling 13.6 Some Practical Issues in Performance Engineering 13.6.1 A General Comment 13.6.2 Modeling and Simulation Options 13.7 Review 13.8 References and Further Reading Chapter 14: Documentation 14.1 Documentation – What and Why? 14.1.1 The Role of Documentation 14.1.2 Documentation – Its Structure 14.1.3 A Model for System Documentation 14.2 Software Life Cycle Documentation – Overview 14.3 System Functional Specifications 14.3.1 Overview 14.3.2 Block Diagram Description 14.3.3 Functional Diagram Description 14.3.4 Requirements Specification 14.4 Software System Specifications 14.5 Source Code Aspects 14.5.1 Source Code Documentation – a Philosophy 14.5.2 Source Code Documentation – Practice 14.5.3 Source Code Review Documentation 14.6 Configuration Management and Version Control 14.6.1 General Aspects 14.6.2 More on Source Code Version Control 14.7 Review 14.8 Further Information Glossary of terms Index