www.it-ebooks.info www.it-ebooks.info BEGINNING SOFTWARE ENGINEERING INTRODUCTION xxi ▸ PART I SOFTWARE ENGINEERING STEP‐BY‐STEP CHAPTER Software Engineering from 20,000 Feet CHAPTER Before the Beginning 15 CHAPTER Project Management 29 CHAPTER Requirement Gathering 53 CHAPTER High‐Level Design 87 CHAPTER Low‐Level Design 119 CHAPTER Development 143 CHAPTER Testing 173 CHAPTER Deployment 203 CHAPTER 10 Metrics 215 CHAPTER 11 Maintenance 241 ▸ PART II PROCESS MODELS CHAPTER 12 Predictive Models 265 CHAPTER 13 Iterative Models 283 CHAPTER 14 RAD 303 APPENDIX Solutions to Exercises 361 GLOSSARY 417 INDEX 437 www.it-ebooks.info www.it-ebooks.info BEGINNIING Software Engineering Rod Stephens www.it-ebooks.info Beginning Software Engineering Published by John Wiley & Sons, Inc 10475 Crosspoint Boulevard Indianapolis, IN 46256 www.wiley.com Copyright © 2015 by John Wiley & Sons, Inc., Indianapolis, Indiana Published simultaneously in Canada ISBN: 978-1-118-96914-4 ISBN: 978-1-118-96916-8 (ebk) ISBN: 978-1-118-96917-5 (ebk) Manufactured in the United States of America 10 No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600 Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 748-6011, fax (201) 748-6008, or online at http://www.wiley.com/go/permissions Limit of Liability/Disclaimer of Warranty: The publisher and the author make no representations or warranties with respect to the accuracy or completeness of the contents of this work and specifically disclaim all warranties, including without limitation warranties of fitness for a particular purpose No warranty may be created or extended by sales or promotional materials The advice and strategies contained herein may not be suitable for every situation This work is sold with the understanding that the publisher is not engaged in rendering legal, accounting, or other professional services If professional assistance is required, the services of a competent professional person should be sought Neither the publisher nor the author shall be liable for damages arising herefrom The fact that an organization or Web site is referred to in this work as a citation and/or a potential source of further information does not mean that the author or the publisher endorses the information the organization or Web site may provide or recommendations it may make Further, readers should be aware that Internet Web sites listed in this work may have changed or disappeared between when this work was written and when it is read For general information on our other products and services please contact our Customer Care Department within the United States at (877) 762-2974, outside the United States at (317) 572-3993 or fax (317) 572-4002 Wiley publishes in a variety of print and electronic formats and by print-on-demand Some material included with standard print versions of this book may not be included in e-books or in print-on-demand If this book refers to media such as a CD or DVD that is not included in the version you purchased, you may download this material at http://booksupport.wiley.com For more information about Wiley products, visit www.wiley.com Library of Congress Control Number: 2015930533 Trademarks: Wiley, the Wiley logo, Wrox, the Wrox logo, Programmer to Programmer, and related trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc and/or its affi liates, in the United States and other countries, and may not be used without written permission All other trademarks are the property of their respective owners John Wiley & Sons, Inc., is not associated with any product or vendor mentioned in this book www.it-ebooks.info ABOUT THE AUTHOR ROD STEPHENS started out as a mathematician, but while studying at MIT, he discovered how much fun programming is and he’s been programming professionally ever since During his career, he has worked on an eclectic assortment of applications in such fields as telephone switching, billing, repair dispatching, tax processing, wastewater treatment, concert ticket sales, cartography, and training for professional football players Rod has been a Microsoft Visual Basic Most Valuable Professional (MVP) for more than a decade and has taught introductory programming courses He has written more than two dozen books that have been translated into languages from all over the world, and he’s written more than 250 magazine articles covering Visual Basic, C#, Visual Basic for Applications, Delphi, and Java Rod’s popular VB Helper website (www.vb-helper.com) receives several million hits per month and contains thousands of pages of tips, tricks, and example programs for Visual Basic programmers His C# Helper website (www.csharphelper.com) contains similar material for C# programmers You can contact Rod at RodStephens@CSharpHelper.com or RodStephens@vb-helper.com ABOUT THE TECHNICAL EDITOR BRIAN HOCHGURTEL has been doing NET development for over ten years, and actually started his NET experience with Rod Stephens when they wrote the Wiley book, Visual Basic.NET and XML, in 2002 Currently Brian works with C#, SQL Server, and SharePoint in Fort Collins, CO www.it-ebooks.info www.it-ebooks.info CREDITS EXECUTIVE EDITOR PROFESSIONAL TECHNOLOGY & STRATEGY DIRECTOR Robert Elliott Barry Pruett PROJECT EDITOR Adaobi Obi Tuiton BUSINESS MANAGER Amy Knies TECHNICAL EDITOR Brian Hochgurtel ASSOCIATE PUBLISHER Jim Minatel PRODUCTION MANAGER Kathleen Wisor PROJECT COORDINATOR, COVER Brent Savage COPY EDITOR San Dee Phillips PROOFREADER Sarah Kaikini, Word One MANAGER OF CONTENT DEVELOPMENT & ASSEMBLY INDEXER Mary Beth Wakefield Johnna VanHoose Dinse MARKETING DIRECTOR COVER DESIGNER David Mayhew Wiley MARKETING MANAGER COVER IMAGE Carrie Sherrill ©iStock.com/Chris Hepburn p www.it-ebooks.info www.it-ebooks.info 436 ❘ GLOSSARY Unified Process (UP) An iterative and incremental development framework that involves four stages: inception, elaboration, construction, and transition unit test A test that verifies the correctness of a specific piece of code UP See Unified Process use case A description of a series of interactions between actors The actors can be users or parts of the application A simple template might include a title, main success scenario, and extensions (other variations on the scenario) use case diagram In UML, a diagram that represents a user’s interaction with the system Use case diagrams show stick figures representing actors (someone or something that performs a task) connected to tasks represented by ellipses user requirements These describe how the project will be used by the eventual end users user story A short story explaining how the system will let the user something velocity In Scrum, the amount of work the team can perform during a sprint, usually measured in story points per sprint version management Managing the versions of items produced by the project such as requirements documents, designs, and, of course, source code You should be able to retrieve any earlier version of those items if necessary Also called version tracking, change management, and change tracking version tracking See version management t vertical prototype visionary A prototype that has little breadth but great depth Someone who has a clear vision about what the application should V‐model Basically, a waterfall model that’s been bent into a V shape to emphasize that each task on the left side of the V corresponds to a task on the right side waterfall A predictive development where each project phase flows into the next waterfall with feedback k A variation on the waterfall model where each phase is allowed to feed information back to the preceding phase web service A service that provides a standardized web‐based interface so that it is easy to invoke over the Internet white‐box test A test designed by someone who knows how the code works internally That person can guess where problems may lie and create tests specifically to look for those problems WIP See work in progress work in progress (WIP) project working prototype The work being done at a given moment, particularly in a Kanban See functional prototype workshop facilitator Someone who plans, runs, and encourages participation at workshops, particularly DSDM workshops XP See Extreme Programming g www.it-ebooks.info INDEX Numbers 1NF (fi rst normal form), 130–133 2NF (second normal form), 134–135 3NF (third normal form), 135–137 A acceptance testing, 185 accessibility testing, 185 activity diagrams, 110–111 ad hoc reporting, 101 adaptive models versus predictive, 266–270 adaptive tasks (maintenance), 247–248 agile development AUP (Agile Unified Process), 343–345 communication and, 313–314 cross-functional teams, 314 DAD (Disciplined Agile Delivery), 345–348 incremental development, 314–316 information radiator, 314 Manifesto for Agile Software Development, 309–311 point releases, 315 quality focus, 316 self-organizing teams, 311–313 version schemes, 315–316 algorithms, 148–149 effectiveness, 149 efficiency, 149–151 predictability, 151–152 prepackaged, 152 simplicity, 152 alpha testing, 185 AOA (activity on arrow), 33 AON (activity on node), 33 application development life cycle, 276–279 applications COTS (commercial off-the-shelf), 43 documentation, 25 security, 89 architecture ClassyDraw, 100 client-server, 95–96 component-based, 96–97 data-centric, 97 distributed, 98–99 event-driven, 97–98 mix and match, 99–100 monolithic, 94 multitier, 96 N-tier, 96 rule-based, 98 service-oriented, 97 three-tier, 95–96 archiving, requirement gathering and, 67 attributes, 222 audience-oriented requirements businesses, 61–62 functional, 63 implementation, 63 nonfunctional, 63 users, 62–63 audio hardware, 90 audit tracking and history, requirement gathering and, 67 audit trails, 103 AUP (Agile Unified Process), 298, 343–345 automated testing, 182–183 437 www.it-ebooks.info b h behavior diagrams d – defect d f analysis l B comments in code, 157–159 self-documenting code, 159–160 communication diagrams, 114–115 compatibility testing, 186 Component Diagrams, 108 component interface testing, 183–184 component-based architecture, 96–97 Composite Structure Diagrams, 108 configuration high-level design, 104 requirement gathering and, 67 corrective tasks (maintenance), 248–251 COTS (commercial off-the-shelf) applications, 43 critical path methods, PERT charts, 38–41 Crystal, 333–335 Crystal Clear, 335–336 Crystal Orange, 337–338 Crystal Yellow, 336–337 customers requirements gathering and, 4–5, 67–68 XP and, 320 cutover, 206 gradual, 206–208 behavior diagrams, 109–110 activity diagrams, 110–111 state machine diagrams, 112–113 use case diagrams, 111–112 beta testing, 186 black-box testing, 187–188 bug fi xing, 194–195 bugs code coverage, 196 counting, 7–8 Lincoln index, 197–198 maintenance tasks, 256 reasons to leave some, 175–179 seeding, 197 testing, tracking, 195–196 Windows, 173–175 burndown, Scrum and, 330–331 business requirements, 61–62 C cause and effect diagrams, 220 CBSE (component-based software engineering), 96–97 change control, 16–18 charts Gantt charts, 41–42 PERT charts, 33–41 child classes, 122–123 Class Diagrams, 107, 108–109 classes defi ning, 102 object-oriented development, 121–122 ClassyDraw program, 57–60 architecture, 100 Cleanroom model, 298 client-server architecture, 95–96 code See also programming; source code documentation, 22–25 KLOC (kilo lines of code), 174 ownership, XP and, 323–324 coding standards, XP and, 324 D DAD (Disciplined Agile Delivery), 298, 345–348 data flows, 105 data security, 89 data tier, 96 data types, 132 data warehouses, 104 databases audit trails, 103 classes, defi ning, 102 data types, 132 design, 127–128 normalization, 130–137 relational, 128–130 maintenance, 104 user access, 103 data-centric architecture, 97 decomposition, V-models, 275–276 defect analysis, 216–217 bug types, 217–219 438 www.it-ebooks.info deferred interfaces – DSDM deferred interfaces, 93 deployment, 8–9, 203–204 cutover, 206 gradual, 206–208 databases and, 209 documentation, 209 hardware and, 209 incremental, 208 mistakes, 210–211 parallel testing, 209 physical environment and, 209 planning, 204–206 scope, 204 staged, 206 tasks, 209 training and, 209 Deployment Diagrams, 108 design databases, 127–128 normalization, 130–138 relational, 128–130 detail level, 155 high-level, 5–6 architecture, 94–100 configuration data, 104 data flows, 105 databases, 102–104 existing practices, 92 external interfaces, 93 hardware, 90–91 internal interfaces, 92–93 parallel implementation, 88 reports, 101 security, 89–90 states, 105 training, 105 UML, 105–115 user interface, 91–92 low-level, 6, 119 object-oriented development, 121 team, adding to, 88–89 top-down, 153–155 XP and, 322 design (FURPS+), 66 destructive testing, 186 detail level, 155 development, 6, 143–144 algorithms, 148–149 effectiveness, 149 efficiency, 149–151 predictability, 151–152 prepackaged, 152 simplicity, 152 environment, 146 hardware, 144–145 networks, 145–146 profi lers, 147 refactoring tools, 148 source code formatters, 147–148 source code management, 147 static analysis tools, 147 testing tools, 147 tools environment, 146 hardware, 144–145 networks, 145–146 profi lers, 147 refactoring tools, 148 source code formatters, 147–148 source code management, 147 static analysis tools, 147 testing tools, 147 training, 148 top-down design, 153–155 training, 148 Dijkstra, Edsger W., distributed architecture, 98–99 document management, 16–18 change control, 16 e-mail, 19–21 historical documents, 18–19 keywords, 21 sharing, version control, 16–17 source code, 21–22 documentation applications, 25 code documentation, 22–25 self-documenting code, 159–160 DSDM (Dynamic Systems Development Method), 348–351 439 www.it-ebooks.info Eclipse – implementation E H Eclipse, 146 EDA (event-driven architecture), 97–98 e-mail, 19–21 environment, development and, 146 event-driven architecture, 97–98 events, object-oriented development, 121 evolutionary prototypes, 79, 288–289 exception handlers, 167 exceptions, 163, 166 executive support, project management and, 30–31 exhaustive testing, 186–187 expert systems, 98 external interfaces, 93 F FAD (FreeWheeler Automatic Driver), 121–122 FDD (Feature-Driven Development), 338–339 iteration milestones, 342–343 phases, 340–342 fishbone diagrams, 220 Fishikawa diagrams, 220 fi xing bugs, 194–195 fonts, requirements and, 16–17 function point normalization, 231–235 functional prototypes, 79 functional requirements, 63 functional testing, 186 functionality (FURPS+), 66 FURPS+, 64–66 FURPS (functionality, usability, reliability, performance, scalability), 64 G Gantt charts, 41–42 generalization, XP and, 324 gradual cutover, 206–208 gray-box testing, 188–189 hardware design and, 90–91 development and, 144–145 platform selection, 91 heuristics, 151 high-level design, 5–6 architecture client-server, 95–96 component-based, 96–97 data-centric, 97 distributed, 98–99 event-driven, 97–98 mix and match, 99–100 monolithic, 94 rule-based, 98 service-oriented, 97 configuration data, 104 data flows, 105 database, 102–103 audit trails, 103 maintenance, 104 user access, 103 existing practices, 92 hardware, 90–91 interfaces external, 93 internal, 92–93 parallel implementation, 88 reports, 101 security, 89–90 states, 105 training, 105 UML, 105–107 structure diagrams, 107–109 user interface, 91–92 historical documents, 18–19 horizontal prototypes, 288 I IDE (integrated development environment), 146 implementation, 204 FURPS+, 66 440 www.it-ebooks.info incremental deployment – methods parallel, 88 requirements, 63 incremental deployment, 208 incremental models versus iterative, 286–287 incremental prototyping, 289 incremental waterfall models, 273–275 inerfaces, external, 93 information radiator, agile development, 314 inheritance child classes, 122–123 generalization, 125–126 hierarchies, 122–123 warning signs, 126–127 multiple, 123 parent classes, 122–123 refi nement, 123–125 input metrics, 227–229 installation, 204 installation testing, 186 instances, 120 integration V-models, 276 XP and, 325 integration testing, 181–182 interaction diagrams communication diagrams, 114–115 interaction overview diagrams, 115 sequence diagrams, 113–114 timing diagrams, 115 interaction overview diagrams, 115 interface (FURPS+), 66 interfaces deferred, 93 internal, high-level design and, 92–93 internal interfaces, high-level design, 92–93 internationalization testing, 186 invariants, 163 IOC (Initial Operational Capability), 294 Ishikawa diagrams, 219–222 iterative models Cleanroom, 298 versus incremental, 286–287 versus predictive, 284–286 prototypes, 287–290 spiral, 290–293 UP (Unified Process), 295–298 J JBGE (just barely good enough), 23–24 programming and, 157 K Kanban, 351–355 keywords, document management and, 21 KLOC (kilo lines of code), 174 knowledge-based systems, 98 L LAN (local area network), 95 LCA (Life Cycle Architecture), 294 LCO (Life Cycle Objectives), 294 LEAN (Lean Software Development), 332–333 Lincoln index, 197–198 login, requirement gathering and, 67 lookup tables, 129 low-level design, 6, 119 OO (object-oriented) development, 120–127 M maintenance, 9, 241–242 costs, 242–243 tasks, 243 adaptive tasks, 247–248 bugs, individual, 256 corrective tasks, 248–251 execution, 256–257 NIHS, 256 perfective tasks, 244–247 preventive tasks, 251–255 Manifesto for Agile Software Development, 309–311 Martin, James, RAD and, 304, 308 menus, requirement gathering and, 66 metaphors, XP and, 322 methods, object-oriented development, 121 441 www.it-ebooks.info metrics – passwords metrics, 215–216 cause and effect diagrams, 220 defect analysis, 216–217 bug types, 217–219 defi nition, 222 fishbone diagrams, 220 Fishikawa diagrams, 220 Ishikawa diagrams, 219–222 software metrics, 222–223 complexity, 232–233 function point normalization, 231–235 input metrics, 227–229 process metrics, 226 project metrics, 226–227 qualities, 223–224 size normalization, 229–231 uses, 224–227 wrap activity, 216 mix and match architecture, 99–100 models iterative Cleanroom, 298 versus incremental, 286–287 versus predictive, 284–286 prototypes, 287–290 spiral, 290–293 UP, 295–298 predictive, 265–266 versus adaptive, 266–270 application development life cycle, 276–279 sashimi, 272–273 SDLC (software development life cycle), 276–279 V-model, 275–276 waterfall, 270–271 monolithic architecture, 94 MOSCOW method for prioritization, 57 multiple inheritance, 123 multitier architecture, 96 multi-waterfall model, 273–275 N navigation, requirement gathering and, 67 networks components, 90 development and, 145–146 security, 89 NIHS (not invented here syndrome), 256 nonfunctional prototypes, 79 nonfunctional requirements, 63 nonfunctional testing, 186 normalization function point, 231–235 size-oriented, 229–231 N-tier architecture, 96 O object composition, 127 Object Diagrams, 107 OO (object-oriented) development classes, 121–122 design patterns, 121 events, 121 inheritance child classes, 122–123 generalization, 125–126 hierarchies, 122–127 multiple, 123 parent classes, 122–123 refi nement, 123–125 instances, 120 methods, 121 objects, composition, 127 overview, 120–121 properties, 121 operating system, security, 89 optimization deferred, 167–169 XP and, 322–323 P Package Diagrams, 108 pair programming, XP and, 324 parallel implementation, 88 parallel testing, 209 param token, 24 parent classes, 122–123 passwords, 90 442 www.it-ebooks.info perfective tasks – RAD perfective tasks (maintenance), 244–247 performance (FURPS+), 66 performance testing, 186 PERT (Program Evaluation and Review Technique), 33 PERT charts, 33–38 AOA (activity on arrow), 33 AON (activity on node), 33 critical path methods, 38–41 physical (FURPS+), 66 physical security, 89 planning, XP and, 320–321 planning poker, Scrum and, 329–330 point releases, agile development, 315 predictions, 42–43 experience and, 44 similarities, 45 task breakdown, 44–45 tracking progress, 46–47 unexpected delays, 45–46 predictive models, 265–266 versus adaptive, 266–270 application development life cycle, 276–279 versus iterative, 284–286 sashimi, 272–273 SDLC (software development life cycle), 276–279 V-model, 275–276 waterfall, 270–271 with feedback, 271–272 incremental, 273–275 multi-waterfall, 273–275 prepackaged algorithms, 152 presentation tier, 96 preventive tasks (maintenance), 251–255 printers, 90 prioritization, 56–60 process metrics, 226 profi lers, 168 development and, 147 programming code repetition, 167 commenting, 157–159 self-documenting code, 159–160 defensive, 165 exception handlers, 167 exceptions, 166 focus, 161–162 offensive, 165–166 optimization, deferred, 167–169 profi lers, 168 results validation, 163–165 self-documenting code, 159–160 side effects, 162 size, 160–161 writing for people not computer, 156–157 progress, tracking, 46–47 project management executive support, 30–31 PERT charts, 33–41 predictions, 42–47 project manager position, 31–33 risk management, 47–49 scheduling software, 42 project metrics, 226–227 properties, object-oriented development, 121 prototypes, 287–290 evolutionary, 288–289 horizontal, 288 requirements recording, 78–79 throwaway, 288–289 vertical, 288 PSI (potentially shippable increment), 328 R race condition, 99 RAD (rapid application development), 304 advantages, 306–307 agile development communication and, 313–314 cross-functional teams, 314 incremental development, 314–316 information radiator, 314 Manifesto for Agile Software Development, 309–311 point releases, 315 quality focus, 316 self-organizing teams, 311–313 version schemes, 315–316 443 www.it-ebooks.info RAD – requirement gathering RAD (rapid application development) (continued) AUP (Agile Unified Process), 343–345 Crystal, 333–335 Crystal Clear, 335–336 Crystal Orange, 337–338 Crystal Yellow, 336–337 DAD (Disciplined Agile Delivery), 345–348 disadvantages, 307 DSDM (Dynamic Systems Development Method), 348–351 FDD (Feature-Driven Development), 338–339 iteration milestones, 342–343 phases, 340–342 Kanban, 351–355 LEAN (Lean Software Development), 332–333 Martin, James, 304, 308 Scrum burndown, 330–331 planning poker, 329–330 roles, 327–328 sprints, 328–239 velocity, 331 techniques, 305–306 timeboxing, 306 XP (Extreme Programming), 317–318 code ownership, 323–324 coding standards, 324 customers, 320 design, 322 generalization, 324 integration, 325 metaphors, 322 optimization, 322–323 pair programming, 324 planning, 320–321 refactoring, 323 releases, 322 roles, 318 standup meetings, 321–322 sustainability, 325 TDD (test-driven development), 325–327 testing, 324–325 TFD (test-fi rst development), 326–327 values, 319 recording requirements, 76–77 prototypes, 78–79 specification, 80 UML, 77 use cases, 78 user stories, 77–78 refactoring tools, development and, 148 XP and, 323 refi nement, inheritance, 123–125 relational databases child tables, 129 design, 128–130 fields, 128 foreign keys, 129 lookup tables, 129 parent tables, 129 tuples, 128 releases, XP and, 322 reliability (FURPS+), 66 reports, 101 requirement gathering amiguity, 55 archiving, 67 audit tracking and history, 67 brainstorming and, 74–76 categories audience-oriented, 61–63 FURPS, 64 FURPS+, 64–66 changing requirements, 80–81 clairvoyance and, 73–74 clarity, 54–55 common, 66–67 configuration, 67 consistency, 56 customers, 67–68 existing systems and, 71–73 How, 69 login, 67 menus, 66 navigation, 67 prioritization, 56–60 recording requirements, 76–77 prototypes, 78–79 444 www.it-ebooks.info requirement repairs – supportability specification, 80 UML, 77 use cases, 78 user stories, 77–78 requirements, specific, 66–67 requirements defi nition, 54 screens, 66 specificity, 62–63 user types, 67 users, 67–68, 70–71 validation, 80 verifiability, 60 verification, 80 What, 69 When, 69 Where, 69 Who, 68 Why, 69 words to avoid, 60–61 work flow, 67 requirement repairs, 11 requirements gathering, 4–5 results, validation, 163–165 risk analysis, 48–49 risk management, 47–49 rule-based architecture, 98 RUP (Rational Unified Process), 297–298 S sashimi model, 272–273 saving, version control, 16–17 SCA (Service Component Architecture), 97 scheduling software, 42 scope, 204 screens, requirement gathering and, 66 Scrum burndown, 330–331 planning poker, 329–330 velocity, 331 SDLC (software development life cycle), 276–279 second system effect, 245–246 security applications, 89 data security, 89 design and, 90–91 network security, 89 operating system, 89 physical security, 89 testing, 186 seeding bugs, 197 self-documenting code, 159–160 self-organizing teams, agile development and, 311–313 sequence diagrams, 113–114 servers, 90 service-oriented architecture, 97 sharing documents, version control, 16–17 SOA (service-oriented architecture), 97 software metrics, 222–223 complexity, 232–233 function point normalization, 231–235 input metrics, 227–229 process metrics, 226 project metrics, 226–227 qualities, 223–224 size normalization, 229–231 uses, 224–227 source code, 21–22 formatters, development and, 147–148 management, development and, 147 specificity in requirements, 62–63 spiral models, 290–293 staged deployment, 206 stakeholder requirements, 62 standup meetings, XP and, 321–322 state machine diagrams, 112–113 states, 105 static analysis tools, development and, 147 stepwise refi nement, 153–155 structure diagrams, 107–109 Class Diagrams, 107 Component Diagrams, 108 Composite Structure Diagrams, 108 Deployment Diagrams, 108 Object Diagrams, 107 Package Diagrams, 108 summary token, 24 supportability (FURPS+), 66 445 www.it-ebooks.info sustainability – users sustainability, XP and, 325 system testing, 184–185 T TCO (total cost of ownership), maintenance and, 242 TDD (test-driven development), XP and, 325–327 testing, 6–8 acceptance testing, 185 accessibility testing, 185 alpha testing, 185 automated testing, 182–183 best practices, 189–194 beta testing, 186 bug fi xing, 194–195 bugs and, compatibility testing, 186 component interface testing, 183–184 destructive testing, 186 functional testing, 186 goals, 175 installation testing, 186 integration testing, 181–182 internationalization testing, 186 nonfunctional testing, 186 parallel, 209 performance testing, 186 security testing, 186 system testing, 184–185 techniques black-box, 187–188 exhaustive, 186–187 gray-box, 188–189 white-box, 188 tools, development and, 147 unit testing, 179–181 usability testing, 186 XP and, 324–325 TFD (test-fi rst development), XP and, 326–327 three-tier architecture, 95–96 throwaway prototypes, 79, 288–290 timeboxing, 306 timing diagrams, 115 tokens param, 24 summary, 24 toolsmith, 178 top-down design, 153–155 tracking bugs, 195–196 tracking progress, 46–47 training, 105 development and, 148 U UML (Unified Modeling Language), 105–107 behavior diagrams, 109–110 activity diagrams, 110–111 state machine diagrams, 112–113 use case diagrams, 111–112 interaction diagrams communication diagrams, 114–115 interaction overview diagrams, 115 sequence diagrams, 113–114 timing diagrams, 115 requirements recording and, 77 structure diagrams, 107–109 Class Diagrams, 107 Component Diagrams, 108 Composite Structure Diagrams, 108 Deployment Diagrams, 108 Object Diagrams, 107 Package Diagrams, 108 unit testing, 179–181 UP (Unified Process), 295–298 usability (FURPS+), 66 usability testing, 186 use case diagrams, 111–112 use cases, requirements recording, 77–78 user access, databases, 103 user requirements, 62 user types, requirement gathering and, 67 users, requirement gathering and, 67–68, 70–71 recording requirements, 77–78 446 www.it-ebooks.info validation – XP V validation programming results, 163–165 requirements, 80 velocity, Scrum and, 331 verification, requirements, 80 version control, 16–18 version schemes, 315–316 vertical prototypes, 288 video, hardware, 90 V-models, 275–276 W WAN (wide area network), 95 waterfall models, 270–271 with feedback, 271–272 incremental, 273–275 multi-waterfall, 273–275 with overlapping phases, 272–273 web services, 97 white-box testing, 188 Windows, bugs, 173–175 work flow, requirement gathering and, 67 working prototypes, 79 wrap activity, 216 X-Y-Z XP (Extreme Programming) code ownership, 323–324 coding standards, 324 customers, 320 design, 322 generalization, 324 integration, 325 metaphors, 322 optimization, 322–323 pair programming, 324 planning, 320–321 refactoring, 323 releases, 322 roles, 318 standup meetings, 321–322 sustainability, 325 TDD (test-driven development), 325–327 testing, 324–325 TFD (test-fi rst development), 326–327 values, 319 447 www.it-ebooks.info www.it-ebooks.info www.it-ebooks.info WILEY END USER LICENSE AGREEMENT Go to www.wiley.com/go/eula to access Wiley’s ebook EULA www.it-ebooks.info [...]... use Scrum with a few extra XP techniques thrown in.”) WHAT IS SOFTWARE ENGINEERING? A formal defi nition of software engineering might sound something like, “An organized, analytical approach to the design, development, use, and maintenance of software. ” More intuitively, software engineering is everything you need to do to produce successful software It includes the steps that take a raw, possibly nebulous... sit down and start typing You need a plan You need … … software engineering This book describes software engineering It explains what software engineering is and how it helps produce applications that are effective, flexible, and robust enough for use in real‐world situations This book won’t make you an expert systems analyst, software architect, project manager, or programmer, but it explains... obliterating your schedule and budget constraints In short, software engineering lets you control what otherwise might seem like a random whirlwind of chaos WHO SHOULD READ THIS BOOK? Everyone involved in any software development effort should have a basic understanding of software engineering Whether you’re an executive customer specifying the software s purpose and features, an end user who will eventually... one particular Fred, who I’m sure retired from software development long ago.) So get out your reading glasses, grab your favorite caffeinated beverage, and prepare to enter the world of software engineering Game on! xxix www.it-ebooks.info www.it-ebooks.info PART I Step‐by‐Step y ▸ CHAPTER 1: Software Engineering from 20,000 Feet ▸ CHAPTER 2: Before the Beginning ▸ CHAPTER 3: Project Management ▸ CHAPTER... constructing a software design One way is to make it so simple that there are obviously no deficiencies The other way is to make it so complicated that there are no obvious deficiencies The first method is far more difficult —C.A.R Hoare WHAT YOU WILL LEARN IN THIS CHAPTER: ➤ The basic steps required for successful software engineering ➤ Ways in which software engineering differs from other kinds of engineering. .. to restrict software engineering to mean only the beginning of the process, when you perform the application’s design After all, an aerospace engineer designs planes but doesn’t build them or tack on a second passenger cabin if the fi rst one becomes full (Although I guess a space shuttle riding piggyback on a 747 sort of achieved that goal.) One of the big differences between software engineering. .. ▸ CHAPTER 8: Testing ▸ CHAPTER 9: Deployment ▸ CHAPTER 10: Metrics ▸ CHAPTER 11: Maintenance www.it-ebooks.info 2 ❘ CHAPTER 3 SOFTWARE ENGINEERING STEP-BY-STEP Software and cathedrals are much the same First we build them, then we pray —Samuel Redwine In principle, software engineering is a simple two‐step process: (1) Write a best‐selling program, and then (2) buy expensive toys with the profits Unfortunately,... www.it-ebooks.info www.it-ebooks.info CONTENTS INTRODUCTION xxi PART I: SOFTWARE ENGINEERING STEP‐BY‐STEP CHAPTER 1: SOFTWARE ENGINEERING FROM 20,000 FEET Requirements Gathering High‐Level Design Low‐Level Design Development Testing Deployment Maintenance Wrap‐up Everything All at Once Summary 3 4 5 6 6 6 8 9 9 10 11 CHAPTER 2: BEFORE THE BEGINNING Document Management Historical Documents E‐mail Code Code... techniques that help you track your progress throughout the project Chapter 1, Software Engineering from 20,000 Feet,” describes these “before‐the‐ beginning activities After you have the preliminaries in place, there are many approaches you can take to produce software All those approaches have the same goal (making useful software) , so they must handle roughly the same tasks These are things such as gathering... www.extremeprogramming.org, agilemanifesto.org, and www.scrum.org This book also isn’t an exhaustive encyclopedia of software development tricks and tips It describes some general ideas and concepts that make it easier to build robust software, but its focus is on higher‐level software engineering issues, so it doesn’t have room to cover all the clever techniques developers use to make programs better