Module 1 Topics: 1. The Evolving Role of Software
Module 1 Topics: 1. The Evolving Role of Software
CML
Module 1 Topics
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:1             Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
  based systems. Sophistication and complexity can produce dazzling results when a system
  succeeds, but they can also pose huge problems for those who must build complex systems.
      Popular books published during the 1970s and 1980s provide useful historical insight into
  the changing perception of computers and software and their impact on our culture. Osborne
  characterized a "new industrial revolution." Toffler called the advent of microelectronics part of
  "the third wave of change" in human history, and Naisbitt predicted a transformation from an
  industrial society to an "information society." Feigenbaum and McCorduck suggested that
  information and knowledge (controlled by computers) would be the focal point for power in the
  twenty-first century, and Stoll argued that the "electronic community" created by networks and
  software was the key to knowledge interchange throughout the world.
      As the 1990s began, Toffler described a "power shift" in which old power structures
  disintegrate as computers and software lead to a "democratization of knowledge." Yourdon
  worried that U.S. companies might loose their competitive edge in software related businesses
  and predicted the decline and fall of the American programmer. Hammer and Champy argued
  that information technologies were to play a pivotal role in the reengineering of the
  corporation. During the mid-1990s, the pervasiveness of computers and software spawned a
  rash of books by neo-Luddites. These authors demonized the computer, emphasizing legitimate
  concerns but ignoring the profound benefits that have already been realized.
      During the later 1990s, Yourdon re-evaluated the prospects for the software professional and
  suggested the the rise and resurrection of the American programmer. As the Internet grew in
  importance, his change of heart proved to be correct. As the twentieth century closed, the focus
  shifted once more, this time to the impact of the Y2K time bomb . Although the predictions of
  the Y2K doomsayers were incorrect, their popular writings drove home the pervasiveness of
  software in our lives. Today, ubiquitous computing has spawned a generation of information
  appliances that have broadband connectivity to the Web to provide a blanket of connectedness
  over our homes, offices and motorways. Softwares role continues to expand.
      The lone programmer of an earlier era has been replaced by a team of software specialists,
  each focusing on one part of the technology required to deliver a complex application. And yet,
  the same questions asked of the lone programmer are being asked when modern computer-based
  systems are built:
             Why does it take so long to get software finished?
             Why are development costs so high?
             Why can't we find all the errors before we give the software to customers?
             Why do we continue to have difficulty in measuring progress as software is
              being developed?
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:2             Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:3             Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
      The changing Nature of Software can be discussed under these three suptopics:-
        2.1. Defining Software
        2.2. Software Application Domains
        2.3 Legacy Software
2.1. Defining Software
        Software is (1) instructions (computer programs) that when executed provide desired function and
performance, (2) data structures that enable the programs to adequately manipulate information, and (3)
documents that describe the operation and use of the programs.
        To gain an understanding of software , it is important to examine the characteristics of software
that make it different from other things that human beings build. When hardware is built, the human
creative process (analysis, design, construction, testing) is ultimately translated into a physical form.
Software is a logical rather than a physical system element. Therefore, software has characteristics that
are considerably different than those of hardware and they are:
 I.     Software is developed or engineered, it is not manufactured in the classical sense.
          Although some similarities exist between software development and hardware manufacture, the
two activities are fundamentally different. In both activities, high quality is achieved through good
design, but the manufacturing phase for hardware can introduce quality problems that are nonexistent
(or easily corrected) for software. Both activities are dependent on people, but the relationship between
people applied and work accomplished is entirely different. Both activities require the construction of a
"product" but the approaches are different. Software costs are concentrated in engineering. This means
that software projects cannot be managed as if they were manufacturing projects.
II.     Software doesn't "wear out."
          Figure 1.1 depicts failure rate as a function of time for hardware. The relationship, often called
      the "bathtub curve," indicates that hardware exhibits relatively high failure rates early in its life;
      defects are corrected and the failure rate drops to a steady-state level (ideally, quite low) for some
      period of time. As time passes, however, the failure rate rises again as hardware components suffer
      from the cumulative affects of dust, vibration, abuse, temperature extremes, and many other
      environmental maladies. Stated simply, the hardware begins to wear out.
          Software is not susceptible to the environmental maladies that cause hardware to wear out. In
      theory, therefore, the failure rate curve for software should take the form of the idealized curve
      shown in Figure 1.2. Undiscovered defects will cause high failure rates early in the life of a program.
      However, these are corrected (ideally, without introducing other errors) and the curve flattens as
      shown. However, the implication is clearsoftware doesn't wear out. But it does deteriorate!
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:4             Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:5             Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
III . Although the industry is moving toward component-based assembly, most software continues
to be custom built.
         As an engineering discipline evolves, a collection of standard design components is created.
Standard screws and off-the-shelf integrated circuits are only two of thousands of standard components
that are used by mechanical and electrical engineers as they design new systems. The reusable
components have been created so that the engineer can concentrate on the truly innovative elements of a
design, that is, the parts of the design that represent something new. In the hardware world, component
reuse is a natural part of the engineering process. In the software world, it is something that has only
begun to be achieved on a broad scale.
         A software component should be designed and implemented so that it can be reused in many
different programs. Modern reusable components encapsulate both data and the processing applied to
the data, enabling the software engineer to create new applications from reusable parts. For example,
today's graphical user interfaces are built using reusable components that enable the creation of graphics
windows, pull-down menus, and a wide variety of interaction mechanisms. The data structure and
processing detail required to build the interface are contained with a library of reusable components for
interface construction.
   i.       System software
        System software is a collection of programs written to service other programs. Some system
software (e.g., compilers, editors, and file management utilities)    process complex , but determinate,
information structures. Other systems applications (e.g., operating system components, drivers,
telecommunications processors) process largely indeterminate data. The system software area is
characterized by:-
                                Heavy interaction with computer hardware
                                Heavy usage by multiple users
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:6             Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:7             Prepared By:
Merin Mary Philip
   Dept of Computer Science and Engineering
   CML
   __________________________________________________________________________________________
   CS010 605 /SOFTWARE ENGINEERING                    Page No:8             Prepared By:
   Merin Mary Philip
Dept of Computer Science and Engineering
CML
4. Tools
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:9             Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
1. Communication
              Involves communication among the customer and other stake holders; encompasses
               requirements gathering.
              The purpose of communication is to understand stakeholders objectives for the project
               and to gather requirements that help define software features and functions.
2. Planning
              Planning activity creates a map that helps the software team as it makes journey.
              This plan is called software project plan.
              Software project plan defines the software engineering work by describing the technical
               task to be conducted, the risks involved, resources that will be required, work products
               to be produced , and a work schedule.
3. Modeling (Analyze, Design)
              Encompasses the creation of models to better understand the requirements and the
               design.
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:10              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
    Software process
      Process Framework
Umbrella activities
                          Framework activity # 1
                                Software engineering action #1.1
                                                  Work tasks
                                     Task sets    Work products
                                                  Quality assurance points
                                       .          Project milestones
                                       .
                                     Software engineering action #1.k
                                                  Work tasks
                                                  Work products
                                     Task sets    Quality assurance points
                                                  Project milestones
                                 .
                                 .
                                 .
                         Framework activity # n
                               Software engineering action #n.1
                                                  Work tasks
                                 Task sets        Work products
                                                  Quality assurance points
                                   .              Project milestones
                                   .
                                 Software engineering action #n.m
                                                  Work tasks
                                 Task sets        Work products
                                                  Quality assurance points
                                                  Project milestones
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:11              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
increment that provides customers with a subset of overall software features and functionality. As each
increment is produced, the software becomes more and more complete.
    Software engineering process framework activities are complemented by a number of Umbrella
activities. Typical umbrella activities are:-
    1. Software project tracking and control
    2. Risk management
    3. Software quality assurance
    4. Technical reviews
    5. Measurement
    6. Software configuration management
    7. Reusability management
    8. Work product preparation and production
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:12              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
    A process adopted for one project might be significantly different than a process adopted for another
project. Some of the differences are:-
    1. Flow of activities, actions and tasks and interdependencies among them.
    2. Degree to which actions and tasks are defined within each framework activity.
    3. Degree to which work products are identified and required.
    4. Degree to which customer and stakeholder are involved with the project.
    5. Degree of detail and rigor with which process is described.
    6. Degree to which team organization and roles are prescribed.
    7. Manner in which quality assurance activities are applied.
    8. Manner in which project tracking and control activities are applied.
    9.   Level of autonomy given to the software team.
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:13              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
    Software process
        Process Framework
Umbrella activities
                             Framework activity # 1
                                   Software engineering action #1.1
                                                     Work tasks
                                        Task sets    Work products
                                                     Quality assurance points
                                          .          Project milestones
                                          .
                                        Software engineering action #1.k
                                                     Work tasks
                                                     Work products
                                        Task sets    Quality assurance points
                                                     Project milestones
                                    .
                                    .
                                    .
                            Framework activity # n
                                  Software engineering action #n.1
                                                     Work tasks
                                    Task sets        Work products
                                                     Quality assurance points
                                      .              Project milestones
                                      .
                                    Software engineering action #n.m
                                                     Work tasks
                                    Task sets        Work products
                                                     Quality assurance points
                                                     Project milestones
The framework activities and the actions and tasks that occur within each activity are organized with
respect to sequence and time. This aspect is called process flow. Different kinds of Process flows are:
                   1. Linear process flow
                   2. iterative process flow
                   3. evolutionary process flow
                   4. parallel process flow
    Linear process flow executes each of the five activities in sequence.
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:14              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
    An iterative process flow repeats one or more of the activities before proceeding to the next.
    An evolutionary process flow executes the activities in a circular manner. Each circuit leads to
       a more complete version of the software.
    A parallel process flow executes one or more activities in parallel with other activities
       ( modeling for one aspect of the software in parallel with construction of another aspect of the
       software.
       Figure (b) shows Different kinds of process flow
A software team would need significantly have to carry out these three steps as a part of software
process:-
              5.1 Defining a framework Activity
              5.2 Identifying a Task set
              5.3 Process Patterns
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:15              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:16              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
           17. Note constraints and restrictions that will be placed on the system.
           18. Discuss methods for validating the system.
5.2 Identifying a Task set
Refer figure 2.3 , each software engineering action can be represented by a number of different
tasks. Each task set consists of:-
            A list of the software engineering work task to be accomplished .
            A list of the work products to be produced.
            A list of the quality assurance points to be applied.
            Project milestones
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:17              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
                     8. Related patterns
                     9. Known Uses and Examples
1.Pattern name
    Pattern is given a meaningful name describing it within the context of software process.
2.Forces
    Forces describe the environment in which pattern was encountered.
3.Type
    The pattern type can be of 3 types:-
         a. Stage Pattern- It defines a problem associated with a framework activity for the
            process.      It   includes    multiple     task    patterns    as     well.   For   example,
            EstablishingCommunication would incorporate the task pattern RequirementsGathering
            and others.
         b. Task Patterns- defines a problem associated with a software engineering action or work
            task and relevant to successful software engineering practice.
         c. Phase Pattern-define the sequence of framework activities that occur with the process,
            even when the overall flow of activities is iterative in nature. Example includes Sprial
            Model or Prototyping.
 4.Initial context
         Initial context describes the condition under which process pattern is applied. Before the
initiation of pattern ,
   1. What activities have occurred?
   2. What information already existed?
   3. Entry state of the process.
 5.Problem
         Problem describes the problem to be solved by the pattern.
 6.Solution
         Solution describes how to implement pattern successfully. This section describes how the
initial state of the process is modified as result of initiation of the pattern.
 7.Resulting Context
         Resulting Context describes the state after application of process pattern,
   1. What activities have occurred after application of pattern?
   2. What information have been developed?
   3. Exit state of the process.
 8. Related patterns
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:18              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
             Related patterns provide a list of all process patterns that are directly related to a particular
 pattern.
6. Process Assessment
  Software Process cannot guarantee that software will be delivered on time, meet the needs, or
has the desired technical characteristics. However, the process can be assessed to ensure that it
meets a set of basic process criteria that have been shown to be essential for a successful software
engineering. Few approaches for assessing a software process are:-
          Standard CMMI Assessment Method for Process Improvement (SCAMPI)  provides
           a five step process assessment model that incorporates five phases: initiating, diagnosing,
           establishing, acting and learning.
          CMM-Based Appraisal for Internal Process Improvement (CBA IPI)provides a
           diagnostic technique for assessing the relative maturity of a software organization; uses the
           SEI CMM as the basis for the assessment.
          SPICEThe SPICE (ISO/IEC15504) standard defines a set of requirements for software
           process assessment. The intent of the standard is to assist organizations in developing an
           objective evaluation of the efficacy of any defined software process.
          ISO 9001:2000 for Softwarea generic standard that applies to any organization that
           wants to improve the overall quality of the products, systems, or services that it provides.
           Therefore, the standard is directly applicable to software organizations and companies
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:19              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
                           4. Development
                           5. Postmortem
  1. Planning
        This activity isolates requirements and develops both size and resource estimates. In
     addition, a defect estimate (the number of defects projected for the work) is made. All metrics
     are recorded on worksheets or templates. Finally, development tasks are identified and a
     project schedule is created.
  2. High-level design
        External specifications for each component to be constructed are developed and a
     component design is created. Prototypes are built when uncertainty exists. All issues are
     recorded and tracked.
  3. High-level design review
         Formal verification methods are applied to uncover errors in the design. Metrics are
     maintained for all important tasks and work results.
  4. Development
        The component level design is refined and reviewed. Code is generated, reviewed,
     compiled, and tested. Metrics are maintained for all important tasks and work results.
  5. Postmortem
        Using the measures and metrics collected (this is a substantial amount of data that should be
     analyzed statistically), the effectiveness of the process is determined. Measures and metrics
     should provide guidance for modifying the process to improve its effectiveness.
Advantages of PSP:-
   1. Identify Errors early.
   2. Disciplined metrices based approach.
   3. Software quality and productivity is increased.
Disadvantages of PSP:-
   1. A high level of commitment is required.
   2. Training cost and time required both are high.
   3. PSP is intellectually very challenging.
(ii) Team Software Process (TSP)
        Goal of TSP is to build a self-directed project team that organizes itself to produce high-
         quality team that organizes itself to produce high-quality software.
         Characteristics of self-directed team are:-
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:20              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:21              Prepared By:
Merin Mary Philip
    Dept of Computer Science and Engineering
    CML
    TSP makes use of wide variety of scripts, forms and standards that guides team members in their
    work. Scripts define specific process activities. TSP identifies that the best software teams are self-
    directed. TSP is a rigorous approach to software engineering and provides quantifiable benefits in
    productivity and quality.
 8. Product and Process
            If the process is weak, the end product will undoubtedly suffer, but an obsessive overreliance on
    process is also dangerous. A creative software professional should also derive as much satisfaction from
    the process as the end-product. The work of software people will change in the years ahead. The duality
    of product and process is one important element in keeping creative people engaged as the transition
    from programming to software engineering is finalized. Product and process decomposition occur
    simultaneously as the project plan evolves. Software quality encompasses many different product and
    process factors and related metrics.
 9. The Capability Maturity Model Integration (CMMI)
         SEI developed a comprehensive process meta-model that is predicated on a set of system &
            software engineering capabilities that should be present as organizations reach different levels
            of process capability and maturity
         To achieve these capabilities, the SEI contends that an organization should develop a process
            model that conforms to the Capability Maturity Model Integration (CMMI).
         CMMI represents a process meta-model in two different ways: (1) as a continuous model (2) as
            a staged model.
            (1) Continuous model of CMMI defines 5 capability levels.
         The continuous CMMI meta-model describes a process in two dimensions as shown in
            Figure 9.1                        PP    Project Planning
                                              REQM Requirements management
                                              MA   Measurement & Analysis
                                              CM   Configuration management
                                              PPQA Process and product QA
                         5
                         4
Capability level
                         3
                         2
                         1
                         0
                                PP REQM MA CM                PPQA others
                                       Process area
    __________________________________________________________________________________________
    CS010 605 /SOFTWARE ENGINEERING                    Page No:22              Prepared By:
    Merin Mary Philip
Dept of Computer Science and Engineering
CML
      1.      Level 0: Incomplete
              The process area is either not performed or does not achieve all goals and objectives by
              CMMI for level 1 capability.
      2.      Level 1: Performed
              All specific goals of process area (as defined by CMMI) are satisfied. Work tasks
              required to produce work products are being conducted
      3.      Level 2: Managed
              Level 1 criteria satisfied. In addition, all work associated with process area conforms to
              an organizationally defined policy
      4.      Level 3: Defined
              Level 2 criteria achieved. In addition, process is tailored from organizations set of
              standard processes according to organizations tailoring guidelines, and contributes work
              products, measures, and other process-improvement information to the organizational
              process assets.
      5.      Level 4: Quantitatively managed
              Level 3 criteria achieved. In addition, process area is controlled and improved using
              measurement and quantitative assessment
      6.      Level 5: Optimized
              Level 4 criteria achieved. In addition, process area adapted and optimized using
              quantitative (statistical) means to meet changing customer needs and to continually
              improve the efficacy of the process area under consideration.
 The CMMI defines each process area in terms of specific goals(SG) and the specific
   practices(SP) required to achieve these goals.
           a. Specific goals establish the characteristics that must exist if the activities implied by a
              process area are to be effective.
           b. Specific practices refine a goal into a set of process-related activities.
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:23              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
    The CMMI also defines each process area in terms of generic goals(GG) and related generic
      practices(GP) required to achieve these goals.
      The Specific Goals (SG) and Specific Practices(SP) associate with Project Planning activity
      are:-
      SG 1 Establish Estimates
              SP 1.1-1 Estimate the Scope of the Project
              SP 1.2-1 Establish Estimates of Work Product and Task Attributes
              SP 1.3-1 Define Project Lifecycle
              SP 1.4-1 Determine Estimates of Effort and Cost
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:24              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:25              Prepared By:
Merin Mary Philip
   Dept of Computer Science and Engineering
   CML
          To achieve a maturity level, the specific goals and practices associated with a set of process
   areas must be achieved. The relationship between maturity levels and process areas is shown in
   Figure 9.3.
   __________________________________________________________________________________________
   CS010 605 /SOFTWARE ENGINEERING                    Page No:26              Prepared By:
   Merin Mary Philip
   Dept of Computer Science and Engineering
   CML
   __________________________________________________________________________________________
   CS010 605 /SOFTWARE ENGINEERING                    Page No:27              Prepared By:
   Merin Mary Philip
   Dept of Computer Science and Engineering
   CML
   __________________________________________________________________________________________
   CS010 605 /SOFTWARE ENGINEERING                    Page No:28              Prepared By:
   Merin Mary Philip
    Dept of Computer Science and Engineering
    CML
        2   Single-source integration occurs when a single CASE tools vendor integrates a number of
            different tools and sells them as a package. Although this approach is quite effective, the closed
            architecture of most single-source environments precludes easy addition of tools from other
            vendors.
3   At the high end of the integration spectrum is the integrated project support environment (IPSE).
    Standards for each of the building blocks described previously have been created. CASE tool vendors
    use IPSE standards to build tools that will be compatible with the IPSE and therefore compatible with
    one another.
(c) A TAXONOMY OF CASE TOOLS
    CASE tools can be classified by function, by their role as instruments for managers or technical people,
by their use in the various steps of the software engineering process, by the environment architecture
(hardware and software) that supports them, or even by their origin or cost . The taxonomy presented here
uses function as a primary criterion.
1   Business process engineering tools
         Business process engineering tools provide a "meta-model" from which specific information
            systems are derived.
    __________________________________________________________________________________________
    CS010 605 /SOFTWARE ENGINEERING                    Page No:29              Prepared By:
    Merin Mary Philip
    Dept of Computer Science and Engineering
    CML
    __________________________________________________________________________________________
    CS010 605 /SOFTWARE ENGINEERING                    Page No:30              Prepared By:
    Merin Mary Philip
    Dept of Computer Science and Engineering
    CML
    __________________________________________________________________________________________
    CS010 605 /SOFTWARE ENGINEERING                    Page No:31              Prepared By:
    Merin Mary Philip
   Dept of Computer Science and Engineering
   CML
        PRO/SIM (prototyping and simulation) tools provide the software engineer with the ability to
           predict the behavior of a real-time system prior to the time that it is built.
        In addition, these tools enable the software engineer to develop mock-ups of the real-time
           system, allowing the customer to gain insight into the function, operation and response prior to
           actual implementation.
15 Interface design and development tools
        Interface design and development tools are actually a tool kit of software components (classes)
           such as menus, buttons, window structures, icons, scrolling mechanisms, device drivers, and so
           forth.
16 Prototyping tools
        A variety of different prototyping tools can be used.
        Screen painters enable a software engineer to define screen layout rapidly for interactive
           applications.
        A variety of fourth generation tools have prototyping features.
17 Programming tools
        The programming tools category encompasses the compilers, editors, and debuggers that are
           available to support most conventional programming languages.
18 Web development tools
        The activities associated with Web engineering are supported by a variety of tools for WebApp
           development.
        These include tools that assist in the generation of text, graphics, forms, scripts, applets, and
           other elements of a Web page.
   __________________________________________________________________________________________
   CS010 605 /SOFTWARE ENGINEERING                    Page No:32              Prepared By:
   Merin Mary Philip
   Dept of Computer Science and Engineering
   CML
   Three different types of static testing tools are used in the industry: code based testing tools, specialized
   testing languages, and requirements-based testing tools.
               a) Code-based testing tools accept source code (or PDL) as input and perform a number of
                   analyses that result in the generation of test cases.
               b) Specialized testing languages (e.g., ATLAS) enable a software engineer to write detailed
                   test specifications that describe each test case and the logistics for its execution.
               c) Requirements-based testing tools isolate specific user requirements and suggest test
                   cases (or classes of tests) that will exercise the requirements.
21 Dynamic analysis tools
   Dynamic testing tools interact with an executing program, checking path coverage, testing assertions
   about the value of specific variables, and otherwise instrumenting the execution flow of the program.
   Dynamic tools can be either intrusive or nonintrusive.
22 Test management tools
        Test management tools are used to control and coordinate software testing for each of the major
           testing steps.
        Tools in this category manage and coordinate regression testing, perform comparisons that
           ascertain differences between actual and expected output, and conduct batch testing of programs
           with interactive human/computer interfaces.
23 Client/server testing tools
        The c/s environment demands specialized testing tools that exercise the graphical user interface
           and the network communications requirements for client and server.
24 Reengineering tools
        The reengineering tools category can be subdivided into the following functions:
               o Reverse engineering to specification tools take source code as input and generate
                   graphical structured analysis and design models, where-used lists, and other design
                   information.
               o Code restructuring and analysis tools analyze program syntax, generate a control flow
                   graph, and automatically generate a structured program.
               o On-line system reengineering tools are used to modify on-line database systems.
   __________________________________________________________________________________________
   CS010 605 /SOFTWARE ENGINEERING                    Page No:33              Prepared By:
   Merin Mary Philip
   Dept of Computer Science and Engineering
   CML
PROCESS MODELS
 Prescriptive Process Models defines a distinct set of activities, actions, tasks, milestones, and work
   products that are required to engineer high-quality software.
 Prescriptive Process Models are traditional process models and they provide structure to
   software engineering work and provide an effective road map for software teams.
 The dominant issues in these models are order and project consistency.
 These models are collectively named Prescriptive Process Models because they prescribe a
   set of process elements for each project, some of the process elements are:-
                       Framework activities
                       Software engineering actions
                       Tasks
                       Work Products
                       Quality Assurance
                       Change Control Mechanism
 Each process model prescribes a process flow.
 In the following sections some of the prescriptive process models are described namely:-
                      1) Waterfall Model
                      2) Incremental Process Model
                      3) Evolutionary Process Model
                      4) Concurrent Development Model
   __________________________________________________________________________________________
   CS010 605 /SOFTWARE ENGINEERING                    Page No:34              Prepared By:
   Merin Mary Philip
  Dept of Computer Science and Engineering
  CML
                                                     Prescriptive Process
                                                           Models
                                                                                                                   Concurrent
                               Incremental Process                           Evolutionary Process
          Waterfall Model                                                                                  Development Model
                                     Model                                         Model
                               Rapid Application
                                                               Prototyping                          Spiral Model
                              Development (RAD)
  __________________________________________________________________________________________
  CS010 605 /SOFTWARE ENGINEERING                    Page No:35              Prepared By:
  Merin Mary Philip
Dept of Computer Science and Engineering
CML
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:36              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:37              Prepared By:
Merin Mary Philip
   Dept of Computer Science and Engineering
   CML
   __________________________________________________________________________________________
   CS010 605 /SOFTWARE ENGINEERING                    Page No:38              Prepared By:
   Merin Mary Philip
Dept of Computer Science and Engineering
CML
                  4.   Application Generation
                  5.   Testing & turnover
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:39              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
               The data objects defined in the data modeling phase are transformed to achieve the
information flow necessary to implement a business function. Processing descriptions are
created for adding, modifying, deleting, or retrieving a data object.
4.Application generation
               RAD assumes the use of fourth generation techniques. Rather than creating software
using conventional third generation programming languages the RAD process works to reuse
existing program components (when possible) or create reusable components (when necessary).
In all cases, automated tools are used to facilitate construction of the software.
5.Testing and turnover
               Since the RAD process emphasizes reuse, many of the program components have
already been tested. This reduces overall testing time. However, new components must be tested
and all interfaces must be fully exercised.
viii.          Drawbacks of RAD:-
                  a. For large, but scalable projects, RAD requires sufficient human resources.
                  b. RAD projects will fail if developers and customers are not committed to the rapid-
                      fire activities.
                  c. If a system cannot be properly modularized, building the components necessary
                      for RAD will be problematic.
                  d. If high performance is an issue, and performance is to be achieved through tuning
                      the interfaces to system components, the RAD approach may not work.
                  e. RAD may not be appropriate when technical risks are high.
11.3 Evolutionary Process Models
          i.      Evolutionary models are iterative in nature.
         ii.      Iterative nature of this model enables us to develop increasingly more complete version
                  of the software.
        iii.      Two types are introduced, namely Prototyping and Spiral.
                  11.3(i) Prototyping Model
                     Prototyping model is used when : -
                       Customer defines a set of general objectives but does not identify detailed
                          requirements for functions and features or Developer may be unsure of the
                          efficiency of an algorithm, the form that human computer interaction should
                          take.
                     What are the steps involved:-
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:40              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:41              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
 iii.   It provides the potential for rapid development of increasingly more complete versions of
        the software.
 iv.    It is a risk-driven process model generator.
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:42              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:43              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
            3. The spiral model uses prototyping as a risk reduction mechanism but, more important,
                enables the developer to apply the prototyping approach at any stage in the evolution of
                the product.
            4. It maintains the systematic stepwise approach suggested by the classic life cycle but
                incorporates it into an iterative framework that more realistically reflects the real world.
            5. Direct consideration of technical risks at all stages of the project and, if properly applied,
                should reduce risks before they become problematic.
xiii.       Dangers of using Spiral Model:-
        1. It may be difficult to convince customers (particularly in contract situations) that the
            evolutionary approach is controllable.
        2. It demands considerable risk assessment expertise and relies on this expertise for success.
        3. If a major risk is not uncovered and managed, problems will undoubtedly occur.
        4. Finally, the model has not been used as widely as the linear sequential or prototyping
            paradigms. It will take a number of years before efficacy of this important paradigm can be
            determined with absolute certainty.
11.4 Concurrent Development Model
        1. In Concurrent Development Model each of the activities involved in software engineering
            process are represented using different states.
        2. The concurrent development model is sometimes called concurrent engineering.
        3. All activities exist concurrently but reside in different states.
        4. It defines a series of events that will trigger transitions from state to states.
        5. Applicable to all types of s/w development
        6. Defines a network of activities.
        7. Events generated at one point in the process network trigger transitions among the states.
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:44              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:45              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
   1. Specialized Process Models take on many of the characteristics of one or more of the
      conventional models
   2. These models are tend to be applied when a narrowly defined software engineering
      approach is chosen
   3. Three kinds of Specialized Process Models are:-
         a. Component-Based Development
         b. The Formal Methods Model
         c. Aspect-Oriented Software Development
a. Component-Based Development
    Commercial off-the-shelf (COTS) software components can be used.
    Components should have well-defined interfaces.
    Incorporates many of the characteristics of the spiral model.
    Evolutionary in nature.
    Candidate components should be identified first.
    Components can be designed as either conventional software modules or object-oriented
      classes or packages of classes
b.The Formal Methods Model
    Encompasses a set of activities that leads to formal mathematical specification of
      computer software
    Have provision to apply a rigorous, mathematical notation.
    Ambiguity, incompleteness, and inconsistency can be discovered and corrected more
      easily  not through ad hoc review, but through the application of mathematical analysis
    Offers the promise of defect-free software
    Cleanroom Software Engineering is a variation of the Formal Methods Model.
    Drawbacks of Formal Methods Model:-
               The development of formal models is currently quite time-consuming and
                 expensive.
               Extensive training is required.
               It is difficult to use the models as a communication mechanism for technically
                 unsophisticated customers.
c. Aspect-Oriented Software Development
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:46              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:47              Prepared By:
Merin Mary Philip
  Dept of Computer Science and Engineering
  CML
  __________________________________________________________________________________________
  CS010 605 /SOFTWARE ENGINEERING                    Page No:48              Prepared By:
  Merin Mary Philip
  Dept of Computer Science and Engineering
  CML
  __________________________________________________________________________________________
  CS010 605 /SOFTWARE ENGINEERING                    Page No:49              Prepared By:
  Merin Mary Philip
Dept of Computer Science and Engineering
CML
          deployment model
          test model
 Transition
          Delivered software
          beta test reports
          general user feedback
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:50              Prepared By:
Merin Mary Philip
Dept of Computer Science and Engineering
CML
__________________________________________________________________________________________
CS010 605 /SOFTWARE ENGINEERING                    Page No:51              Prepared By:
Merin Mary Philip