Software Engineering
eBook - ePub

Software Engineering

Kassem Saleh

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

Software Engineering

Kassem Saleh

Detalles del libro
Vista previa del libro
Índice
Citas

Información del libro

Software engineering from a project point of view embarks on software products that are both feasible technically and financially. Moreover, software projects must be completed on time and within budgets and are important challenges to software engineers. Research has shown that one-third of software projects are never completed, another third do not fulfill their promises. Software Engineering provides the software engineering fundamentals, principles and skills needed to develop and maintain high quality software products. The software engineering processes and techniques covered include requirements specification, design, implementation, testing and management of software projects. This up-to-date book is modeled on the recommendations and guidelines prescribed in the Guide to the Software Engineering Body of Knowledge (SWEBOK) published by the IEEE Computer Society, and the Software Engineering Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering published by the IEEE Computer Society and the Association for Computing Machinery Joint Task Force on Computing Curricula. At the end of each chapter, the reader will be able to perform tangible software engineering tasks by applying the learned techniques and methods, will be familiar with the terminology, the principles by mastering the subjects, and will be able to analyze existing task deliverables, compare and critique the different techniques. The book is designed as a text for an undergraduate first course in software engineering and graduate bridging courses in information technology. In addition, Software Engineering can be used by practitioners who need to refresh their knowledge with the latest in software engineering techniques and processes. The prerequisite to use this text is to have a background in an object-oriented programming language.

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 Software Engineering un PDF/ePUB en línea?
Sí, puedes acceder a Software Engineering de Kassem Saleh en formato PDF o ePUB, así como a otros libros populares de Informatica y Sviluppo software. Tenemos más de un millón de libros disponibles en nuestro catálogo para que explores.

Información

Año
2009
ISBN
9781604276749
Edición
1
Categoría
Informatica

CHAPTER
Software and Software Engineering
1

Software is omnipresent in the lives of billions of human beings around the globe. Today, humans rely heavily on software-intensive systems. Software runs many aspects of our daily life. It helps us communicate, socialize, and perform daily tasks at work and at home. Most importantly, software is a player in the emerging knowledge-based service economy. However, there are many concerns about the quality and reliability, and hence the trustworthiness, of the software we produce and consume. Existing software is plagued with thousands of defects. Some of the defects are known and have already been detected; others have not manifested and are yet to be uncovered. The defects have caused many disasters, leading to financial losses, physical harm to humans, and life threatening situations. The main reasons for the current state of software technology are the lack of adequately trained software professionals and the lack of tools and techniques that can scale up to the complexities of the needed software. In this chapter, we introduce the concepts of software, software engineering, and the stages in software development. We then present the types of software and their stakeholders. Education and training issues in software engineering and an existing code of ethics for software professionals are discussed. We also present the disciplines related to software engineering and analogies to other engineering disciplines. Finally, we present some pioneers in the field of software engineering and their main contributions.
Learning Outcomes
In this chapter you will learn:
  • Historical origins of software, software engineering, and the related disciplines
  • Types of software applications and system software
  • Stakeholders in software products
  • Three Ps in software engineering
  • Software engineering as a discipline and its code of ethics and professional practice
  • Recurring concepts in software engineering and the desirable software capabilities
  • Pioneers in software engineering and their main contributions
1.1 SOFTWARE, SOFTWARE ENGINEERING, AND THE SOFTWARE CRISIS
Software is omnipresent in the lives of billions of human beings. It is an important component of the emerging knowledge-based service economy. Software or computer software consists of the computer program and its related documentation. The word software was coined by John Tukey in 1958. However, the theoretical foundations behind the concept of a computer program were established by Alan Turing in the 1930s. The concept of a program as a sequence of steps to solve a problem is a realization of the concept of algorithm, which was introduced by Muhammad Al-Khawarezmi, a 9th century mathematician. An algorithm became concrete when it was programmed by Ada Lovelace, the first computer programmer. A computer program consists of instructions that perform certain tasks on computer hardware. Instructions are written at different levels of closeness to the hardware, ranging from low level instructions written in machine or assembly language to high-level instructions written in high-level programming languages. Documentation plays a crucial role in the success of software and is of interest to the people using the software and to the people developing and maintaining it. User manuals, installation procedures, and operating manuals are written mainly for the software users. They are written in a user-friendly language appropriate to the competency levels of the target users. The documents are crucial for the usability of the software and, hence, are useful for achieving the economic viability and marketability of the software. However, internal developmental documents such as specification, design, and testing documents are written at a level that is appropriate to the people developing, reviewing, and maintaining the software. The timeliness and correctness of the documents are critical over the long term. Software development and maintenance activities form the basis of a steadily growing industry—worth more than $250 billion—and characterizes the emerging knowledge-based economy.
Software engineering is a term that was coined during the October 1968 NATO Software Engineering conference held in Garmisch, Germany. The term was introduced by Friedrich Bauer, the conference chairman. There are many definitions for software engineering. One definition refers to software engineering as the application of a disciplined approach for the development and maintenance of computer software. The Institute of Electrical and Electronics Engineers (IEEE) states that it is software engineering that deals with the establishment and use of sound engineering principles to economically obtain software that is reliable and works efficiently on real machines. This definition touches on both the technical and management aspects involved in software engineering. The technical aspect of this definition refers to the reliability and performance of the target software product, whereas the management aspect refers to the economic feasibility related to both time and money. Software engineering encompasses the use of tools, techniques, and methods that are useful during the execution of the steps needed for the development of the software and its future maintenance.
The NATO conference discussed the software crisis and was characterized by the inability of existing techniques, tools, and processes to deal with the increasing complexity of the needed software. It was identified that the main reasons for the crisis were due to the complexity of the software, changing and misunderstanding of requirements, and the lack of tools and skilled professionals. Consequently, the produced software is of low quality, is not maintainable, and does not meet the stakeholder’s requirements. In addition, software projects were frequently running over budget and over time, and many did not deliver a functioning product.
Unfortunately, many of the symptoms of the software crisis are still present. According to the Standish Group, a software market research firm, 17 percent of software projects were complete failures in 2002. Moreover, 50 percent of projects were not completed within the planned schedule, ran over budget, or were missing some of the required features. There are many concerns about the quality and reliability of the software we use. Existing software is plagued with millions of defects. Some of the defects are known and have already been detected; others are yet to be uncovered. The defects have caused many disasters, leading to financial losses, physical harm to humans, and life threatening situations. The software engineering profession is still in its infancy, therefore tools, techniques, standards, and appropriate software engineering education programs at all levels are needed. In the United States alone, it was reported in 2004 that approximately 750 thousand software engineers are employed compared to an estimated 1.5 million practitioners in all other engineering disciplines. It was also reported that most software practitioners do not hold degrees in software engineering. Currently, most people working as software engineers hold either a degree in computer science or computer engineering. It is worth mentioning that the first bachelor program in software engineering was established in the United States as recently as 1996.
1.2 TYPES OF SOFTWARE
There are two categories of software that are currently in use: system software and applications software. Systems software typically deals with interfacing with hardware and provides services to applications software. Examples of system software include operating systems, language compilers, assemblers, device drivers, debuggers, and networking tools and software. Application software, also referred to as end user software, allows users to perform their tasks. In the following, we list some of the main applications software categories:
  • Games and entertainment: Software games for handheld devices, including mobile phones, PC or stand-alone games, and distributed collaborative games.
  • Intelligent: Applications that include specialized domain-specific expert systems, mobile agent systems, learning systems, robot vision software, business decision and intelligence software, and mining software.
  • Modeling and simulation: Applications that include domain-specific modeling and simulation packages for military, financial, medical, educational, and training uses.
  • Real-time: Applications that include industrial plant monitoring and control systems, missile control systems, air traffic control systems, telephony software, and network security software such as firewalls and intrusion detection systems.
  • Embedded: Applications that include home appliance controllers, mobile phone software, and vehicle controllers.
  • Productivity: Applications that include tools that implement proven methods and techniques to help specific types of users execute their tasks with ease and maximum productivity. For example, AutoCAD software facilitates architects and engineers, Rational Rose aids software developers in performing their tasks, project management software packages allow project managers to perform their tasks efficiently, and word processing tools help users produce thorough and accurate documentation. Other types of software in this category, also known as information worker software, are time and resource management software, data management software, and distributed collaborative software.
  • Enterprise: Applications that include business workflow management software, customer relation management software, and supply chain ma...

Índice