Fundamentals of Software Engineering
eBook - ePub

Fundamentals of Software Engineering

Designed to provide an insight into the software engineering concepts

  1. English
  2. ePUB (mobile friendly)
  3. Available on iOS & Android
eBook - ePub

Fundamentals of Software Engineering

Designed to provide an insight into the software engineering concepts

Book details
Book preview
Table of contents
Citations

About This Book

Practical Handbook to understand the hidden language of computer hardware and software Key Features

  • This book contains real-time executed examples along with case studies.
  • Covers advanced technologies that are intersectional with software engineering.
  • Easy and simple language, crystal clear approach, and straight forward comprehensible presentation.
  • Understand what architecture design involves, and where it fits in the full software development life cycle.
  • Learning and optimizing the critical relationships between analysis and design.
  • Utilizing proven and reusable design primitives and adapting them to specific problems and contexts.

  • Description
    This book teaches the essentials of software engineering to anyone who wants to become an active and independent software engineer expert. It covers all the software engineering fundamentals without forgetting a few vital advanced topics such as software engineering with artificial intelligence, ontology, and data mining in software engineering.The primary goal of the book is to introduce a limited number of concepts and practices which will achieve the following two objectives:
  • Teach students the skills needed to execute a smallish commercial project.
  • Provide students with the necessary conceptual background for undertaking advanced studies in software engineering through courses or on their own.
  • What will you learn
    This book includes only those concepts that we believe are foundational. As executing a software project requires skills in two dimensionsā€”engineering and project managementā€”this book focuses on crucial tasks in these two dimensions and discuss the concepts and techniques that can be applied to execute these tasks effectively.

Frequently asked questions

Simply head over to the account section in settings and click on ā€œCancel Subscriptionā€ - itā€™s as simple as that. After you cancel, your membership will stay active for the remainder of the time youā€™ve paid for. Learn more here.
At the moment all of our mobile-responsive ePub books are available to download via the app. Most of our PDFs are also available to download and we're working on making the final remaining ones downloadable now. Learn more here.
Both plans give you full access to the library and all of Perlegoā€™s features. The only differences are the price and subscription period: With the annual plan youā€™ll save around 30% compared to 12 months on the monthly plan.
We are an online textbook subscription service, where you can get access to an entire online library for less than the price of a single book per month. With over 1 million books across 1000+ topics, weā€™ve got you covered! Learn more here.
Look out for the read-aloud symbol on your next book to see if you can listen to it. The read-aloud tool reads text aloud for you, highlighting the text as it is being read. You can pause it, speed it up and slow it down. Learn more here.
Yes, you can access Fundamentals of Software Engineering by Hitesh Mohapatra in PDF and/or ePUB format, as well as other popular books in Computer Science & Software Development. We have over one million books available in our catalogue for you to explore.

Information

Year
2020
ISBN
9789388511773

CHAPTER 1

Introductory Concepts of Software Engineering

Objective

The primary goal of software engineering is to improve the quality of software products, increase the productivity, and job satisfaction of software engineers. Software engineering is a new discipline, distinct from, but based on the foundations of computer science, management science, economics, communication skills, and the engineering approach to problem-solving.
In this chapter, we are going to discuss:
  • Users conceptual model and develop a better specification,
  • Design languages and reusable code,
  • Participatory design and interactive debugging, and
  • The specification of interface and mockup to confirm the specifications.
  • Software development process during system development.

Introduction

Software Engineering (SE) is a pragmatic discipline that is based on computer science to provide scientific foundations in the same way that traditional engineering disciplines such as electrical engineering and chemical engineering rely on physics and chemistry. Software engineering being a labor-intensive activity requires both technical skill and management control. Management science provides the foundation for software project management. Computing systems must be developed and maintained on time and within cost estimates. Software engineering activities occur within an organizational context, and a high degree of communication is required among the customers, managers, software engineers, hardware engineers, and other technocrats. There are various methodologies for the development of software engineering projects depending on their size. The fundamental principle for managing the complexity is to decompose an extensive system into smaller, more manageable subunits with well-defined interfaces. The approach of divide and conquer is routinely used in the engineering discipline. In software engineering, the units of decomposition are called modules. The modules are not disjointed. The development process begins with a definition of system needs and ends with a product that is supposed to perform specific tasks with a required degree of precision and accuracy within a predefined time length. The success of the system lies with the system development team, the involvement of users from the beginning, commitment and cooperation from both the management groups.

Definition

Software engineering is the application of a systematic, disciplined, and quantifiable approach to the development, operation, and maintenance of software. It encompasses techniques and procedures, often regulated by a software development process, to improve the reliability and maintainability of the software system. The effort is necessitated by the potential complexity of those systems, which may contain millions of lines of code.
According to Boehm, Software engineering involves ā€œthe practical application of scientific knowledge to the design and construction of computer programs and associated documentation required to develop, operate, and maintain themā€. The definition covers biological, financial, manufacturing, medical, legal, governments, and many other systems.
The term software engineering was popularized by F. L. Bauer, during the NATO Software Engineering Conference in 1968. The discipline of software engineering includes knowledge, tools, and methods for software requirements, software design, software construction, software testing, and software maintenance tasks. Software engineering is related to the disciplines of computer science, computer engineering, management, mathematics, project management, quality management, software ergonomics, and system engineering.

Evolution and Impact of SE

During the past few decades, significant advances have occurred in all areas of software engineering. Analysis techniques for determining software requirements have been developed. Methodical approaches to software design have developed and design notations have proliferated. Implementation techniques have been improved and new programming languages have been developed. Software validation techniques have been examined and quality assurance procedures have been instituted. Computer-aided software engineering (CASE) tools are developed and deployed during the development process. Formal techniques for verifying software properties have evolved and software maintenance procedures have been interpreted to mean that the problems of software engineering (SE) have been solved. The level in SE is indicative of the vast number of problems to be solved.

Software Engineering Process

The process, Software engineering, is the structure of the development of a software product. There are different models of software process (software lifecycle) used in different organizations and industries.

Software Engineering

The field, Software engineering, is concerned with the study of complex systems. The complex system is composed of many components with complex relationships. It is essential to make various modules or components and link them together to represent the complex systems. The term engineering encompasses to use certain principles and build the software methodically. To apply the principles, the software engineer should be equipped with appropriate methods and specific techniques that will help to incorporate the desired properties into process and product. Sometimes, the methods and techniques are packaged to form a methodology. The purpose of the methodology is to promote a certain approach to solve a problem.

Levels of Software Process

Three levels of software process are identified for its projects.
These levels balance the different needs of different types of projects. Scaling the process to the project is vital to its success; too much process can be as problematic as too little; too much process can slow down a purely R&D exploration, too little process can slow down a large development project with hard deliverables. The levels are briefly identified as follows:

Level 1: R&D

  • No software products delivered, pure research
  • Minimal software process

Level 2: Research system

  • Larger development team, informal software releases
  • Moderate software process

Level 3: Delivered system

  • The large software development team, formal software releases
  • More formal software process
The software process and software engineering practices have become more formalized and more structured as the project proceeded through different levels.
A set of software engineering best practices is implemented in three software process levels. These include source code control, neatly code builds, writing reusable code, using different team models, commitment to deadlines, design and code reviews, risk management, bug tracking, software metrics, software configuration management, and requirements management.
Software configuration management (SCM) is a step up in formality and reproducibility from source code control and includes controlling and versioning of software releases.

Importance of SW Project Construction

At one time, software development and coding were thought to be the same. But, as distinct activities in the software development life cycle have been identified, some of the best minds in the field have spent their time analyzing and debating methods of project management, requirements, design, and testing. The rush to study these newly identified areas has left code construction as the ignorant cousin of software development.
Discussions about construction have also been hobbled by the suggestion that treating construction as a distinct software development activity implies that construction must also be treated as a distinct phase. Software activities and phases donā€™t have to be set up in any relationship to each other, and itā€™s useful to discuss the activity of construction, regardless, of whether other software activities are performed in phases, in iterations, or in some other way.
Typically, construction makes up about 80 percent of the effort on small projects and 50 percent on medium projects. Construction accounts for about 75 percent of the errors on small projects and 50 to 75 percent on medium and large projects. Any activity that accounts for 50 to 75 percent of the errors presents a clear opportunity for improvement.
The irony of the shift in focus away from construction is that construction is the only activity thatā€™s guaranteed to be done. Requirements can be assumed rather than developed, architecture can be short changed rather than designed, and testing can be abbreviated or skipped rather than fully planned and executed. But, if thereā€™s going to be a program, then there must be construction and that makes construction a uniquely fruitful area in which to improve development practices.

Problems in System Development

Many problems are encountered during a system development process. Before the system is launched, it is abandoned. The reasons for a system failure could be from either side of the development house or the user. An experienced developer having foresightedness can apprehend a problem much earlier and can take remedial action before it is surfaced during development. The developer and the user should work in groups so that they understand each otherā€™s problems and solve them amicably. In developing a large and complex software project, many problems are associated as follows:
  1. Time schedule overlap: Sometimes, a large project becomes very much time-consuming. There may be a drastic change in the system that has been desired at the beginning. The originally designed concepts to solve the scope of the project is no longer valid during development. It causes time delay to deliver the system. The user may lose interest in further developing the project to implement.
  2. User interface: The man-machine interaction is sometimes not considered initially surfaced in due course of development. This causes further additions of controls and displays. New hardware and software are felt necessary to be included later.
  3. Test and integration: Often the project find deficiencies during testing and integration of the software project. The inadequate parts are included in the latter part of the development process. This happens due to inadequate thoughts are given at the initial stage.
  4. Maintenance problem: Many problems are surfaced at this phase after handing over the system to the client. The user intends to include many addi...

Table of contents

  1. Cover Page
  2. Title Page
  3. Copyright Page
  4. Dedication
  5. About the Authors
  6. Acknowledgement
  7. Preface
  8. Errata
  9. Table of Contents
  10. 1. Introductory Concepts of Software Engineering
  11. 2. Modelling Software Development Life Cycle
  12. 3. Software Requirement Analysis and Specification
  13. 4. Software Project Management Framework
  14. 5. Software Project Analysis and Design
  15. 6. Object Oriented Analysis and Design
  16. 7. Designing Interfaces & Dialogues and Database Design
  17. 8. Coding and Debugging
  18. 9. Software Testing
  19. 10. System Implementation and Maintenance
  20. 11. Reliability
  21. 12. Software Quality
  22. 13. CASE and Reuse
  23. 14. Recent Trends and Development in Software Engineering
  24. 15. Model Questions with Answers
  25. Model Test Papers