sen lecture02

Upload: abhijeet

Post on 09-Apr-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/7/2019 Sen Lecture02

    1/25

    IT314 - Software Engineering

    Asim Banerjee

    11th January 2011

    [email protected]

  • 8/7/2019 Sen Lecture02

    2/25

    IT314 - Software Engineering 2

    Course Schedule and Organization

    Semester VI Course for B.Tech. (ICT) Course Structure 3034.5

    2 lectures per week of 90 minutes duration

    Tuesday 09:30 to 10:55 Thursday 09:30 to 10:55

    Applicable from next week.

    We would use the slot on Wednesday for

    course related activities.

  • 8/7/2019 Sen Lecture02

    3/25

    IT314 - Software Engineering 3

    Course Schedule and Organization

    3 lab hours per week 14:00 to 17:00 Lab004on Monday, Tuesday, Thursday & Friday

    Project Teams 1 to 5 - Thursday

    Project Teams 6 to 10 - FridayProject Teams 11 to 15 - Monday

    Project Teams 16 to 19 - Tuesday

  • 8/7/2019 Sen Lecture02

    4/25

    IT314 - Software Engineering 4

    Course Schedule (Change)

    3 lab hours per week 14:00 to 17:00 Lab004on Monday, Tuesday, Thursday & Friday

    Project Teams 1 to 5 - Thursday

    Project Teams 6 to 9 - FridayProject Teams 10 to 14 - Monday

    Project Teams 15 to 19 - Tuesday

    This will be operational from next week.

  • 8/7/2019 Sen Lecture02

    5/25

    IT314 - Software Engineering 5

    Assignment #11. List down your individual experiences in

    developing the software for any of yourprevious projects.

    Submit by: 10th January 2011, 12:00 hrs.

    E-mail submissions to:[email protected]

  • 8/7/2019 Sen Lecture02

    6/25

    IT314 - Software Engineering 6

    TA Details

    There are eight TAs who have been assigned tothis course viz.

    ID Name

    200911006 Sonal Kumari

    200911032 Chauhan Tejas Chandulal

    200911033 Hemnani Deepak

    200911035 ParmarChintan

    201011011 Aghera Piyush Keshavlal

    201011013 Dipendra Singh Mandloi201011035 Jani Yash Rajkumar

    201011042 Paridhi Munshi

  • 8/7/2019 Sen Lecture02

    7/25

    IT314 - Software Engineering 7

    Some Comments from Students

    The course is very heavy and there is preciouslittle time to devote to the other courses in thissemester

    This is NOT trueif you feel this way about thecourse, then you are NOT following the rightengineering way of developing software foryour project.

  • 8/7/2019 Sen Lecture02

    8/25

    IT314 - Software Engineering 8

    What Is Software?

    Computer software, or just software, is the collection ofcomputer programs and related data that provide theinstructions telling a computer what to do.

    We can also say software refers to one or more computerprograms and data held in the storage of the computer for somepurposes. Program software performs the function of the

    program it implements, either by directly providing instructionsto the computer hardware or by serving as input to anotherpiece of software.

    NOTE: The term was coined to contrast to the old termhardware (meaning physical devices). In contrast to hardware,software is intangible, meaning it "cannot be touched".

    Software is also sometimes used in a more narrow sense,meaning application software only. Sometimes the termincludes data that has not traditionally been associated withcomputers, such as film, tapes, and records

  • 8/7/2019 Sen Lecture02

    9/25

    What Is Engineering?

    E

    ngineering is the discipline, art and profession ofacquiring and applying scientific, mathematical,economic, social, and practical knowledge to designand build structures, machines, devices, systems,materials and processes that safely realize solutionsto the needs of society.

    The American Engineers' Council for ProfessionalDevelopment has defined "engineering" as:

    The creative application of scientific principles todesign ordevelop structures, machines, apparatus, ormanufacturing processes, or works utilizing themsingly or in combination; or to construct or operate thesame with full cognizance of their design; or toforecast their behavior under specific operatingconditions; all as respects an intended function,economics of operation and safety to life and property

  • 8/7/2019 Sen Lecture02

    10/25

    IT314 - Software Engineering 10

    What Is Software Engineering? (1/3)

    Software engineering (SE) is a profession dedicatedto designing, implementing, and modifying software sothat it is of higher quality, more affordable,maintainable, and faster to build.

    It is a "systematic approach to the analysis, design,assessment, implementation, test, maintenance andre-engineering of a software by applying engineeringto the software".

    NOTE: The term software engineering first appeared in

    the 1968 NATO Software Engineering Conference,and was meant to provoke thought regarding theperceived "software crisis" at the time.

  • 8/7/2019 Sen Lecture02

    11/25

    IT314 - Software Engineering 11

    What Is Software Engineering? (2/3)

    Since the field is still relatively young compared to itssister fields of engineering, there is still much debatearound what software engineering actually is, and if itconforms to the classical definition of engineering.

    The IEEE Computer Society's Software Engineering

    Body of Knowledge defines "software engineering" asThe application of a systematic, disciplined, quantifiableapproach to the development, operation, andmaintenance of software, and the study of theseapproaches; that is, the application of engineering to

    software. It is the application of Engineering to software because it

    integrates significant mathematics, computer scienceand practices whose origins are in Engineering.

  • 8/7/2019 Sen Lecture02

    12/25

    IT314 - Software Engineering 12

    What Is Software Engineering? (3/3)

    Software development, a much used and more genericterm, does not necessarily subsume the engineeringparadigm.

    Objective of Software Engineering (SE):

    To systematically develop high quality software in timelyand cost effective manner

    Basic knowledge for SE comes from variousengineering disciplines

    SE methodologies, techniques and guidelines have

    been evolved by systematically organizing: Past innovations in software development

    Past experience in software development

  • 8/7/2019 Sen Lecture02

    13/25

    IT314 - Software Engineering 13

    Why Software Engineering? (1/3)

    Computers have been in use for commercial purposes

    for last 60 years.

    Early software used exploratory programming styles in

    Assembly language programming

    Small programs

    Written by one programmer

    Programs lacked sophistication

    Every programmer had own individualistic style

    Higher-level language programming

    Helped programmers to write larger programs

    Considerably reduced software development effort

  • 8/7/2019 Sen Lecture02

    14/25

    IT314 - Software Engineering 14

    Why Software Engineering? (2/3)

    With time, the computers are becoming: Faster

    More capable

    Easy to use

    Cheaper

    Sophistication in computers has resulted in

    demand for large and complex software.

    Exploratory style of software development are Adequate only for small tasks

    Inadequate to cope with the changing scenario

  • 8/7/2019 Sen Lecture02

    15/25

    IT314 - Software Engineering 15

    Why Software Engineering? (3/3)

    Also, the software needs to be: Developed within the specified time

    In a cost effective manner

    Amenable for maintenance by someone other than theauthor

    All this requires a systematic approach to developingsoftware i.e. software has to be engineered.

    Systematic and engineering like approach tosoftware development is inevitable for developinglarge and complex software

    NOTE: It involves use of techniques like systemsanalysis, estimation, prototyping, designing, testing,etc.

  • 8/7/2019 Sen Lecture02

    16/25

    IT314 - Software Engineering 16

    Any Questions?

  • 8/7/2019 Sen Lecture02

    17/25

    IT314 - Software Engineering 17

    Software Development Practices -

    Changes (1/2)

    More focus is on requirements specification

    Design has become a distinct phase between

    the requirements and the coding

    Coding has become small part of the project

    (from being the dominant part of project)

    Focus has shifted from error detection (and

    correction) to error prevention Reviews are carried out after each phase

  • 8/7/2019 Sen Lecture02

    18/25

    IT314 - Software Engineering 18

    Software Development Practices -

    Changes (2/2)

    Testing has become more systematic e.g. test

    cases are developed right after the requirements

    are identified

    Improved documentation has resulted in:

    Better visibility thru consistent use of standards

    Smoother fault diagnosis and maintenance

    Use of Computer Aided Software Engineering(CASE) tools has increased

  • 8/7/2019 Sen Lecture02

    19/25

    IT314 - Software Engineering 19

    Software Development Methodologies (1/2)

    Software Development Methodologies specify: How to do the job?

    e.g. analysis, design, coding, testing

    What outputs to produced?

    How to check for entry/exit criteria? How to measure progress?

    Typical phases associated in software projectlife cycle:

    Feasibility (pre-development) Requirements

    Design

  • 8/7/2019 Sen Lecture02

    20/25

    IT314 - Software Engineering 20

    Software Development Methodologies (1/2)

    Typical phases associated in software projectlife cycle (Continued):

    Coding and Unit testing

    Testing

    Maintenance (post-development)

    Software development organizations expect

    their employees to master their development

    methodologies (before being assigned to ajob)

  • 8/7/2019 Sen Lecture02

    21/25

    IT314 - Software Engineering 21

    Software Project Phases

    Pre-development Phase Feasibility Study

    Technical Proposals

    Development Phase Requirements Study

    Designing

    Implementation - Coding and unit testing

    Integration and System testing

    Post-Development Phase

    Maintenance

  • 8/7/2019 Sen Lecture02

    22/25

    IT314 - Software Engineering 22

    Why Software Project Phases?(1/2)

    It breaks the overall problem of developingrequired software, into performing

    (successfully) a set of phases, each handling a

    different concern of software development.

    It ensures that the cost of development is lower

    than what it would have been if the whole

    problem was tackled together.

    A phased process allows proper checking forquality and progress at some defined points

    during development (end of phases).

  • 8/7/2019 Sen Lecture02

    23/25

    IT314 - Software Engineering 23

    Why Software Project Phases?(2/2)

    Thus having the development process in

    phases aids in

    Managing the complexity

    Project tracking

    Ensuring quality.

    The development process in phases increases

    the probability of developing the software in atimely and cost effective manner.

  • 8/7/2019 Sen Lecture02

    24/25

    IT314 - Software Engineering 24

    Any Questions?

  • 8/7/2019 Sen Lecture02

    25/25

    IT314 - Software Engineering 25

    Thats all for now

    Well continue in the next class.