Lesson 1-Software Engineering For PRINTING
Lesson 1-Software Engineering For PRINTING
Lesson 1-Software Engineering For PRINTING
WHAT IS SOFTWARE?
Computer programs and associated documentation Software products may be developed for a particular customer or may be developed for a general market Software products may be
Generic - developed to be sold to a range of different customers Custom - developed for a single customer according to their specification
In what order should these tasks be carried out to complete the project in the shortest possible time? It is difficult to come up with a correct solution (or, solutions) without writing down possible options and considering them one by one (unless one comes with a built-in computer chip). It is hard to say why this problem is complicated, because no individual step seems to be difficult. After all, the most complicated operation involves adding small integer numbers. Software engineering is full of problems like this: all individual steps are easy, yet the overall problem is overwhelming.
Software engineering is often confused with programming. The role of software engineering is to capture the customers business needs and specify the blueprints for the system so that programmers can implement it (Figure 1-2).
Software engineering relies on our ability to think about space and time, processes, and interactions between processes and structures.
To understand a complex thing, one needs to develop ideas about relationships among the parts inside. By dividing a complicated job into simpler tasks and describing how they interact, we simplify the problem and make it easier to understand and solve. This is why imagination is critical for software engineering (as it is for any other problem-solving activity!).
SOFTWARE ENGINEERING
In a way, software development parallels the problem-solving strategies in artificial intelligence (AI): represent the goal; represent the current state; and, minimize the differences by means-ends analysis.
SOFTWARE CHARACTERISTICS
Software development is unlike any other product development in the following aspects
Software is intangible and hard to visualize Software is probably the most complex artifact Software is probably the most flexible artifact