Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Software engineering
Nội dung xem thử
Mô tả chi tiết
Software Engineering
This page intentionally left blank
Software Engineering
Architecture-Driven
Software Development
Richard F. Schmidt
AMSTERDAM • BOSTON • HEIDELBERG • LONDON
NEW YORK • OXFORD • PARIS • SAN DIEGO
SAN FRANCISCO • SINGAPORE • SYDNEY • TOKYO
Morgan Kaufmann is an imprint of Elsevier
Acquiring Editor: Todd Green
Editorial Project Manager: Lindsay Lawrence
Project Manager: Priya Kumaraguruparan
Designer: Mark Rogers
Morgan Kaufmann is an imprint of Elsevier
225 Wyman Street, Waltham, MA, 02451, USA
Copyright © 2013 Published by Elsevier Inc. All rights reserved
No part of this publication may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording, or any information storage and
retrieval system, without permission in writing from the publisher. Details on how to seek
permission, further information about the Publisher’s permissions policies and our
arrangements with organizations such as the Copyright Clearance Center and the
Copyright Licensing Agency, can be found at our website: www.elsevier.com/permissions.
This book and the individual contributions contained in it are protected under copyright by the
Publisher (other than as may be noted herein).
Notices
Knowledge and best practice in this field are constantly changing. As new research and experience
broaden our understanding, changes in research methods or professional practices, may become
necessary. Practitioners and researchers must always rely on their own experience and knowledge in
evaluating and using any information or methods described herein. In using such information or
methods they should be mindful of their own safety and the safety of others, including parties for
whom they have a professional responsibility.
To the fullest extent of the law, neither the Publisher nor the authors, contributors, or editors,
assume any liability for any injury and/or damage to persons or property as a matter of products
liability, negligence or otherwise, or from any use or operation of any methods, products,
instructions, or ideas contained in the material herein.
Library of Congress Cataloging-in-Publication Data
Schmidt, Richard, 1956-
Software engineering: architecture-driven software development / Richard Schmidt.
pages cm
Includes bibliographical references and index.
ISBN 978-0-12-407768-3
1. Software engineering. 2. Software architecture. 3. Computer software—Development. I. Title.
QA76.758.S364 2013
005.1—dc23 2013000589
British Library Cataloguing-in-Publication Data
A catalogue record for this book is available from the British Library
Printed in the United States of America
13 14 15 16 17 10 9 8 7 6 5 4 3 2 1
For information on all MK publications visit our website at www.mkp.com
v
Contents
A Note from the Author...........................................................................................xv
Preface....................................................................................................................xvii
SECTION 1 SOFTWARE ENGINEERING FUNDAMENTALS
CHAPTER 1 Introduction to Software Engineering..............................7
1.1 Specifying software requirements..............................................10
1.2 Software architecture..................................................................11
1.3 Integrated product and process development .............................12
1.4 Integrated product teams............................................................13
1.5 Work breakdown structure .........................................................15
1.6 Software breakdown structure....................................................15
1.7 Specification and documentation trees.......................................17
1.8 Integrated master plan and schedule ..........................................17
1.9 Reviews and audits.....................................................................18
1.10 Configuration management and change control.........................20
1.11 Trade-off analysis.......................................................................22
1.12 Risk management .......................................................................24
1.13 Modeling and simulation............................................................24
CHAPTER 2 Generic Software Development Framework.................29
2.1 Software breakdown structure ....................................................31
2.2 Software development process ...................................................34
2.2.1 Requirements definition stage ...........................................35
2.2.2 Preliminary architecture definition stage...........................36
2.2.3 Critical architecture definition stage..................................37
2.2.4 Software unit code and testing stage .................................38
2.2.5 Software component integration and testing stage ............39
2.2.6 Product testing stage..........................................................39
2.2.7 Acceptance testing stage....................................................40
2.3 Summary.....................................................................................41
CHAPTER 3 Software Architecture ............................................... 43
3.1 Stakeholder needs relationships and dependencies ....................46
3.2 Software requirements baseline relationships and
dependencies...............................................................................48
3.3 Computing environment relationships and dependencies...........49
3.4 Test and evaluation relationships and dependencies...................49
3.5 Functional architecture relationships and dependencies.............50
vi Contents
3.6 Physical architecture relationships and dependencies................51
3.7 Post-development process relationships and dependencies........51
3.8 Motivation for the software architecture.....................................52
CHAPTER 4 Understanding the Software Project Environment.....55
4.1 Integrated product teams.............................................................60
4.2 Software architecture ..................................................................61
4.3 Complexity control mechanisms ................................................63
4.3.1 Work breakdown structure...............................................63
4.3.2 Product breakdown structure ...........................................64
4.3.3 Specification tree .............................................................65
4.3.4 Documentation tree .........................................................65
4.3.5 Software product baselines..............................................65
4.3.6 Requirements traceability guidelines ..............................67
4.3.7 Trade-off analysis............................................................68
4.3.8 Software complexity measures........................................70
4.4 Software nomenclature registry..................................................74
4.5 Software integration strategy ......................................................74
4.6 Project and technical planning....................................................75
4.6.1 Technical organization plans...........................................75
4.6.2 Project plans ....................................................................77
CHAPTER 5 Software Integrated Product and Process
Development...........................................................................79
5.1 Application of IPPD to software.................................................82
5.1.1 Customer focus................................................................84
5.1.2 Concurrent development of products and processes .......84
5.1.3 Early and continuous life-cycle planning ........................86
5.1.4 Maximize flexibility for optimization and use
of contractor unique approaches......................................87
5.1.5 Encourage robust design and improved
process capability ............................................................88
5.1.6 Event-driven scheduling ..................................................88
5.1.7 Multidisciplinary teamwork ............................................88
5.1.8 Empowerment..................................................................88
5.1.9 Seamless management tools............................................89
5.1.10 Proactive identification and management of risk.............89
5.2 Software engineering and development......................................89
CHAPTER 6 Impediments to Software Design.....................................93
6.1 Software as a raw material..........................................................95
6.2 Evolution of software technologies ............................................98
Contents vii
6.2.1 Software development methods and standards................101
6.2.2 Agile manifesto ...............................................................105
6.3 Architecture-driven software development...............................108
SECTION 2 SOFTWARE ENGINEERING PRACTICES
CHAPTER 7 Understanding Software Requirements.......................121
7.1 Step 1: Soliciting stakeholder needs and expectations .............124
7.2 Step 2: Requirement analysis and specification........................127
7.2.1 Balancing and deconflicting stakeholder needs...............129
7.2.2 Maintaining the scope of the project ...............................129
7.2.3 The availability of experienced software personnel ........132
7.3 Step 3: Task definition and scheduling .....................................132
7.4 Step 4: Resource identification, estimation, and allocation......133
7.5 Step 5: Establish organizational work packages.......................133
7.6 Step 6: Technical planning........................................................133
7.7 Step 7: Project planning............................................................134
7.8 Exploring stakeholder needs.....................................................135
CHAPTER 8 Software Requirements Analysis Practice.................139
8.1 Project analysis tasks................................................................140
8.1.1 Analyze project goals and objectives ..............................141
8.1.2 Identify development success criteria..............................142
8.1.3 Solicit stakeholder needs and expectations .....................142
8.1.4 Prioritize stakeholder needs.............................................144
8.2 Operational analysis tasks.........................................................144
8.2.1 Identify operational concepts ..........................................145
8.2.2 Identify operational scenarios..........................................145
8.2.3 Identify the computing environment characteristics........146
8.2.4 Identify external interfaces..............................................147
8.3 Product analysis tasks...............................................................147
8.3.1 Identify modes of operation.............................................148
8.3.2 Identify functional behaviors...........................................148
8.3.3 Identify resource utilization needs...................................150
8.3.4 Identify data processing conditional logic.......................150
8.3.5 Identify data persistence needs........................................151
8.3.6 Identify data security needs.............................................151
8.3.7 Identify data storage transactions....................................152
8.3.8 Identify measures of performance ...................................152
8.4 Sustainment analysis tasks........................................................152
8.4.1 Identify post-development process
operational concepts........................................................152
viii Contents
8.4.2 Identify post-development process
operational scenarios.....................................................153
8.4.3 Identify post-development process characteristics........153
8.4.4 Identify architectural guidelines and principles ............154
8.5 Project assessment tasks...........................................................155
8.5.1 Assess requirements sensitivity.....................................155
8.5.2 Identify the software test strategy..................................155
8.5.3 Assess proposed changes...............................................156
8.5.4 Assess project feasibility ...............................................157
8.6 Establish the requirements baseline..........................................157
CHAPTER 9 Software Requirements Management........................159
9.1 Embracing change ....................................................................160
9.1.1 Time is a valuable resource ...........................................160
9.1.2 Change impact analysis.................................................162
9.1.3 Adjusting project milestones.........................................164
9.2 Specifying requirements...........................................................166
9.3 Requirements decomposition and allocation............................168
9.3.1 Functional analysis........................................................169
9.3.2 Performance allocation..................................................169
9.3.3 Structural unit synthesis ................................................170
9.3.4 Structural component synthesis.....................................170
9.4 Requirements traceability .........................................................170
9.4.1 Change control...............................................................171
9.4.2 Configuration audits ......................................................172
CHAPTER 10 Formulating the Functional Architecture ..................173
10.1 Motivation for the functional architecture ................................174
10.2 Functional architecture ontology ..............................................176
10.2.1 Functional component ...................................................176
10.2.2 Functional unit...............................................................177
10.2.3 Data item .......................................................................177
10.2.4 Functional interface .......................................................177
10.2.5 External interface...........................................................178
10.2.6 Control structures ..........................................................178
10.2.7 Resource ........................................................................178
10.2.8 Data store.......................................................................179
10.3 Conceiving the functional architecture .....................................179
10.4 Documenting the functional architecture..................................181
10.4.1 Functional hierarchy......................................................181
10.4.2 Behavior model..............................................................182
10.4.3 Functional timeline........................................................183
Contents ix
10.4.4 Resource utilization profile..........................................183
10.4.5 Functional specifications.............................................184
10.4.6 Requirements allocation sheet.....................................184
CHAPTER 11 Functional Analysis and Allocation Practice ..........185
11.1 Assess functional complexity ...................................................187
11.2 Behavioral analysis...................................................................189
11.2.1 Identify functional scenarios .......................................190
11.2.2 Identify functional sequences......................................190
11.2.3 Identify data flows.......................................................191
11.2.4 Identify control behaviors............................................192
11.2.5 Identify data processing procedures............................193
11.2.6 Identify resource prerequisites ....................................194
11.2.7 Identify failure conditions ...........................................194
11.2.8 Identify systems monitoring procedures .....................196
11.2.9 Identify data retention capacity requirements .............197
11.2.10 Identify data security procedures.................................197
11.2.11 Identify data persistence and retention functions........197
11.3 Performance allocation .............................................................198
11.3.1 Allocate performance budgets.....................................199
11.3.2 Allocate resource budgets............................................199
11.4 Architectural assessment ..........................................................200
11.4.1 Assess requirements fulfillment ..................................200
11.4.2 Assess software performance ......................................200
11.4.3 Assess architectural complexity ..................................200
11.4.4 Assess optimization opportunities...............................200
11.5 Establish the functional architecture.........................................200
CHAPTER 12 Configuring the Physical Architecture.......................203
12.1 Structural design solution .........................................................205
12.1.1 Designating structural units.........................................207
12.1.2 Prepare structural unit specifications...........................209
12.1.3 Establishing the software integration strategy.............209
12.1.4 Designating engineering assemblages.........................211
12.1.5 Preparing the software technical data package............211
12.2 Structural design considerations...............................................211
12.2.1 Structural design guidelines ........................................211
12.2.2 Use of modeling and simulation..................................215
12.2.3 Behavioral analysis......................................................216
12.2.4 Structural trade-off analysis.........................................217
12.2.5 Software product performance evaluations.................217
12.2.6 Software prototyping ...................................................222
x Contents
CHAPTER 13 Software Design Synthesis Practice ............................227
13.1 Design conceptualization..........................................................230
13.1.1 Establish software architectural design guidelines........230
13.1.2 Identify abstract structural components.........................233
13.1.3 Identify abstract user interface mechanisms..................233
13.2 Design resolution......................................................................235
13.2.1 Identify fundamental structural elements......................235
13.2.2 Identify integrating components....................................236
13.2.3 Assess software reuse opportunities..............................236
13.3 Design correlation.....................................................................238
13.3.1 Establish performance benchmarks...............................238
13.3.2 Identify structural design deficiencies...........................239
13.3.3 Assess architectural alternatives....................................240
13.3.4 Assess software implementation challenges..................241
13.3.5 Assess software sustainment challenges........................242
13.3.6 Assess architectural integrity.........................................242
13.4 Design manifestation ................................................................244
13.4.1 Establish the structural design configuration.................244
13.4.2 Specify structural configuration elements.....................244
13.4.3 Identify engineering assemblages..................................244
13.5 Prepare the software technical data package ............................244
CHAPTER 14 Software Analysis Practice .............................................247
14.1 Defining the trade study............................................................250
14.1.1 Establish the trade-study scope .....................................250
14.1.2 Identify the candidate alternatives.................................250
14.1.3 Establish the success criteria .........................................251
14.2 Establish the trade-study environment......................................251
14.2.1 Assemble the experimental mechanisms.......................252
14.2.2 Assemble the data collection and analysis mechanisms.... 253
14.2.3 Establish trade-study procedures...................................255
14.3 Conduct the analysis.................................................................255
14.3.1 Evaluate requirements alternatives................................256
14.3.2 Evaluate functional alternatives.....................................256
14.3.3 Evaluate structural alternatives......................................257
14.4 Assess project repercussions.....................................................258
14.4.1 Assess developmental implications...............................258
14.4.2 Assess project implications ...........................................258
14.4.3 Identify project execution strategies..............................259
14.5 Evaluate trade-study results......................................................259
14.5.1 Prioritize architectural alternatives................................259
Contents xi
14.5.2 Determine the preferred course of action ......................260
14.5.3 Document the trade-study decision ...............................261
14.5.4 Promote the execution strategy......................................261
CHAPTER 15 Software Verification and Validation
Practice..................................................................................263
15.1 Define the V&V strategy ..........................................................265
15.1.1 Establish V&V scope.....................................................266
15.1.2 Establish V&V methods................................................270
15.1.3 Establish V&V procedures............................................270
15.2 Verify the software architecture................................................271
15.2.1 Verify the requirements baseline ...................................271
15.2.2 Verify the functional architecture ..................................271
15.2.3 Verify the physical architecture .....................................271
15.2.4 Verify the software implementation ..............................272
15.3 Validate the physical architecture .............................................272
15.3.1 Validate the structural configuration..............................272
15.3.2 Validate the integrated software configuration ..............272
15.4 Document V&V results.............................................................273
CHAPTER 16 Software Control Practice................................................275
16.1 Configuration administration....................................................277
16.1.1 Identify architectural elements......................................277
16.1.2 Maintain architectural status..........................................278
16.2 Process engineering change packages......................................279
16.2.1 Record engineering change requests and
proposals........................................................................279
16.2.2 Prepare change evaluation packages .............................279
16.3 Change evaluation.....................................................................281
16.3.1 Assess change technical merits .....................................281
16.3.2 Assess architectural consequences................................282
16.3.3 Assess technical work package consequences...............282
16.3.4 Assess technical plan consequences..............................283
16.4 Change assimilation..................................................................283
16.4.1 Publish change notification package .............................283
16.4.2 Audit the architectural change progress........................284
16.4.3 Appraise the project situation........................................284
16.5 Software repository control ......................................................284
16.5.1 Maintain engineering artifact repository .......................285
16.5.2 Maintain change history repository...............................285
16.5.3 Maintain technical risk repository.................................285
xii Contents
SECTION 3 STAGES OF SOFTWARE ENGINEERING
APPLICATION
CHAPTER 17 Software Requirements Definition.................................291
17.1 Products of software requirements definition ...........................292
17.2 Software engineering integrated product team
(software requirements definition stage)...................................295
17.3 Software implementation (software requirements
definition stage) ........................................................................298
17.4 Computing environment preparation
(software requirements definition stage)...................................299
17.5 Post-development process implementation
(software requirements definition stage)...................................299
17.6 Software test and evaluation (software
requirements definition stage)...................................................300
17.7 Reviews, milestones, and baselines (software
requirements definition stage)...................................................301
CHAPTER 18 Software Architecture Definition ...................................305
18.1 Preliminary architecture definition ...........................................307
18.1.1 Products of preliminary architecture definition.............307
18.1.2 Software engineering integrated product team
(preliminary architecture definition stage) ....................309
18.1.3 Software implementation preparation
(preliminary architecture definition stage) ....................311
18.1.4 Computing environment (preliminary architecture
definition stage) .............................................................311
18.1.5 Post-development process preparation
(preliminary architecture definition stage) ....................312
18.1.6 Software test and evaluation (preliminary architecture
definition stage) .............................................................312
18.1.7 Reviews and milestones (preliminary
architecture definition stage) .........................................314
18.2 Detailed architecture definition.................................................315
18.2.1 Products of detailed architecture definition...................315
18.2.2 Software engineering integrated product team
(detailed architecture definition stage) ..........................317
18.2.3 Software implementation (detailed architecture
definition stage) .............................................................318
18.2.4 Computing environment preparation
(architecture detailed definition)....................................319
Contents xiii
18.2.5 Post-development process preparation
(detailed architecture definition stage) ..........................319
18.2.6 Software test and evaluation (detailed
architecture definition stage) .........................................320
18.2.7 Reviews and milestones (detailed architecture
definition stage) .............................................................321
18.2.8 Establish the allocated baseline .....................................322
CHAPTER 19 Software Implementation .................................................323
19.1 Products of software implementation .......................................325
19.2 Software engineering tasks (software implementation
stage).........................................................................................327
19.3 Software implementation tasks (software
implementation stage)...............................................................327
19.4 Computing environment tasks (software
implementation stage)...............................................................329
19.5 Post-development process tasks (software
implementation stage)...............................................................329
19.6 Software test and evaluation tasks
(software implementation stage)...............................................330
19.7 Reviews and milestones (software implementation stage).......332
CHAPTER 20 Software Acceptance Testing.........................................335
20.1 Products of software acceptance testing ...................................336
20.2 Software engineering (software acceptance testing stage) .......337
20.3 Software implementation organization (software
acceptance testing stage)...........................................................338
20.4 Computing environment implementation organization
(software acceptance testing stage)...........................................339
20.5 Post-development process organization (software
acceptance testing stage)...........................................................339
20.6 Software test and evaluation (software acceptance
testing stage).............................................................................339
20.7 Reviews and milestones (software acceptance
testing stage).............................................................................340
20.8 Establish the software product baseline....................................341
Index ......................................................................................................................343
This page intentionally left blank