Effective Methods for Software Engineering PDF

Document Details

ProgressiveCatharsis2723

Uploaded by ProgressiveCatharsis2723

University of the People

2021

Boyd L. Summers

Tags

software engineering software development effective methods software practices

Summary

This textbook presents effective methods for software engineering, covering topics like the software engineering process, planning, applications, programming, peer reviews, and more. It is designed to be a comprehensive guide for software development.

Full Transcript

Effective Methods for Software Engineering Taylor & Francis Taylor & Francis Group http://taylorandfrancis.com Effective Methods for Software Engineering Boyd L. Summers First edition published 2020 by CRC Press Taylor & Francis Group 6000 Broken Sound Parkway NW, Suite 300 Boca Raton, FL...

Effective Methods for Software Engineering Taylor & Francis Taylor & Francis Group http://taylorandfrancis.com Effective Methods for Software Engineering Boyd L. Summers First edition published 2020 by CRC Press Taylor & Francis Group 6000 Broken Sound Parkway NW, Suite 300 Boca Raton, FL 33487-2742 © 2021 by Taylor & Francis Group, LLC CRC Press is an imprint of Taylor & Francis Group, an Informa business No claim to original U.S. Government works Printed on acid-free paper International Standard Book Number-13: 978-0-367-45838-6 (Hardback) This book contains information obtained from authentic and highly regarded sources. Reasonable efforts have been made to publish reliable data and information, but the author and publisher cannot assume responsibility for the validity of all materials or the consequences of their use. The authors and publishers have attempted to trace the copyright holders of all material reproduced in this publication and apologize to copyright holders if permission to publish in this form has not been obtained. If any copyright material has not been acknowledged, please write and let us know so we may rectify in any future reprint. Except as permitted under U.S. Copyright Law, no part of this book may be reprinted, reproduced, transmitted, or utilized in any form by any electronic, mechanical, or other means, now known or hereafter invented, including photocopying, microfilming, and recording, or in any information storage or retrieval system, without written permission from the publishers. For permission to photocopy or use material electronically from this work, please access www. copyright.com (http://www.copyright.com/) or contact the Copyright Clearance Center, Inc. (CCC), 222 Rosewood Drive, Danvers, MA 01923, 978-750-8400. CCC is a not-for-profit organization that provides licenses and registration for a variety of users. For organizations that have been granted a photocopy license by the CCC, a separate system of payment has been arranged. Trademark Notice: Product or corporate names may be trademarks or registered trademarks, and are used only for identification and explanation without intent to infringe. Library of Congress Cataloging‑in‑Publication Data Names: Summers, Boyd L., author. Title: Effective methods for software engineering / by Boyd Summers. Description: Boca Raton : CRC Press, 2020. | Includes bibliographical references and index. | Summary: “This book presents methods for analyzing software engineering problems, designing solutions, coding effectively, and testing software”— Provided by publisher. Identifiers: LCCN 2019058121 (print) | LCCN 2019058122 (ebook) | ISBN 9780367458386 (hardback) | ISBN 9781003025665 (ebook) Subjects: LCSH: Software engineering. Classification: LCC QA76.758.S857 2020 (print) | LCC QA76.758 (ebook) | DDC 005.1—dc23 LC record available at https://lccn.loc.gov/2019058121 LC ebook record available at https://lccn.loc.gov/2019058122 Visit the Taylor & Francis Web site at http://www.taylorandfrancis.com and the CRC Press Web site at http://www.crcpress.com Contents List of Figures........................................................xi List of Tables....................................................... xiii Preface................................................................... xv Acknowledgments................................................xix Author................................................................. xxi 1 Introduction...................................................... 1 1.1 The Role for Software Engineering..................... 1 1.2 Software Engineering Process............................. 3 1.3 Software Engineering Planning........................... 5 1.4 Software Applications.......................................... 5 1.5 Software Engineering Programming................... 6 Summary...................................................................... 7 Further Reading........................................................... 8 2 Software Engineering Peer Reviews................. 9 2.1 Software Testing.................................................. 9 2.2 Software Programming Support......................... 10 2.3 Peer Reviews in Software Engineering.............. 12 2.4 Lessons Learned for Peer Reviews..................... 12 Further Reading.......................................................... 15 v vi ◾ Contents.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... Contents ◾ vii................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... viii ◾ Contents 9.6 Software Quality Engineering Problem-Solving............................................... 74 9.7 Common Software Quality Engineering Working Framework........................................... 75 9.8 Software Quality Engineering Impacts Business.............................................................. 76 9.9 Ways to Improve Software Quality Engineering... 77 Summary.....................................................................78 Further Reading..........................................................79 10 Verification and Validation.............................. 81 10.1 Verification..........................................................81 10.2 Validation............................................................82 10.3 Verification and Validation Test Plan.................83 10.4 Software Engineering Verification and Validation........................................................... 84 Summary.................................................................... 86 Further Reading..........................................................87 11 Management Support for Software Engineering..................................................... 89 11.1 Managers Are Important....................................89 11.2 Conceptual Framework for Engineering Managers............................................................. 91 11.3 Working with Managers for 31 Years.................92 11.4 To Be a Good Manager......................................96 11.5 The Basics of Software Engineering Management........................................................97 11.6 Software Engineering Management Connections........................................................98 Contents ◾ ix........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... x ◾ Contents..................................................................................................................................................................................................................................................................................................................................... List of Figures Figure 1.1 Right approach for software engineering.... 2 Figure 1.2 Strategy for software engineering programming................................................. 7 Figure 1.3 Software engineering definitions................. 8 Figure 3.1 Scope of systems engineering....................19 Figure 4.1 Operational requirements........................... 23 Figure 5.1 Solution engineering process...................... 33 Figure 8.1 Software Configuration Management goals..................................... 59 Figure 8.2 Software system integration....................... 63 Figure 10.1 Verification and validation......................... 86 Figure 11.1 Conceptual framework for great software engineering managers.................91 Figure 12.1 Agile development.................................... 106 Figure 13.1 Strategy for integration of Periods 1 and 2..........................................112 Figure 14.1 Agile management level.......................... 116 xi xii ◾ List of Figures Figure 15.1 Product development life cycle............... 129 Figure 16.1 A CMMI model........................................ 136 Figure 16.2 Capability Maturity Model Integration... 142 List of Tables Table 3.1 Systems Engineering Support Environment................................................. 20 Table 5.1 Description of Different Software Programming and Design Tools.................. 37 Table 6.1 SCM Improvements.....................................42 Table 6.2 Software Life Cycle Management.............. 44 Table 6.3 Manage Software Changes......................... 44 Table 6.4 ClearCase Capabilities.................................46 Table 7.1 Command Prompt...................................... 54 Table 9.1 Definitions of Software Quality..................78 Table 16.1 CMMI Model Framework.......................... 138 xiii Taylor & Francis Taylor & Francis Group http://taylorandfrancis.com Preface For many years, I always wanted to write a book related to software engineering. My new book is titled Effective Methods for Software Engineering. Software engineering activities ensure effective methods to be performed for accomplishment of projects in companies, institutions, mil- itary programs, and successful businesses. I will also pro- vide the importance of software programming, software configuration management (SCM), Rational ClearCase and ClearQuest tools, software quality engineering (SQE), sys- tems engineering (SE), software applications, verification and validation, and describe how software engineering is involved and followed in software programming develop- ment framework and release to customers. My previous books Software Engineering Reviews and Audits, Effective Methods for Software and Systems Integration, and Effective Processes for Quality Assurance provided the framework and detailed requirements for all software engineering activities. xv xvi ◾ Preface Software Engineering Reviews and Audits Software Engineering Reviews and Audits will improve indi- vidual and company efforts in maintaining a professional setting where quality is improved for increased profit, cost reduction, control, and service improvement. Performing reviews and audits for quality assurance in companies and institutions is successful in ensuring compliance with spec- ified contracts and customer satisfaction. Effective Methods for Software and Systems Integration In order to develop, operate, and maintain software and systems integration capabilities inside work product facili- ties and companies, there must be a major discipline that supports to completely understand the entire software life cycle (i.e., planning, systems, requirements, software design, builds, installations, integration, subcontractors, quality, and delivery to customers). Effective Processes for Quality Assurance The book provides an understanding of the importance of day-to-day activities of quality assurance to advocate a culture that supports commitment to customer integrity. Preface ◾ xvii The primary purpose is to increase the implementation of Effective Processes for Quality Assurance in companies and institutions to increase communication, knowledge, and visibility in their operations. This book provides informa- tion to convey the methods for quality assurance to be more effective in organizations, which can benefit from adopting these processes. Summary It is critical to understand and implement the disciplines of Effective Methods for Software Engineering prior to deliv- eries of software product development to foster success- ful business environments. Chapters in this book can help ensure software engineering employees are trained to perform reviews, audits, and evaluations that can provide effective oversight of software engineering activities. Taylor & Francis Taylor & Francis Group http://taylorandfrancis.com Acknowledgments The opportunity to be an Hercules Missile Defense and Boeing Defense and Space employee, and consultant for companies, institutions, military programs, and successful businesses made me a team player and to provide soft- ware engineering expertise. Currently, I am a Software and Quality Assurance Technology Consultant supporting all software engineering and quality assurance activities and providing expertise and solutions for software engineering capabilities for businesses and institutions. To ask ques- tions for current and future software engineering solutions, contact me through the email bl.summers.consulting.llc@ gmail.com; all important information related to this topic will be provided, discussed, and fixed. xix Taylor & Francis Taylor & Francis Group http://taylorandfrancis.com Author Boyd L. Summers is currently a retired software engineer for The Boeing Company and is a Software Technology and quality ­consultant for BL Summers Consulting LLC liv- ing in Florence, Arizona. He is the author of three software technology books titled Software Engineering Reviews and Audits, Effective Methods for Software and Systems Integration, and Effective Processes for Quality Assurance. He has provided written software articles to many software engineering journals and maga- zines. His topics of interest include Software Engineering, Software Programming, Software Requirements, Software Test and Evaluation, Software Configuration Management, Software Quality Assurance, Quality Assurance, Audits, Reviews, and Software Engineering Evaluations. He has applied processes in Agile, Lean, and Six-Sigma. He is a speaker and a board member of numerous software and quality control conferences in the United States and coun- tries around the world. xxi xxii ◾ Author BL Summers Consulting LLC Software and Quality Assurance Solutions 7291 W. Sonoma Way Florence, Arizona 85132 Phone: (206) 485-8618 E-mail: [email protected] Chapter 1 Introduction 1.1 The Role for Software Engineering The role of software engineering is to introduce the notion of software as a product designed and built by software engineers using effective methods. Software is important because it is used by a great many people in companies and institutions. Software engineers as programmers should have a moral and ethical responsibility to ensure that the software and design they provide do not cause any seri- ous problems. Software engineers tend to be concerned with the technical elegance of their software products and tools, whereas customers tend to be concerned only with whether a software product meets their needs and is easy and ready to use. For two years, I was a software programmer for Hercules Missile Defense, where my responsibility was to make sure that the software that is available for implementation and use was programmed and performed according to requirements. 1 2 ◾ Effective Methods for Software Engineering In order to develop, operate, and maintain software engineering capabilities, a major discipline in supporting software programming, design, builds, and delivery to cus- tomers should be completely understood. A critical under- standing of and a right approach for the methods used for software engineering is necessary to enhance the process and achieve effective programming results. The right disciplines are identified in Figure 1.1. It is more than a discussion and a way of life for soft- ware engineering to be important related to the standards and requirements for programming and design. Software engineering must comply with these standards and require- ments during several stages of the development process. Figure 1.1 Right approach for software engineering. Introduction ◾ 3 The standards and requirements adopt and deploy the following: ◾ Understand the basic concepts, standards, and require- ments of software engineering. ◾ Select appropriate techniques for programming and designing. ◾ Effectively use software engineering tools and applications. ◾ Create specifications to comply with the software stan- dards and requirements. ◾ Utilize various standards and requirement techniques to identify defects. ◾ Manage changes to standards and requirements. 1.2 Software Engineering Process This section discusses the concept of a software process framework and provides a brief overview of the soft- ware engineering Capability Maturity Model Integration (CMMI). It is important to emphasize that CMMI does specify which process model needs to be used for a given project or organization. Rather, it provides a means of assessing how well company and institutional processes allow them to complete and manage and program new software projects. Software engineering divides the process of software development into distinct phases to improve programming 4 ◾ Effective Methods for Software Engineering and designing, which is known as “software development life cycle”. Most modern software engineering processes can be described as Agile. Other methodologies include waterfall, prototyping, iterative and incremental development, spiral development, rapid application development, and extreme programming. Software engineering considers “life cycle model” as a more generic term for a category of methodologies and “software engineering development process” as a more specific term to refer to a process chosen by a company or an institution. There are many specific software engineer- ing processes that fit the life cycle model. Software engineering is the process of envisioning and defining software solutions to one or more sets of problems. One of the main components of software engineering requirement (SER) is part of the software development process that lists specifications used in software engineering. If the software is semi-automated for software engineering, it can help determine those specifications. If the software is completely automated, software engineering may be as simple as describing a planned sequence of events. In either case, a software plan is usually the product of the software engineer- ing and design. Furthermore, software engineering may either be platform-independent or be platform-specific depending on the availability of the technology used for programming processes. Introduction ◾ 5 1.3 Software Engineering Planning It is very important for software engineering program- mers to have some basic knowledge of planning and per- forming software projects. Software engineering planning involves estimating how much time, effort, and resources are required to build a software product. There is enough information provided in the text that allows programmers to estimate their own projects and write their own planning documents. Software engineering programmers should be assigned the task of writing planning documents using appropriate templates as part of their coursework roles. First, management and software engineering program- mers must prepare for planning by identifying contracts and requirements evaluated during a specific period for companies, institutions, military programs, or successful businesses. Then, the identified contracts and requirements require the right criteria derived from associated software plans, documents, procedures, and work instructions. 1.4 Software Applications Software applications are different from the artifacts pro- duced in most other engineering disciplines. Opportunities for replication without customization are not very common. Software may deteriorate, but it does not wear out. The chief reason for software engineering is that many changes are 6 ◾ Effective Methods for Software Engineering made to software products over their lifetime. When changes are made, defects may be inadvertently introduced to por- tions of the software that interact with the portion that was changed. The most popular tools used by the military and defense programs are Rational ClearCase and ClearQuest. I implemented these tools to many Boeing Defense and Space programs to be used by software engineers, software configuration managers, and testers, and I will explain the use of these two tools in Chapter 6. 1.5 Software Engineering Programming Software engineering programming encompasses prepro- gramming compilers that effect the translation of languages from a variety of editors to software codes to be used by software engineers in their tools. Software engineers that do programming can be important for software design and delivery. Programming implements design characteristics for the programming language used. There are two design topics used: ◾ Data design. ◾ Procedural design. The strategy for software engineering programming is illustrated in Figure 1.2. Economies of the developed software are dependent on software engineering. In recent days, more and more Introduction ◾ 7 Confidence for Tools Software Engineers Ready for Software Provided Start Programming Delivery Programming Figure 1.2 Strategy for software engineering programming. systems are software-controlled and concerned with the methods and tools used for professional software engi- neering programming and development. The elements of software engineering are as follows: ◾ Software requirements and software design. ◾ Software testing and maintenance. ◾ Software configuration management (SCM) builds, plans, and documents. ◾ Software engineering management. ◾ Software engineering plans, processes, and procedures. ◾ Software engineering tools and methods. ◾ Software quality engineering reviews and buy-offs. When poor Software Engineering methods and designs are not effective; that can lead to major prob- lems with management, team members, employees and customers. Boyd L. Summers Summary Software engineering is a detailed study of designing, pro- gramming, developing, and maintaining software products. It is introduced to address the issues that arise due to low 8 ◾ Effective Methods for Software Engineering Code Build Test Software Deploy Monitor Engineering Definitions Plan Release Figure 1.3 Software engineering definitions. quality of software products. Problems arise when devel- opment of a software product exceeds its timeline and/or it has reduced levels of quality. Software engineering ensures that the application is built consistently, correctly, on time, and according to requirements. The demand of software engineering also emerges to cater to the immense rate of change in user requirements and environment on which applications are to be working (Figure 1.3). Further Reading Long, L. N., [email protected] 2005. www.personal.psu.edu/lnl. Pressmen, R. S., Software Engineering Book: A Beginner Guide. 1988. ISBN 0-07-050790-1. www.ebay.com/itm/143051317925. Chapter 2 Software Engineering Peer Reviews Software engineering peer reviews provide disciplined practices for detecting and correcting defects in software programming, thus preventing any issues and problems in their operations. Peer reviews identify and fix problems while performing software engineering activities in early stages of software development. Thus, for example, any requirements-related problems are identified and fixed dur- ing the analysis of requirements, rather than doing it during the stages of programming and testing. 2.1 Software Testing Software testing involves execution of a software program- ming to evaluate the interest of a software product. It indi- cates to which the software and systems are tested: ◾ Accomplish the software programming that guides for design and development. 9 10 ◾ Effective Methods for Software Engineering ◾ Always respond correctly to all kinds of software pro- gramming and systems under test. ◾ Perform all functions within an acceptable time for software engineering development. ◾ Achieve the results of all software and systems under test. As the number of possible tests for even simple software engineering components can be infinite, a sound software testing strategy is used to select tests that are useable for available time and resources. Software testing is typically used to execute software programming with the intent of finding software engineer- ing errors and defects. It is an iterative process for fixing issues in an existing software, and it can even create new software with required capabilities. Software testing can provide information about the quality of a software and the risk of its failure to software engineer- ing programmers. It can be conducted as soon as an execut- able software exists and determines when and how testing is conducted in processes after system requirements have been defined and implemented in test programs. In contrast, under an Agile approach, requirements, software engineer- ing programming, and testing are often done together. 2.2 Software Programming Support Software programming support includes software engi- neers and software quality engineers to help prevent Software Engineering Peer Reviews ◾ 11 software programming bugs that are needed to be fixed before delivery to software configuration management (SCM) for builds. Although a code written by a software programmer is syntactically correct, it may fail in peer reviews and checks. Considering software engineering cost and performance, some software engineering languages deliberate and exclude bug problems at the expense of slower performance with a lower code. I will give you an example using Java Programming that does not support implementations of some languages such as Pascal and scripting languages that have runtime arrays for debugging builds. Tools used for the analysis of software engineering code help software engineering developers to spot potential problems by inspecting the program test and code beyond the software capabilities. Although in general the problem of finding all software programming errors is a specification that is not solved, software programming tools exploit the fact that software programmers tend to make certain that there are fixes often when writing software coding. Software programming tools monitor the performance of software development as it is occurring to detect prob- lems and to to give assurance that code is working cor- rectly. It is often to find where most of the time is taken by a piece of software code, and removal might cause the software code to be rewritten. 12 ◾ Effective Methods for Software Engineering 2.3 Peer Reviews in Software Engineering Peer reviews in software engineering companies with experts are positioned at the top of the desirable devel- opment software engineering practices. Experience has shown that problem solving of defects is eliminated when processes incorporate peer reviews and that these peer reviews are effective for testing. It is therefore important for software engineers to perform peer reviews during soft- ware design projects. It is important to incorporate peer reviews in software engineering to design projects for the purpose of present- ing the experimental findings, lessons learned, possible challenges, and recommendations that may be used to promote learning and also the use of peer review activities for software engineering and computer engineering. The results show promising signs of using peer reviews in all software design projects. 2.4 Lessons Learned for Peer Reviews Lessons learned for peer reviews in software engineering are related activities for software engineering programming and for teaching peer reviews. I’ve had the opportunity to support software engi- neering peer reviews in software development organiza- tional programs. A complete discussion about software Software Engineering Peer Reviews ◾ 13 engineering peer reviews needs to remember that a soft- ware engineering peer-reviewing process deals with three main objects: ◾ Software work product, software code, and design are needed to be reviewed. ◾ A software reviewer acts as observer and provides comments. ◾ A software engineer must get their software work revised by a peer review. I have had many discussions supporting software engi- neering peer reviews as a quality engineer to ensure qual- ity assurance processes are used. What really matters is that software engineering peer review is a useful process to improve the software product coding before an impor- tant release. I see the benefits of software engineering peer reviews as related to software quality assurance and control. No matter how experienced software engineering devel- opers are, a checklist should always be used. This checklist can be considered an organizational and program asset for projects where the checklist gets its initial definition. By definition, a checklist is a list of items to be checked and observed. I also recommend grouping the items to be checked by software engineering development. For exam- ple, groups of items documented for software peer reviews are stated as follows: 14 ◾ Effective Methods for Software Engineering ◾ Software programming items for use and implementa- tion are reviewed. ◾ Items for software programming coding are performed consistently. Software developers will always welcome a report tem- plate. Depending on the specific context of your organiza- tion, a report template can be viewed as either a project or an organizational asset. Your template should present to the reviewer a brief indication of concepts, scales, and possible values that will be used for evaluation purposes, irrespective of the case. For example, in your report tem- plate, you should be informing the reviewers what a “pass” or “fail” means. If you are able to devote time for Lessons Learned for Peer Review Software Engineering activities, you can pre- pare for the peer review activity ahead of time by review- ing and having peer review feedback and ask clarification questions. Before the submission deadline for draft, inform software engineers that they will be performing peer review activities. Before this activity, remind software engineers to print off a copy of their reflections by adding the following announcements to learn peer review assign- ments as a reminder. You will share your draft reflec- tion with your software engineers during the peer review activity. To participate in the activity, software engineers must ◾ Submit the draft for deadlines. Software Engineering Peer Reviews ◾ 15 ◾ Have computers or other electronic devices to view software engineering programming. Further Reading O’Neil, D., 2001, “Peer reviews” in Encyclopedia of Software Engineering, New York: Wiley-Interscience. Vahid, G., What we know about smells in software code test code. IEEE Software, 2019, Vol. 36, No 3, pp. 61–73. https://ieeexplore. ieee.org/xpl/RecentIssue.jsp?punumber=52. Wiegers, K. E., 2002, Peer Reviews in Software: A Practical Guide, Reading, MA: Addison-Wesley. Taylor & Francis Taylor & Francis Group http://taylorandfrancis.com Chapter 3 Systems Engineering Capabilities System engineering ensures that all likely aspects of a proj- ect or a system are considered and integrated into pro- grams. Software engineering is an interdisciplinary field of engineering that focuses on how to design and manage all systems of software life cycles. Systems engineering uti- lizes systems processes to organize important knowledge capabilities. Systems engineering is an important field of soft- ware engineering and management that focuses on how to design and manage complex systems of software life cycles. The outcome of systems engineering activities can be used in software programming activities. The outcome of efforts is a combination of components that work in to collectively perform a useful software programming and design activities. Systems engineering aspects such as requirements, reli- ability and coordination within software engineering teams, testing, evaluations, and other disciplines are important for 17 18 ◾ Effective Methods for Software Engineering successful system development and dealing with large and complex projects. Systems engineering deals with work pro- cesses, optimization methods, and risk management for all software programs and projects. It overlaps technical dis- ciplines of software engineering, programs, and project management. Systems engineering is a process of discovering effective methods to achieve high-quality outputs with minimum cost and time. This process begins by detecting the real problems that need to be resolved and finding solutions to these problems. 3.1 Scope of Systems Engineering The scope of systems engineering covers all the activi- ties performed by software engineers and management of an engineered system. These activities can be part of the systems engineering environment and functions. In the international activities, systems engineering top- level definitions approach and means to enable the real- ization of successful systems and software engineering development. The scope of systems engineering is shown in Figure 3.1, which shows the relationship between systems engineering and the software engineering life cycle. Scope of systems engineering includes activities such as analyzing methods for production, testing, and opera- tions for planning and analysis functions. These activities Systems Engineering Capabilities ◾ 19 Development Phasing 1. Baselines - Systems Engineering Management - Life Cycle Integration 2. Systems Engineering Process - Integrated Teaming - Life Cycle Planning Figure 3.1 Scope of systems engineering. involved in production and installation of software prod- ucts that are used for programming and designing and for supporting the production environment. 3.2 Systems Engineering Concepts The concepts of system engineering capabilities have been deemed relevant for many years. It is important to under- stand software engineering and the capabilities of making technical decisions. System engineering capabilities have some similarities with services and high activities. The concept of service is to ensure that the capability and operations are directly related to the implementation of software engineering. The purpose of this chapter is to summarize the major events of the systems engineering capability. The Systems Engineering Capability Maturity Model (SE-CMM) pro- vides efficient methods for appraising the capability of programs and projects to reach required benchmark for achieving effective systems engineering functions. This chapter describes each step of an SE-CMM appraisal and provides guidance for the preparation and conduct of an appraisal. 20 ◾ Effective Methods for Software Engineering Table 3.1 Systems Engineering Support Environment 1. Does the project or organization allocate adequate resources including team members for performing system engineering support process area on projects? 3. Does your project or organization provide appropriate tools for system engineers supporting the performance of process areas on your project? 3.3 Systems Engineering Support The process associated with systems engineering support environment process area is managed using the practices in Table 3.1. 3.4 Systems Engineers’ Role Systems engineers play an integral role in the success of programs, projects, and businesses in many industries. They lay the foundation for systems to begin conception, production, and realization of valuable operations. Their role includes identifying a problem based on the needs of software engineering and developing a solution which will constantly be evaluated throughout the process after its execution. Systems engineers monitor the performance of Systems Engineering Capabilities ◾ 21 systems and continuously assess all stages of operations to ensure that there are no problems. Systems engineers’ role demands an ability to apply an interdisciplinary approach to ensure that technical pro- cedures are translated into step-by-step activities for pro- ducing efficient and effective results. A systems engineer will often collaborate with a program and project manager along with software engineering teams to take the lead to facilitate the achievement of a successful system. They will also participate in each stage of the given system or process, from software design and development to valida- tion and operation and risk assessment, often focusing on performance, testing, scheduling, and costs. The type of work involved must pursue a career as a system engineer highly proficient in software-related top- ics. Many systems engineers should maintain constant communication with engineering teams, project manag- ers, and other stakeholders in the programs and projects. Ultimately, aspiring systems engineers should have highly developed interpersonal skills. Further Reading Miller, T. R., Lt Col, USAF SEI Joint Program Office. This work is spon- sored by the U.S. Department of Defense. Copyright © 6/3/96 by Carnegie Mellon University. Taylor & Francis Taylor & Francis Group http://taylorandfrancis.com Chapter 4 Systems Engineering Requirements System engineering requirements are categorized in several ways. The following are common categoriza- tions of requirements related to technical management. Operational requirements for systems engineering define the basic needs for answers to the questions posed in Figure 4.1. Operational distribution or deployment: Where will the system engineering be used? Mission profile: How will the system engineering accomplish its mission objective? Performance: What are the critical system engineering parameters to accomplish? Utilization environments: How are the various system components to be used? Effectiveness requirements: How effective or efficient must the system be in performing its activities? Operational life cycle: How long will system engineering be in use by the user? Environment: What environments will the system be expected to operate in effective activities? Figure 4.1 Operational requirements. 23 24 ◾ Effective Methods for Software Engineering 4.1 Functional and Performance Requirements Functional requirements include necessary tasks that must be accomplished, actions that needs to be taken, and activities that needs to be performed. Functional review is a process of making decision on what has to be done to fulfill the requirements identified through requirements analysis of a system. Performance requirements show the extent to which a mission or function must be executed and measured in terms of quality coverage, timelines, and/or readiness. During requirements analysis, performance requirements will be interactively developed to all identified functions based on system life cycle factors and will be charac- terized in terms of the degree of certainty for system success. System requirements for functional and perfor- mance analyses involve defining software engineering needs and objectives in the context of planned use, envi- ronments, and identified system characteristics to deter- mine requirements for system functions. Prior analysis will be reviewed and updated along with environment definitions to support system definition. Requirements analysis is conducted iteratively with functional analysis to optimize system’s performance requirements for identi- fied functions and to verify that synthesized solutions can satisfy program and project requirements. The purpose of a system’s requirements analysis is to Systems Engineering Requirements ◾ 25 ◾ Refine objectives and requirements. ◾ Define initial performance objectives and refine them into system requirements. ◾ Identify and define constraints that limit solutions. ◾ Define functional and performance requirements based on provided measures of effectiveness. The functional review focuses on what the system engi- neering must do to perform the required operational activi- ties. It includes required inputs, outputs, and transformation rules. The functional requirements along with the physical requirements show the primary sources of requirements that will eventually be reflected in the system specifica- tion. The functional review includes information about the following: ◾ System engineering functions and activities. ◾ System engineering performance during evaluations. ◾ System engineering tasks to be accomplished and/or actions to be taken. 4.2 Integrated Team Development Integrated team development is making a team expertise in operationally employing a product or a software that is being developed. Software developers need to be compe- tent in the operational aspects of the system engineering under development. Typically, systems engineers need to be 26 ◾ Effective Methods for Software Engineering completely expressed in a way directly usable by software developers. It is unlikely that software developers will receive a well-defined problem from which they can develop sys- tem specifications. Hence, integrated team development is a necessary part of a systems engineering team to understand the problems and analyze the needs. The integrated systems engineering team development for functional and require- ments analyses is a process of reviews and resolutions. The following are typical questions that can initiate the thought processes: ◾ What are the reasons for system engineering development? ◾ What are the software engineering expectations? ◾ Who are the users and how do they intend to use products? ◾ With what environment must the system engineering comply? ◾ What are existing and required planned for interfaces? ◾ What functions will the system engineering perform? ◾ What are the constraints for software? 4.3 Benefits of System Engineering Frameworks System engineering frameworks can help team mem- bers gain more effective plans and procedures to sup- port software engineering services and provide better Systems Engineering Requirements ◾ 27 communications. There should be more creative think- ing that enables new perspectives and ways of work- ing, and there should also be a continuous improvement during software engineering design, programming, and development. System engineering framework makes continuous efforts to define, measure, analyze, improve, and control the aspects that are necessary to achieve stable and pre- dictable results successfully. Achieving software engineer- ing improvement requires commitment, particularly from system engineering support and top-level management. As a result of this framework, it is incumbent on top- level management to prioritize areas of improvement and success. 4.4 S ystem or Subsystem Requirements Each of the system and subsystem requirements should be assigned a project-unique identifier to support testing and enhance traceability, and they should also be stated in such a way that an objective verification and valida- tion can be defined for it. Project-unique identifiers should use the Program and Project work Breakdown Structure per Contract Work Breakdown Structure (CWBS). Each requirement should be annotated with associated qualifi- cation methods. Subsystem requirements should be trace- able to systems requirements. 28 ◾ Effective Methods for Software Engineering The degree of detail to be provided is guided by the following rule: ◾ Include characteristics of the system or subsystem that are conditions for acceptance. ◾ Defer to software engineering design as an acquirer to leave up to the developer. A systems or subsystem is required to operate distinctly from other software applications. Examples of require- ments are idle, ready, active, training, and backup. Itemized requirements associated with each system or subsystem function are defined as a group of related requirements (e.g., subsystem requirements). Subsystem level includes traceability to the system spec- ification and down to applicable line replaceable units including software Operational Flight Programs or its equivalents. Use of automated tools is highly encouraged, and tools that maintain detailed artifacts of each require- ment are preferred. Summary Systems engineering framework will be successful when everything is looked at and evaluated to meet compliance for all software development along with management and Systems Engineering Requirements ◾ 29 team employee activities. This framework must always be used to enforce design and programming for companies and institutions, and to ensure that support is implemented, and all tasks and activities are meeting expectations. Further Reading Supplementary Text 2001, Prepared by the Defense Acquisition University Press, Fort Belvoir, Virginia 22060-5565. Published by John Wiley & Sons, Inc. 111 River St. Hoboken, NJ 07030-5774. www.wiley.com. Copyright © 2019 by John Wiley & Sons, Inc., Hoboken, NJ. Input Document References; MIL-HDBK-520, Systems Requirements Document Guidance, 5 March 2010. Taylor & Francis Taylor & Francis Group http://taylorandfrancis.com Chapter 5 Software Engineering Problems and Solutions To solve or find solutions to problems in software engi- neering programming, you must make changes to some factors that make these problems being unresolved. The problems and solutions typically involve complex issues that are difficult to address. Making a change can provide solutions as a result so as to create desired effects on problems. The effects can be embedded in larger struc- tures. The actions taken produce the desired results and needed effects on the problems that need to be fixed. It is common for a newly developed software to have some problems in the early stages of its development pro- cess. Schedule constraints often lead software engineers to adopt and use the “Agile” methodologies that help make the software run correctly and fast. The ultimate goal is to receive the best response times when the testing teams conduct integration tests. 31 32 ◾ Effective Methods for Software Engineering 5.1 Solve Problems To solve problems, you must be concerned with the fol- lowing kinds of activities: ◾ Identifying required results you wish to create and the places where you will measure the extent to which the required results have been achieved. ◾ Identifying the structure in which these problems and effects associated with points of impact embedded. ◾ Configuring planned courses of action regarding tasks to be completed, changes to be made, results to be monitored, and adjustments as required. The solution engineering process is illustrated in Figure 5.1. Software solutions engineers are network engineers who provide solutions to a variety of problems that occur with software or hardware. When software engineers have to accomplish a task but their network technology is not sufficient to do that, the software solutions engineers come up with solutions to fix it. Software solutions engineers are a specific type of engi- neers found exclusively in software companies and insti- tutions. They could find solutions to any problems from computer network installations to customized software programming and development. Software Engineering Problems & Solutions ◾ 33 Specify the Desired Make the Required Results Changes Solution Engineering Process Specify the Required Monitor and Assess Changes the Results Figure 5.1 Solution engineering process. 5.2 Software Engineering Accomplishments Software engineering accomplishments begin when a user requests to initiate a specific task that to find solutions for fixing their problems. A software development team seg- regates user requirements, system requirements, and func- tional requirements. Requirements are identified by conducting interviews and based on a database created by studying the existing system. After gathering information about requirements, the software development team analyzes if a software can be made to fulfill all the requirements. System anal- ysis also helps understand limitations of the software product. As per the requirements and the results of the analysis, a software design is made. Implementation of the software design starts in creating software codes in 34 ◾ Effective Methods for Software Engineering a suitable programming language. Software testing is done while coding by the software engineers, and test- ing is conducted by experts at various levels of coding such as module testing, program testing, and product testing. 5.3 Software Engineering Problems and Solutions Teaching software engineering teams about software engi- neering problems and solutions is a challenging task. Some problems are encountered during teaching the course of software engineering to computer science students and software engineering employees for fixing with appropri- ate solutions. Software engineering problems are encoun- tered and related to contents of suggested solutions. The definition of software engineering was first intro- duced in 1968 at a NATO conference to address a software crisis that came to surface when many large software proj- ects faced great difficulties such as unexpected delay in deliveries. Some of the problems and encountered during software engineering are related to solutions. The defini- tion of software engineering was chosen as being provoca- tive in implying the need for finding solutions to software engineering problems based on practical disciplines that are traditional in the established branches of software engineering. Software Engineering Problems & Solutions ◾ 35 Other problems encountered are related to many soft- ware engineering activities which would lead to the con- clusion that most of them have the following contents in common: ◾ Introduction to software engineering practices. ◾ Understanding the software development process and life cycle. ◾ Requirements specifications are important for resolution. ◾ Implementations, testing, maintenance, and reliability will solve issues. Software engineering problems and solutions encountered analysis and design structured for objective approaches. This is due to the similarity between some of the software engineering tools used in the programming, design, and object-oriented approaches. ◾ Package and deployment diagrams. ◾ Activity and communication diagrams. ◾ Interaction overview and timing diagrams. The primary purpose for implementing effective methods in software engineering is to increase communication, knowledge, and visibility in the software life cycle of inte- gration operations. I hope that all readers find this chapter informative, interesting, and convey the information about the methods for software engineering to be more effective 36 ◾ Effective Methods for Software Engineering in current and future programs and/or projects. The soft- ware engineering industry/companies could benefit from adopting these effective methods as well. In order to develop, operate, and maintain integration capabilities inside software engineering facilities and work products, there must be a major discipline needed for supporting the entire software life cycle to completely under- stand planning, requirements, design, builds, installations, integration, subcontractors, quality, and delivery. The critical understanding and the start of the right disciplines of these software engineering methods will empower and achieve effective, flexible, and quality results in an integra- tion environment. Software engineering design, code and unit test, plans, and test procedures integrated with applied software tell us that the software is correctly developed. The software architecture definition provides a framework for creat- ing a software product design and also provides effective methods. The software engineering programming and design also defines implementation details about the soft- ware product architecture, components, and interfaces. Element traceability of the software requirements is used by software engineering designers. The traceability data and software engineering programming and design defi- nitions are documented according to program and project plans, ideas, processes, and work instructions. Software metrics is fundamental to software engineer- ing activities as a discipline. With software measurement, a system is assessed using a range of metrics, and from these Software Engineering Problems & Solutions ◾ 37 measurements, a value for fixes and delivery is obtained. Software metrics can be used to control software engineering process or to predict product attributes. These metrics can con- trol the factors that affect software product qualities as follows: ◾ Quality of activities related to the production of soft- ware engineering tasks. ◾ Results of the software development, deliverables, and products. ◾ Measurement of metrics for software engineering performance. Software programming and design tools are listed in Table 5.1. Table 5.1 Description of Different Software Programming and Design Tools Software Programming and Design Tools Description Requirements analysis These tools will be used in organizations by and programming and software engineering development programs design tools and projects for requirements analysis of new software. Organizations that do not use the program-wide standards provide documents for inclusion into the program database. Software programming and design documentation retain the tools’ format. Code development These tools have been proved for their tools effectiveness in designing and developing product line or work product software. The tools such as code editors and compilers are employed. (Continued) 38 ◾ Effective Methods for Software Engineering Table 5.1 (Continued) D  escription of Different Software Programming and Design Tools Software Programming and Design Tools Description Configuration CM tools, ClearCase and ClearQuest, support management (CM) distribution for incremental development tools processes implemented in software companies and for military and aerospace program and projects. Commercial off-the- COTS tools include standard word- Shelf (COTS) tools processing and graphic development tools to provide for the development and maintenance of documentation with the delivered software. 5.4 Software Engineering Fixes Software engineer fixes usually require software engineering team members and employees be able to understand codes and ensure that the programming is done correctly. If there is a problem, they write and create a solution using any pro- gramming language they feel comfortable with to fix it. As software engineers, you can fix and solve the follow- ing five problems: ◾ Write software engineering functions that compute the numbers that can be fixed. ◾ Write a software engineering function that combines lists of elements and document. ◾ Write a software engineering function that computes the list of problems to be fixed. Software Engineering Problems & Solutions ◾ 39 ◾ Write a software engineering function that gives a list of non-negative items that form the largest possible number to be fixed. ◾ Write a function for a program that outputs all possibilities to that the results are always fixed and ready for release. This chapter helps to understand concerns about software engineering development to solve and fix many software engineering problems. Always challenge the opportunity to solve and fix the problems. Further Reading A Brief History of Software Engineering. Online resource www. comphist.org/computing_history/newpage13.htm. Retrieved October 17, 2010. Mahoney, M., 2004. Finding a History for Software Engineering, Online resource www.princeton.edu/~hos/Mahoney/articles/ finding/finding.html. Retrieved September 15, 2010. Naur, P., Randell, B., Eds. Software Engineering. Report on a Conference held in Garmisch, Oct. 1968, sponsored by NATO. Parnas, D. L., Software engineering programs are not computer science programs, IEEE Software, November/December 1999, Vol 16, No 6, pp. 19–30. Taylor & Francis Taylor & Francis Group http://taylorandfrancis.com Chapter 6 Rational ClearCase and ClearQuest Software engineering and software configuration manage- ment (SCM) in general show how tools are implemented using Rational ClearCase and ClearQuest. It is important to considering SCM solutions, and project managers and soft- ware configuration managers are responsible for deploy- ment of Rational ClearCase and ClearQuest. This chapter describes the general concept of SCM and explains why management of software assets and life cycle is a good business. An SCM strategy that leads to the use of Rational ClearCase and ClearQuest products is described in the following: ◾ Provide the details of SCM using a ClearCase with a focus on test environment, network, servers, and clients. ◾ Introduce ClearQuest and the roles and responsibilities for users and the infrastructure to provide the details for planning and implementing. 41 42 ◾ Effective Methods for Software Engineering Table 6.1 SCM Improvements Multi-Sites ClearCase and Design and Software life ClearCase and ClearQuest implementation cycle ClearQuest planning management products ◾ Software change management (SCM) using ClearCase and ClearQuest, design considerations for an effective implementation, and builds for Software Engineering. ◾ Development in multiple locations using ClearCase and ClearQuest Multi-Sites, including detailed proce- dures for planning and implementation. There should always be continuous SCM improvements (refer to Table 6.1 for improvements). 6.1 Software Life Cycle Management The general concept of SCM explains why software assets and software life cycle management (SLM) is always a good business. Always choose the right SCM and software strat- egy that should always consider Rational ClearCase and ClearQuest. I will discuss why it is important to choose SCM tools and processes to handle software development. Examples try to illustrate the importance of software and its management over its entire life cycle. In fact, SLM has become so important for many organizations and proj- ects whether they are developing systems and applications Rational ClearCase and ClearQuest ◾ 43 themselves or they are purchasing systems and applica- tions from software vendors. To manage software assets, we need to choose the right process and the right tools. SCM tools and processes han- dle software assets as follows: ◾ Control is the goal of SCM. ◾ Software configuration and delivery for process man- agement and problem tracking. ◾ Software version control is making copies of data in order if necessary. ◾ Software configuration control implies a higher level of abstraction. ◾ The SCM tools must be able to identify which ver- sions from a set of components to comprise a specific build. Software engineering deals with the grouping and manipu- lation of versions of software progress through the soft- ware development life cycle. This typically involves SCM approval levels and production control. Problem tracking entails recording enhancement change requests, defect reports, and correlating these with the res- olution of the request. These reports may include a list of sources involved in the change that can create released products containing desired fixes. If there are many measurements, it may lead to confu- sion and distort the overall operations being performed according to SLM shown in Table 6.2. 44 ◾ Effective Methods for Software Engineering Table 6.2 Software Life Cycle Management Software Asset Management Developing Purchase Manage Management Developing Purchase Managing for the whole systems and software software life cycle applications applications assets is a from software good business vendors 6.2 Why ClearCase and ClearQuest The most important tools the SCM and software engineer- ing teams can own and use are Rational ClearCase and ClearQuest. Better SCM means better business to show you the benefits of using Rational ClearCase and ClearQuest prod- ucts as your SCM and software engineering tools of choice. SCM solutions help implement a managed approach to change that also guards against corruption of assets. Such tools as Rational ClearCase and ClearQuest provide support for team collaboration and software development, making the tools more productive and effective for working solutions and enabling software development teams to cap- ture, control, and securely manage software changes through- out the whole software life cycle as shown in Table 6.3. Table 6.3 Manage Software Changes Manage Software Changes Inception Transition Maintenance Business Analysis and Testing and Level of modeling and design and deployment control is requirements implementation SCM Rational ClearCase and ClearQuest ◾ 45 SCM with Rational ClearCase and ClearQuest solutions addresses key challenges by the following: ◾ Supporting software engineering team changes must be seamlessly coordinated for software development projects. ◾ Addressing key compliance issues arising from SCM, quality assurance, and software engineering process requirements. ◾ Ensuring that SCM per the plans and processes can quickly improve software engineering. SCM is a key capability in modern software development practices. It allows software engineering teams to carefully trace requirements over the project life cycle and make numerous changes to them if necessary. Software engineering delivery is a scalable SCM solu- tion that begins with ClearCase allowing a transition to enterprise ClearCase for Multiple Sites. It also integrates with software engineering full development productivity tools, including Rational ClearQuest having a change and defect tracking tool with unified (SCM) activities based on processes for change management. Rational ClearCase is the entry-level version; hence, it can be deployed only for supporting some basic SCM func- tions and processes. Every element of ClearCase versions is run on a single server in the software engineering develop- ment life cycle, which helps to track changes, maintain his- tory, and enforce the organization’s development process 46 ◾ Effective Methods for Software Engineering through scripted rules. Thus, using ClearCase facilitates software developers to quickly roll back to previous builds, baselines, or configurations. Unlike other basic SCM tools, ClearCase supports parallel development through automatic branching which enables multiple software engineering developers to design, code, and test software from a common programming code base. It also includes ClearCase’s patented technology to automatically merge parallel branches. ClearCase is the only entry-level SCM tool to support project organizations with an out-of-the-box process for controlling workflow and unified SCM, and capabilities of ClearCase are shown in Table 6.4. ClearCase and its products are based on the same fundamental architecture. Therefore, when the software Table 6.4 ClearCase Capabilities Capability ClearCase ClearCase Multi-Site Training required Yes Easy to deploy Yes Support parallel development Yes Yes Support SCM Yes Yes Enforce plans, policies, and Yes Yes procedures Protect code integrity Yes Yes Manageable Yes Yes Enforces development process Yes Yes Accelerated software build Yes management Rational ClearCase and ClearQuest ◾ 47 development projects grow larger in terms of the num- ber of software developers or the amount of code or arti- facts, the organization can easily turn to ClearCase without retraining developers, recreating the programming code base, or rewriting rules and policies. Transition of software engineering organizations from their previous system to ClearCase will not incur increased costs, delays, disruption, and reduced productivity, which they otherwise experience when changing SCM solutions. The ClearQuest product provides activity-based change and defect tracking. It can manage all types of change requests including defects, enhancements, issues, and documentation changes with a flexible workflow pro- cess, which can be tailored to the organization’s specific needs and the various phases of the development pro- cess. ClearQuest enables easy customization of defect and change requests, processes, user interface, queries, charts, and reports. Together with ClearCase, it provides a com- plete SCM and software engineering solutions that cover all areas of the SCM scope. ClearQuest also provides you with “design once, deploy anywhere” capabilities that can automatically propagate changes to any client interface (Windows, Linux, UNIX, and Web). ClearQuest supports the SCM process and provides for a proven change management process. It also supports proj- ects to run successfully regardless of team size, location, or platform. ClearQuest covers the process management and problem-tracking areas of the SCM domain. It can also be used either as a stand-alone SCM and problem-tracking tool 48 ◾ Effective Methods for Software Engineering or, together with ClearCase, to provide a complete SCM solution that covers all four areas of the SCM domain. The combination of ClearCase and ClearQuest covers all areas of the SCM domain and provides full integration of activity- based development with process management and problem tracking. 6.3 Rational ClearCase and ClearQuest Platform Rational ClearCase and ClearQuest platform support aims to align as much possible as with vendor support activities. This support may vary from this strategy due to critical customer needs for building and deploying their software engineering applications and the availability of software and security fixes, or for any other reasons. Rational ClearCase and Rational ClearQuest are focused on providing first- class software support for client–user interfaces. Both ClearCase and ClearQuest are controlled by SCM specification. To determine which version and element should be visible, ClearCase and ClearQuest traverse the software configuration specification line-by-line from top to bottom. As a software engineer using Rational ClearCase, you can associate a version with one or more change requests at the same time you check in or check out the version. Moreover, you can also submit queries to identify the Rational ClearCase and ClearQuest ◾ 49 change requests that are associated with a program and project over a period of time. As a Rational ClearQuest user, you can view the change set for a request. Further Reading Wahli, U., Brown, J., Teinonen, M. & Trulsson, L. Software Configuration Management: A Clear Case for IBM Rational ClearCase and ClearQuest UCM. IBM, Corp. Retrieved from http://www.redbooks.ibm.com/redbooks/pdfs/sg246399.pdf Taylor & Francis Taylor & Francis Group http://taylorandfrancis.com Chapter 7 C++ Programming C++ programming tools are implemented on the UNIX operating systems, and C++ is a flexible programming language that is popular and used for a large number of platforms. The C++ language is favored by many soft- ware programmers because it allows faster programs that are robust and portable. When I organized the Software Configuration Management (SCM) team to implement ClearCase and ClearQuest for the F-22 Raptor program, the C++ programming was used by all software engineers. The very first thing you need to do, before starting out in C++, is to make sure that you have a compiler. A compiler turns programming that you write into executable to ensure that your computer can actually understand what is being documented. If you’re starting out on your own, your best bet is to use Code Blocks with MinGW. If you’re on Linux, you can use C++; if you’re on Mac, you can use XCode; and if you are stuck using an older compiler such as Turbo C++, you’ll need to read this chapter for compatibility issues. If you haven’t done so, go ahead and get a compiler set up for use. 51 52 ◾ Effective Methods for Software Engineering 7.1 Introduction to C++ Language C++ programming language gained popularity as it was adopted by numerous programmers around the world and some software programmers added it to their language of choice. A committee of the American National Standards Institute (ANSI) and the International Organization for Standardization (ISO) has defined the standard version of C++ as portable to the platform and to developed environments. The C++ program is a collection of commands that allow the computer to execute the activities for using the C++ software programming. This collection of com- mands is usually called C++ source code and it includes commands for functions and/or keywords. Keywords are basic building blocks of the language, while functions are usually written in terms of simpler functions you see in first programs. C++ provides a great many common func- tions and keywords that you can use. But how does C++ programs actually start? Every program in C++ has one function named main() that is always called when your programming is first executed. 7.2 Commenting on Programs To access standard functions that come with the compiler, you have to include a header that will include directions. As you are learning software programming, you should also start to learn how to explain your programs and add C++ Programming ◾ 53 comments to software code to use frequently to help explain all code examples. Be certain not to accidentally comment out a piece of code. When you are learning to be a soft- ware programmer, it is useful to be able to comment out sections of software code in order to see how the output is affected. Installing the complier will execute C++ programs into byte software code that is understood by the computer. 7.3 Standardization of C++ The standardization of C++ programming was adopted by many software programmers around the world. Programs and organizations run in a console windows on Linux sys- tems to demonstrate the mechanics of the C++ language. A software coding generated by a visual development tool on a Windows platform can make you familiar with the C++ language and be able to edit it to create windowed applications. 7.4 Compiling for Running Programs When C++ succeeds, the compiler for running programs creates executable files for software source code files. Compiling software source code files in the same directory would overwrite executable files, so a customer’s name is specified for each executable file when working in pro- grams using the compiler options. 54 ◾ Effective Methods for Software Engineering For programming, you have to do the following: ◾ Move the program source file to a program directory on your system. ◾ At command prompts, use the command to navigate to the “My Programs” directory. ◾ Enter a command to attempt to compile program using C++. ◾ Also enter a command to compile programs to exe- cute files alongside source files such as C++ hellow. cpp – hello.exe. To run an executable software program file generated in Windows, you must enter the file name when you see the My Programs directory to have the file extension imple- mented (see Table 7.1). 7.5 Programming Files The ability to software programming files provides useful methods for maintaining data on computers. The standard C++ software programming provides functions for working Table 7.1 Command Prompt C:\MyPrograms> C++ hello.cpp – o hello.exe C:\Users\Name> cd C:/My Programs C:\MyPrograms > hello – Hello World! C:\MyPrograms >_ C++ Programming ◾ 55 files which can be made available by directing at a start of programming. For each file, a file stream object must be created for writing data to the programming file for help in reading data from the file. The file stream object for pro- gramming begins with of stream keyword followed by the name of the programming file to be written to. Before writing to the output to a file, the program should test to ensure files have been created and performed to allow the programming to write output when the test is successful. While starting a new program using C++, you should start library classes to do the following: ◾ Add main functions containing statements for software programming. ◾ Create output file streaming objects for software programming. ◾ Insert statements to programming files to compile. 7.6 C++ Programming Elements The time function is the number elapsed, and it ensures that numbers generated will appear to be true for ran- dom use. To start a new program, you should do the following: ◾ Specify library classes to include random support. ◾ Add the main function containing return statements. 56 ◾ Effective Methods for Software Engineering ◾ Keep the random number generator for current time use. ◾ Save, compile, and run the program and project to be successful. Summary C++ is an object-oriented programming language that is an extension of software programming language, and each method must contain a main method as the entry point to all programs and organizations. The C++ commands call the compiler to specify generated executables to store mul- tiple items of data in elements. It is recommended that soft- ware programming code be widely commented to make sure the purpose is clear. The visual programming with C++ provides functions to work with graphical controls. Once programming is completed, the program or project should be tested to ensure that the methods involved meet all the requirements of program and project plans. C++ applications can run on any machine and laptop with an appropriate.NET framework. Further Reading McGrath, M., 2015, C++ Programming in Easy Steps, Warwickshire: In Easy Steps Limited. ISBN 978-1-84078-432-9. www.ineasysteps. com. Chapter 8 Software Configuration Management The purpose of Software Configuration Management (SCM) is to provide a common operating framework in which activ- ities such as building software and documenting SCM plans, and Version Description Documents (VDD) can be shared between management, team members, and software quality engineering (SQE) representatives. The expected SCM build- ing of software is delivered to test labs for verification and validation by SQE. Components of SCM is making sure soft- ware configuration has identification, change control, SCM status accounting and SCM audits and reviews are performed. For 20 years, I was an SCM engineer working for the Boeing Defense and Space programs for B-2 Stealth Bomber, F-22 Raptor, Advanced Systems, and Airborne Early Warning & Control (AEW&C) in Australia. I was able to put together an SCM team to get ClearCase and ClearQuest installed when working for AEW&C and F-22 Raptor programs. 57 58 ◾ Effective Methods for Software Engineering 8.1 Software Configuration Management Items Software configuration management (SCM) items are the software while under the development for programs, data, documents such as the software requirements specifica- tion, test cases that are referred to as SCM items during the software engineering development. SCM provides for systematic evolution of a software under development and provides for: ◾ Visibility ◾ Controlled change ◾ Traceability ◾ Monitoring. 8.2 Goals for Software Configuration Management The goals for an SCM must include planned activities to ensure that software work products are identified, con- trolled, and made available. Changes to identified software work products are controlled, and affected groups and individuals must be informed of the status and content of all software baselines. Baselines include the following: ◾ Phase and discipline ◾ Requirements analysis Software Configuration Management ◾ 59 ◾ Software design and specification ◾ Software programming and implementation ◾ Testing and integration ◾ Test plans and data ◾ Release of operational software. The baseline is a specification or a product that has been formally reviewed and agreed upon and serves as the basis for further software development. SCM goals are provided in Figure 8.1. SCM identification includes setting and maintaining soft- ware engineering baselines, which define the architecture, components, and software developments at any point in time. It is the basis by which changes to any part of SCM are identified, documented, and later tracked through software programming, design, development, testing, and final delivery to labs and customers. SCM incrementally establishes and maintains the definitive current basis and Define Software Identify and document Software Configuration Software Configuration Configuration Audits Management Management Status and and Reviews are Structure and operation goals. conducted Performance Supply information regarding Software Configuration Management Activities Figure 8.1 Software Configuration Management goals. 60 ◾ Effective Methods for Software Engineering its configuration items (CIs) throughout their product life cycle from software engineering development, production, deployment, to operational support. Software configu- ration control includes evaluation of all change requests and change proposals, and their approval or disapproval. SCM covers all the processes that control any modifica- tions to the designs of hardware, firmware, software, and documentation. The information about the effectiveness of a software engineering process is necessary for management, team members, and employees, and so it should be made avail- able through SCM engineering. Software changes should be documented, and the information should always be checked for any updates. Updated information for the CIs is available in the SCM database. The responsibilities for SCM are as follows: ◾ Implement the SCM program and SCM requirement for software baselines. ◾ Establish and maintain a software change request (SCR) tracking database for reviews. ◾ Develop and document the SCM plans and operating procedures and documents. ◾ Form an Engineering Review Board (ERB) that will prepare and distribute its agendas, record the status of SCM change requests, and review and approve the requests. ◾ Produce and distribute SCM status plans and reports. Software Configuration Management ◾ 61 ◾ Coordinate SCRs with respective individuals to imple- ment approved changes and to resolve and fix all SCR problems. ◾ Make sure that software quality representatives (SQR) are included in all ERB meetings. 8.3 Integration Build and Release The role of an integration build and release engineer is to construct software systems and set up software components. They combine the work of many SCM teams and assemble software builds for integration and release. Software integra- tion is the process of bringing the works of different SCM teams together, testing them, and making adequate changes to produce software systems with required performance. There are two types of integration used by SCM: merge and assembly integrations. Merge integration involves the solutions of changes made by SCM teams to common files and components. It should always be remember that merge integration requires the knowledge of changes made to software systems. The integration build and release methods provide required steps to be conducted for integration and check- out of informal software engineering builds. The SCM engineers, software design/development teams, and test engineers need to develop a strategy for planning, design, execution, data collection, and test evaluations. 62 ◾ Effective Methods for Software Engineering The software builds and integration activities are formal and flexible and prepare for the software and systems inte- gration phase for the work product. The strategy for software integration builds and release provides a road map that describes the steps to be con- ducted as part of the implementation of software to start integration activities. When a strategy is planned, adequate resources are required. This strategy should be flexible and promote an approach that could show change. Sometimes, planning by a senior engineer, program and project managers need to track the progress of program and project, and also need to do the following: ◾ Conduct effective technical reviews. ◾ Show different integration techniques and software approach. ◾ Involve software engineering designers from the start to the end of the work in SCM. 8.4 Assembly Integration Assembly integration provides baselines for software com- ponents that could be large pieces of the overall software system. Assembly integration can occur during software build times and SCM activities, and can bring together source components of software builds. Different types and levels of assembly integration are used based on the size of the software build systems. At certain levels, software Software Configuration Management ◾ 63 System Integration Software Subsystem A Integration Subsystem B Integration Figure 8.2 Software system integration. systems must have a well-defined architecture to use the assembly integration. There are three assembly integration scenarios required for the SCM teams to develop the software system inde- pendently and perform assembly integration. The first level of assembly integration is referred to sub- system, and the second level is software system integration for A and B as shown in Figure 8.2. 8.5 Software Configuration Management Methods SCM methods are used for the development of software engineering programs and maintenance of computer soft- ware engineering tools. There are a variety of SCM meth- ods used by many software programs worldwide. The terminology, definitions, or terms used by SCM can be dif- ferent depending on what software program you work in. An example is; ERB and SCR can be used and defined. Another definition is Version Description Document (VDD), which I have seen and used in all my 31 years of working 64 ◾ Effective Methods for Software Engineering in military and aerospace programs. What is defined in the software program or project by the SCM methods deter- mines the terms to be used while working on a software engineering program. As a software designer, I know that my software design activities are important and comfortable to release software code for SCM to configure and control along with build- ing software code changes or updates to release for test, verification, validation, and delivery to customers. There are more about SCM organizations that software designers do not know. Many software designers feel SCM has no understanding of software engineering, and I beg to differ that there are numerous software designers who want to know the role of SCM. The SCM activities are necessary to ◾ Establish and maintain the software engineering iden- tification process and control changes to identified software products and their related integration and documentation. ◾ Record and report information needed to manage software products effectively, including the status of proposed changes and the implementation status of approved changes. ◾ Maintain auditable records of all applicable software products help verify conformance to specifications, interface control documents, contract requirements, and as-built software configurations. Software Configuration Management ◾ 65 Summary The SCM build engineer will perform tasks related to soft- ware construction and configuration control that include creation of a folder to store documentation of the build, software source code changes, and records of computer program development. Software build requests (SBRs) are written, and a build procedure checklist is provided to assemble, compile, and link source codes; build archive copies; provide listings for use in software engineering development, test, and delivery support; and document the VDD. Further Reading Berczuk, S. P., Appleton, B., 2003, Software Configuration Management Patterns: Effective Team-Work Practical Integration, First Edition. Boston, MA: Addison-Wesley. ISBN 0-201-74117-2. White, B. A., 2000, Software Configuration Management Strategies and Rational ClearCase: A Practical Introduction, Boston, MA: Addison-Wesley. ISBN 0-201-60478-7. Taylor & Francis Taylor & Francis Group http://taylorandfrancis.com Chapter 9 Software Quality Engineering All companies, institutions, military, and successful busi- nesses need to advance and improve the performance of software quality engineering (SQE) to ensure that builds, changes, and weekly meetings of software configuration management (SCM) are compliant with all software needs. A critical part of improving SQE performance is enabling software management, SCM team members, and software engineers to report issues and events that might affect their ability to deliver software with high standards. The SQE Performance and Improvement Reports are the basis of quality efforts to look constructively at how can software services and workplace be made safer, more secure, more efficient, and more consistent. The purpose of these reports are not to find fault with or blame at anyone; rather, it helps to be more mindful about what is done by software engineers and SCM and how to accomplish and identify aspects that might need extra support to achieve the highest levels of software engineering deliveries. 67 68 ◾ Effective Methods for Software Engineering 9.1 Software Quality Engineering Progress There are many stages in progress in which software qual- ity engineers would guide software engineers and SCM to know and play their roles and responsibilities to ensure that the performance of SQE and SCM has improved to provide better outcomes. In my software engineering experience of 31 years, being better and successful and ensuring that processes of performance and improve- ments are compliant with requirements have always been important. Software engineering audits, reviews, and compliance requests are common when program and project core soft- ware applications are up for renewal. As a starting point in processes, software engineers will require to prove that they are licensed to play their respective roles and respon- sibilities. Most software engineering terms and conditions require to voluntarily participate in any software audits, reviews, or compliance requests. 9.2 Preparation for Software Quality Engineering Performance There are guidelines and values for preparation for SQE performance based on the performance and ability of soft- ware engineers to prepare daily ideas and concepts that help accomplish the software engineering tasks. Software Quality Engineering ◾ 69 The main ideas relate to making correct statements to identify and rectify software engineering issues and ensuring schedules are met for companies, institutions, military, and successful businesses. The following are few examples: ◾ Capability for performing software engineering is required. ◾ Important schedules must be maintained and effective with management/SCM/SQE support. ◾ A software quality engineer performance is a type of measurement. ◾ Performance evaluates the success of software, pro- grams, projects, products, plans, etc. ◾ Choosing the right software engineering performance relies upon a good understanding. There is a need to understand what is important for vari- ous software engineering techniques that are assessed to their key activities. The SQE assessments often help identify initiatives for potential improvement. A very common way to choose performance is to apply a SQE framework. The SQE framework will establish standards relating to software engineering performance improvement with respect to facilities and provide technical assistance in order to meet such standards. Best practices include how to coordinate the implementation of plans and procedures with software quality assessment and assurance activities. 70 ◾ Effective Methods for Software Engineering 9.3 Preparation for Software Quality Engineering Improvement Preparation for SQE improvement ameliorates capabilities and key results of management and software engineers for having successful objectives and achieving better results. SQE plans provide a sequence of actions to be implemented in order to improve work process of companies, institu- tions, military, and successful businesses to reach successful accomplishments. Management needs to establish a proper channel of communication to lead and show software engi- neers involved in decision-making their commitment to car- rying out all decisions. The SQE improvement is a simple process that involves basic common sense and a simple logical approach to improve principles and techniques that help fulfill the responsibilities of software engineering. In order to provide audits, reviews, and evaluations for Software Quality Assurance Engineering processes look at the time spent in each software engineering development phases. When management, software engineers, and SQE personnel spend detailed time, it shows that evaluations are reasonably complete. To achieve high SQE tasks, always spend time to ensure that review times and inspections measure the importance of performance and improvement. I suggest using the following guidelines: ◾ Use contract and requirement reviews for inspections. ◾ Conduct high-level SQE audits, reviews, and inspections. ◾ Ensure data audits and reviews for release are compliant. Software Quality Engineering ◾ 71 It is effective to use SQE checklists and update them frequently with issues or concerns you see related to dis- crepancies in software engineering and SCM. When data reflects problems always review deep content to find the cause. After the completion of SQE evaluations, they will show where adjustments need to be made. Strive to improve process and SQE to be successful during all activi- ties performed by software engineers and SCM. 9.4 Preparation for Quality Assurance Improvement Roles and missions describe the scope with preparation for quality assurance improvement capabilities. Key results for QA improvement relate to management and employees for having successful objectives and for achieving better results. Action plans provide a sequence of actions to be implemented in order to improve work process of com- panies, institutions, military, and successful businesses to reach successful accomplishments. Management needs to properly communicate with software engineers involved in decision-making regarding their commitment to carry- ing out all decisions. Quality assurance improvement can be a simple process that involves basic common sense and a simple logical approach that improves principles and techniques to fulfill the responsibilities of software engineering. 72 ◾ Effective Methods for Software Engineering 9.5 Software Quality Engineering Excellence Management and software team members can help in the drive for SQE excell

Use Quizgecko on...
Browser
Browser