0% found this document useful (0 votes)
52 views22 pages

Faculty of Degree Engineering

The document describes the Threat Driven/Spiral model in detail. It states that the Spiral model is an evolutionary software process model proposed by Barry Boehm that couples iterative prototyping with systematic aspects of the waterfall model. The Spiral model is risk-driven and consists of cycles to incrementally grow definition/implementation while decreasing risk. Each cycle involves planning, risk analysis, engineering and evaluation. The model allows requirement changes and risk identification at every stage and is useful for large, complex systems.

Uploaded by

tirth patel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views22 pages

Faculty of Degree Engineering

The document describes the Threat Driven/Spiral model in detail. It states that the Spiral model is an evolutionary software process model proposed by Barry Boehm that couples iterative prototyping with systematic aspects of the waterfall model. The Spiral model is risk-driven and consists of cycles to incrementally grow definition/implementation while decreasing risk. Each cycle involves planning, risk analysis, engineering and evaluation. The model allows requirement changes and risk identification at every stage and is useful for large, complex systems.

Uploaded by

tirth patel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

Dr.

Subhash Technical Campus


Faculty of Degree Engineering
Software Engineering – 3150711
Describe Threat Driven/Meta Model in detail.
 Threat Driven Model is nothing but Spiral Model.
 This model was originally proposed by Barry Boehm.
 Spiral model is an evolutionary software process model that couples the iterative nature of
prototyping with controlled and systematic aspects of the waterfall model.
 It provides the potential for rapid development of more complete version of software.
 The spiral model is a risk-driven process model. It has two features.
1. One is a cyclic approach for incrementally growing a degree of definition and implementation
while decreasing its degree of risk.
2. The set of anchor point milestones for ensuring stockholders commitment to feasible and
mutually satisfactory system solutions.
 Spiral model is a realistic approach to development of large-scale systems and software.
 Because customer and developer better understand the problem statement at each evolutionary
model. Also risk can be identified or rectified at each level.
 The spiral model is divided into number of framework activities.

Figure: Spiral Model


 The first circuit around the spiral might result in the development of product specification,
subsequent passes around the spiral might be used to develop prototype and then more
sophisticated version of the software.
 Each passes through the planning region in modification to the project plan.
 Cost and schedule are adjusted based on the feedback taken from client after deliver.
Advantages:
 Requirement change can be made at every stage.
 Risk can be identified and rectified before they get propagated.
 Used for large and complex system.
Disadvantages:
 Need highly skilled person.
 It is not good for basic project.
 More costly to use.
 Success of project is based on risk analysis phase.

1 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
When to use?
 When the prototypes for the software functionality are needed.
 When requirements are complex.
 When high or large budget projects need to be developed.
 When risk assessment is very critical and essential.
 When project is not expected within a specific limited time span.
Q. 1 Give the Difference between Waterfall Model and Increment Model.
Water Fall Model Increment Model
Planning in early stage required. Planning in early stage required.
Detailed documentation is required. Detailed documentation is not required.
Flexibility to change is difficult. Flexibility to change is easy.
Backtracking is not available. Backtracking is available.
Risk is very high. Risk is low.
It follows linear approach. It follows linear and iterative approach.
Explain FDD in Detail.
 Originally Peter Coad suggested this approach for object oriented software engineering.
 Stephen Palmer and John Flesing has extended and enhanced Coad’s work
 In FDD, the feature means client valued function. It is iterative and increment software development
process.
 In FDD, the collaborative activities are carried out. These activities are called as process.

Figure: Feature Driven Development


 Various phases in the FDD life cycle are given below.
Development Overall Model
 In this phase high-level walkthrough of scope and detailed domain walkthroughs are conducted.
 Later on peer reviews and discussions are carried out on these walkthrough and domain area models
are created.

2 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
 These domain area models are then merged into overall models.
Built Feature List
 Initially, the list of features is created.
 The domain is functionally decomposed into various subject areas.
 These subject areas contain the business activities.
 The step within activities forms the categorized feature list.
 Features are basically the client valued functions and can be expressed in form.
Plan By Feature
 After completing the building of feature list the development plan is created.
 The features are assigned as classes and are chief programmer or the class owner is assigned with
appropriate classes.
Design By Feature
 A design package was produced for each feature.
 A chief programmer selects a small group of features and these features are to be developed within
two weeks.
 For each feature the sequence diagram is created.
Build By Feature
 Finally a complete client valued function is developed for each feature.
 The class owners develop the actual code for their classes and this code is promoted to the main
build.
Benefits
 Features represents small block of deliverable functionalities hence user can better describe,
understand and review them.
 The features can be arranged into hierarchical business related grouping.
 The team can develop every feature within the two weeks.
 The features are typically smaller in size and therefore can be analyzed effectively.
 Project planning, scheduling and tracking can be driven by features
Q. 3 Describe Scrum Model in details with its role and pros and cons.
 Scrum is an agile process model which is used for developing the complex software systems.
 It is light weight process framework that can be used to manage and control the software
development using iterative and incremental approach.
 Here the term light weight means the overhead of the process is kept as small as possible in order to
maximize product time.
Principles
 There are small working teams on the software development projects. Due to this there is maximum
communication and minimum overhead.

3 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
 The task of people must be partitioned into small and clean packets or partitions.
 The process must accommodate the technical or business changes if they occur.
 The process should produce software increments. These increments must be inspected, tested,
documented, and built on.
 During, the product building the constant testing and documentation must be conducted.
 The scrum process must produce the working model of the product whenever demanded or
required.
Development Activities

Figure: Scrum Workflow Activities


Backlog
 It is basically list of project requirements or features that must be provided to the customer.
 The items can be included in the backlog list at any time.
 The product manager analysis this list and updates the priorities as per the requirements.
Sprint
 These are the work units that are needed to achieve the requirements mentioned in the backlogs.
 Typically the sprints have fixed duration or time box.
 Thus sprints allow the team members to work in stable and short term environment.
Meetings
 These are 15 minutes daily meetings to report the completed activities, issues and plan for next
activities. There are three questions asked frequently.
o What are the tasks done since last meetings?
o What are the issues that a team is facing?
o What are the next activities that are planned?
Demo
 During this phase, the software increment is delivered to the customer.
 The implemented functionality which is demonstrated to the customer.
 Note that demo focuses on only implemented functionalities and not all the planned functionalities
of the software product.

4 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
Scrum Roles
Scrum Master
 The Scrum master leads the meeting and analyses the response of each team member.
 The potential problems are discussed and solved in the meeting with the help of master.
Team Members
 These are the persons working in a team to develop the software solutions.
Advantages
 Scrum model brings transparency in project development status.
 It provides flexibility towards the changes.
 There is improved communication, minimum overhead in development process.
 The productivity can be improved.
Disadvantages
 Some decisions are hard to track in fixed time span.
 There are problems to deal with non-functional requirements of the system.
Q. 4 Explain DSDM Life Cycle.
 In this model the project deadline is met using the incremental prototyping approach. This is an
iterative development process.
 The DSDM group has defined an agile process model called DSDM life cycle.
 Various phases in this life cycle model are as follows –

Figure: Dynamic System Development Method

o Feasibility Study
By analyzing the business requirements and constraints the viability of the application is
determined in this phase.

5 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
o Business Study
The Functional and informational requirements are identified and then the business value of the
application is determined. The basic application architecture is decided in this phase.
o Functional Model Iteration
The incremental approach is adopted for the development. The basic functionalities are
demonstrated to the customer by building the suitable increments.
The intention of iterative cycle is to gather additional requirements by eliciting the requirements
from customer as each prototype is being developed.
o Design and Build Iteration
Each prototype is revisited during the functional model iteration to ensure that business
requirements satisfied by each software component. Sometimes if, possible the design and build
activities can be carried in parallel.
o Implementation
In this phase, the software increment is placed in the working environment. If changes are
suggested or if the end-user it incomplete then the increment is placed in iteration for further
improvement.
 The DSDM can be merging with XP method or ASD concepts to create combinational model.
Q. 5 List Agility Principles.
 Our highest priority is to satisfy the customer through early and continuous delivery of valuable
customer.
 Welcome changes requirements, even late in development. Agile processes harness change for the
customer’s competitive advantages.
 Deliver working software frequently, from a couple of weeks to couple of months, with a preference
to the short time cycle.
 Business people and developers must work together daily throughout the project.
 Build project around motivated individuals. Give them the environment and support they need and
trust to get the job done.
 The most efficient and effective method of conveying information to and within a development team
is face-to-face conversion.
 Working software is the primary measure of progress.
 Agile processes promote sustainable development. The sponsors, developers, and users should be
able to maintain a constant pace indefinitely.
 Continuous attention to technical excellence and good design enhances agility.
 Simplicity – the art of maximizing the amount of work not done – is essential.
 The best architectures, requirements, design emerge from self-organizing teams.
 At regular intervals, the team reflects on to become more effective, then tunes and adjusted its
behavior accordingly.

6 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
Q. 6 List and Explain Software Engineering Characteristics in detail.
Software is engineered, not manufactured
 Software development and hardware development are two different activities.
 A good design is a backbone for both the activities.
 Quality problems that occur in hardware manufacturing phase cannot be removed easily. On the
other hand, software development process such problems can be rectified.
Software does not ware out.
Hardware
 In early stage of hardware development process the failure rate is very high because of
manufacturing defects. But after correcting such defects the failure rate is reduced.
 The failure rate is constant for some time and again it starts growing because of environmental
maladies like temperature.
Software
 On the other hand software does not affect from such environmental maladies. Hence ideally
it should be “idealized curve”.
 But due to some undiscovered errors the failure rate is high. Hence failure rate of software
rating of software the “actual curve” is as shown below.

Figure: Failure curve for hardware and software


 During life of software if any changes are made, defects may get introduced. These cause failure
rate to be high.
 Another issue with software is that there are no spare parts for software. If hardware devices
wares out it can be replaced by another devices but that is not possible in case of software. So
there for software maintenance is more difficult than hardware maintenance.
Most software is custom built rather than being assembled from components.
 While developing any hardware product first we need to design circuit with desired functioning
properties. Then required hardware components such as ICs, capacitors are assembled according
to the design but this is not done while developing software.
 So most of the software is custom built.

7 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
Q. 7 Explain Layered Technology.
Software Engineering
 Software engineering is the application a systematic, disciplined, quantifiable approach to the
development, operation and maintenance of software.
Layered Technology
 Software engineering is a layered technology. Any software can be developed using these layers.

 There are four layers in layered technology.


Quality Focus Layer
 A disciplined quality focus is a backbone of software engineering technology.
Process Layer
 Process layer is a foundation of software engineering.
 Basically, process defines the framework for timely delivery of software.
Methods Layer
 In method layer the actual method of implementation is carried out with the help of
requirement analysis, designing, coding using desired programming constructs and testing.
 It is provide technical details of the software product.
Tools Layer
 Software tools are used to bring automation in software development process.
 Thus software engineering is a combination of process, methods and tools for development of
quality software.
Q. 8 List and Explain requirement engineering task.
Requirement Engineering Task
 Requirement engineering is the process characterized for achieving following goals..
o Understanding customer requirements and their needs
o Analyze the feasibility of the requirement
o Negotiating the reasonable solutions
o Specification of unambiguous solution
o Managing all the requirements of the project
o Finally transforming the requirements into the operational system.

8 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
Requirement Engineering Tasks
Inception
 The incretion means specifying the beginning of the software project.
 The purpose of inception is to establish basic understanding of the project, find out all possible
solutions and to identify the nature of the solution, establish effective communication between
developer and the customer.
Elicitation
 Requirement eliciting means requirement discovery. Requirements elicitation is very difficult task.
 Customer sometimes unable to specify the scope of the project. Customer specifies too many
technical details and this may increase the confusion.
 There is a difficulty in understanding the problem. Sometimes customer could not decide what are
needs and wants.
 Sometimes they have got poor understanding of capabilities and limitations the existing computing
environment.
 Customers find it difficult to communicate with the system engineer about their needs. This
ultimately results in specifying ambiguous requirements.
 As project progresses the needs or requirements of the customers changes. This leads to a problem
of instability.
Elaboration
 Elaboration is an activity in which the information about the requirements is expanded and refined.
This information gained during inception and elicitation.
 The goal of this phase is to prepare a technical model of software functions, features, constraints.
 It consists of several modeling and refinement tasks. In this process several user scenarios are
created and refined.
 During this, each user scenario id parsed and various are identified. Finally the analysis model gets
developed during the elaboration phase.
Negotiation
 Sometimes customer may demanded for more than that is achieved or there are certain situations
in which customer demand for something which cannot be achieved in limited business resources.
 To handle this requirement engineers must convince the customers or end users by solving various
conflicts.
 For that purpose requirement engineer must ask the customers and client to rank their requirements
and then priority of the requirements is decided.
 Using iterative approach, some requirements are eliminated, combined or modified. This process is
continuous until the user’s satisfaction is achieved.

9 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
Specification
 A specification can be a written document, mathematical or graphical model, collection of use of use
case scenarios or may be the prototypes.
 It is require to developing standard specifications in which requirements are presented in consistent
and understandable manner.
 Specification is the final work product of requirement engineering process. It describes the functions,
constraints, performance of computer based system.
 For a large system, it is always better to develop the specification using natural language and written
document form. These graphical models are useful for specifying the requirements.
Validation
 Requirement validation is an activity in which requirement specification analyzed in order to ensure
that the requirements are specified unambiguously.
 If any inconsistency, omissions, errors are identified then those are corrected or modified during the
validation.
 The most common used requirement validation mechanism is formal technical review. This review
team basically identifies conflicting requirements, inconstancies or unrealistic requirements.
Requirement Management
 Requirement management is a set of activities that help project team identify, control, track
requirements.
 Changes of requirement can be done at any stage of project.
 Many these activities are the same to the SCM, It deals with changes requirements.
Q. 9 Differentiate: Conventional Vs Agile Software Methodology.
Characteristics Agile Approach Conventional Approach
Organizational structure Iterative Linear
Scale of projects Small and medium scale Large-scale
Clearly defined before
User requirements Interactive input
implementation
Involvement of clients High Low
Development model Evolutionary delivery Life cycle
Customers are involved from Customers get involved early in
Customer involvement the time work is being the project but not once the
performed execution has started
Organizational structure Iterative Linear
Q. 10 Coding Standard and Guidelines
 Once detailed system design we get, then it can be transformed into implementation model.
 The goal of coding is to implement the design in the best possible manner.
 Coding affects both testing and maintenance very deep.

10 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
 Various objectives of coding are –
o Programs developed in coding should be readable.
o They should execute efficiently.
o The program should utilize less amount of memory.
o The programs should not be lengthy.
Coding Guidelines are given below
Control Construct
 The single entry and single exit construct need to be used.
 The standard control construct must be used instead of using wide variety of controls.
Use of gotos
 The goto statements make the program unstructured and it also imposes overhead on compilation
process.
 Hence avoid use of goto statements as far as possible and another alternative must be thought of.
Information Hiding
 Information hiding should be supported as far as possible.
 In that case only access functions to the data structures must be visible and the information present
in it must be hidden.
Nesting
 Nesting means defining one structure inside another.
 If the nesting is too deep then it becomes hard to understand the code.
 Hence as far as possible – avoid deep nesting of the code.
User Defined Data Types
 Modern programming languages allow the user to use UDD as the enumerated types.
 Use of UDD enhances the readability of the code.
Module Size
 There is no standard rule about the size of the module but the large size of the module will not be
functionally organized.
Side Effects
 Avoid unclear side effects.
 If some part of the code is changed randomly then it will cause some side effects.
 For example, if number of arguments passed to the function is changed then it will be difficult to
understand the purpose of that function.
Use of Meaningful Variable names for specific purpose
 Never make use of same variable name in temporary loops for multiple purposes.
 Each variable must be given some descriptive name so that the program becomes easy to
understand.
Well Documentation
 The code must be well documented with the help of comment statements at appropriate places.

11 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
Coding Standard
 Any good software development approach suggests staying to some well-defined standards or rules
for coding. These rules are called coding standard.
Naming Conventions
 Package name and variable names should be lower case.
 The name should ne noun and it start with capital letter.
 Constants must be in upper case.
 Method names must be in lower case.
 The variable with large scope must have long name for example count_total.
 The prefix is must be used for Boolean types of variables. For example isEmpty or isFull.
Files
 Reade must get an idea about the purpose of the file by its name.
 Take example of java language.
o The file extension must be in java.
o The name of the file and the class defined in the file must have same name.
o Line length in the file must be limited to 80 chars.
Commenting/Layout
 Comments are non-executable part of the code.
 But it is very important because it enhances the readability of the code.
 The purpose of the code is to explain the logic of the program
o Single line comments must be given by //.
o For the names of the variables comments must be given.
o A black of comment must be enclosed within /* and */.
Statements
 There are some guidelines about the declaration and executable statements.
o Declare some related variable on same line and unrelated variables on another line.
o Class variable should never be declared public.
o Make use of only loop controls within the for loop.
o Avoid complex conditional expressions.
o Make use of temporary variables instead.
o Avoid use of do..while statement.
Advantages of Coding Standard
 It brings uniform appearance in system implementation.
 The code becomes readable and hence it can be understand easily.
 The coding standard helps in adopting good programming practices.
Q. 11 Introduction to Software Testing.
 Software testing is a critical element of software quality assurance and represents the ultimate
review of specification, design and coding.
 The purpose of software testing is to ensure whether the software functions appear to be working
according to specifications and performance requirements.

12 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
Testing Objectives
 Testing is a process of executing a program with intend of finding an errors.
 A good test case is one that high probability of finding and undiscovered errors.
 A successful test is one that uncovers an as yet undiscovered error.
 A major testing objective is to design tests that systematically uncover types of errors with minimum
time and effort.
Testing Principles
 All tests should be traceable to customer requirements.
 Tests should be planned long before testing begins.
 The pareto principle can be applied to software testing – 80% of all errors uncovered during testing
will likely be traceable to 20% of all program modules.
 Testing should be begin “in the small” and progress toward testing “in the large”.
 Complete testing is not possible.
 To be most effective, testing should be constructed by an independent third party.
Why Testing is Important?
 Generally, testing is a process that requires more efforts than any other software engineering
activity.
 Testing is a set of activities that can be planned in advance and conducted systematically.
 If it is found without plan, then only time will be wasted and more even worse errors may get
introduced.
 This may lead to have many undetected errors in the system being developed.
 Hence performing testing by adopting systematic strategies is very much essential in during
development of software.
Testing Strategies
 Various testing strategies are given below.
Unit Testing
 To detect errors from each software component individually.
Integration Testing
 If focuses on issues associated with verification and program construction as components begins
with one another.
Validation Testing
 It provides assurance that the software validation criteria meet all functional, behavioral and
performance requirements.
System Testing
 In system testing all system elements forming the system is tested as a whole.
Q. 12 Design Concepts
Software Design is the process to transform the user requirements into some suitable form, which
helps the programmer in software coding and implementation. During the software design phase, the
design document is produced, based on the customer requirements as documented in the SRS
document. Hence the aim of this phase is to transform the SRS document into the design document.

13 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
The following items are designed and documented during the design phase:
 Different modules required.
 Control relationships among modules.
 Interface among different modules.
 Data structure among the different modules.
 Algorithms required to implement among the individual modules.
Objectives of Software Design:
1. Correctness:
A good design should be correct i.e. it should correctly implement all the functionalities of the
system.
2. Efficiency:
A good software design should address the resources, time and cost optimization issues.
3. Understandability:
A good design should be easily understandable, for which it should be modular and all the
modules are arranged in layers.
4. Completeness:
The design should have all the components like data structures, modules, and external interfaces,
etc.
5. Maintainability:
A good software design should be easily amenable to change whenever a change request is made
from the customer side.
Software Design Concepts:
The set of fundamental software design concepts are:
1. Abstraction:
An abstraction is a powerful design tool which allows a designer to consider a component at an
abstract level without bothering about the internal details of the implementation. The concept of
abstraction can be used in two ways: as a process and as an entity.
As a process, it defines a mechanism of hiding irrelevant details and representing only the
essential features of an item. As an entity, it defines a model or view of an item. There are two
common abstraction mechanisms are Functional Abstraction and Data Abstraction. A sequence of
instruction that contains a specific and limited function refers to a Functional Abstraction and
Data Abstraction is a collection of data that describes a data object.
2. Architecture:
The complete structure of the software, which is composed of various components of a system,
the attributes of those components and the relationship amongst them is called Software
Architecture. This software architecture is the structure of program modules where they interact
with each other in a specialized way and enables software engineers to analyze the software
design efficiently.
3. Modularity:
A modular design achieves effective decomposition of the problem that means the problem has

14 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
been decomposed into a set of modules. Modularity is the single attribute of software that allows
a program to be easily manageable.
Advantage of modularization:
 Program can be divided based on functional aspects.
 Each module is a well-defined system that can be used with other applications.
 It allows large programs to be written by several or different people.
 It provides a framework for complete testing, more accessible to test.
 Concurrent execution can be made possible.
4. Information Hiding:
The fundamental concept of Information Hiding suggests that modules can be characterized by
the design decisions that protect from the others. The use of information hiding provides the
most significant benefits when modifications are required during testing’s and later during
software maintenance.
Q. 13 Computer Aided Software Engineering (CASE)
 Computer aided software engineering (CASE) is the implementation of computer facilitated tools
and methods in software development.
 CASE is used to ensure a high-quality and defect-free software.
 CASE ensures a check-pointed and disciplined approach and helps designers, developers, testers,
managers and others to see the project milestones during development.
 CASE can also help as a warehouse for documents related to projects, like business plans,
requirements and design specifications.
 One of the major advantages of using CASE is the delivery of the final product, which is more likely
to meet real-world requirements as it ensures that customers remain part of the process.
 CASE illustrates a wide set of labor-saving tools that are used in software development. It generates
a framework for organizing projects and to be helpful in enhancing productivity. There was more
interest in the concept of CASE tools years ago, but less so today, as the tools have morphed into
different functions, often in reaction to software developer needs. The concept of CASE also received
a heavy dose of criticism after its release.
CASE Tools:
 The essential idea of CASE tools is that in-built programs can help to analyze developing systems in
order to enhance quality and provide better outcomes.
 Throughout the 1990, CASE tool became part of the software lexicon, and big companies like IBM
were using these kinds of tools to help create software.
 Various tools are incorporated in CASE and are called CASE tools, which are used to support different
stages and milestones in a software development life cycle.
Types of CASE Tools:
1. DiagrammingTools:
It helps in diagrammatic and graphical representations of the data and system processes. It
represents system elements, control flow and data flow among different software components and

15 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
system structure in a pictorial form. For example, Flow Chart Maker tool for making state-of-the-
art flowcharts.
2. Computer Display and Report Generators:
It helps in understanding the data requirements and the relationships involved.
3. Analysis Tools:
It focuses on inconsistent, incorrect specifications involved in the diagram and data flow. It helps
in collecting requirements, automatically check for any irregularity, imprecision in the diagrams,
data redundancies or erroneous omissions.
For example,
 (i) Accept 360, Accompa, CaseComplete for requirement analysis.
 (ii) Visible Analyst for total analysis.
4. Central Repository:
It provides the single point of storage for data diagrams, reports and documents related to
project management.
5. Documentation Generators:
It helps in generating user and technical documentation as per standards. It creates documents
for technical users and end users. For example, Doxygen, DrExplain, Adobe RoboHelp for
documentation.
6. Code Generators:
It aids in the auto generation of code, including definitions, with the help of the designs,
documents and diagrams.
Advantages of the CASE approach:
 As special emphasis is placed on redesign as well as testing, the servicing cost of a product over
its expected lifetime is considerably reduced.
 The overall quality of the product is improved as an organized approach is undertaken during the
process of development.
 Chances to meet real-world requirements are more likely and easier with a computer-aided
software engineering approach.
 CASE indirectly provides an organization with a competitive advantage by helping ensure the
development of high-quality products.
Q. 14 Software Maintenance
Software Maintenance is the process of modifying a software product after it has been delivered to the
customer. The main purpose of software maintenance is to modify and update software application after
delivery to correct faults and to improve performance.
Need for Maintenance –
Software Maintenance must be performed in order to:
 Correct faults.
 Improve the design.
 Implement enhancements.
 Interface with other systems.

16 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
 Accommodate programs so that different hardware, software, system features,
telecommunications facilities can be used.
 Migrate legacy software.
 Retire software.
Types of Software Maintenance – Maintenance can be divided into the following:
1. Corrective maintenance:
Corrective maintenance of a software product may be essential either to rectify some bugs
observed while the system is in use, or to enhance the performance of the system.
2. Adaptive maintenance:
This includes modifications and updating when the customers need the product to run on new
platforms, on new operating systems, or when they need the product to interface with new
hardware and software.
3. Perfective maintenance:
A software product needs maintenance to support the new features that the users want or to
change different types of functionalities of the system according to the customer demands.
4. Preventive maintenance:
This type of maintenance includes modifications and updating to prevent future problems of the
software. It goals to attend problems, which are not significant at this moment but may cause
serious issues in future.
Q.15 Software Quality Assurance
Software Quality Assurance (SQA) is a set of activities for ensuring quality in software engineering
processes. It ensures that developed software meets and complies with the defined or standardized
quality specifications. SQA is an ongoing process within the Software Development Life Cycle (SDLC) that
routinely checks the developed software to ensure it meets the desired quality measures.
SQA practices are implemented in most types of software development, regardless of the underlying
software development model being used. SQA incorporates and implements software testing
methodologies to test the software. Rather than checking for quality after completion, SQA processes
test for quality in each phase of development, until the software is complete. With SQA, the software
development process moves into the next phase only once the current/previous phase complies with
the required quality standards. SQA generally works on one or more industry standards that help in
building software quality guidelines and implementation strategies.
It includes the following activities −
 Process definition and implementation
 Auditing
 Training
Processes could be −
 Software Development Methodology
 Project Management
 Configuration Management
 Requirements Development/Management
 Estimation

17 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
 Software Design
 Testing, etc.
Once the processes have been defined and implemented, Quality Assurance has the following
responsibilities −
 Identify the weaknesses in the processes
 Correct those weaknesses to continually improve the process
Components of SQA System
An SQA system always combines a wide range of SQA components. These components can be classified
into the following six classes −
Pre-project components
This assures that the project commitments have been clearly defined considering the resources
required, the schedule and budget; and the development and quality plans have been correctly
determined.
Components of project life cycle activities assessment
The project life cycle is composed of two stages: the development life cycle stage and the operation–
maintenance stage.
The development life cycle stage components detect design and programming errors. Its components
are divided into the following sub-classes: Reviews, Expert opinions, and Software testing.
The SQA components used during the operation–maintenance phase include specialized maintenance
components as well as development life cycle components, which are applied mainly for functionality
to improve the maintenance tasks.
Components of infrastructure error prevention and improvement
The main objective of these components, which is applied throughout the entire organization, is to
eliminate or at least reduce the rate of errors, based on the organization’s accumulated SQA experience.
Components of software quality management
This class of components deal with several goals, such as the control of development and maintenance
activities, and the introduction of early managerial support actions that mainly prevent or minimize
schedule and budget failures and their outcomes.
Components of standardization, certification, and SQA system assessment
These components implement international professional and managerial standards within the
organization. The main objectives of this class are utilization of international professional knowledge,
improvement of coordination of the organizational quality systems with other organizations, and
assessment of the achievements of quality systems according to a common scale. The various standards
may be classified into two main groups: quality management standards and project process standards.
Organizing for SQA – the human components
The SQA organizational base includes managers, testing personnel, the SQA unit and the persons
interested in software quality such as SQA trustees, SQA committee members, and SQA forum
members. Their main objectives are to initiate and support the implementation of SQA components,
detect deviations from SQA procedures and methodology, and suggest improvements.
Pre-project Software Quality Components
These components help to improve the preliminary steps taken before starting a project. It includes −

18 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
 Contract Review
 Development and Quality Plans
Contract Review
Normally, a software is developed for a contract negotiated with a customer or for an internal order to
develop a firmware to be embedded within a hardware product. In all these cases, the development
unit is committed to an agreed-upon functional specification, budget and schedule. Hence, contract
review activities must include a detailed examination of the project proposal draft and the contract
drafts.
Specifically, contract review activities include −
 Clarification of the customer’s requirements
 Review of the project’s schedule and resource requirement estimates
 Evaluation of the professional staff’s capacity to carry out the proposed project
 Evaluation of the customer’s capacity to fulfil his obligations
 Evaluation of development risks
Development and Quality Plans
After signing the software development contract with an organization or an internal department of the
same organization, a development plan of the project and its integrated quality assurance activities are
prepared. These plans include additional details and needed revisions based on prior plans that provided
the basis for the current proposal and contract.
Most of the time, it takes several months between the tender submission and the signing of the contract.
During these period, resources such as staff availability, professional capabilities may get changed. The
plans are then revised to reflect the changes that occurred in the interim.
The main issues treated in the project development plan are −
 Schedules
 Required manpower and hardware resources, Risk evaluations
 Organizational issues: team members, subcontractors and partnerships
 Project methodology, development tools, Software reuse plans etc..
The main issues treated in the project’s quality plan are −
 Quality goals, expressed in the appropriate measurable terms
 Criteria for starting and ending each project stage
 Lists of reviews, tests, and other scheduled verification and validation activities

Q. 16 Software Quality Assurance


Software Quality Assurance (SQA) is a set of activities for ensuring quality in software engineering
processes. It ensures that developed software meets and complies with the defined or standardized
quality specifications. SQA is an ongoing process within the Software Development Life Cycle (SDLC) that
routinely checks the developed software to ensure it meets the desired quality measures.
SQA practices are implemented in most types of software development, regardless of the underlying
software development model being used. SQA incorporates and implements software testing
methodologies to test the software. Rather than checking for quality after completion, SQA processes

19 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
test for quality in each phase of development, until the software is complete. With SQA, the software
development process moves into the next phase only once the current/previous phase complies with
the required quality standards. SQA generally works on one or more industry standards that help in
building software quality guidelines and implementation strategies.
It includes the following activities −
 Process definition and implementation
 Auditing
 Training
Processes could be −
 Software Development Methodology
 Project Management
 Configuration Management
 Requirements Development/Management
 Estimation
 Software Design
 Testing, etc.
Once the processes have been defined and implemented, Quality Assurance has the following
responsibilities −
 Identify the weaknesses in the processes
 Correct those weaknesses to continually improve the process
Components of SQA System
An SQA system always combines a wide range of SQA components. These components can be classified
into the following six classes −
Pre-project components
This assures that the project commitments have been clearly defined considering the resources
required, the schedule and budget; and the development and quality plans have been correctly
determined.
Components of project life cycle activities assessment
The project life cycle is composed of two stages: the development life cycle stage and the operation–
maintenance stage.
The development life cycle stage components detect design and programming errors. Its components
are divided into the following sub-classes: Reviews, Expert opinions, and Software testing.
The SQA components used during the operation–maintenance phase include specialized maintenance
components as well as development life cycle components, which are applied mainly for functionality
to improve the maintenance tasks.
Components of infrastructure error prevention and improvement
The main objective of these components, which is applied throughout the entire organization, is to
eliminate or at least reduce the rate of errors, based on the organization’s accumulated SQA experience.

20 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
Components of software quality management
This class of components deal with several goals, such as the control of development and maintenance
activities, and the introduction of early managerial support actions that mainly prevent or minimize
schedule and budget failures and their outcomes.
Components of standardization, certification, and SQA system assessment
These components implement international professional and managerial standards within the
organization. The main objectives of this class are utilization of international professional knowledge,
improvement of coordination of the organizational quality systems with other organizations, and
assessment of the achievements of quality systems according to a common scale. The various standards
may be classified into two main groups: quality management standards and project process standards.
Organizing for SQA – the human components
The SQA organizational base includes managers, testing personnel, the SQA unit and the persons
interested in software quality such as SQA trustees, SQA committee members, and SQA forum
members. Their main objectives are to initiate and support the implementation of SQA components,
detect deviations from SQA procedures and methodology, and suggest improvements.
Pre-project Software Quality Components
These components help to improve the preliminary steps taken before starting a project. It includes −
 Contract Review
 Development and Quality Plans
Contract Review
Normally, a software is developed for a contract negotiated with a customer or for an internal order to
develop a firmware to be embedded within a hardware product. In all these cases, the development
unit is committed to an agreed-upon functional specification, budget and schedule. Hence, contract
review activities must include a detailed examination of the project proposal draft and the contract
drafts.
Specifically, contract review activities include −
 Clarification of the customer’s requirements
 Review of the project’s schedule and resource requirement estimates
 Evaluation of the professional staff’s capacity to carry out the proposed project
 Evaluation of the customer’s capacity to fulfil his obligations
 Evaluation of development risks
Development and Quality Plans
After signing the software development contract with an organization or an internal department of the
same organization, a development plan of the project and its integrated quality assurance activities are
prepared. These plans include additional details and needed revisions based on prior plans that provided
the basis for the current proposal and contract. Most of the time, it takes several months between the
tender submission and the signing of the contract. During these period, resources such as staff
availability, professional capabilities may get changed. The plans are then revised to reflect the changes
that occurred in the interim.
The main issues treated in the project development plan are −

21 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering
Dr. Subhash Technical Campus
Faculty of Degree Engineering
Software Engineering – 3150711
Schedules
Required manpower and hardware resources
Risk evaluations
Organizational issues: team members, subcontractors and partnerships
Project methodology, development tools, etc.
Software reuse plans
The main issues treated in the project’s quality plan are −
 Quality goals, expressed in the appropriate measurable terms
 Criteria for starting and ending each project stage
 Lists of reviews, tests, and other scheduled verification and validation activities

22 Prepared By: Chetan J. Shingadiya


Computer/IT Engineering

You might also like