Lesson 1-Software Engineering for PRINTING

download Lesson 1-Software Engineering for PRINTING

of 13

Transcript of 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