Technology & Engineering
Software Engineering
Software engineering is the systematic application of engineering approaches to the development, operation, and maintenance of software. It involves the use of disciplined, systematic, and quantifiable approaches to software development, encompassing techniques such as requirements analysis, design, coding, testing, and maintenance. The goal of software engineering is to produce high-quality, reliable, and efficient software systems.
Written by Perlego with AI-assistance
Related key terms
1 of 5
9 Key excerpts on "Software Engineering"
- eBook - PDF
Software Engineering
Principles and Practice
- Hans van Vliet(Author)
- 2014(Publication Date)
- Wiley(Publisher)
Software is ubiquitous and scores of trustworthy systems have been built. These range from small spreadsheet applications to typesetting systems, banking systems, Web browsers and the Space Shuttle software. The techniques and methods discussed in this book have contributed their mite to the success of these and many other software development projects. 1.1 WHAT IS Software Engineering? In various texts on this topic, one encounters a definition of the term Software Engineering. An early definition was given at the first NATO conference (Naur and Randell, 1968): Software Engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. The definition given in the IEEE Standard Glossary of Software Engineering Terminology (IEEE610, 1990) is as follows: 6 INTRODUCTION Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. These and other definitions of the term ‘Software Engineering’ use rather different words. However, the essential characteristics of the field are always, explicitly or implicitly, present: • Software Engineering concerns the development of large programs. (DeRemer and Kron, 1976) makes a distinction between programming-in-the-large and programming-in-the-small. The borderline between large and small obviously is not sharp: a program of 100 lines is small, a program of 50 000 lines of code certainly is not. Programming-in-the-small generally refers to programs written by one person in a relatively short period of time. Programming-in-the-large, then, refers to multi-person jobs that span, say, more than half a year. - eBook - ePub
AI Factory
Theories, Applications and Case Studies
- Ramin Karim, Diego Galar, Uday Kumar(Authors)
- 2023(Publication Date)
- CRC Press(Publisher)
8 Software EngineeringDOI: 10.1201/9781003208686-88.1 Software Engineering Overview
Software Engineering refers to the development of software products using scientific principles, methods, and procedures. The outcome of Software Engineering is a reliable software product (TutorialsPoint, 2022 ).The term “Software Engineering” was created in the 1960s when researchers began to address what many saw as a “software crisis”, defined by Krueger (1992 ) as “the problem of building large, reliable software systems in a reliable, cost-effective way”. To this point, industry and academia had concentrated on developing capable and competent hardware. As a result, powerful and inexpensive machines were readily available.The next step was to create software to fully utilise the capability of the available hardware. In other words, researchers needed to create software that could solve real-world problems. The resulting field of endeavour was called Software Engineering (Tiwari & Kumar, 2020 ), and the outcomes were software products created with specific requirements in mind (TutorialsPoint, 2022 ). The process of product creation is shown in Figure 8.1 .The term “Software Engineering” can be broken down as follows:FIGURE 8.1 Software product (TutorialsPoint, 2022).- Software: The first half of the term, “software”, refers to more than a programme code. A programme is an executable code serving a certain computational purpose. Software is a collection of executable programmes, associated libraries, operational manuals, data structures, and documentation (Tiwari & Kumar, 2020 ).
- Engineering: The second half of the term, “engineering”, refers to the use of scientific principles and methods to create the software product (TutorialsPoint, 2022 ). Engineering is the step-by-step evolution of constructs in an organised, well-defined, and disciplined manner (Tiwari & Kumar, 2020
- eBook - ePub
- Derek Partridge(Author)
- 2013(Publication Date)
- Routledge(Publisher)
can lead to the production of high-quality software systems, but there are no guarantees. Software system design and construction is thus a skilled art (i.e. a blend of artistic flair and technical skill), but then so is much of science in all domains, despite the widespread, naive views to the contrary. So what exactly is Software Engineering?An introduction to Software Engineering What is Software Engineering? Well according to one source:Software Engineering is the introduction of formal engineering principles to the creation and production of software. A scientific or logical approach replaces the perhaps more traditional unstructured (or artistic) methods.DTI, Software Engineering Newsletter, Issue No. 7, 1988This definition is on the right track, but is perhaps more a definition of some future desired situation than the current reality. And clearly I have some reservations about the ‘scientific’ aspirations explicitly mentioned in the definition. I don’t really know what this word means, but I suspect that it is being (mis)used as a synonym for ‘logical’. A further point of contention that will emerge later when we come to a consideration of the promise and problems of artificial intelligence (AI) in practical software systems is that the desire for ‘a scientific or logical approach’ may be born of a fundamental misconception, and one that AI illuminates. - eBook - ePub
- Julio Sanchez, Maria P. Canton(Authors)
- 2018(Publication Date)
- CRC Press(Publisher)
Most engineering fields have developed standard metrics for measuring product quality. For example, we can compare the quality of two car batteries by means of the cold cranking amps which they are capable of delivering. On the other hand, nonengineered products are typically lacking quality measurements. In this sense we cannot determine from the label on a videocassette what is the entertainment value of the movie that it contains, nor are units of information specified in the jacket of a technical book. Software is also a field in which there are no universally accepted quality metrics, although substantial work is this direction is in progress. The verification of program correctness, discussed later in the book, directly relates to software quality metrics.26.2 Principles of Software EngineeringWe started this chapter on the assumption that software development is a creative activity and that programming is not an exact science. From this point of view even the term Software Engineering may be considered unsuitable since we could preferably speak of software development technique, which term does not imply the rigor of a formal engineering approach. In our opinion it is a mistake to assume that programs can be mechanically generated by some mechanical methodology, no matter how sophisticated. When Software Engineering falls short of producing the expected results it is because we over-stressed the scientific and technical aspects of program development over those that are artistic or aesthetic in nature or that depend on talent, personal endowments, or know-how. Nevertheless, as there is technique in art, there is technique in program development. Software Engineering is the conventional name that groups the technical and scientific aspects of program development.Smaller software projects usually take place within the constraints of a limited budget. Often financial resources do not extend to hiring trained software project managers or specialists in the field of Software Engineering. The person in charge of the project usually wears many hats, including that of project manager and software engineer. In fact, it is not unusual that the project manager/engineer is also part-time designer, programmer, tester, and documentation specialist. What this all means is that the formality and rigor used in engineering a major project may not apply to one of lesser proportions. In other words, the strictness and rigidity of Software Engineering principles may have to be scaled down to accommodate the smaller projects. - eBook - PDF
- Darrel Ince, Derek Andrews(Authors)
- 2014(Publication Date)
- Butterworth-Heinemann(Publisher)
Beliind every engineer there are guidelinesTor sound Techniques, and on completion of any part of the development there is a sound basis for validating and evaluating the design. The main hallmarks for an engineering process are that there is the need to specify the system, design it, construct it, validate it, commission it, and, just as important as the building steps, maintain it. The adoption of this approach leads to an engineering approach: to both software development and the software lifecycle itself. Software Engineering is about the software development cycle, the tools and techniques for executing each phase of the development of a piece of software, the management of the people who are carrying out the tasks, the tools and techniques for validating each phase, and, finally, measuring the outcome and making predictions about how long each one should take. The project management part of Software Engineering covers all aspects of getting the system out of the door, on time, and within budget, and, most important of all, working to the customer's satisfaction. Any Software Engineering tools that are to be used in software development must satisfy the need of project management. What characterizes any engineering discipline? First, that there is no single, correct solution; correct in the sense that other working and reliable systems are 'wrong'. There is freedom to choose a 'good' solution that should appeal to a large cross-section of other engineers, and there is a sound basis for validation and evaluation of a particular design. Second, there are guidelines for producing good solutions and there are sound techniques that can be used in that process. Software Engineering is about engineering good software; any development method should both allow and encourage its users to work within the engineering framework. - eBook - ePub
Software Engineering Design
Theory and Practice
- Carlos Otero(Author)
- 2016(Publication Date)
- Auerbach Publications(Publisher)
In the previous sections, design was introduced as a systematic and intelligent process for generating, evaluating, and specifying designs for devices, systems, or processes. To support this process, the problem-solving skill was identified as an essential ingredient for designing complex products. These discussions provided a general perspective on the importance of these concepts in the engineering profession. As in other engineering disciplines, design and problem-solving are crucial to the development of professional, large-scale, software systems. Software systems are highly complex, difficult to create, costly to change, and—depending on the software product—critical to human safety. Similarly to other engineering disciplines, designs in Software Engineering are used to identify, evaluate, and specify the structural and behavioral characteristics of software systems that adhere to some specification. Software designs provide blueprints that capture how software systems meet their required functions and how they are shaped to meet their intended quality. Formally, Software Engineering design is defined as(1) The process of identifying, evaluating, validating, and specifying the architectural, detailed, and construction models required to build software that meets its intended functional and nonfunctional requirements; and (2) the result of such process.The term software design is used interchangeably in practice as a means to describe both the process and product of software design. From a process perspective, software design is used to identify the phase, activities, tasks, and interrelationship between them required to model software’s structure and behavior before construction begins. From a product development perspective, software design is used to identify the design artifacts that result from the identified phase, activities, and tasks; therefore, these products by themselves, or collectively, are referred to as software design. Design products vary according to several factors, including design perspective, language, purpose, and their capabilities for evaluation and analysis. For example, designs can be in architectural form, using architectural notations targeted for specific stakeholders. These types of design can be presented using block diagrams, Unified Modeling Language (UML) diagrams, or other descriptive form of black-box design documentation. In other cases, design can be in detailed form, where a more white-box representation of the system is used to model structural and behavioral aspects. These can include software models that contain class diagrams, object diagrams, sequence diagrams, or activity diagrams. Other design products include models that represent interfaces, data, or user interface designs. Due to the many ways software design is used in practice, a common pitfall in Software Engineering projects is to associate design with a particular type of design artifact, therefore neglecting other forms of design or the activities required to create complete and correct software designs. Collectively, both process and products, including all variety of design products, are considered software design and are essential in most professional software projects. - eBook - PDF
Modeling Software with Finite State Machines
A Practical Approach
- Ferdinand Wagner, Ruedi Schmuki, Thomas Wagner, Peter Wolstenholme(Authors)
- 2006(Publication Date)
- Auerbach Publications(Publisher)
43 Chapter 3 Software as Engineering? Methods There are some difficulties in discussing the term “Software Engineering.” If we understand under that term the body of knowledge about creating programs, Software Engineering should cover: Specification methods Designing methods Programming techniques To round it up, Software Engineering should also contain: Organizational topics The reality differs from those expectations. As observed in several publi-cations, Software Engineering does not contain knowledge about engineer-ing software, understood as knowledge about how to write a good code . Actually, Agile methods would have completely lost their justification if coding had not contained a design element. Therefore, it is possible to write code without a formal design. Whether it is a practice to be recommended is another issue. Whether it is possible to code without any design work (i.e., to serve as a pure translator converting a design into a code) is also doubtful — if it were possible, coding could be automated and the programmer would be replaced by translation pro-grams. Interestingly, the concentration on management and organizational 44 Modeling Software with Finite State Machines topics while neglecting technical aspects has been criticized for several years without visible reaction. For example, we find a very constructive criticism of Software Engineering done by Baber, 1 and similar arguments can be found a few years later in Whittaker et al. 2 The common (mis)understanding of Software Engineering is at best formulated in the abstract of the Whittaker et al. paper 2 mentioned above*: Books on the subject favor the “light” side of the discipline: project management, software process improvement, schedule and cost estimation and so forth. The real technology necessary to actually build software is often described abstractly, given as obvious or ignored altogether. - eBook - PDF
Software Engineering Foundations
A Software Science Perspective
- Yingxu Wang(Author)
- 2007(Publication Date)
- Auerbach Publications(Publisher)
Because different programmers are unlikely to make the same mistake for the same task at the same time in software development, review and inspection are entitled to find errors and eliminate bugs efficiently. Section 13.5.3 will formally prove that review and inspection are effective techniques dealing with creative work products such as software systems and related documents. 2.3.3.18 Management Engineering Management is a process to deal with coordinated work and how people and resources may be optimally allocated on the work. Definition 2.20 Management engineering (PR18) is a Software Engineering principle that states a crucial facet of Software Engineering is the need for a suitable theory for organizing and coordinating large groups in large-scale projects. Chapter 2 Principles of Software Engineering 103 As the scale of software increases continually, the complexity of the problem grows at an ever faster rate. In contemporary Software Engineering, the central role is no longer that of the programmers; project managers and corporate management have critical roles to play. As programmers use programming technologies, software corporation managers seek organizational and strategic management methodologies, and project managers seek professional management and software quality assurance methodologies. These developments have resulted in an expanded domain of Software Engineering, which includes three important aspects: development methodology, organization and infrastructure, and management [Wang and King, 2000a]. An interesting discovery in a recent survey on the international curricula of Software Engineering is that project management is the most popular course commonly offered in almost all universities worldwide [Wang and Liu, 2004]. Management theories and methodologies are an important facet of the theoretical and empirical framework of Software Engineering. - eBook - ePub
Theory and Practice of Computation
Proceedings of the Workshop on Computation: Theory and Practice (WCTP 2019), September 26-27, 2019, Manila, The Philippines
- Shin-ya Nishizaki, Masayuki Numao, Merlin Suarez, Jaime Caro, Merlin Teodosia Suarez(Authors)
- 2020(Publication Date)
- CRC Press(Publisher)
Sison & Yang, 2007 ). Reductions in overtime was not yet achieved despite using daily scrum meetings because of underestimated amount of time for the sprint. In fact, some developers claim that daily scrum meetings are taking too much valuable time when they could be working on their task already.3.2 Software Engineering in the academe
3.2.1 Software Engineering course offering
In the Philippines university students are exposed to Software Engineering as part of the Computer Science course offering. In the undergraduate degree these are divided into two subjects (SE 1 and SE 2) taken for two semesters (e.g. University of the Philippines-Diliman, UP Manila, University of Santo Tomas to name a few). This is also true in both of the university samples looked at. Some universities provide the course in two parts: theory and laboratory (e.g. MAPUA). Advanced Software Engineering topics are also offered in the graduate degree.For UP Diliman (University A), Software Engineering 1 course covers the principles of Software Engineering, software project management, requirements engineering, software architecture and design patterns, software quality assurance, and software testing. The subject requirements include project documentation deliverables, requirements engineering deliverables, design engineering deliverables, and testing deliverables. Software Engineering 2 focuses on software implementation and maintenance. The course requirement includes implementation and testing deliverables, alpha/beta analysis and testing deliverables, at least two (2) software project releases, final project and oral defense.For University B, the Software Engineering course examines how systems are developed and the process it takes to propose one to an actual client. A project proposal is required, intended for later development and implementation in SE 2. SE 1 requirements included: (a) System Project Management Plan, (b) System Requirement Specifications, (c) System Design Document and (d) System Test Plan. SE 2 carry on requirements of SE 1. It emphasizes the technical foundations of software development, such as requirements analysis, cost estimation, design, team organization, quality control, configuration management, verification, testing, software implementation, and maintenance. SE 2 course requirements focused on the project deliverables (i.e. project documents and project defense).
Index pages curate the most relevant extracts from our library of academic textbooks. They’ve been created using an in-house natural language model (NLM), each adding context and meaning to key research topics.








