Software Engineering
eBook - ePub

Software Engineering

Kassem Saleh

Buch teilen
  1. 360 Seiten
  2. English
  3. ePUB (handyfreundlich)
  4. Über iOS und Android verfügbar
eBook - ePub

Software Engineering

Kassem Saleh

Angaben zum Buch
Buchvorschau
Inhaltsverzeichnis
Quellenangaben

Über dieses Buch

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.

Häufig gestellte Fragen

Wie kann ich mein Abo kündigen?
Gehe einfach zum Kontobereich in den Einstellungen und klicke auf „Abo kündigen“ – ganz einfach. Nachdem du gekündigt hast, bleibt deine Mitgliedschaft für den verbleibenden Abozeitraum, den du bereits bezahlt hast, aktiv. Mehr Informationen hier.
(Wie) Kann ich Bücher herunterladen?
Derzeit stehen all unsere auf Mobilgeräte reagierenden ePub-Bücher zum Download über die App zur Verfügung. Die meisten unserer PDFs stehen ebenfalls zum Download bereit; wir arbeiten daran, auch die übrigen PDFs zum Download anzubieten, bei denen dies aktuell noch nicht möglich ist. Weitere Informationen hier.
Welcher Unterschied besteht bei den Preisen zwischen den Aboplänen?
Mit beiden Aboplänen erhältst du vollen Zugang zur Bibliothek und allen Funktionen von Perlego. Die einzigen Unterschiede bestehen im Preis und dem Abozeitraum: Mit dem Jahresabo sparst du auf 12 Monate gerechnet im Vergleich zum Monatsabo rund 30 %.
Was ist Perlego?
Wir sind ein Online-Abodienst für Lehrbücher, bei dem du für weniger als den Preis eines einzelnen Buches pro Monat Zugang zu einer ganzen Online-Bibliothek erhältst. Mit über 1 Million Büchern zu über 1.000 verschiedenen Themen haben wir bestimmt alles, was du brauchst! Weitere Informationen hier.
Unterstützt Perlego Text-zu-Sprache?
Achte auf das Symbol zum Vorlesen in deinem nächsten Buch, um zu sehen, ob du es dir auch anhören kannst. Bei diesem Tool wird dir Text laut vorgelesen, wobei der Text beim Vorlesen auch grafisch hervorgehoben wird. Du kannst das Vorlesen jederzeit anhalten, beschleunigen und verlangsamen. Weitere Informationen hier.
Ist Software Engineering als Online-PDF/ePub verfügbar?
Ja, du hast Zugang zu Software Engineering von Kassem Saleh im PDF- und/oder ePub-Format sowie zu anderen beliebten Büchern aus Informatica & Sviluppo software. Aus unserem Katalog stehen dir über 1 Million Bücher zur Verfügung.

Information

Jahr
2009
ISBN
9781604276749

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...

Inhaltsverzeichnis