Unit 6
Formal Methods Recent Trends in Software Engineering
Q.1) Describe Risk management.
Ans: Risk management
Risk analysis and management are a series of steps that help a software team to understand and manage uncertainty. Many problems can plague a software project.
A risk is a potential problem—it might happen, it might not.
In software engineering, Risk management is a technique or mechanism that is carried out during the development process to define, handle and monitor threats that have formed before and throughout the development process.
Risk management involves all activities pertaining to identification, analysing and
Making provision for predictable and unpredictable risks in the project. Risk may
Include the following:
● Experienced staff leaving the project and new staff coming in.
● Change in organizational management.
● Requirement change or misinterpreting requirement.
● Under-estimation of required time and resources.
● Technological changes, environmental changes, business competition.
Risk Management Process
There are following activities involved in risk management process:
● Identification - Make note of all possible risks, which may occur in the project.
● Categorize - Categorize known risks into high, medium and low risk intensity
As per their possible impact on the project.
● Manage - Analyze the probability of occurrence of risks at various phases.
Make a plan to avoid or face risks. Attempt to minimize their side-effects.
● Monitor - Closely monitor the potential risks and their early symptoms. Also
Monitor the effects of steps taken to mitigate or avoid them.
Q.2) What do you mean by SCM?
Ans: SCM
Software configuration management (SCM) is an umbrella activity that is applied throughout the software process, because change can occur at any time.
SCM activities are developed to
● Identify change,
● Control change,
● Ensure that change is being properly implemented, and
● Report changes to others who may have an interest.
It is important to make a clear distinction between software support and software configuration management. Support is a set of software engineering activities that occur after software has been delivered to the customer and put into operation. Software configuration management is a set of tracking and control activities that begin when a software engineering project begins and terminate only when the software is taken out of operation.
A primary goal of software engineering is to improve the ease with which changes can be accommodated and reduce the amount of effort expended when changes must be made.
The output of the software process is information that may be divided into three broad categories:
● Computer programs (both source level and executable forms);
● Documents that describe the computer programs (targeted at both technical practitioners and users), and
● Data (contained within the program or external to it).
The items that comprise all information produced as part of the software process are collectively called a software configuration.
As the software process progresses, the number of software configuration items (SCIs) grows rapidly. A System Specification spawns a Software Project Plan and Software Requirements Specification (as well as hardware related documents). These in turn spawn other documents to create a hierarchy of information.
If each SCI simply spawned other SCIs, little confusion would result. Unfortunately, another variable enters the process—change. Change may occur at any time, for any reason. In fact, the First Law of System Engineering states: “No matter where you are in the system life cycle, the system will change, and the desire to change it will persist throughout the life cycle.”
Q.3) What is the test - driven development?
Ans: Test - driven development
Test Driven Development (TDD) is an approach to software development that creates test cases to define and verify what the code can do. Simply put, test cases are first created and checked for each feature, and if the test fails, the new code is written to pass the test and make the code easy and bug-free.
Test-Driven Architecture begins with the design and development of tests for any small application feature. TDD instructs developers to write new code only if they have failed an automated evaluation. This prevents code replication. Test-driven production is the complete form of TDD.
Test-Driven Development Process:
● Add a Test
● Run all tests and see if the new one fails
● Write some code
● Run tests and Refactor code
● Repeat
Benefits of TDD:
● Much less debug time
● Code proven to meet requirements
● Tests become Safety Net
● Near zero defects
● Shorter development cycles
TDD cycle defines
1. Write a test
2. Make it run.
3. Change the code to make it right i.e. Refactor.
4. Repeat process.
Q.4) Describe collaborative development.
Ans: Collaborative development
The success of a software development project depends on the committed specialists' individual abilities, as well as how effectively they complement and work with each other. Collaboration itself also rolls inside collaboration tools at the same time. Not only does the latter decide how cooperation flows, but it can also become a versatile business process.
Five basic criteria for collaborative software development tools:
The role of collaboration tools is important in the process of software development. But there's also a certain chance. For instance, if a team member does not fulfil the criteria of the project, he or she can be replaced easily with no project effect.
Make sure they meet the following criteria when selecting tools:
1. Cover different collaboration scenarios: The organization should allow quality cooperation between all the stakeholders to ensure quality software development services.
2. Structure collaboration: As collaboration becomes huge, structuring it and making it suitable for further reuse is crucial.
3. Meet collaboration habits of different users: In general, software developers are introverts and are not involved in conversation, while company analysts can be very chatty. So suggest introducing a tool that will help the followers of collaboration and will not bother closed-off workers, as well as keep them tuned into the project.
4. Enable external users to participate: When customers actively engage in the software development process, they should also have collaboration tools available.
5. Integrate with other solutions: If a collaboration method is combined with other business processes (a CRM, ERP or project management system), you can handle a project with all the client knowledge and prior contact experience in mind.
Q.5) What do you mean by software reuse?
Ans: Software reuse
Software products are costly therefore a software project manager always looks for ways for cutting development cost. A feasible way to reduce development cost is to reuse parts from pre developed software. Reuse also leads to higher quality of the developed products.
In a software development following items can be reused effectively-
- Requirement & specification
- Design
- Source code
- Test cases
- Knowledge.
Basic issues in any Reuse program
In implementing any Reuse program, there arise some basic issues. Some of them are as follows-
● Component Creation: - For this, the reusable components have to be first recognized. Selection should be such that the component should have potential for reuse. Domain analysis can be used to create reusable components.
● Component indexing and storing: - Indexing means classifying the reusable components so that they can be easily reached for reuse. For easy access, when the number of components becomes large, components can be stored in a Relational Database management system (RDBMS) or an object-oriented database system (ODBMS).
● Component searching: - The programmers have to search for components which match their requirements from the database. For effective searching, the programmers require a proper method to describe the components.
● Component understanding: - A proper and complete understanding of a component is required to decide whether it can be reused or not. For that the components should be properly documented.
● Component adaptation: - Sometimes, the component may weed adaptation before they can be reused, since they may not exactly fit with the requirements.
● Repository maintenance: - Continuous maintenance for repository should be done. Maintenance here means new components have to be entered, faulty components have to be tracked and after the emergence of new applications, old applications should be removed.
Q.6) Define agile tool Jira, Kanban.
Ans: Agile tool
Agile tools are project management tools, including Scrum, Kanban, Scrumban or other agile hybrid approaches, designed to support agile methodology. The literal definition of 'agile' is described in the dictionary as the ability "to move quickly and easily or to think quickly and intelligently." So, in terms of delineating some kind of versatile approach or operation, we may intentionally add this phrase.
Agile is' a software development project management approach that characterizes the entire long job structure to be divided comprehensively into many smaller tasks and allocated to those tasks with quick and gradual work phases, known as sprints.'
The key benefit of agile methodology is that the software product is delivered on schedule and on a budget, as well as continuous improvement and flexible reactions to inevitable changes.
Essential features of Agile tools
Before choosing any comprehensive agile tool, it is important to analyse business requirements and methodology. In conjunction with their business intent, the following features of agile tools can assist the project manager and team members to choose the right one.
● Team Collaboration and Communication – The agile tool promotes teamwork between team members and communication.
● Data Storage – An agile tool offers a single database to store content that allows cross-project reporting and review to be done.
● Reporting and Analytics – The agile instruments help to assess results and can report on potential business progress on the basis of their project manager.
Various tools:
Jira
One of the most well-known and established products used by many businesses around the world is Jira. On the basis of demand, it is extremely widespread and customizable. It has a customizable Scrum Board that can be used with the aid of a burnout map, sprint report, velocity chart, epic report, cumulative flow diagram, etc. to analyze all the activities in the sprint and also display the exact picture of the sprint.
It uses JQLL to have custom filters (Jira Query Language). Furthermore, with minimal effort, versatile Kanban boards achieve the full performance.
Jira, a customizable platform for project management, is also not without flaws. The main flaw is the dynamic nature of its use. It needs developers just to set up and takes a long time to learn its purpose properly. Jira, on the other hand, is a very expensive method for project management and even a small team is expected to spend a thousand dollars just to purchase it.
Kanban
Kanban is a common framework used for the implementation of agile development of software. Communication of capacity and total openness of work takes real time. In a Kanban board, the work objects are visually depicted, allowing team members to see at any time the state of any piece of work.
Board
The Kanban board is an agile project management tool that designs the visualized work required, restricts work-in-progress and maximizes flow (or efficiency). It uses cards, columns, and continuous enhancement to assist technology and service teams to do the correct amount of work to get it done.
Element of Kanban board:
The Kanban board is split into five separate components by an individual named David Anderson.
There are Visual signs, columns, work-in-progress thresholds, a commitment point, and a delivery point.
- Visual signals: A visual card is the Kanban board (stickies, tickets, or otherwise). Team Kanban write their projects and work items on cards, usually each card per member. For agile teams, each card could be encapsulated into a single storey for users. When the board is done, this visual team allows team members and stock members to easily grasp what the team is doing.
2. Columns: The column reflects the unique tasks that together compose a "workflow" The card flows until its completion via a workflow. As "To Do," "In Progress," "Complete," or much more complex, the workflow can be a simple one.
3. Work in progress(wip) limits: The maximum number of cards that can be in one column are the work in progress caps. At every given moment, this is. It offers a warning signal that you have done too much work.
4. Commitment point: Kanban teams still maintain a board backlog. This is where the clients and team members bring forward suggestions for projects that can be taken up by the team. When they are ready, the team members pick up plans. The point of commitment is a movement in which the team takes up the concept and work begins on the project.
5. Delivery point: It is the end point of the workflow of a Kanban team. For each squad, the distribution point is often when the goods and services are turned over to the client.
Q.7) What do you mean by software development challenges?
Ans: Software development challenges
Major challenges in software development:
❖ Rapid technology advancement
For the IT industry, any technological development is a blessing. At the same time, however, technology developing at a phenomenal pace leads to an added demand for software development practitioners to take advantage of these upcoming software product development technology developments to gain a cutting edge over rivals and stand out on the market.
❖ Increasing customer demands
In general, software projects are conceptual and seek to design and build software products that satisfy varied customer requirements. Developers must clearly understand the fundamental business concept and add in the necessary features to meet the increasing consumer demands in order to develop even the simplest application or product.
❖ Time limitations
A time-game is the development of software. Developers function under stressed conditions and strive under tight and scarce deadlines to complete project specifications. This is especially a challenge when operating in different time zones with international customers. Time constraints also limit development team efficiencies and eventually contribute to mediocre quality software products.
❖ Limited infrastructure/resources
A lack of capital or IT infrastructure to conduct projects effectively is another obstacle faced by most software development businesses. This could mean a lack of software development resources for high performance, strong computing platforms, inadequate architectures for data storage or improper networks and communication.
❖ Conflicts with software testing teams
Interpersonal disputes between software development and testing teams eventually arise in a classic software development project. Several factors lead to such disputes, such as working under high performance pressure, different personalities, disparity in job responsibilities, and the completely opposite essence of growth and testing.
Q.8) What do you mean by CASE - taxonomy?
Ans: CASE - taxonomy
CASE stands for Engineering with Computer Assisted Applications. This implies, with the assistance of various automated development tools, designing and managing software projects.
CASE instruments may assist engineers with the work of evaluating, designing, coding and checking. Software engineering is hard work and there are major benefits to instruments that minimize the effort needed to create a work product or achieve a milestone.
Case - taxonomy:
● Tools for business process engineering - represent business data objects, their relationships and the flow of data objects between business areas of the organization.
● Process modelling and management software - represent process key elements and provide links to other tools that help specified process activities.
● Tools for project preparation - used for cost and commitment assessment and planning of projects
● Risk analysis tools - help project managers develop risk tables by offering thorough guidance on risk recognition and analysis
● Requirements Tracing tools - provide a structured database-like approach to the tracking status of requirements starting with specifications
● documentation tools - provide opportunities for increased efficiency by reducing the amount of time necessary for the development of work products
● Prototyping tools - enable rapid definition of screen layouts, data design, and report generation
● System software tools - software for the network system, object management facilities, support for distributed components, and communications software
● Quality assurance tools-metrics tools that inspect source code to assess compliance with language requirements or tools that extract metrics to project the quality of software being produced.
Q.9) Write short notes on Environment?
Ans: Environment
The world repository is “anything or person thought of as a center of accumulation as storage”. During the early history of software development, the repository was indent a person – the programmer who had to remember the location of all information relevant to software project, who had to recall information that was never writing down and reconstructs information that had been lost. Sadly, using a person as “the center for accumulation and storage”, does not work very well.
Today, the repository is a database that acts as the center for both accumulation and storage of software engineering information. The role of the person (the software engineer) is to interact with the repository using CASE tools that are integrated with it. The repository holds the complete information needed to create, modify, and evolve a software system from project initiation and planning to code generation and maintenance. In this book a number of different terms have been used to refer to the storage place for software engineering information: CASE database, project database, Integrated Project Support Environment (IPSE) database, requirement dictionary (a limited database), and repository. Although there are subtle differences between some of these terms, all refer to the center for accumulation and storage.
For years, common development repositories have been used to create information systems independent of CASE. Above figure reflect the common components of a comprehensive CASE repository. The application development environment is one in which either information specialists or end users use CASE tools, high level languages and other tools to develop new applications. The production environment is one in which these same people use application to build databases, keep the data current and extract data from databases.
The data dictionary is computer software tools used to manage and control access to the information repository. It provides facilities for recording, storing and processing descriptions of an organization’s significant data and data processing resources. Data dictionary features within a CASE repository are especially valuable for the system analyst when cross referencing data items. Cross referencing enables one description of a data item to be stored and accessed by all individuals (system analyst and end users) so that a single definition for data item is established and used. Such a description helps to avoid data duplication and makes system development and maintenance more efficient.
Q.10) Define CASE tool-kits and workbenches?
Ans: Tool - kits
The CASE tools are a series of application software programs that are used to automate SDLC operations. Software project managers, analysts and engineers use CASE tools for software system creation.
Numerous CASE methods are available to automate different phases of the life cycle of software development, such as analytical tools, design tools, project management tools, database management tools, documentation tools, to name a few.
Using CASE tools speeds up project development to achieve the desired outcome and helps to find vulnerabilities before progressing to the next step of software development.
Workbenches
Workbenches encourage process stages or operations such as specification, design, etc. Typically, they consist of a collection of instruments with a greater or lesser degree of integration.
Workbenches combine two or more CASE instruments and support particular tasks in the software process. They thus accomplish:
● A consistent and homogeneous interface (presentation integration).
● Seamless incorporation of instruments and chains of tools (control and data integration).
The Visual Basic programming environment from Microsoft is an example workbench. It includes several tools for development: a GUI creator, a smart code editor, a debugger, etc.
Many industrial CASE items have appeared to be workbenches that have incorporated two or more instruments seamlessly. Workbenches may also be categorized in the same way as instruments; as focusing on research, development, verification, etc., as well as focusing on upper case, lower case or processes such as configuration management that span the entire life cycle.
Unit 6
Formal Methods Recent Trends in Software Engineering
Q.1) Describe Risk management.
Ans: Risk management
Risk analysis and management are a series of steps that help a software team to understand and manage uncertainty. Many problems can plague a software project.
A risk is a potential problem—it might happen, it might not.
In software engineering, Risk management is a technique or mechanism that is carried out during the development process to define, handle and monitor threats that have formed before and throughout the development process.
Risk management involves all activities pertaining to identification, analysing and
Making provision for predictable and unpredictable risks in the project. Risk may
Include the following:
● Experienced staff leaving the project and new staff coming in.
● Change in organizational management.
● Requirement change or misinterpreting requirement.
● Under-estimation of required time and resources.
● Technological changes, environmental changes, business competition.
Risk Management Process
There are following activities involved in risk management process:
● Identification - Make note of all possible risks, which may occur in the project.
● Categorize - Categorize known risks into high, medium and low risk intensity
As per their possible impact on the project.
● Manage - Analyze the probability of occurrence of risks at various phases.
Make a plan to avoid or face risks. Attempt to minimize their side-effects.
● Monitor - Closely monitor the potential risks and their early symptoms. Also
Monitor the effects of steps taken to mitigate or avoid them.
Q.2) What do you mean by SCM?
Ans: SCM
Software configuration management (SCM) is an umbrella activity that is applied throughout the software process, because change can occur at any time.
SCM activities are developed to
● Identify change,
● Control change,
● Ensure that change is being properly implemented, and
● Report changes to others who may have an interest.
It is important to make a clear distinction between software support and software configuration management. Support is a set of software engineering activities that occur after software has been delivered to the customer and put into operation. Software configuration management is a set of tracking and control activities that begin when a software engineering project begins and terminate only when the software is taken out of operation.
A primary goal of software engineering is to improve the ease with which changes can be accommodated and reduce the amount of effort expended when changes must be made.
The output of the software process is information that may be divided into three broad categories:
● Computer programs (both source level and executable forms);
● Documents that describe the computer programs (targeted at both technical practitioners and users), and
● Data (contained within the program or external to it).
The items that comprise all information produced as part of the software process are collectively called a software configuration.
As the software process progresses, the number of software configuration items (SCIs) grows rapidly. A System Specification spawns a Software Project Plan and Software Requirements Specification (as well as hardware related documents). These in turn spawn other documents to create a hierarchy of information.
If each SCI simply spawned other SCIs, little confusion would result. Unfortunately, another variable enters the process—change. Change may occur at any time, for any reason. In fact, the First Law of System Engineering states: “No matter where you are in the system life cycle, the system will change, and the desire to change it will persist throughout the life cycle.”
Q.3) What is the test - driven development?
Ans: Test - driven development
Test Driven Development (TDD) is an approach to software development that creates test cases to define and verify what the code can do. Simply put, test cases are first created and checked for each feature, and if the test fails, the new code is written to pass the test and make the code easy and bug-free.
Test-Driven Architecture begins with the design and development of tests for any small application feature. TDD instructs developers to write new code only if they have failed an automated evaluation. This prevents code replication. Test-driven production is the complete form of TDD.
Test-Driven Development Process:
● Add a Test
● Run all tests and see if the new one fails
● Write some code
● Run tests and Refactor code
● Repeat
Benefits of TDD:
● Much less debug time
● Code proven to meet requirements
● Tests become Safety Net
● Near zero defects
● Shorter development cycles
TDD cycle defines
1. Write a test
2. Make it run.
3. Change the code to make it right i.e. Refactor.
4. Repeat process.
Q.4) Describe collaborative development.
Ans: Collaborative development
The success of a software development project depends on the committed specialists' individual abilities, as well as how effectively they complement and work with each other. Collaboration itself also rolls inside collaboration tools at the same time. Not only does the latter decide how cooperation flows, but it can also become a versatile business process.
Five basic criteria for collaborative software development tools:
The role of collaboration tools is important in the process of software development. But there's also a certain chance. For instance, if a team member does not fulfil the criteria of the project, he or she can be replaced easily with no project effect.
Make sure they meet the following criteria when selecting tools:
1. Cover different collaboration scenarios: The organization should allow quality cooperation between all the stakeholders to ensure quality software development services.
2. Structure collaboration: As collaboration becomes huge, structuring it and making it suitable for further reuse is crucial.
3. Meet collaboration habits of different users: In general, software developers are introverts and are not involved in conversation, while company analysts can be very chatty. So suggest introducing a tool that will help the followers of collaboration and will not bother closed-off workers, as well as keep them tuned into the project.
4. Enable external users to participate: When customers actively engage in the software development process, they should also have collaboration tools available.
5. Integrate with other solutions: If a collaboration method is combined with other business processes (a CRM, ERP or project management system), you can handle a project with all the client knowledge and prior contact experience in mind.
Q.5) What do you mean by software reuse?
Ans: Software reuse
Software products are costly therefore a software project manager always looks for ways for cutting development cost. A feasible way to reduce development cost is to reuse parts from pre developed software. Reuse also leads to higher quality of the developed products.
In a software development following items can be reused effectively-
- Requirement & specification
- Design
- Source code
- Test cases
- Knowledge.
Basic issues in any Reuse program
In implementing any Reuse program, there arise some basic issues. Some of them are as follows-
● Component Creation: - For this, the reusable components have to be first recognized. Selection should be such that the component should have potential for reuse. Domain analysis can be used to create reusable components.
● Component indexing and storing: - Indexing means classifying the reusable components so that they can be easily reached for reuse. For easy access, when the number of components becomes large, components can be stored in a Relational Database management system (RDBMS) or an object-oriented database system (ODBMS).
● Component searching: - The programmers have to search for components which match their requirements from the database. For effective searching, the programmers require a proper method to describe the components.
● Component understanding: - A proper and complete understanding of a component is required to decide whether it can be reused or not. For that the components should be properly documented.
● Component adaptation: - Sometimes, the component may weed adaptation before they can be reused, since they may not exactly fit with the requirements.
● Repository maintenance: - Continuous maintenance for repository should be done. Maintenance here means new components have to be entered, faulty components have to be tracked and after the emergence of new applications, old applications should be removed.
Q.6) Define agile tool Jira, Kanban.
Ans: Agile tool
Agile tools are project management tools, including Scrum, Kanban, Scrumban or other agile hybrid approaches, designed to support agile methodology. The literal definition of 'agile' is described in the dictionary as the ability "to move quickly and easily or to think quickly and intelligently." So, in terms of delineating some kind of versatile approach or operation, we may intentionally add this phrase.
Agile is' a software development project management approach that characterizes the entire long job structure to be divided comprehensively into many smaller tasks and allocated to those tasks with quick and gradual work phases, known as sprints.'
The key benefit of agile methodology is that the software product is delivered on schedule and on a budget, as well as continuous improvement and flexible reactions to inevitable changes.
Essential features of Agile tools
Before choosing any comprehensive agile tool, it is important to analyse business requirements and methodology. In conjunction with their business intent, the following features of agile tools can assist the project manager and team members to choose the right one.
● Team Collaboration and Communication – The agile tool promotes teamwork between team members and communication.
● Data Storage – An agile tool offers a single database to store content that allows cross-project reporting and review to be done.
● Reporting and Analytics – The agile instruments help to assess results and can report on potential business progress on the basis of their project manager.
Various tools:
Jira
One of the most well-known and established products used by many businesses around the world is Jira. On the basis of demand, it is extremely widespread and customizable. It has a customizable Scrum Board that can be used with the aid of a burnout map, sprint report, velocity chart, epic report, cumulative flow diagram, etc. to analyze all the activities in the sprint and also display the exact picture of the sprint.
It uses JQLL to have custom filters (Jira Query Language). Furthermore, with minimal effort, versatile Kanban boards achieve the full performance.
Jira, a customizable platform for project management, is also not without flaws. The main flaw is the dynamic nature of its use. It needs developers just to set up and takes a long time to learn its purpose properly. Jira, on the other hand, is a very expensive method for project management and even a small team is expected to spend a thousand dollars just to purchase it.
Kanban
Kanban is a common framework used for the implementation of agile development of software. Communication of capacity and total openness of work takes real time. In a Kanban board, the work objects are visually depicted, allowing team members to see at any time the state of any piece of work.
Board
The Kanban board is an agile project management tool that designs the visualized work required, restricts work-in-progress and maximizes flow (or efficiency). It uses cards, columns, and continuous enhancement to assist technology and service teams to do the correct amount of work to get it done.
Element of Kanban board:
The Kanban board is split into five separate components by an individual named David Anderson.
There are Visual signs, columns, work-in-progress thresholds, a commitment point, and a delivery point.
- Visual signals: A visual card is the Kanban board (stickies, tickets, or otherwise). Team Kanban write their projects and work items on cards, usually each card per member. For agile teams, each card could be encapsulated into a single storey for users. When the board is done, this visual team allows team members and stock members to easily grasp what the team is doing.
2. Columns: The column reflects the unique tasks that together compose a "workflow" The card flows until its completion via a workflow. As "To Do," "In Progress," "Complete," or much more complex, the workflow can be a simple one.
3. Work in progress(wip) limits: The maximum number of cards that can be in one column are the work in progress caps. At every given moment, this is. It offers a warning signal that you have done too much work.
4. Commitment point: Kanban teams still maintain a board backlog. This is where the clients and team members bring forward suggestions for projects that can be taken up by the team. When they are ready, the team members pick up plans. The point of commitment is a movement in which the team takes up the concept and work begins on the project.
5. Delivery point: It is the end point of the workflow of a Kanban team. For each squad, the distribution point is often when the goods and services are turned over to the client.
Q.7) What do you mean by software development challenges?
Ans: Software development challenges
Major challenges in software development:
❖ Rapid technology advancement
For the IT industry, any technological development is a blessing. At the same time, however, technology developing at a phenomenal pace leads to an added demand for software development practitioners to take advantage of these upcoming software product development technology developments to gain a cutting edge over rivals and stand out on the market.
❖ Increasing customer demands
In general, software projects are conceptual and seek to design and build software products that satisfy varied customer requirements. Developers must clearly understand the fundamental business concept and add in the necessary features to meet the increasing consumer demands in order to develop even the simplest application or product.
❖ Time limitations
A time-game is the development of software. Developers function under stressed conditions and strive under tight and scarce deadlines to complete project specifications. This is especially a challenge when operating in different time zones with international customers. Time constraints also limit development team efficiencies and eventually contribute to mediocre quality software products.
❖ Limited infrastructure/resources
A lack of capital or IT infrastructure to conduct projects effectively is another obstacle faced by most software development businesses. This could mean a lack of software development resources for high performance, strong computing platforms, inadequate architectures for data storage or improper networks and communication.
❖ Conflicts with software testing teams
Interpersonal disputes between software development and testing teams eventually arise in a classic software development project. Several factors lead to such disputes, such as working under high performance pressure, different personalities, disparity in job responsibilities, and the completely opposite essence of growth and testing.
Q.8) What do you mean by CASE - taxonomy?
Ans: CASE - taxonomy
CASE stands for Engineering with Computer Assisted Applications. This implies, with the assistance of various automated development tools, designing and managing software projects.
CASE instruments may assist engineers with the work of evaluating, designing, coding and checking. Software engineering is hard work and there are major benefits to instruments that minimize the effort needed to create a work product or achieve a milestone.
Case - taxonomy:
● Tools for business process engineering - represent business data objects, their relationships and the flow of data objects between business areas of the organization.
● Process modelling and management software - represent process key elements and provide links to other tools that help specified process activities.
● Tools for project preparation - used for cost and commitment assessment and planning of projects
● Risk analysis tools - help project managers develop risk tables by offering thorough guidance on risk recognition and analysis
● Requirements Tracing tools - provide a structured database-like approach to the tracking status of requirements starting with specifications
● documentation tools - provide opportunities for increased efficiency by reducing the amount of time necessary for the development of work products
● Prototyping tools - enable rapid definition of screen layouts, data design, and report generation
● System software tools - software for the network system, object management facilities, support for distributed components, and communications software
● Quality assurance tools-metrics tools that inspect source code to assess compliance with language requirements or tools that extract metrics to project the quality of software being produced.
Q.9) Write short notes on Environment?
Ans: Environment
The world repository is “anything or person thought of as a center of accumulation as storage”. During the early history of software development, the repository was indent a person – the programmer who had to remember the location of all information relevant to software project, who had to recall information that was never writing down and reconstructs information that had been lost. Sadly, using a person as “the center for accumulation and storage”, does not work very well.
Today, the repository is a database that acts as the center for both accumulation and storage of software engineering information. The role of the person (the software engineer) is to interact with the repository using CASE tools that are integrated with it. The repository holds the complete information needed to create, modify, and evolve a software system from project initiation and planning to code generation and maintenance. In this book a number of different terms have been used to refer to the storage place for software engineering information: CASE database, project database, Integrated Project Support Environment (IPSE) database, requirement dictionary (a limited database), and repository. Although there are subtle differences between some of these terms, all refer to the center for accumulation and storage.
For years, common development repositories have been used to create information systems independent of CASE. Above figure reflect the common components of a comprehensive CASE repository. The application development environment is one in which either information specialists or end users use CASE tools, high level languages and other tools to develop new applications. The production environment is one in which these same people use application to build databases, keep the data current and extract data from databases.
The data dictionary is computer software tools used to manage and control access to the information repository. It provides facilities for recording, storing and processing descriptions of an organization’s significant data and data processing resources. Data dictionary features within a CASE repository are especially valuable for the system analyst when cross referencing data items. Cross referencing enables one description of a data item to be stored and accessed by all individuals (system analyst and end users) so that a single definition for data item is established and used. Such a description helps to avoid data duplication and makes system development and maintenance more efficient.
Q.10) Define CASE tool-kits and workbenches?
Ans: Tool - kits
The CASE tools are a series of application software programs that are used to automate SDLC operations. Software project managers, analysts and engineers use CASE tools for software system creation.
Numerous CASE methods are available to automate different phases of the life cycle of software development, such as analytical tools, design tools, project management tools, database management tools, documentation tools, to name a few.
Using CASE tools speeds up project development to achieve the desired outcome and helps to find vulnerabilities before progressing to the next step of software development.
Workbenches
Workbenches encourage process stages or operations such as specification, design, etc. Typically, they consist of a collection of instruments with a greater or lesser degree of integration.
Workbenches combine two or more CASE instruments and support particular tasks in the software process. They thus accomplish:
● A consistent and homogeneous interface (presentation integration).
● Seamless incorporation of instruments and chains of tools (control and data integration).
The Visual Basic programming environment from Microsoft is an example workbench. It includes several tools for development: a GUI creator, a smart code editor, a debugger, etc.
Many industrial CASE items have appeared to be workbenches that have incorporated two or more instruments seamlessly. Workbenches may also be categorized in the same way as instruments; as focusing on research, development, verification, etc., as well as focusing on upper case, lower case or processes such as configuration management that span the entire life cycle.