Software Engineering - Architecture-Driven Software Development

This book is the first comprehensive guide to the underlying skills embodied in the IEEE's Software Engineering Body of Knowledge (SWEBOK) standard. The author explains the traditional software engineering practices recognized for developing projects for government or corporate systems. Softwar...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
1. Verfasser: Schmidt, Richard F.
Format: E-Book Buch
Sprache:Englisch
Veröffentlicht: Waltham, Mass Elsevier 2013
Morgan Kaufmann, an imprint of Elsevier
Elsevier Science & Technology
Morgan Kaufmann
Ausgabe:1
Schlagworte:
ISBN:9780124077683, 0124077684, 9780124078789, 0124078788
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Inhaltsangabe:
  • Title Page A Note from the Author Preface Table of Contents Section 1. Software Engineering Fundamentals 1. Introduction to Software Engineering 2. Generic Software Development Framework 3. Software Architecture 4. Understanding the Software Project Environment 5. Software Integrated Product and Process Development 6. Impediments to Software Design Section 2. Software Engineering Practices 7. Understanding Software Requirements 8. Software Requirements Analysis Practice 9. Software Requirements Management 10. Formulating the Functional Architecture 11. Functional Analysis and Allocation Practice 12. Configuring the Physical Architecture 13. Software Design Synthesis Practice 14. Software Analysis Practice 15. Software Verification and Validation Practice 16. Software Control Practice Section 3. Stages of Software Engineering Application 17. Software Requirements Definition 18. Software Architecture Definition 19. Software Implementation 20. Software Acceptance Testing Index
  • 8.2.4 Identify external interfaces -- 8.3 Product analysis tasks -- 8.3.1 Identify modes of operation -- 8.3.2 Identify functional behaviors -- 8.3.3 Identify resource utilization needs -- 8.3.4 Identify data processing conditional logic -- 8.3.5 Identify data persistence needs -- 8.3.6 Identify data security needs -- 8.3.7 Identify data storage transactions -- 8.3.8 Identify measures of performance -- 8.4 Sustainment analysis tasks -- 8.4.1 Identify post-development process operational concepts -- 8.4.2 Identify post-development process operational scenarios -- 8.4.3 Identify post-development process characteristics -- 8.4.4 Identify architectural guidelines and principles -- 8.5 Project assessment tasks -- 8.5.1 Assess requirements sensitivity -- 8.5.2 Identify the software test strategy -- 8.5.3 Assess proposed changes -- 8.5.4 Assess project feasibility -- 8.6 Establish the requirements baseline -- 9 Software Requirements Management -- 9.1 Embracing change -- 9.1.1 Time is a valuable resource -- 9.1.2 Change impact analysis -- 9.1.3 Adjusting project milestones -- 9.2 Specifying requirements -- 9.3 Requirement decomposition and allocation -- 9.3.1 Functional analysis -- 9.3.2 Performance allocation -- 9.3.3 Structural unit synthesis -- 9.3.4 Structural component synthesis -- 9.4 Requirement traceability -- 9.4.1 Change control -- 9.4.2 Configuration audits -- 10 Formulating the Functional Architecture -- 10.1 Motivation for the functional architecture -- 10.2 Functional architecture ontology -- 10.2.1 Functional component -- 10.2.2 Functional unit -- 10.2.3 Data item -- 10.2.4 Functional interface -- 10.2.5 External interface -- 10.2.6 Control structures -- 10.2.7 Resource -- 10.2.8 Data Store -- 10.3 Conceiving the functional architecture -- 10.4 Documenting the functional architecture -- 10.4.1 Functional hierarchy -- 10.4.2 Behavior model
  • 13.1.1 Establish software architectural design guidelines
  • 2.2.7 Acceptance testing stage -- 2.2.7.1 Functional configuration audit -- 2.2.7.2 Physical configuration audit -- 2.2.7.3 Deployment qualification review -- 2.2.7.4 Training qualification review -- 2.2.7.5 Sustainment qualification review -- 2.2.7.6 Deployment readiness review -- 2.3 Summary -- 3 Software Architecture -- 3.1 Stakeholder needs relationships and dependencies -- 3.2 Software requirements baseline relationships and dependencies -- 3.3 Computing environment relationships and dependencies -- 3.4 Test and evaluation relationships and dependencies -- 3.5 Functional architecture relationships and dependencies -- 3.6 Physical architecture relationships and dependencies -- 3.7 Post-development process relationships and dependencies -- 3.8 Motivation for the software architecture -- 4 Understanding the Software Project Environment -- 4.1 Integrated product teams -- 4.2 Software architecture -- 4.3 Complexity control mechanisms -- 4.3.1 Work breakdown structure -- 4.3.2 Product breakdown structure -- 4.3.3 Specification tree -- 4.3.4 Documentation tree -- 4.3.5 Software product baselines -- 4.3.6 Requirements traceability guidelines -- 4.3.7 Trade-off analysis -- 4.3.8 Software complexity measures -- 4.4 Software nomenclature registry -- 4.5 Software integration strategy -- 4.6 Project and technical planning -- 4.6.1 Technical organization plans -- 4.6.2 Project plans -- 5 Software Integrated Product and Process Development -- 5.1 Application of IPPD to software -- 5.1.1 Customer focus -- 5.1.2 Concurrent development of products and processes -- 5.1.3 Early and continuous life-cycle planning -- 5.1.4 Maximize flexibility for optimization and use of contractor unique approaches -- 5.1.5 Encourage robust design and improved process capability -- 5.1.6 Event-driven scheduling -- 5.1.7 Multidisciplinary teamwork -- 5.1.8 Empowerment
  • 5.1.9 Seamless management tools -- 5.1.10 Proactive identification and management of risk -- 5.2 Software engineering and development -- 6 Impediments to Software Design -- 6.1 Software as a raw material -- 6.2 Evolution of software technologies -- 6.2.1 Software development methods and standards -- 6.2.2 Agile manifesto -- 6.3 Architecture-driven software development -- 2 Software Engineering Practices -- Developing the software product architecture -- Software architectural approaches -- Iterative software engineering application -- 7 Understanding Software Requirements -- 7.1 Step 1: Soliciting stakeholder needs and expectations -- 7.2 Step 2: Requirement analysis and specification -- 7.2.1 Balancing and deconflicting stakeholder needs -- 7.2.2 Maintaining the scope of the project -- 7.2.2.1 Cost associated with implementing the complete set of software requirements -- 7.2.2.2 Cost associated with testing the software product -- 7.2.2.3 Cost associated with defining and establishing the post-development processes -- 7.2.2.4 Software development timeline and task dependencies -- 7.2.3 The availability of experienced software personnel -- 7.3 Step 3: Task definition and scheduling -- 7.4 Step 4: Resource identification, estimation, and allocation -- 7.5 Step 5: Establish organizational work packages -- 7.6 Step 6: Technical planning -- 7.7 Step 7: Project planning -- 7.8 Exploring stakeholder needs -- 8 Software Requirements Analysis Practice -- 8.1 Project analysis tasks -- 8.1.1 Analyze project goals and objectives -- 8.1.2 Identify development success criteria -- 8.1.3 Solicit stakeholder needs and expectations -- 8.1.4 Prioritize stakeholder needs -- 8.2 Operational analysis tasks -- 8.2.1 Identify operational concepts -- 8.2.2 Identify operational scenarios -- 8.2.3 Identify the computing environment characteristics
  • Front Cover -- Software Engineering -- Copyright Page -- Contents -- A Note from the Author -- Preface -- Book outline and subject matter -- 1 Software Engineering Fundamentals -- Systems engineering principles and practices -- Summary -- 1 Introduction to Software Engineering -- 1.1 Specifying software requirements -- 1.2 Software architecture -- 1.3 Integrated product and process development -- 1.4 Integrated product teams -- 1.5 Work breakdown structure -- 1.6 Software breakdown structure -- 1.7 Specification and documentation trees -- 1.8 Integrated master plan and schedule -- 1.9 Reviews and audits -- 1.10 Configuration management and change control -- 1.11 Trade-off analysis -- 1.12 Risk management -- 1.13 Modeling and simulation -- 2 Generic Software Development Framework -- 2.1 Software breakdown structure -- 2.2 Software development process -- 2.2.1 Requirements definition stage -- 2.2.1.1 Product requirements review -- 2.2.1.2 Software requirements review -- 2.2.2 Preliminary architecture definition stage -- 2.2.2.1 Preliminary architecture review -- 2.2.2.2 Deployment strategy review -- 2.2.2.3 Training strategy review -- 2.2.2.4 Sustainment strategy review -- 2.2.2.5 Preliminary design review -- 2.2.3 Critical architecture definition stage -- 2.2.3.1 Detailed architecture review -- 2.2.3.2 Deployment design review -- 2.2.3.3 Training design review -- 2.2.3.4 Sustainment design review -- 2.2.3.5 Critical design review -- 2.2.4 Software unit code and testing stage -- 2.2.4.1 Unit design review (peer evaluation) -- 2.2.4.2 Unit qualification review (peer evaluation) -- 2.2.5 Software component integration and testing stage -- 2.2.5.1 Integration readiness review (peer evaluation) -- 2.2.5.2 Product testing readiness review -- 2.2.6 Product testing stage -- 2.2.6.1 Acceptance testing readiness review -- 2.2.6.2 Testing readiness review
  • 10.4.3 Functional timeline -- 10.4.4 Resource utilization profile -- 10.4.5 Functional specifications -- 10.4.6 Requirement allocation sheet -- 11 Functional Analysis and Allocation Practice -- 11.1 Assess functional complexity -- 11.2 Behavioral analysis -- 11.2.1 Identify functional scenarios -- 11.2.2 Identify functional sequences -- 11.2.3 Identify data flows -- 11.2.4 Identify control behaviors -- 11.2.5 Identify data processing procedures -- 11.2.6 Identify resource prerequisites -- 11.2.7 Identify failure conditions -- 11.2.8 Identify systems monitoring procedures -- 11.2.9 Identify data retention capacity requirements -- 11.2.10 Identify data security procedures -- 11.2.11 Identify data persistence and retention functions -- 11.3 Performance allocation -- 11.3.1 Allocate performance budgets -- 11.3.2 Allocate resource budgets -- 11.4 Architectural assessment -- 11.4.1 Assess requirement fulfillment -- 11.4.2 Assess software performance -- 11.4.3 Assess architectural complexity -- 11.4.4 Assess optimization opportunities -- 11.5 Establish the functional architecture -- 12 Configuring the Physical Architecture -- 12.1 Structural design solution -- 12.1.1 Designating structural units -- 12.1.2 Prepare structural unit specifications -- 12.1.3 Establishing the software integration strategy -- 12.1.4 Designating engineering assemblages -- 12.1.5 Preparing the software technical data package -- 12.2 Structural design considerations -- 12.2.1 Structural design guidelines -- 12.2.2 Use of modeling and simulation -- 12.2.3 Behavioral analysis -- 12.2.4 Structural trade-off analysis -- 12.2.5 Software product performance evaluations -- 12.2.5.1 Design responsiveness -- 12.2.5.2 Design dependability -- 12.2.5.3 Resource utilization -- 12.2.6 Software prototyping -- 13 Software Design Synthesis Practice -- 13.1 Design conceptualization