I don't know!
Please start reading the first two chapters of each text book.
The first topic ensures that a student new to software engineering leaves the course with a grasp of the basic concepts and tenets of the field.
The second topic provides students with an explicit example of how software engineering techniques can be used to tackle complex problem domains.
The latter two topics will provide the student with insight into how the field of software engineering is changing.
Here are several definitions to choose from:
The computer science discipline concerned with developing large applications. Software engineering covers not only the technical aspects of building software systems, but also management issues, such as directing programming teams, scheduling, and budgeting. (http://www.angelfire.com/anime3/internet/programming.htm)
- Software
- Computer programs and their related artifacts (e.g. requirements documents, design documents, test cases, specifications, protocol documents, UI guidelines, usability tests, …)
- Engineering
- The application of scientific principles in the context of practical constraints
- What is Engineering?
- Engineering is a sequence of well-defined, precisely-stated, sound steps, which follow a method or apply a technique based on some combination of
- theoretical results derived from a formal model
- empirical adjustments for unmodeled phenomenon
- rules of thumb based on experience
- This definition is independent of purpose, i.e., engineering can be applied to many disciplines
- Software engineering is that form of engineering that applies…
- a systematic, disciplined, quantifiable approach,
- the principles of computer science, design, engineering, management, mathematics, psychology, sociology, and other disciplines…
- to creating, developing, operating, and maintaining cost-effective, reliably correct, high-quality solutions to software problems. (Daniel M. Berry)
First ICSE Workshop on Software Technologies for Ultra-Large-Scale (ULS) Systems
Many future civic, private, and military software-intensive systems will be software-centric and ultra-large in scale (ULS). Radical scale-up will be seen in many dimensions: implementation complexity, distribution, decentralization, networking, storage, and quality-of-service requirements and mechanisms, dependability/security requirements and mechanisms, size and structure of development organizations and methods, complexity of organizations surrounding deployed systems, interaction with physical environments based on diverse sensors and actuator technologies, and in many other dimensions.
The recent report, Ultra-Large-Scale: The Software Challenge of the Future (see the workshop web site for a link), provides an initial analysis of problems and research needs and opportunities created by the advent of ULS systems. In a nutshell, radical increases in scale and complexity will demand new technologies for, and approaches to, all aspects of system conception, definition, development, deployment, use, maintenance, evolution and regulation. The software elements of ULS systems present especially daunting challenges.
Development of the required technologies and approaches in turn will require basic and applied research significantly different that that which we have pursued in the past. If the software systems that we focus on today are likened to buildings or individual infrastructure systems, then ULS systems are more akin to cities or networks of cities. Like cities, they will have complex individual nodes (akin to buildings and infrastructure systems), so we must continue to improve traditional technologies and methods; but they will also exhibit organization and require technology and approaches fundamentally different than those that are appropriate at the node level. Enabling the development of ULS systems, and their software elements, in particular, will require new ideas drawing on many disciplines, including computer science and software engineering but also including disciplines such as economics, city planning and anthropology.