Foundations of Software Engineering
eBook - ePub

Foundations of Software Engineering

Ashfaque Ahmed, Bhanu Prasad

Compartir libro
  1. 451 páginas
  2. English
  3. ePUB (apto para móviles)
  4. Disponible en iOS y Android
eBook - ePub

Foundations of Software Engineering

Ashfaque Ahmed, Bhanu Prasad

Detalles del libro
Vista previa del libro
Índice
Citas

Información del libro

The best way to learn software engineering is by understanding its core and peripheral areas. Foundations of Software Engineering provides in-depth coverage of the areas of software engineering that are essential for becoming proficient in the field. The book devotes a complete chapter to each of the core areas. Several peripheral areas are also explained by assigning a separate chapter to each of them. Rather than using UML or other formal notations, the content in this book is explained in easy-to-understand language. Basic programming knowledge using an object-oriented language is helpful to understand the material in this book. The knowledge gained from this book can be readily used in other relevant courses or in real-world software development environments.This textbook educates students in software engineering principles. It covers almost all facets of software engineering, including requirement engineering, system specifications, system modeling, system architecture, system implementation, and system testing. Emphasizing practical issues, such as feasibility studies, this book explains how to add and develop software requirements to evolve software systems.This book was written after receiving feedback from several professors and software engineers. What resulted is a textbook on software engineering that not only covers the theory of software engineering but also presents real-world insights to aid students in proper implementation. Students learn key concepts through carefully explained and illustrated theories, as well as concrete examples and a complete case study using Java. Source code is also available on the book's website. The examples and case studies increase in complexity as the book progresses to help students build a practical understanding of the required theories and applications.

Preguntas frecuentes

¿Cómo cancelo mi suscripción?
Simplemente, dirígete a la sección ajustes de la cuenta y haz clic en «Cancelar suscripción». Así de sencillo. Después de cancelar tu suscripción, esta permanecerá activa el tiempo restante que hayas pagado. Obtén más información aquí.
¿Cómo descargo los libros?
Por el momento, todos nuestros libros ePub adaptables a dispositivos móviles se pueden descargar a través de la aplicación. La mayor parte de nuestros PDF también se puede descargar y ya estamos trabajando para que el resto también sea descargable. Obtén más información aquí.
¿En qué se diferencian los planes de precios?
Ambos planes te permiten acceder por completo a la biblioteca y a todas las funciones de Perlego. Las únicas diferencias son el precio y el período de suscripción: con el plan anual ahorrarás en torno a un 30 % en comparación con 12 meses de un plan mensual.
¿Qué es Perlego?
Somos un servicio de suscripción de libros de texto en línea que te permite acceder a toda una biblioteca en línea por menos de lo que cuesta un libro al mes. Con más de un millón de libros sobre más de 1000 categorías, ¡tenemos todo lo que necesitas! Obtén más información aquí.
¿Perlego ofrece la función de texto a voz?
Busca el símbolo de lectura en voz alta en tu próximo libro para ver si puedes escucharlo. La herramienta de lectura en voz alta lee el texto en voz alta por ti, resaltando el texto a medida que se lee. Puedes pausarla, acelerarla y ralentizarla. Obtén más información aquí.
¿Es Foundations of Software Engineering un PDF/ePUB en línea?
Sí, puedes acceder a Foundations of Software Engineering de Ashfaque Ahmed, Bhanu Prasad en formato PDF o ePUB, así como a otros libros populares de Informatique y Technologies de l'information. Tenemos más de un millón de libros disponibles en nuestro catálogo para que explores.

Información

Año
2016
ISBN
9781498737630
Edición
1
Categoría
Informatique

1
INTRODUCTION TO SOFTWARE ENGINEERING

In Chapter 1, we will learn
  • What computers are
  • What software engineering is
  • Why software engineering is important
  • Challenges in building software products
  • Software engineering careers

1.1 Introduction

Human civilization has evolved from cave dwelling to modern-day city living. During the course of evolution, humans learned trades, improved their skills, and refined their living standards. A key ingredient for this evolution is the understanding of science and applying the scientific findings to improve the living standards of humans. On their way to early evolution, humans learned how to farm, use wheels, make tools, and so on, which permanently changed the way early humans lived. Since, new discoveries in science continue to change the lives of humans.
Hundreds of years ago, during the Industrial Revolution, engineering started to shape human lives. Engineering helped create large man-made structures using applied science. Humans were able to build large bridges, factories, buildings, and so on, which paved the way for making modern-day infrastructures.
Sometime around the 1940s, a new revolution started. This revolution was the introduction of computers. Computers are able to perform large and complex calculations quickly. With the increase in knowledge, humans are able to use computers to do many things in areas such as telecommunications, business, entertainment, technology, medicine, education, and research. Today, we use devices such as mobile phones, the Internet, and automobiles. Most of these are driven or controlled by computers.

1.2 Components of a Computer

Computers consist of hardware and software components. The hardware components are physical components that you can touch, smell, and taste. The main hardware components include the input devices, output devices, processor or CPU, memory, storage devices, and communication devices. A keyboard, screen, RAM, C drive or hard drive, and modem are examples of an input device, output device, memory, storage device, and communication device, respectively.
A computer system also contains many types of software. Software or a program is an instruction or sequence of instructions that tells the computer what tasks it needs to perform and how to perform them. There are two types of software: application software and system software. Application software is intended to operate one or more applications such as a database program, a word processing program, a video editing program, or a web browser program. System software deals with operating or maintaining either the computers or the devices connected to the computers. In other words, system software works as an interface between the hardware of the computer, the computer user, and the application software of the computer. System software can be categorized as operating systems and utility software. Microsoft Windows, Mac, and UNIX are some examples of operating systems. Antivirus programs, disk cleaning programs, and screen savers are some examples of utility software. To use an application software on a computer, that computer should have an operating system compatible with (or that supports) that application software. For example, the Mac operating system is compatible with the Apple Safari browser and vice versa.
While computer engineers, better known as hardware engineers, design and create hardware parts, it is the software engineers who develop the software products.

1.3 Building the Software Products

Almost all software products or application programs running on your computer have been developed by a team of people. A team is required to develop a software product because of the sheer size of such products or application programs. For example, the word processor that you use is actually a very large application that was developed by a team of hundreds of software engineers at Microsoft Corporation. Websites such as ebay.com or amazon.com are also very large. A large team of software engineers develops and maintains such websites. A very small number of software products can be developed by just a bunch of people.
Any computer program, small or big, is qualified as a software product. However, in this book, a software product refers to a large program (or a set of large programs) that needs at least a group of people to develop it for several weeks or longer. The terms software, product, and software product are used synonymously in this book.
Consider the task of constructing a huge apartment (i.e., an apartment building). Construction of an apartment involves several things. In a sample scenario, first, the owner (or developer) of the proposed apartment building notices that he or she can construct an apartment to make rental income. The motive for this project is depicted in Figure 1.1. He or she engages an architect who makes the design for the apartment. The owner then engages a construction company and it brings in people, machines, and materials to construct the apartment building. The civil engineer who is in charge of the construction (i.e., the civil project manager) performs several tasks. On the basis of the design of the apartment, he or she makes estimates for the items such as the material, machines, and manpower that are needed for the construction. He or she also makes an estimate of the time required to finish the construction. In essence, the civil engineer makes a project plan. When the project starts, the civil engineer tracks the project to ensure that everything is going as per the project plan. Once the construction of the apartment is completed, the project ends.
Figure 1.1 Project for building an apartment initiated by a business owner and managed by a civil project manager.
Figure 1.1 Project for building an apartment initiated by a business owner and managed by a civil project manager.
An apartment also requires electricity, cable, sewerage, water, and so on. The apartment should meet some standards prescribed by the government. These standards include safety measures such as earthquake resistance, fire alarms, fire exits, fire extinguishers, emergency exits, and open spaces around the building.
Figure 1.2 A business owner initiates a project for building a software product and the software project manager plans and controls the software development project.
Figure 1.2 A business owner initiates a project for building a software product and the software project manager plans and controls the software development project.
Building a software product is an activity similar to the construction of an apartment. In a sample scenario, a software company notices that a software product needs to be developed because there is a market for that product. The motive for this project is depicted in Figure 1.2. The company then initiates a project. A project team is formed. A software project manager is appointed to create a project plan. The project plan includes details such as how much time and how many people are needed. Business analysts create a list of product features (i.e., the features that the proposed product should have). The software designers prepare the architecture of the product. Software developers then construct the product (i.e., write the source code using a programming language such as C++). Once the product is ready and tested, it is shipped to the market. The software project manager oversees all these activities to ensure that the things on the project go as per the project plan.
Similar to the measures (such as earthquake resistance, fire alarms, and fire exits) taken while constructing the apartment, some considerations are needed to build a software product. These considerations include security, performance, and reliability of the product. These considerations will be addressed when the software product is developed.

1.4 What Is Software Engineering?

Software engineering can be defined as the study and application of engineering to the design, development, and maintenance of software products. The keyword here is engineering. Engineering always connotes two things: designing a product in detail and a methodical approach to carrying out the design and production so that the product is produced with the desired qualities and a large number of people can use it. Software engineering thus annotates building a software product with a detailed design, and at the same time, the tasks of designing and building will involve a methodical approach at each and every step. The software product thus built can be used by a large number of people.
Nowadays, a modular design is more popular for designing new products. What this means is that the complete product is divided into parts that can be easily assembled into a complete and working product once they are developed.
As a note, software engineering is not only limited to creating new products. Existing software products need maintenance. Maintenance includes activities such as correcting the errors in a product, enhancing the capabilities of a product, and removing the outdated features from a product. As a comparison, consider, again, the apartment example. An apartment needs maintenance such as fixing water leaks and installation of a security system. Software maintenance is also a part of software engineering.

1.5 Why Software Engineering?

In the preceding paragraphs, it is explained that building a large software product involves similar kinds of activities as required in constructing an apartment building. If you need to build a small cabin instead of an apartment complex, then you do not need a design, manpower, machinery, or civil engineer. You can build the cabin yourself with a handful of materials. There is not much engineering involved in constructing the cabin. Similarly, small programs such as a program for converting temperature from Celsius to Fahrenheit or an individual programming assignment given in a typical classroom do not need any software engineering. However, building large software products does require software engineering.
Computers are used in almost all aspects of our lives. Accordingly, more and more software products are being developed to fulfill these needs, and this trend is accelerating. Definitely, software engineering techniques make it possible to create such useful software products.
If you need to build a software product, then you need to take into consideration the cost economics, time factors, and quality factors. If a software product is built with excessive cost, then the company that is paying to build the product will incur losses. If a software product cannot be built within the accepted time limits, then the product cannot be launched into the market at the right time, and thus the company that owns the product may not make the expected profits. If a software product fails to meet the quality standards, then it cannot be used effectively by users. Maintaining a poor-quality software product is also costly. The company owning such a software product may incur heavy support costs in terms of time spent by the support personnel in fixing and addressing customer complaints. In fact, some software defects can pose serious risks to people as well. For example, a faulty software system deployed at a hospital may give false diagnosis reports to the doctors, and thus patients may get wrong treatments.
A software product can be built with sufficient quality, within the time limits, and within the budget if proper software engineering practices are adopted. Software engineering is thus extremely important.

1.5.1 Reduction of Development Costs

If you look at most industries, you will notice that the cost of production of goods continues to decline year after year. How is this trend achieved? It is achieved by using more productive processes, reducing waste, and so on. The same is true when building software products. In general, the cost of building software products should decrease continuously year after year because of market dynamics. Software engineering methodologies can help achieve this goal.
Most software products evolve over time by maintaining them or by developing new products based on the experience gained from the existing products. Software engineering helps reduce the cost of development by reusing the existing code, using better tools, and following sound software engineering practices.

1.5.2 Reduction of Development Time

If you look at the time that was needed to build a software product in the past, say 10 years ago, you will notice that you can build the same product in less time today. This is because you have better development tools and are aware of better software engineering practices. Programming languages continue to mature and offer many ready-made libraries that can be used instead of writing some fresh source code to achieve the same functionality. There are some software products and services available in the market that provide the needed functionality immediately; thus, the project team can avoid writing fresh source codes altogether to achieve the same functionality. The end result is that the productivity of the project team continues to improve, which allows the faster development of software products.

1.5.3 Increasing the Quality

Quality is the single most important ingredient in making any product successful. Software engineering plays an important role in building quality software products. By using better software engineering methodologies and software engineering tools, it is possible to build ...

Índice