Download - Lesson 1-Software Engineering for PRINTING
-
8/3/2019 Lesson 1-Software Engineering for PRINTING
1/13
SOFTWARE ENGINEERINGPrepared by: Jerian R. Peren
-
8/3/2019 Lesson 1-Software Engineering for PRINTING
2/13
WHATISSOFTWARE?
Computer programs and associated documentation
Software products may be developed for a particularcustomer 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 theirspecification
-
8/3/2019 Lesson 1-Software Engineering for PRINTING
3/13
WHATISSOFTWAREENGINEERING?
Software engineering is an engineering discipline whichis concerned with all aspects of software production
Software engineers should adopt a systematic andorganised approach to their work and use appropriatetools and techniques depending on the problem to besolved, the development constraints and the resourcesavailable
-
8/3/2019 Lesson 1-Software Engineering for PRINTING
4/13
WHATISSOFTWAREENGINEERING?
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 andconsidering them one by one (unless one comes with a built-in computer chip). It is hard to say why thisproblem is complicated, because no individual step seems to be difficult. After all, the most complicatedoperation involves adding small integer numbers.Software engineering is full of problems like this: all individual steps are easy, yet the overallproblem is overwhelming.
-
8/3/2019 Lesson 1-Software Engineering for PRINTING
5/13
WHATISSOFTWAREENGINEERING
Software engineering is often confused with programming. The role of software engineering isto capture the customers business needs and specify the blueprints for the system so thatprogrammers 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.
-
8/3/2019 Lesson 1-Software Engineering for PRINTING
6/13
SOFTWARE ENGINEERING CONCEPT
To understand a complex thing, one needs to develop ideas about relationshipsamong the parts inside. By dividing a complicated job into simpler tasks anddescribing how they interact, we simplify the problem and make it easier tounderstand and solve. This is why imagination is critical forsoftware engineering (as it is for any other problem-solving activity!).
-
8/3/2019 Lesson 1-Software Engineering for PRINTING
7/13
SOFTWARE ENGINEERING
-
8/3/2019 Lesson 1-Software Engineering for PRINTING
8/13
SOFTWARE ENGINEERING CONCEPT
In a way, software development parallels the problem-solving strategies inartificial intelligence (AI):represent the goal; represent the current state; and, minimize thedifferences by means-ends analysis.
-
8/3/2019 Lesson 1-Software Engineering for PRINTING
9/13
WHY SOFTWARE ENGINEERING IS DIFFICULT
If you are a civil engineer building bridges then all youneed to know is about bridges. Unlike this, if youare developing software you need to know aboutsoftware domain (because that is what you are
building) and you need to know about the problemdomain (because that is what you are building asolution for). Some problems require extensiveperiods of dedicated research (years, decades, oreven longer). Obviously, we cannot consider such
problem research as part ofsoftware engineering. We will assume that the
problem is either solved (a theoretical solution
exists), or it can be solved in a relatively short amountof time by an informed non-expert.
-
8/3/2019 Lesson 1-Software Engineering for PRINTING
10/13
SOFTWAREENGINEERINGLIFECYCLE
Any product development can be expected toproceed as an organized process that usuallyincludes the following phases:
Planning/Specification
Design
Implementation
Evaluation
-
8/3/2019 Lesson 1-Software Engineering for PRINTING
11/13
SOFTWAREENGINEERINGLIFECYCLE
-
8/3/2019 Lesson 1-Software Engineering for PRINTING
12/13
SOFTWAREENGINEERINGLIFECYCLE
So is with software development. The common software development phasesare as follows:
1. Specification / Requirements
- Documenting the usage scenarios and deriving the static domain model
2. Design
- Assigning responsibilities to objects and specifying the dynamics of theirinteractions under diffrent usage scenarios
3. Implementation
- Encoding the design in a programming language
4. Testing
- Individual classes/components (unit testing) and entire system (integrationtesting)
5. Operation and Maintenance
- Running the system; Fixing bugs and adding new features
The lifecycle usually comprises many other activities, some of which precede theabove ones, such as marketing survey to determine the market need for theplanned product. This text is restricted to engineering activities, usually undertakenby the software developer.
-
8/3/2019 Lesson 1-Software Engineering for PRINTING
13/13
SOFTWARECHARACTERISTICS
Software development is unlike any other productdevelopment 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