Share E-Book

Modern Software Engineering Guidebook (Dr. Shakti Kundu) (z-library.sk, 1lib.sk, z-lib.sk)

Author

Software
Language English

No Description

Format PDF
Size 29.9 MB
3
Views
(First 20 pages)

Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Page 1
Modern Software Engineering Guidebook Practical solutions to efficient and economical software management
Page 2
Modern Software Engineering Guidebook Practical solutions to efficient and economical software management Dr. Shakti Kundu www.bpbonline.com
Page 3
ii ■ First Edition 2024 Copyright © BPB Publications, India ISBN: 978-93-55519-801 All Rights Reserved. No part of this publication may be reproduced, distributed or transmitted in any form or by any means or stored in a database or retrieval system, without the prior written permission of the publisher with the exception to the program listings which may be entered, stored and executed in a computer system, but they can not be reproduced by the means of publication, photocopy, recording, or by any electronic and mechanical means. LIMITS OF LIABILITY AND DISCLAIMER OF WARRANTY The information contained in this book is true to correct and the best of author’s and publisher’s knowledge. The author has made every effort to ensure the accuracy of these publications, but publisher cannot be held responsible for any loss or damage arising from any information in this book. All trademarks referred to in the book are acknowledged as properties of their respective owners but BPB Publications cannot guarantee the accuracy of this information. To View Complete BPB Publications Catalogue Scan the QR Code: www.bpbonline.com
Page 4
■ iii Dedicated to Every challenging work needs self-effort as well as the guidance of elders, especially those who were very close to our hearts. My humble effort I dedicate to my sweet and loving father Shri Shamsher Kundu and mother Smt. Anupama Kundu whose affection, love, encouragement and prays of day and night make me able to get such success and honor.
Page 5
iv ■ About the Author Dr. Shakti Kundu is serving as Associate Professor, School of Engineering and Technology, Computer Science Engineering at BML Munjal University (BMU), Gurugram, Haryana, India. His current research interests are Web Data Mining, Software Engineering, Intelligent Systems, Big Data Analytics, and Digital Marketing. He brings to his classes, over 15+ years of teaching experience. He also worked with various reputed universities and holds administrative experience as well. He has published more than 56 research papers in reputed journals and conferences, which are indexed in various international databases. Called for several invited talks and keynote addresses and chaired sessions in various conferences at the national/international level in the field of Big Data Analytics, Web Data mining, and Software Engineering. Also serving as a member of the reviewer board of various peer-reviewed journals and conferences. His leadership abilities are reflected while successfully hosting various seminars, workshops, short-term training programs, and conferences. He is a reviewer board member of SCI & Scopus indexed journals like International Journal of Healthcare Information Systems and Informatics IGI Global, IEEE Transactions on Computers, International Journal of Engineering & Technology Science Publ Corp UAE, Computer Applications in Engineering Education Wiley USA, Journal of Intelligent and Fuzzy Systems IOS Press Netherlands and, Journal of Intelligent Manufacturing Springer Netherlands. He is a life member of CSI, ISTE, IAENG, AIRCC, and IAEME.
Page 6
■ v About the Reviewers V Chetan Sachdeva is a tech enthusiast with over 14 years of expertise in C++ and Python software development, with a dynamic career spanning Automotive, AR/VR, IoT, Android native development, Typography, and Printing RIP. His true passion lies in solving complex problems with data structures and algorithms. His entrepreneurial spirit has led to the successful design of software and products for startups. Beyond his professional endeavors, Chetan is an avid reader of non-fiction and IT-related books, staying at the forefront of industry trends. V Raj Agrawal is a distinguished Senior Engineering Manager at Salesforce, renowned for his expertise in distributed systems, generative AI, and enterprise mobile applications. He has a proven track record in leading technological strategy and execution, with deep expertise in microservices and cloud computing. Known for fostering high-performing, diverse teams, Raj has significantly contributed to advancing AI technologies while ensuring robust data privacy and security. As an author, he provides insightful perspectives that drive innovation and inspire future engineers. Raj's work continues to impact the broader technological landscape, promoting excellence and progress.
Page 7
vi ■ Acknowledgement There are a few people I want to thank for the continued and ongoing support they have given me during the writing of this book. First and foremost, I would like to thank my parents, wife, and son Shaurya for putting up with me while I was spending many weekends and evenings writing. I could have never completed this book without their support. This book would not have happened if I had not the support of my colleague(s) and students. My gratitude goes to Prof. Maneek Kumar, Dean, School of Engineering and Technology, for providing valuable insights into some of the new features and allowing me to have access to the impressive Computer Science Engineering lab, BML Munjal University (BMU), Gurugram, Haryana, India. I am also grateful to BPB Publications for their guidance and expertise in bringing this book to fruition. It was a long journey of revising this book, with valuable participation and collaboration of reviewers, technical experts, and editors. Finally, I would like to thank all the readers who have taken an interest in my book and for their support in making it a reality. Thank you for your encouragement and kind words.
Page 8
■ vii Preface Building software applications is a complex task that requires a comprehensive understanding of the latest technologies and trends. The powerful techniques of software engineering have become increasingly popular in the field of software development. This book is designed to provide a comprehensive guide to building software applications with software engineering. It covers a wide range of topics, including the basics, advanced concepts such as object-oriented design, software implementation, software testing strategies, and the use of software metrics for building robust and scalable software applications. Throughout the book, you will learn about the key features of software engineering and how to use them to build software applications that are efficient, reliable, and easy to maintain. You will also learn about best practices and design patterns for creating software applications and will be provided with numerous practical examples to help you understand the concepts. This book is intended for developers who are new to the concepts of software engineering and want to learn how to build software applications. It is also helpful for experienced developers who want to expand their knowledge of these technologies and improve their skills in building robust and reliable software applications. With this book, you will gain the knowledge and skills to become a proficient engineer in the field of software engineering. I hope you will find this book informative and helpful. The primary goal of this book is to provide information and skills that are necessary for end users as well as engineers to understand the real scenario of software engineering. This book contains real-life examples that will help you remember, analyze, apply, and create the various trends and techniques of modern software engineering. The book is composed of an introduction with 15 chapters each consisting of conclusions at the end. The conclusions present the original contributions of the author and point out directions for the next chapter. Over the fifteen chapters of this book, you will learn the following: Chapter 1: Introduction to Software Engineering - explains everything needed for the engineer to develop software applications based on the phases of software engineering, including requirements, analysis, design, development, testing, implementation, and maintenance. Furthermore, the chapter also gives the reader an overview of the software characteristics, software applications, and objectives of software engineering.
Page 9
viii ■ Chapter 2: Software Processes - presents a detailed overview of the software engineering process and shows the differences between software process, project, and product. This is essential content for the entire book as this chapter covers fundamental aspects of process assessment that lead to process improvement and capability determination. In addition, the description of the software process capability maturity model and software life cycle models define the task that tasks that are performed at each phase in the development of software. Chapter 3: Software Life Cycle Models - covers the extended discussion on software life cycle models, including prototyping, object-oriented, agile, rapid application development, iterative enhancement, v-model, and extreme programming. Furthermore, the chapter shows how various software life cycle models work with their benefits and drawbacks. Chapter 4: Software Requirements - allows the reader to learn fundamental concepts related to functional requirements and non-functional requirements, including product, organizational, and external. Furthermore, the chapter explains user requirements and system requirements with details and practical examples. The users of a requirement document are highlighted in the shape of a software requirements document for better description and understanding. Chapter 5: Software Requirements Engineering Process - gives special attention to feasibility study and requirements elicitation and analysis, demonstrating how to implement robust and extensible software applications and explaining concepts related to requirement validation and its related techniques. Close-ended and open-ended software prototyping concepts help the user satisfy the requirement and achieve a workable version. For problem analysis, change analysis, and change implementation, the requirement change management process plays a vital role. Chapter 6: Software Reliability - shows basic concepts of software reliability and its related metrics. It also shows the differences between fault, error, and failure. The chapter includes practical examples of programming for reliability and software reuse. Several levels at which software reuse can be taken into consideration are highlighted for further comprehension. Chapter 7: Software Design - explains the basics of software design and its design process. This chapter also allows the reader to learn the concepts of data, architectural, component level, and user interface design. The fundamental design concepts and structured design techniques provide model support for the establishment of software systems. Chapter 8: Object-Oriented Design - is dedicated to highlighting the role of object and object classes to give the reader more familiarity with the description of objects and their
Page 10
■ ix relationship. It also talks about the various activities in the object-oriented design process with its associated phases. This chapter covers practical examples of design models such as the sequence model and state machine model. Chapter 9: Software Implementation - presents the structured coding techniques. This chapter covers practical examples of coding styles and coding methodology. It also describes the list of some of the frequently used coding tools. In addition, emphasize the usage of code documentation and further follow code standards with well-stated guidelines. Chapter 10: Software Maintenance - covers the concept of the software re-engineering process model. This chapter describes the elements, objectives, and issues of change management. For document specification, the essential tasks of configuration management are discussed. Furthermore, several tools and techniques used for software maintenance are described with their respective appellation. Chapter 11: Software Testing Strategies - allows the reader to understand the importance of software testing and its strategies. This chapter covers various levels of testing such as black box, white box, validation, alpha, beta, system, recovery, security, stress, and performance testing with their benefits and drawbacks. It also highlights the process of debugging and its related approaches. Chapter 12: Software Metrics - focuses on software quality metrics. This chapter covers practical instances of metrics for analysis, design, source code, testing, and maintenance. The discussion on software metrics is well addressed to quantify object-oriented principles such as polymorphism, inheritance, coupling, and cohesion. Chapter 13: Quality Management - shows the concept of quality with its quality determining elements. This chapter covers relevant concepts such as software quality assurance, software reviews, and formal technical reviews. Three standards for ISO-9000 with its related guidelines were discussed for the creation of a quality software system. Chapter 14: Software Project Management - is dedicated to showcasing the concept of project planning to give the reader more familiarity with the main principles associated with project progression. This chapter covers practical examples of project scheduling and project staffing. It also describes the goals of the capability maturity model in the five defined levels. Chapter 15: Latest Trends in Software Engineering - highlights the rise and exponential growth of software engineering. It discusses the trends in software engineering and top IT job profiles in the current environment.
Page 11
x ■ Coloured Images Please follow the link to download the Coloured Images of the book: https://rebrand.ly/iwkhg5s We have code bundles from our rich catalogue of books and videos available at https://github.com/bpbpublications. Check them out! Errata We take immense pride in our work at BPB Publications and follow best practices to ensure the accuracy of our content to provide with an indulging reading experience to our subscribers. Our readers are our mirrors, and we use their inputs to reflect and improve upon human errors, if any, that may have occurred during the publishing processes involved. To let us maintain the quality and help us reach out to any readers who might be having difficulties due to any unforeseen errors, please write to us at : errata@bpbonline.com Your support, suggestions and feedbacks are highly appreciated by the BPB Publications’ Family. Did you know that BPB offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.bpbonline. com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at : business@bpbonline.com for more details. At www.bpbonline.com, you can also read a collection of free technical articles, sign up for a range of free newsletters, and receive exclusive discounts and offers on BPB books and eBooks.
Page 12
■ xi Piracy If you come across any illegal copies of our works in any form on the internet, we would be grateful if you would provide us with the location address or website name. Please contact us at business@bpbonline.com with a link to the material. If you are interested in becoming an author If there is a topic that you have expertise in, and you are interested in either writing or contributing to a book, please visit www.bpbonline.com. We have worked with thousands of developers and tech professionals, just like you, to help them share their insights with the global tech community. You can make a general application, apply for a specific hot topic that we are recruiting an author for, or submit your own idea. Reviews Please leave a review. Once you have read and used this book, why not leave a review on the site that you purchased it from? Potential readers can then see and use your unbiased opinion to make purchase decisions. We at BPB can understand what you think about our products, and our authors can see your feedback on their book. Thank you! For more information about BPB, please visit www.bpbonline.com. Join our book's Discord space Join the book's Discord Workspace for Latest updates, Offers, Tech happenings around the world, New Release and Sessions with the Authors: https://discord.bpbonline.com
Page 13
xii ■ Table of Contents 1. Introduction to Software Engineering .................................................................................. 1 Introduction............................................................................................................................ 1 Structure.................................................................................................................................. 1 Objectives ............................................................................................................................... 2 Basics of software engineering .......................................................................................... 2 Engineering concepts........................................................................................................... 2 Software ............................................................................................................................. 2 Principles of software engineering ...................................................................................3 Software characteristics ....................................................................................................... 5 Functionality .................................................................................................................... 5 Reliability .......................................................................................................................... 6 Usability ............................................................................................................................ 6 Maintainability ................................................................................................................ 6 Portability .......................................................................................................................... 6 Efficiency ........................................................................................................................... 6 Software applications........................................................................................................... 7 Need for software applications ........................................................................................ 7 Objectives of software engineering................................................................................... 9 Phases of software engineering....................................................................................... 10 Phase 1: Requirements gathering phase ....................................................................... 10 Phase 2: Analysis phase .................................................................................................. 12 Phase 3: Design phase .................................................................................................... 12 Phase 4: Development phase ......................................................................................... 13 Phase 5: Testing phase .................................................................................................... 15 Phase 6: Implementation phase ..................................................................................... 17 Phase 7: Maintenance phase .......................................................................................... 18 End-of-life phase/retirement phase ................................................................................ 19 Conclusion............................................................................................................................ 19 Points to remember ............................................................................................................ 19 Key terms.............................................................................................................................. 20
Page 14
■ xiii Multiple choice questions ................................................................................................. 20 Questions .............................................................................................................................. 22 Answers ........................................................................................................................... 22 2. Software Processes..................................................................................................................................23 Introduction.......................................................................................................................... 23 Structure................................................................................................................................ 23 Objectives ............................................................................................................................. 24 Software process, project, and product .......................................................................... 24 Process assessment............................................................................................................. 27 Software process capability maturity model................................................................ 28 Software development life cycle models ...................................................................... 32 Waterfall model .............................................................................................................. 34 Benefits ............................................................................................................................. 35 Drawbacks ........................................................................................................................ 35 Waterfall methodology vs. other project management methodologies ....................... 35 Spiral model ..................................................................................................................... 37 Benefits ............................................................................................................................. 38 Drawbacks ........................................................................................................................ 38 Incremental model .......................................................................................................... 38 Benefits ............................................................................................................................. 39 Drawbacks ........................................................................................................................ 39 Conclusion............................................................................................................................ 40 Points to remember ............................................................................................................ 40 Key terms.............................................................................................................................. 40 Multiple choice questions ................................................................................................. 41 Questions .............................................................................................................................. 42 Answers ........................................................................................................................... 42 3. Software Life Cycle Models .................................................................................................. 43 Introduction.......................................................................................................................... 43 Structure................................................................................................................................ 43 Objectives ............................................................................................................................. 44 Prototyping model ............................................................................................................. 44
Page 15
xiv ■ Categories of prototyping models ................................................................................. 45 Benefits ............................................................................................................................ 46 Drawbacks ....................................................................................................................... 46 Object-oriented model ....................................................................................................... 46 Real-world applications of object-oriented model ......................................................... 47 Agile model .......................................................................................................................... 48 Top five misconceptions with regard to agile methodology ......................................... 49 No need for documentation ............................................................................................ 49 Incompatibility with other models ................................................................................. 50 No need for planning ..................................................................................................... 50 Elimination of management .......................................................................................... 50 Software development specific ........................................................................................ 51 Role of scrum master and product owner within the agile framework ...................... 51 Scrum master ................................................................................................................... 51 Product owner .................................................................................................................. 53 Benefits ............................................................................................................................ 54 Drawbacks ....................................................................................................................... 55 Rapid Application Development model ....................................................................... 55 Difference between RAD Model and Waterfall Model ............................................... 56 Benefits ............................................................................................................................ 57 Drawbacks ....................................................................................................................... 58 Iterative enhancement model .......................................................................................... 58 Benefits ............................................................................................................................ 59 Drawbacks ....................................................................................................................... 60 V-Model ................................................................................................................................ 60 Importance of V-Model...................................................................................................... 61 Benefits ............................................................................................................................ 61 Drawbacks ....................................................................................................................... 61 Extreme Programming ...................................................................................................... 62 Conclusion............................................................................................................................ 64 Points to remember ............................................................................................................ 64 Key terms.............................................................................................................................. 65 Multiple choice questions ................................................................................................. 65
Page 16
■ xv Questions .............................................................................................................................. 67 Answers ........................................................................................................................... 68 4. Software Requirements ......................................................................................................... 69 Introduction.......................................................................................................................... 69 Structure................................................................................................................................ 70 Objectives ............................................................................................................................. 70 Functional requirements ................................................................................................... 70 Non-functional requirements .......................................................................................... 71 User requirements .............................................................................................................. 74 System requirements.......................................................................................................... 77 Software Requirements Document ................................................................................. 79 Conclusion............................................................................................................................ 84 Points to remember ............................................................................................................ 84 Key terms.............................................................................................................................. 85 Multiple choice questions ................................................................................................. 85 Questions .............................................................................................................................. 87 Answers ........................................................................................................................... 87 5. Software Requirements Engineering Process ................................................................. 89 Introduction.......................................................................................................................... 89 Structure................................................................................................................................ 89 Objectives ............................................................................................................................. 90 Feasibility study.................................................................................................................. 90 Types of feasibility study ............................................................................................... 91 Feasibility study process ................................................................................................. 92 Need of feasibility study ................................................................................................ 92 Requirements elicitation and analysis............................................................................ 93 Stakeholders ..................................................................................................................... 93 Requirement elicitation and analysis process ............................................................... 94 Requirements elicitation methods .................................................................................. 95 Requirements validation ................................................................................................... 97 Requirements validation techniques .............................................................................. 97 Be nefits of requirements validation techniques ........................................................ 98
Page 17
xvi ■ Drawbacks of requirements validation techniques 99 Software prototyping 100 Need for a software prototype 102 High Fidelity (Hi-Fi) and Low Fidelity (Lo-Fi) prototypes ...................................... 103 Applications for High Fidelity (Hi-Fi) and Low Fidelity (Lo-Fi) prototypes .......... 103 Benefits of High Fidelity (Hi-Fi) and Low Fidelity (Lo-Fi) prototypes ................... 104 Limitations of High Fidelity (Hi-Fi) and Low Fidelity (Lo-Fi) prototypes ............. 104 Examples of High Fidelity (Hi-Fi) and Low Fidelity (Lo-Fi) prototypes ................. 105 Requirements management ........................................................................................... 105 Requirements management planning ........................................................................ 105 Requirement change management .............................................................................. 106 Criteria for selecting a requirements management tool ............................................ 107 Requirements management traceability tools and software ....................................... 108 Software requirements management poses various challenges that can be addressed by potential solutions ............................................................... 109 Conclusion...........................................................................................................................111 Points to remember .......................................................................................................... 112 Key terms............................................................................................................................ 113 Multiple choice questions .............................................................................................. 113 Questions ............................................................................................................................ 115 Answers ......................................................................................................................... 115 6. Software Reliability.............................................................................................................. 117 Introduction........................................................................................................................ 117 Structure.............................................................................................................................. 118 Objectives ........................................................................................................................... 118 Software reliability ........................................................................................................... 118 Software reliability for business success ..................................................................... 119 Software reliability metrics ............................................................................................ 120 How businesses benefit from leveraging software reliability metrics? ..................... 122 Drawbacks of prioritizing software reliability attributes ........................................... 123 Programming for reliability ........................................................................................... 123 Fault avoidance ............................................................................................................ 124 Structured programming and error avoidance .......................................................... 125
Page 18
■ xvii Fault tolerance .............................................................................................................. 126 Fault detection .............................................................................................................. 127 Best practices when programming for reliability ....................................................... 127 Software reuse................................................................................................................... 128 Software reuse challenges .............................................................................................. 130 Software reuse strategies .............................................................................................. 131 Conclusion.......................................................................................................................... 131 Points to remember .......................................................................................................... 131 Key terms............................................................................................................................ 132 Multiple choice questions .............................................................................................. 132 Questions ............................................................................................................................ 134 Answers ......................................................................................................................... 134 7. Software Design ..................................................................................................................... 135 Introduction........................................................................................................................ 135 Structure.............................................................................................................................. 135 Objectives ........................................................................................................................... 136 Basics of software design ............................................................................................... 136 Design process .............................................................................................................. 138 Data design......................................................................................................................... 140 Architectural design......................................................................................................... 142 Architectural design illustration ................................................................................. 143 Component-level design ................................................................................................. 146 Best practices for component-level design .................................................................. 147 Difficulties in component level design ....................................................................... 148 User interface design ....................................................................................................... 149 User interface rules ...................................................................................................... 150 User interface design process ...................................................................................... 151 Role of user experience principles in driving user interface design decisions ........ 151 Fundamental design concepts ....................................................................................... 154 Module........................................................................................................................... 154 Modularization ............................................................................................................. 155 Design techniques ............................................................................................................ 156 Fundamental principles of good software design ....................................................... 156
Page 19
xviii ■ Conclusion.......................................................................................................................... 157 Points to remember .......................................................................................................... 158 Key terms............................................................................................................................ 159 Multiple choice questions .............................................................................................. 159 Questions ............................................................................................................................ 161 Answers ......................................................................................................................... 161 8. Object-Oriented Design.......................................................................................................163 Introduction........................................................................................................................ 163 Structure.............................................................................................................................. 163 Objectives ........................................................................................................................... 164 Object and object classes ................................................................................................. 164 Object classes ................................................................................................................ 165 Relationships...................................................................................................................... 166 Object-oriented design process ..................................................................................... 168 Activities in the object-oriented design process ......................................................... 168 Best practices object-oriented design process ............................................................. 170 Object identification ......................................................................................................... 170 Design models .................................................................................................................. 171 Tools for creating UML diagrams .............................................................................. 172 Steps to create UML diagrams .................................................................................... 173 Sequence model ............................................................................................................. 175 State machine model ..................................................................................................... 176 Best practices for UML diagrams ................................................................................ 177 UML and agile development ....................................................................................... 178 Conclusion.......................................................................................................................... 180 Points to remember .......................................................................................................... 180 Key terms............................................................................................................................ 181 Multiple choice questions .............................................................................................. 181 Questions ............................................................................................................................ 183 Answers ......................................................................................................................... 183 9. Software Implementation.................................................................................................... 185 Introduction........................................................................................................................ 185
Page 20
■ xix Structure.............................................................................................................................. 186 Objectives ........................................................................................................................... 186 Structured coding techniques ........................................................................................ 186 Single-entry, single-exit constructs ............................................................................ 187 Data encapsulation ....................................................................................................... 187 Coding style ....................................................................................................................... 188 Comparative analysis of different Coding styles used in various programming languages ............................................................................................... 189 Coding methodology ....................................................................................................... 191 Code verification techniques ......................................................................................... 192 Examples of code verification in ChatGPT ............................................................... 192 Code reading ................................................................................................................. 193 Static analysis .............................................................................................................. 194 Symbolic execution ....................................................................................................... 194 Code inspection and reviews ....................................................................................... 194 Coding tools ....................................................................................................................... 194 Code documentation........................................................................................................ 196 Internal documentation ................................................................................................ 197 External documentation .............................................................................................. 198 Code standards and guidelines..................................................................................... 199 Conclusion.......................................................................................................................... 205 Points to remember .......................................................................................................... 206 Key terms............................................................................................................................ 206 Multiple choice questions .............................................................................................. 206 Questions ............................................................................................................................ 208 Answers ......................................................................................................................... 208 10. Software Maintenance ......................................................................................................... 209 Introduction........................................................................................................................ 209 Structure.............................................................................................................................. 210 Objectives ........................................................................................................................... 210 Software re-engineering .................................................................................................. 210 Case study of re-engineering ....................................................................................... 211 Change management ....................................................................................................... 215
The above is a preview of the first 20 pages. Register to read the complete e-book.

Recommended for You

Loading recommended books...
Failed to load, please try again later

Tip the Site

Scan the WeChat Pay or Alipay code to tip. No login required.

WeChat Pay
Alipay
← Back to List