INTRODUCTION software engineering -1

Document Sample
INTRODUCTION software engineering -1 Powered By Docstoc
					                                                Software Engineering




                              1. Introduction


                                 N.L. Hsueh




                                                                1
N.L. Hsueh, SE-Lab IECS FCU
                                             Software Engineering

                              Outline

       What is software
       Problems with software development
       What is software engineering
       Q & A about software engineering
       Software myth




                                                             2
N.L. Hsueh, SE-Lab IECS FCU
                                                 Software Engineering

                          What's Software

       Software is (IEEE definition)
          Computer     programs, procedures, and possibly
           associated documentation and data pertaining to the
           operation of a computer system

       Software characteristics
          Software is developed, not manufactured
          Software does not wear out
          Most software is custom built




                                                                 3
N.L. Hsueh, SE-Lab IECS FCU
                                                           Software Engineering

                    Software characteristics



      Failure
         rate
                                                    Wear out
                       Infant mortality




                                                               Time

                              Failure Curve for Hardware                   4
N.L. Hsueh, SE-Lab IECS FCU
                                                        Software Engineering

                    Software characteristics
                                                         Software doesn’t wear
                                                             out, but it does
                                                               deteriorate




                      Idealized and actual failure curves for                    5
N.L. Hsueh, SE-Lab IECS FCU
                                    software
                                                              Software Engineering

                    Software characteristics

       Cost of software is crucial importance
          Cost of developing software
          Cost of keeping the software operational once it has been
           delivered to the customer


                              hardware




                                         maintenance


                     1950                              1990


            Figure 1.1 Relative Distribution of hardware/software cost

                                                                              6
N.L. Hsueh, SE-Lab IECS FCU
                                              Software Engineering




        Software is both a product and a vehicle for delivering
        a product

        R.S. Pressman




                                                              7
N.L. Hsueh, SE-Lab IECS FCU
                                                           Software Engineering

         Problems with Software Development

       Software crisis examples
          June 9, 1980
                 … a alarm indicated that Soviet Union had started a missile
                  attack
             US airline
                 lost 50M because of an error in their seat reservation system
             April 1983
                 The court discharged a woman (54), who was on trial for
                  murdering her daughter…




                                                                                  8
N.L. Hsueh, SE-Lab IECS FCU
                                                      Software Engineering

                              Software Crisis

       Software Crisis
          Deliver too late
          Programs did not behave as user expected
          Programs       were    rarely   adaptable to  changed
           circumstances
          Many errors were detected only after had been delivered
           to the customer
          Productivity is not as expected
                Demand on software system >> supply on software system
                Backlog of maintenance will slow down the development of
                 new applications




                                                                            9
N.L. Hsueh, SE-Lab IECS FCU
                                                             Software Engineering

                     Brooks: No Silver Bullet

       Essence: the difficulties inherent in the nature of software
          complexity: development process, application domain,
           internals of the system (e.g., number of states, size of
           software, functionality, structures, and management).
          conformity: software must adapt to interact with people
           according to their diverse needs; therefore, software
           cannot be completely represented formally.
          changeability: software component is usually the easiest
           one to modify.
                 Small changes in the specification lead to small changes in
                  the product – it is not true in software engineering
             invisibility: software structure is hidden, only behavior can
              be observed when executing the software.
                 “almost finished”, “90% finished”

                                                                                10
N.L. Hsueh, SE-Lab IECS FCU
                                                      Software Engineering




       Accidental: difficulties arise in representing, testing the
        conceptual constructs (SW) (e.g., software development
        process)
          examples of accidental difficulties:
                accidental   complexity: abstract program vs concrete
                 machine program; solved by HLL.
                slow turnaround: batch programming vs time-sharing
                 (shortest response time); solved by time-sharing.
                no standard formats: individual programs vs integrated
                 library, standard formats; solved by unified programming
                 environment.




                              http://www.cs.unc.edu/~brooks/

                                                                            11
N.L. Hsueh, SE-Lab IECS FCU
                                                     Software Engineering

                      The Impact of Change




                              The Impact of Change




                                                                     12
N.L. Hsueh, SE-Lab IECS FCU
                                             Software Engineering




         The most likely way for the world to be destroyed, most
         experts agree, is by accident. That’s where we come in;
         We’re computer professionals. We cause accidents

         Nathaniel Borenstein




                                                             13
N.L. Hsueh, SE-Lab IECS FCU
                                                          Software Engineering

                         Why projects fail?

       Software engineering is not as same as programming
          Techniques, management, psychology
       Failures in software engineering are multi-dimensional
          Technical slip
                How to test?
             Bad management
                an unrealistic deadline is established
                changing customer requirements
                an honest underestimate of effort
                predictable and/or unpredictable risks
                failure in project management
             Bad communication
                miscommunication among project staff

                                                                          14
N.L. Hsueh, SE-Lab IECS FCU
                                              Software Engineering




                   顧客解釋他們想要的             專案主持人對顧客
                                           需求的認知




     系統分析師所設計的                程式設計師所寫出       顧問所描繪的願景
                                 來的                           15
N.L. Hsueh, SE-Lab IECS FCU
                                                Software Engineering




                    專案的文件                最後交付給顧客的軟體




       顧客所付的錢                 上線後的技術支援          顧客所真正需要的
                                                                16
N.L. Hsueh, SE-Lab IECS FCU
                                                 Software Engineering

                What is software engineering

       Proposed: NR68, BR69

       Software engineering is the establishment and use of sound
        engineering principles in order to obtain economically
        software that is reliable and works efficiently on real
        machines

       Software engineering is the application of a systematic,
        disciplined, quantifiable approach to development,
        operation, and maintenance of software; that is, the
        application of engineering to software




                                                                     17
N.L. Hsueh, SE-Lab IECS FCU
                                                    Software Engineering

       Characteristics of Software Engineering

       Essential characteristics of the field of software engineering
          Software engineering concerns the construction of large
           programs
          The central theme is mastering complexity
          Software evolves
          The efficiency with which software is developed is of
           crucial importance
          Regular cooperation between people is an integral part of
           programming in the large
          The quality of the developed software is important
          The software has to support its users effectively




                                                                         18
N.L. Hsueh, SE-Lab IECS FCU
                                                   Software Engineering

            Q & A about software engineering

       Software engineering vs. building engineering
       Software engineering vs. computer science
       What is a software process?
       What is a software process model?
       What are software engineering methods?
       What is CASE
       What are the attributes of good software?




                                                                   19
N.L. Hsueh, SE-Lab IECS FCU
                                                      Software Engineering

  Software engineering vs. building engineering

       Same
          Developed in a number of phases
          A careful planning of these phases
          Continuous audit of the whole process
          Construction from a clear and complete design
          Accident may happen
       Different
          Cost
                Software: developing, maintenance
                Building: constructing
             Wear out
                Software: maintenance by errors or changing requirements
                 of the users

                                                                            20
N.L. Hsueh, SE-Lab IECS FCU
                                                            Software Engineering

    Software engineering vs. computer science


             Computer science
                Emerge in 1960
                Split from mathematics and has been heavily influenced by
                 the mathematics
                    Algorithm complexity, formal language, semantics of
                     language
             Software engineering
                Has a similar inclination to focus on mathematics
                    Software development should be formalized
                    Ignore the reality of trading off quality aspect against the
                     available budget, and changeability…

                SE has to concern about management of huge project,
                 human factor, cost estimation and control


                                                                                    21
N.L. Hsueh, SE-Lab IECS FCU
                                                  Software Engineering

           What is a software process model?

       A simplified representation of a software process, presented
        from a specific perspective

       Generic process models
          Waterfall
          Evolutionary development
          Formal transformation
          Integration from reusable components




                                                                       22
N.L. Hsueh, SE-Lab IECS FCU
                                                  Software Engineering

                 Examples of Process Model

       Process model

               Reqt.                                      Waterfall
               engineering    design   code      test




              Prototyping
                                         Rapid application development
                                                                     23
N.L. Hsueh, SE-Lab IECS FCU
                                             Software Engineering




          Incremental




                              Spiral model
                                                             24
N.L. Hsueh, SE-Lab IECS FCU
                                                  Software Engineering

               Software Engineering Methods

       Structured approaches to software development which include
        system models, notations, rules, design advice and process
        guidance
       Model descriptions
          Descriptions of graphical models which should be
            produced
       Rules
          Constraints applied to system models
       Recommendations
          Advice on good design practice
       Process guidance
          What activities to follow




                                                                      25
N.L. Hsueh, SE-Lab IECS FCU
                                                     Software Engineering

                              Software Myth




                          In the absence of meaningful standards, a new indust
                          like software comes to depend instead on folklore

                          Tom Demarco




                                                                        26
N.L. Hsueh, SE-Lab IECS FCU
                                                  Software Engineering

                               Conti.

       Management myths
          We already have a book that’s full of standards and
           procedures for building software, won’t that provide my
           people with everything they need to know?
          My people have state-of-art software development tools,
           after all, we buy them the newest computers
          If we got behind schedule, we can add more programmers
           and catch up
          If I decide to outsource the software project to a third
           party, I can just relax and let firm build it




                                                                      27
N.L. Hsueh, SE-Lab IECS FCU
                                                   Software Engineering

                               Conti.

       Customer myths
          A general statement of objectives is sufficient to begin
           writing programs – we can fill in the details later
          Project requirements continually change, but change can
           be easily accommodated because software is flexible
       Practitioner’s myths
          Once we write the program and get it to work, our job is
           done
          Until I get the program “running” I have no way of
           assessing its quality
          The only deliverable work product for a successful project
           is the working program
          Software engineering will make us create voluminous and
           unnecessary document and will invariably slow us down

                                                                        28
N.L. Hsueh, SE-Lab IECS FCU
                                              Software Engineering

                              Reference

       Transaction on Software Engineering (IEEE)
       Software (IEEE)
       Software Engineering Notes (ACM)
       Transactions on Software Engineering and Methodology
        (ACM)
       The Journal of System and Software (Elsevier)
       Proceedings of International Conference on Software
        Engineering (ACM/IEEE)
       Proceedings of International Conference on Maintenance
        (ACM/IEEE)
       Annals of Software Engineering (Kluwer)




                                                                 29
N.L. Hsueh, SE-Lab IECS FCU

				
About if any file u wil find copyright contact me it will be remove in 3 to 4 buisnees days. add me on sanjaydudeja007@gmail.com or visit http://www.ohotech.com/