Unit - 6
Project management
Software project management (SPM) is a systematic approach to planning and directing software development initiatives. Software projects are planned, implemented, monitored, and controlled as part of project management.
The art and science of organizing and supervising software projects is known as software project management. It is a sub-discipline of software project management that deals with the planning, implementation, monitoring, and control of software projects.
It is a method of organizing, assigning, and scheduling resources in order to create computer software that meets criteria.
The client and the developers need to know the project's length, duration, and cost in software project management.
Need of Software Project Management
Software is a digital product that does not have a physical form. Software development is a relatively new field, with minimal expertise in creating software products. The majority of software solutions are customized to meet the needs of the client. The most important is that underlying technology evolves at such a quick pace that experience gained from one product may not be applicable to another. Because such economic and environmental restrictions raise the risk of software development, it is critical to effectively manage software projects.
It is vital for an organization to create a high-quality product while staying within the client's budgetary constraints and completing the project on time. As a result, software project management is required to take into account user needs as well as budget and schedule restrictions.
For software projects, the graphic above depicts triple limitations. It is an important component of software development to create a high-quality product while staying within the price constraints of the client and completing the project on time. This triple constrain triangle may be influenced by a number of internal and external factors. Any one of three factors can have a significant impact on the other two.
As a result, software project management is critical for incorporating user needs as well as budget and time restrictions.
Advantages of Software Project Management
● It aids in software development planning.
● Software development is made simple to implement.
● Software project management includes issues such as monitoring and regulating.
● Overall, it reduces the amount of time and money spent on software development.
Key takeaway
Software project management (SPM) is a systematic approach to planning and directing software development initiatives. Software projects are planned, implemented, monitored, and controlled as part of project management.
Software project planning is a work that must be completed before software development can begin. It's there to help with software development, but it doesn't entail any specific action that has anything to do with software production; rather, it's a collection of many procedures that help with software production.
Once a project is determined to be feasible, computer code project managers develop the project. Even before any development activity begins, project design is conducted and finalized. Following are the steps involved in project planning:
Estimating the project's later characteristics:
● Project size - What are the potential drawbacks in terms of the effort and time required to build the product?
● Cost - What percentage of the project's worth is it costing to develop?
● Duration - How long will it take for you to want complete development?
● Effort - What percentage of effort is required?
The accuracy of such estimations will determine the effectiveness of the next designing tasks.
● alternative resources and a planning force
● Plans for worker organization and staffing
● Identifying risks, analyzing them, and devising strategies to mitigate them.
● Various arrangements such as a quality assurance plan, configuration, management arrangement, and so on.
Order of precedence for project planning activities
A project manager's many project-related estimates have already been mentioned. The figure below depicts the sequence in which critical project development activities are carried out. The first action is size estimate, which can be easily identified. Alternative estimations, such as the estimation of effort, cost, resource, and project length, are furthermore significant parts of project development.
Fig 1: Precedence ordering among planning activities
Sliding Window Planning
Because adherence to incorrect time and resource estimates results in schedule slippage, project planning requires extreme caution and attention. Client dissatisfaction and a negative impact on team morale will result from schedule delays. It may potentially result in project failure.
Project design, on the other hand, can be a tough task. Creating accurate blueprints, particularly for huge structures, is quite difficult. Because the correct parameters, the scope of the project, project personnel, and other factors may change over the course of the project, this is a part of the problem. To overcome this disadvantage, most project managers approach project design in stages.
Managers are protected from making large commitments too early by designing a project in stages. Window design is the term for this technique of staggered design. Beginning with an initial set up, the project is planned more precisely in consecutive development stages using the window technique.
At the start of a project, project managers receive only a smattering of information on the project's important aspects. As the project goes through different phases, its data base improves step by step. After each section is completed, the project managers will set up each subsequent section more precisely and with increasing levels of confidence.
Key takeaway
Software project planning is a work that must be completed before software development can begin. It's there to help with software development, but it doesn't entail any specific action that has anything to do with software production; rather, it's a collection of many procedures that help with software production.
In a project, project scheduling refers to a road map of all activities that must be completed in a specific order and within the time slots assigned to each task. Project managers typically define multiple tasks and project milestones and organize them according to a variety of parameters. They look for tasks that are in the critical route of the plan and must be completed in a specified order (due to task interdependency) and within the time allotted. Tasks that are not on the critical path are less likely to have an impact on the project's overall timetable.
For scheduling a project, it is necessary to -
● Determine all of the functionalities that are required to finish the project.
● Break down large tasks into smaller tasks.
● Determine the degree of interdependence between various activities.
● Determine the most likely size for the amount of time it will take to accomplish the tasks.
● Assign resources to various activities.
● Plan the start and end dates for various events.
● Determine the most important path. The set of actions that determine the project's duration is a significant way.
Identifying all of the functions required to finish the project is the first step in arranging a software plan. A strong understanding of the project's complexities and development process aids the supervisor in efficiently identifying the project's vital role. The large functions are then split down into a series of valid little activities that are assigned to different engineers. The structure of the job breakdown After the project manager has broken down the purpose and constructed the work breakdown structure, formalism assists the manager in systematically breaking down the function; he must uncover the dependencies among the tasks. The order in which the various events are carried out is determined by the dependencies among the various activities.
If the outcomes of one action A are required by another activity B, activity A must be scheduled after activity B. Function dependencies, in general, describe a partial ordering among functions, i.e., each service may precede a subset of other functions, but other functions may not have any precedence ordering defined between them (called concurrent function). The pattern of an activity network defines the dependencies between the activities.
Following the processing of the activity network representation, resources are given to each activity. A Gantt chart is commonly used to allocate resources. Following the completion of resource allocation, a PERT chart is created. The PERT chart is a handy tool for monitoring and controlling programmes. The project plan must breakdown the project functions into a series of activities in order to schedule tasks. It is necessary to specify the time frame in which each action should be completed.
A milestone is the point at which an action comes to a finish. By auditing the timely completion of milestones, the project manager keeps track on the project's function. If he examines that the milestones start getting delayed, then he has to handle the activities carefully so that the complete deadline can still be met.
Advantages of Project Scheduling
Project schedules have a number of advantages in our project management:
● Simply put, it guarantees that everyone is on the same page in terms of task completion, dependencies, and deadlines.
● It aids in the early detection of difficulties and concerns such as a lack of or unavailability of resources.
● It also aids in the identification of relationships and the monitoring of the process.
● It allows for efficient budgeting and risk mitigation.
Key takeaway
Project scheduling refers to a road map of all activities that must be completed in a specific order and within the time slots assigned to each task. Project managers typically define multiple tasks and project milestones and organize them according to a variety of parameters.
All activities related to identifying, assessing, and planning for foreseeable and non-predictable hazards in the project are included in risk management. There's a chance you'll be exposed to the following dangers:
● Experienced personnel are departing the project, while fresh personnel are being hired.
● Organizational management changes.
● Changes in the requirements or a misinterpretation of the requirements.
● Underestimation of time and resources necessary.
● Technological advancements, environmental changes, and corporate competitiveness are all factors to consider.
Risk Management Process
In the risk management process, the following activities are involved:
● Identification - Make a list of all potential risks that may arise during the project.
● Categorize - Divide known risks into three categories based on their potential influence on the project: high, medium, and low risk intensity.
● Manage - Examine the likelihood of risks occurring at various stages. Make a strategy for avoiding or dealing with risks. Make an effort to keep their side effects to a minimum.
● Monitor - Keep a close eye on the potential dangers and their early warning signs. Also keep an eye on the consequences of any actions made to lessen or avoid them.
Classification
Risks can be classified into three categories that can harm a software project:
● Project risks
● Technical risks
● Business risks
- Project risks: Budgetary, scheduling, human, resource, and customer-related issues are all examples of project hazards. Schedule slippage is a critical project risk. It's difficult to track and control a software project since software is intangible. Controlling something that cannot be identified is extremely difficult. The plan executive can notice the product taking shape in any production programme, such as vehicle manufacture.
2. Technical risks: Potential technique, implementation, interface, testing, and maintenance issues are all technical hazards. An ambiguous specification, an incomplete specification, a changing specification, technical ambiguity, and technical obsolescence are all part of it. The majority of technical hazards arise from the development team's lack of project expertise.
3. Business risks: This form of risk includes the possibility of developing a fantastic product that no one wants, as well as the possibility of losing budgetary or manpower commitments.
Principle of Risk Management
● Global Perspective - We review the larger system description, design, and implementation in this section. We consider the likelihood and potential consequences of a risk.
● Take a forward-looking view - Consider the threat that might occur in the future and make future preparations for guiding the following events.
● Open Communication - This allows for a free flow of information between the client and the team members, ensuring that everyone is aware of the dangers.
● Integrated management - In this approach, risk management is integrated into the project management process.
● Continuous process - Risks are tracked continuously throughout the risk management paradigm at this step of the process.
In software development, change management refers to the transition from an existing state of a software product to a better state of the product. Modifications to artifacts, such as code changes, process changes, or documentation changes, are controlled, supported, and managed by it. Where CCP (Change Control Process) primarily identifies, documents, and authorizes software application changes.
Each software development process follows the Software Development Life Cycle (SDLC), which ensures that each phase is completed in the proper order to produce a high-quality software product. Despite the fact that Change Management is not included in any of the stages of the SDLC, it is critical to the entire software development process. Change management tools are used for a variety of goals, including adopting, controlling, representing, and enacting the desired change. Change management tools for Flow Charting, Project Planning, Data Collection, and other tasks, for example.
Process of Change Management
When a software application or product undergoes any modifications in an IT environment, it goes through the following sequential processes:
● Creating a request for change
● Reviewing and assessing a request for change
● Planning the change
● Testing the change
● Creating a change proposal
● Implementing changes
● Reviewing change performance
● Closing the process
Importance of Change Management
● For the purpose of improving performance.
● For the purpose of promoting engagement.
● For the purpose of increasing innovation.
● In order to incorporate new technologies.
● For the purpose of adopting new requirements.
● In order to save money.
Source of Change
Various reasons may arise during the development process that necessitate the implementation of certain changes in the product. These sources are as follows :
● Business reorganization
● New Market conditions
● New equipment
● Fixing any bugs/errors
● New customer needs
● Performance or reliability improvement
● Budgetary or scheduling constraints
Key points to be considered during Change Management
● The reason behind the change.
● The outcome of a change.
● The part that has to be modified.
● The individual will evolve.
● Change comes with its own set of risks.
● Change as an alternative.
● Change necessitates resources.
● Changes and their relationship.
Software re-engineering is the process of examining and altering a system in order to reassemble it in a new form. Software re-engineering is the application of Re-Engineering ideas to the software development process. It has a favorable impact on software cost, quality, customer service, and delivery time. We improve software through Software Re-engineering to make it more efficient and effective.
Software Re-engineering is a software development technique that aims to make a software system more maintainable. Re-engineering is the process of examining and altering a system in order to reassemble it in a new form. Reverse engineering, forward engineering, rebuilding, and other sub-processes are all part of this process.
Objectives of Re-engineering
● To describe a cost-effective system evolution alternative.
● The purpose of this document is to describe the activities involved in the software maintenance process.
● To discuss the problems of data re-engineering and to distinguish between software and data re-engineering.
Re-Engineering cost factors
● The quality of the re-engineered software.
● Engineering availability is supported by the tool.
● The degree to which data conversion is required.
● Expert staffing for re-engineering is available.
Software Re-Engineering Activities
Fig 2: Software reengineering activity
- Inventory Analysis
Every software company should keep track of all of its apps.
● Inventory can be as simple as a spreadsheet model with data that provides a complete description of each running application.
● Candidates for re-engineering emerge when this data is sorted according to business criticality, lifespan, current maintainability, and other locally important factors.
● The resource can then be assigned to a re-engineering candidate application.
2. Document reconstructing
A system's documentation either explains how it works or how to use it.
● It is necessary to update the documentation.
● It's possible that properly documenting an application isn't required.
● The system is mission-critical, and it needs to be completely re-documented.
3. Reverse Engineering
Reverse engineering is the process of recovering a design. Data, architectural, and procedural design information are extracted from an existing programme using reverse engineering techniques.
4. Code Reconstructing
● A reconstructing tool is used to analyze the source code in order to reconstruct it. Structured programming construct violations are noticed, and the code is subsequently recreated.
● The rearranged code is then inspected and tested to ensure that no problems have arisen.
5. Data Restructuring
● Reverse engineering is the first step in data rearrangement.
● The current data architecture is examined, and data models that are required are defined.
● Data objects and attributes are identified, and the quality of the existing data structure is assessed.
6. Forward Engineering
Forward Engineering, also known as renovation or reclamation, not only recovers design knowledge from current software, but also uses it to update or reconstitute the system in order to improve its overall quality.
Advantages of Re-engineering
● Reduced Risk - Because the programme is already in place, the risk is lower than if it were developed from scratch. There are numerous issues that might arise during the creation of new software, including development issues, personnel issues, and specification issues.
● Reduction in Costs – Re-engineering is less expensive than designing new software.
● Business Rules Revealed - When a system is re-engineered, business rules that have been embedded in the system are rediscovered.
● Better Use of Existing Personnel - During re-engineering, existing staff expertise can be preserved and expanded to accommodate new capabilities.
Disadvantages of Re-engineering
● There are practical limits to how much reengineering can be done.
● Manual data management is required for major architectural modifications or dramatic reorganization of the systems.
● A re-engineered system is unlikely to last as long as a fresh system built with modern software re-engineering methods.
Key takeaway
Software re-engineering is the process of examining and altering a system in order to reassemble it in a new form. Software re-engineering is the application of Re-Engineering ideas to the software development process.
Restructuring
Restructuring software updates source code and/or data in order to make it more adaptable to future changes. Restructuring, in general, has little effect on the overall programme architecture. It tends to focus on specific module design aspects as well as local data structures defined within modules. Restructuring becomes forward engineering when it extends beyond module boundaries and embraces the software architecture.
Restructuring occurs when an application's basic architecture is sound but its technical internals require improvement. It begins when the majority of the software is usable and just a portion of all modules and data require considerable changes.
Reverse engineering
Reverse engineering is the process of dismantling an object to learn how it works in order to recreate or improve it. The technique, which originated in older industries, is now widely employed in computer hardware and software. Reverse engineering software entails utilizing programme language instructions to revert a program's machine code (the string of 0s and 1s transmitted to the logic processor) back to the source code that it was created in.
Reverse engineering is used for a variety of purposes, including learning; developing new, compatible products that are less expensive than existing ones; improving software interoperability or bridging data between different operating systems or databases; and uncovering undocumented features of commercial products.
● Level of abstraction (ideally want to be able to derive design information at the highest level possible).
● a sense of completion (level of detail provided at a given abstraction level).
● Interactions (degree to which humans are integrated with automated reverse engineering tools).
● Directionality is a term used to describe the ability (one-way means the software engineer doing the maintenance activity is given all information extracted from source code, two-way means the information is fed to a reengineering tool that attempts to regenerate the old program).
● Remove abstractions (meaningful specification of processing performed is derived from old source code).
Restructuring Benefits
● The quality of the application and the documentation has improved.
● Improves productivity and decreases developer irritation by making programmes easier to learn.
● Reduces the amount of time and effort required to maintain software.
● It is simpler to test and debug software.
Types of Restructuring
● Code restructuring
The code is restructured to provide a design that performs the same purpose as the original programme but with superior quality. In general, code restructuring techniques use Boolean algebra to model programme logic before applying a set of transformation rules to produce reformed logic. The goal is to take "spaghetti-bowl" code and turn it into a procedural design that adheres to organized programming principles.
Other restructuring strategies for use with reengineering tools have also been developed. Each programme module and the resources (data kinds, methods, and variables) that are exchanged between it and other modules are represented by a resource exchange diagram. The programme architecture can be redesigned to provide minimal coupling between modules by establishing representations of resource flow.
● Data restructuring
A reverse engineering operation known as source code analysis must be performed before data reorganization can begin. All data definitions, file descriptions, I/O, and interface descriptions in programming language statements are assessed. The goal is to extract data items and objects, as well as obtain information on data flow and comprehend the current data structures. Data analysis is a term used to describe this process.
After the data analysis is finished, the data redesign process begins. A data record standardization phase, in its most basic form, clarifies data definitions in order to create consistency across data item names or physical record formats inside an existing data structure or file format.
Another type of redesign is data name rationalization, which ensures that all data naming conventions comply with local standards and that aliases are removed as data flows through the system.
Physical alterations to current data structures are done to make the data design more effective when restructuring goes beyond standardization and rationalization. This could be a conversion from one file format to another, or in rare circumstances, from one database type to another.
Key takeaway
Restructuring software updates source code and/or data in order to make it more adaptable to future changes. Restructuring, in general, has little effect on the overall programme architecture.
Reverse engineering is the process of dismantling an object to learn how it works in order to recreate or improve it. The technique, which originated in older industries, is now widely employed in computer hardware and software.
Forward engineering is the process of adding complexities and lower-level elements to a high-level model or concept. Different principles apply to various software and database procedures in this style of engineering.
Forward engineering is significant in IT since it represents the 'typical' development approach. For instance, transforming a model into a programming language. If models are more semantically detailed, this will typically result in a loss of semantics or layers of abstraction.
As a result, forward engineering is related to the phrase "reverse engineering," which refers to an endeavor to construct backwards, from a coded set to a model, or to unravel the process of how something was put together.
Forward engineering is a process of developing or constructing an application based on the requirements provided. Renovation and reclamation are other terms for forward engineering. Forward engineering necessitates a high level of expertise. Constructing or developing an application requires more time.
Forward engineering is a method of developing high-level models or designs in order to incorporate complexities and low-level data. As a result, this type of engineering employs entirely distinct ideas in a variety of packaging and information operations. Forward Engineering is a software engineering technique that includes the SDLC and is used to reproduce an existing application. It is close to meeting all of the users' new re-engineering requirements.
Fig 3: Forward engineering
Characteristics of forward engineering
● Forward engineering is a type of engineering that employs several principles in a number of packaging and information operations.
● In IT, forward engineering is critical since it represents the "typical" development approach.
● The conversion of corporate processes, services, and functions into apps is known as forward engineering.
● The business model is built first in this process. The package is then pushed out of the developed model using a top-down technique.
● From implementation styles and logic to the occurrence of supply code, forward engineering tools are used.
● It enables users to create a business model that can subsequently be translated into data system components.
● These tools are designed to work from the top down. A forward engineering CASE tool is System Creator and Visual Analyst.
Benefits
New items with novel designs and features are introduced to the market thanks to forward engineering. Furthermore, as a new system is developed, there is minimal to no possibility of intellectual property violation.
Challenges of forward engineering
A company's risk of forward engineering is higher. It's difficult to spot problems in the system development when making product design judgments. After the product has been distributed, problems can develop, resulting in callbacks and dissatisfied customers. Because the model must be precise and thorough, forward engineering takes longer to accomplish.
Key takeaway
Forward engineering is the process of adding complexities and lower-level elements to a high-level model or concept. Different principles apply to various software and database procedures in this style of engineering.
Difference between forward engineering and reverse engineering
Key | Forward Engineering | Reverse Engineering |
Definition | Forward engineering is a type of creation or development in which the development is based on the client's or consumer's requirements. Prior to the development of the application, the requirements are provided. | Reverse Engineering, on the other hand, is a style of invention or development in which work is done based on requirements acquired from the existing application or changes/enhancements offered by the client/consumer. |
Execution Time | Forward Engineering takes longer than Reverse Engineering since the application must be built from the ground up and all methods and planning must be completed before actual development can begin. | Reverse engineering, on the other hand, takes less time to design an application because only minor changes and upgrades are required rather than the application's essential operation. |
Proficiency Skill | As previously said, applications must be designed from the ground up, necessitating a high level of skill competency while deciding on techniques and development planning in the case of Forward Engineering. | In the case of reverse engineering, however, a low or medium level of ability is sufficient. |
Nature | We can conclude that the nature of Forward Engineering is Perspective based on the aforementioned points. | Reverse Engineering, on the other hand, can be described as adaptive. |
Example | Any freshly created application or system that is starting or about to start based on supplied criteria is an example of Forward Engineering.
| Reverse engineering mostly consists of research and RND work that may be implemented in an existing application or system to improve its efficiency and functionality. |
References:
- Software Engineering‐A Practitioner’s Approach (Sixth Edition)‐Roger Pressman (TMH)
- Software Engineering (Ninth Edition)‐Ian Summerville (Pearson Education)
- Software Engineering‐Schaum’s Series (TMH)
- Software Project Management ‐ Sanjay Mohapatra (Cengage Learning)
Unit - 6
Project management
Software project management (SPM) is a systematic approach to planning and directing software development initiatives. Software projects are planned, implemented, monitored, and controlled as part of project management.
The art and science of organizing and supervising software projects is known as software project management. It is a sub-discipline of software project management that deals with the planning, implementation, monitoring, and control of software projects.
It is a method of organizing, assigning, and scheduling resources in order to create computer software that meets criteria.
The client and the developers need to know the project's length, duration, and cost in software project management.
Need of Software Project Management
Software is a digital product that does not have a physical form. Software development is a relatively new field, with minimal expertise in creating software products. The majority of software solutions are customized to meet the needs of the client. The most important is that underlying technology evolves at such a quick pace that experience gained from one product may not be applicable to another. Because such economic and environmental restrictions raise the risk of software development, it is critical to effectively manage software projects.
It is vital for an organization to create a high-quality product while staying within the client's budgetary constraints and completing the project on time. As a result, software project management is required to take into account user needs as well as budget and schedule restrictions.
For software projects, the graphic above depicts triple limitations. It is an important component of software development to create a high-quality product while staying within the price constraints of the client and completing the project on time. This triple constrain triangle may be influenced by a number of internal and external factors. Any one of three factors can have a significant impact on the other two.
As a result, software project management is critical for incorporating user needs as well as budget and time restrictions.
Advantages of Software Project Management
● It aids in software development planning.
● Software development is made simple to implement.
● Software project management includes issues such as monitoring and regulating.
● Overall, it reduces the amount of time and money spent on software development.
Key takeaway
Software project management (SPM) is a systematic approach to planning and directing software development initiatives. Software projects are planned, implemented, monitored, and controlled as part of project management.
Software project planning is a work that must be completed before software development can begin. It's there to help with software development, but it doesn't entail any specific action that has anything to do with software production; rather, it's a collection of many procedures that help with software production.
Once a project is determined to be feasible, computer code project managers develop the project. Even before any development activity begins, project design is conducted and finalized. Following are the steps involved in project planning:
Estimating the project's later characteristics:
● Project size - What are the potential drawbacks in terms of the effort and time required to build the product?
● Cost - What percentage of the project's worth is it costing to develop?
● Duration - How long will it take for you to want complete development?
● Effort - What percentage of effort is required?
The accuracy of such estimations will determine the effectiveness of the next designing tasks.
● alternative resources and a planning force
● Plans for worker organization and staffing
● Identifying risks, analyzing them, and devising strategies to mitigate them.
● Various arrangements such as a quality assurance plan, configuration, management arrangement, and so on.
Order of precedence for project planning activities
A project manager's many project-related estimates have already been mentioned. The figure below depicts the sequence in which critical project development activities are carried out. The first action is size estimate, which can be easily identified. Alternative estimations, such as the estimation of effort, cost, resource, and project length, are furthermore significant parts of project development.
Fig 1: Precedence ordering among planning activities
Sliding Window Planning
Because adherence to incorrect time and resource estimates results in schedule slippage, project planning requires extreme caution and attention. Client dissatisfaction and a negative impact on team morale will result from schedule delays. It may potentially result in project failure.
Project design, on the other hand, can be a tough task. Creating accurate blueprints, particularly for huge structures, is quite difficult. Because the correct parameters, the scope of the project, project personnel, and other factors may change over the course of the project, this is a part of the problem. To overcome this disadvantage, most project managers approach project design in stages.
Managers are protected from making large commitments too early by designing a project in stages. Window design is the term for this technique of staggered design. Beginning with an initial set up, the project is planned more precisely in consecutive development stages using the window technique.
At the start of a project, project managers receive only a smattering of information on the project's important aspects. As the project goes through different phases, its data base improves step by step. After each section is completed, the project managers will set up each subsequent section more precisely and with increasing levels of confidence.
Key takeaway
Software project planning is a work that must be completed before software development can begin. It's there to help with software development, but it doesn't entail any specific action that has anything to do with software production; rather, it's a collection of many procedures that help with software production.
In a project, project scheduling refers to a road map of all activities that must be completed in a specific order and within the time slots assigned to each task. Project managers typically define multiple tasks and project milestones and organize them according to a variety of parameters. They look for tasks that are in the critical route of the plan and must be completed in a specified order (due to task interdependency) and within the time allotted. Tasks that are not on the critical path are less likely to have an impact on the project's overall timetable.
For scheduling a project, it is necessary to -
● Determine all of the functionalities that are required to finish the project.
● Break down large tasks into smaller tasks.
● Determine the degree of interdependence between various activities.
● Determine the most likely size for the amount of time it will take to accomplish the tasks.
● Assign resources to various activities.
● Plan the start and end dates for various events.
● Determine the most important path. The set of actions that determine the project's duration is a significant way.
Identifying all of the functions required to finish the project is the first step in arranging a software plan. A strong understanding of the project's complexities and development process aids the supervisor in efficiently identifying the project's vital role. The large functions are then split down into a series of valid little activities that are assigned to different engineers. The structure of the job breakdown After the project manager has broken down the purpose and constructed the work breakdown structure, formalism assists the manager in systematically breaking down the function; he must uncover the dependencies among the tasks. The order in which the various events are carried out is determined by the dependencies among the various activities.
If the outcomes of one action A are required by another activity B, activity A must be scheduled after activity B. Function dependencies, in general, describe a partial ordering among functions, i.e., each service may precede a subset of other functions, but other functions may not have any precedence ordering defined between them (called concurrent function). The pattern of an activity network defines the dependencies between the activities.
Following the processing of the activity network representation, resources are given to each activity. A Gantt chart is commonly used to allocate resources. Following the completion of resource allocation, a PERT chart is created. The PERT chart is a handy tool for monitoring and controlling programmes. The project plan must breakdown the project functions into a series of activities in order to schedule tasks. It is necessary to specify the time frame in which each action should be completed.
A milestone is the point at which an action comes to a finish. By auditing the timely completion of milestones, the project manager keeps track on the project's function. If he examines that the milestones start getting delayed, then he has to handle the activities carefully so that the complete deadline can still be met.
Advantages of Project Scheduling
Project schedules have a number of advantages in our project management:
● Simply put, it guarantees that everyone is on the same page in terms of task completion, dependencies, and deadlines.
● It aids in the early detection of difficulties and concerns such as a lack of or unavailability of resources.
● It also aids in the identification of relationships and the monitoring of the process.
● It allows for efficient budgeting and risk mitigation.
Key takeaway
Project scheduling refers to a road map of all activities that must be completed in a specific order and within the time slots assigned to each task. Project managers typically define multiple tasks and project milestones and organize them according to a variety of parameters.
All activities related to identifying, assessing, and planning for foreseeable and non-predictable hazards in the project are included in risk management. There's a chance you'll be exposed to the following dangers:
● Experienced personnel are departing the project, while fresh personnel are being hired.
● Organizational management changes.
● Changes in the requirements or a misinterpretation of the requirements.
● Underestimation of time and resources necessary.
● Technological advancements, environmental changes, and corporate competitiveness are all factors to consider.
Risk Management Process
In the risk management process, the following activities are involved:
● Identification - Make a list of all potential risks that may arise during the project.
● Categorize - Divide known risks into three categories based on their potential influence on the project: high, medium, and low risk intensity.
● Manage - Examine the likelihood of risks occurring at various stages. Make a strategy for avoiding or dealing with risks. Make an effort to keep their side effects to a minimum.
● Monitor - Keep a close eye on the potential dangers and their early warning signs. Also keep an eye on the consequences of any actions made to lessen or avoid them.
Classification
Risks can be classified into three categories that can harm a software project:
● Project risks
● Technical risks
● Business risks
- Project risks: Budgetary, scheduling, human, resource, and customer-related issues are all examples of project hazards. Schedule slippage is a critical project risk. It's difficult to track and control a software project since software is intangible. Controlling something that cannot be identified is extremely difficult. The plan executive can notice the product taking shape in any production programme, such as vehicle manufacture.
2. Technical risks: Potential technique, implementation, interface, testing, and maintenance issues are all technical hazards. An ambiguous specification, an incomplete specification, a changing specification, technical ambiguity, and technical obsolescence are all part of it. The majority of technical hazards arise from the development team's lack of project expertise.
3. Business risks: This form of risk includes the possibility of developing a fantastic product that no one wants, as well as the possibility of losing budgetary or manpower commitments.
Principle of Risk Management
● Global Perspective - We review the larger system description, design, and implementation in this section. We consider the likelihood and potential consequences of a risk.
● Take a forward-looking view - Consider the threat that might occur in the future and make future preparations for guiding the following events.
● Open Communication - This allows for a free flow of information between the client and the team members, ensuring that everyone is aware of the dangers.
● Integrated management - In this approach, risk management is integrated into the project management process.
● Continuous process - Risks are tracked continuously throughout the risk management paradigm at this step of the process.
In software development, change management refers to the transition from an existing state of a software product to a better state of the product. Modifications to artifacts, such as code changes, process changes, or documentation changes, are controlled, supported, and managed by it. Where CCP (Change Control Process) primarily identifies, documents, and authorizes software application changes.
Each software development process follows the Software Development Life Cycle (SDLC), which ensures that each phase is completed in the proper order to produce a high-quality software product. Despite the fact that Change Management is not included in any of the stages of the SDLC, it is critical to the entire software development process. Change management tools are used for a variety of goals, including adopting, controlling, representing, and enacting the desired change. Change management tools for Flow Charting, Project Planning, Data Collection, and other tasks, for example.
Process of Change Management
When a software application or product undergoes any modifications in an IT environment, it goes through the following sequential processes:
● Creating a request for change
● Reviewing and assessing a request for change
● Planning the change
● Testing the change
● Creating a change proposal
● Implementing changes
● Reviewing change performance
● Closing the process
Importance of Change Management
● For the purpose of improving performance.
● For the purpose of promoting engagement.
● For the purpose of increasing innovation.
● In order to incorporate new technologies.
● For the purpose of adopting new requirements.
● In order to save money.
Source of Change
Various reasons may arise during the development process that necessitate the implementation of certain changes in the product. These sources are as follows :
● Business reorganization
● New Market conditions
● New equipment
● Fixing any bugs/errors
● New customer needs
● Performance or reliability improvement
● Budgetary or scheduling constraints
Key points to be considered during Change Management
● The reason behind the change.
● The outcome of a change.
● The part that has to be modified.
● The individual will evolve.
● Change comes with its own set of risks.
● Change as an alternative.
● Change necessitates resources.
● Changes and their relationship.
Software re-engineering is the process of examining and altering a system in order to reassemble it in a new form. Software re-engineering is the application of Re-Engineering ideas to the software development process. It has a favorable impact on software cost, quality, customer service, and delivery time. We improve software through Software Re-engineering to make it more efficient and effective.
Software Re-engineering is a software development technique that aims to make a software system more maintainable. Re-engineering is the process of examining and altering a system in order to reassemble it in a new form. Reverse engineering, forward engineering, rebuilding, and other sub-processes are all part of this process.
Objectives of Re-engineering
● To describe a cost-effective system evolution alternative.
● The purpose of this document is to describe the activities involved in the software maintenance process.
● To discuss the problems of data re-engineering and to distinguish between software and data re-engineering.
Re-Engineering cost factors
● The quality of the re-engineered software.
● Engineering availability is supported by the tool.
● The degree to which data conversion is required.
● Expert staffing for re-engineering is available.
Software Re-Engineering Activities
Fig 2: Software reengineering activity
- Inventory Analysis
Every software company should keep track of all of its apps.
● Inventory can be as simple as a spreadsheet model with data that provides a complete description of each running application.
● Candidates for re-engineering emerge when this data is sorted according to business criticality, lifespan, current maintainability, and other locally important factors.
● The resource can then be assigned to a re-engineering candidate application.
2. Document reconstructing
A system's documentation either explains how it works or how to use it.
● It is necessary to update the documentation.
● It's possible that properly documenting an application isn't required.
● The system is mission-critical, and it needs to be completely re-documented.
3. Reverse Engineering
Reverse engineering is the process of recovering a design. Data, architectural, and procedural design information are extracted from an existing programme using reverse engineering techniques.
4. Code Reconstructing
● A reconstructing tool is used to analyze the source code in order to reconstruct it. Structured programming construct violations are noticed, and the code is subsequently recreated.
● The rearranged code is then inspected and tested to ensure that no problems have arisen.
5. Data Restructuring
● Reverse engineering is the first step in data rearrangement.
● The current data architecture is examined, and data models that are required are defined.
● Data objects and attributes are identified, and the quality of the existing data structure is assessed.
6. Forward Engineering
Forward Engineering, also known as renovation or reclamation, not only recovers design knowledge from current software, but also uses it to update or reconstitute the system in order to improve its overall quality.
Advantages of Re-engineering
● Reduced Risk - Because the programme is already in place, the risk is lower than if it were developed from scratch. There are numerous issues that might arise during the creation of new software, including development issues, personnel issues, and specification issues.
● Reduction in Costs – Re-engineering is less expensive than designing new software.
● Business Rules Revealed - When a system is re-engineered, business rules that have been embedded in the system are rediscovered.
● Better Use of Existing Personnel - During re-engineering, existing staff expertise can be preserved and expanded to accommodate new capabilities.
Disadvantages of Re-engineering
● There are practical limits to how much reengineering can be done.
● Manual data management is required for major architectural modifications or dramatic reorganization of the systems.
● A re-engineered system is unlikely to last as long as a fresh system built with modern software re-engineering methods.
Key takeaway
Software re-engineering is the process of examining and altering a system in order to reassemble it in a new form. Software re-engineering is the application of Re-Engineering ideas to the software development process.
Restructuring
Restructuring software updates source code and/or data in order to make it more adaptable to future changes. Restructuring, in general, has little effect on the overall programme architecture. It tends to focus on specific module design aspects as well as local data structures defined within modules. Restructuring becomes forward engineering when it extends beyond module boundaries and embraces the software architecture.
Restructuring occurs when an application's basic architecture is sound but its technical internals require improvement. It begins when the majority of the software is usable and just a portion of all modules and data require considerable changes.
Reverse engineering
Reverse engineering is the process of dismantling an object to learn how it works in order to recreate or improve it. The technique, which originated in older industries, is now widely employed in computer hardware and software. Reverse engineering software entails utilizing programme language instructions to revert a program's machine code (the string of 0s and 1s transmitted to the logic processor) back to the source code that it was created in.
Reverse engineering is used for a variety of purposes, including learning; developing new, compatible products that are less expensive than existing ones; improving software interoperability or bridging data between different operating systems or databases; and uncovering undocumented features of commercial products.
● Level of abstraction (ideally want to be able to derive design information at the highest level possible).
● a sense of completion (level of detail provided at a given abstraction level).
● Interactions (degree to which humans are integrated with automated reverse engineering tools).
● Directionality is a term used to describe the ability (one-way means the software engineer doing the maintenance activity is given all information extracted from source code, two-way means the information is fed to a reengineering tool that attempts to regenerate the old program).
● Remove abstractions (meaningful specification of processing performed is derived from old source code).
Restructuring Benefits
● The quality of the application and the documentation has improved.
● Improves productivity and decreases developer irritation by making programmes easier to learn.
● Reduces the amount of time and effort required to maintain software.
● It is simpler to test and debug software.
Types of Restructuring
● Code restructuring
The code is restructured to provide a design that performs the same purpose as the original programme but with superior quality. In general, code restructuring techniques use Boolean algebra to model programme logic before applying a set of transformation rules to produce reformed logic. The goal is to take "spaghetti-bowl" code and turn it into a procedural design that adheres to organized programming principles.
Other restructuring strategies for use with reengineering tools have also been developed. Each programme module and the resources (data kinds, methods, and variables) that are exchanged between it and other modules are represented by a resource exchange diagram. The programme architecture can be redesigned to provide minimal coupling between modules by establishing representations of resource flow.
● Data restructuring
A reverse engineering operation known as source code analysis must be performed before data reorganization can begin. All data definitions, file descriptions, I/O, and interface descriptions in programming language statements are assessed. The goal is to extract data items and objects, as well as obtain information on data flow and comprehend the current data structures. Data analysis is a term used to describe this process.
After the data analysis is finished, the data redesign process begins. A data record standardization phase, in its most basic form, clarifies data definitions in order to create consistency across data item names or physical record formats inside an existing data structure or file format.
Another type of redesign is data name rationalization, which ensures that all data naming conventions comply with local standards and that aliases are removed as data flows through the system.
Physical alterations to current data structures are done to make the data design more effective when restructuring goes beyond standardization and rationalization. This could be a conversion from one file format to another, or in rare circumstances, from one database type to another.
Key takeaway
Restructuring software updates source code and/or data in order to make it more adaptable to future changes. Restructuring, in general, has little effect on the overall programme architecture.
Reverse engineering is the process of dismantling an object to learn how it works in order to recreate or improve it. The technique, which originated in older industries, is now widely employed in computer hardware and software.
Forward engineering is the process of adding complexities and lower-level elements to a high-level model or concept. Different principles apply to various software and database procedures in this style of engineering.
Forward engineering is significant in IT since it represents the 'typical' development approach. For instance, transforming a model into a programming language. If models are more semantically detailed, this will typically result in a loss of semantics or layers of abstraction.
As a result, forward engineering is related to the phrase "reverse engineering," which refers to an endeavor to construct backwards, from a coded set to a model, or to unravel the process of how something was put together.
Forward engineering is a process of developing or constructing an application based on the requirements provided. Renovation and reclamation are other terms for forward engineering. Forward engineering necessitates a high level of expertise. Constructing or developing an application requires more time.
Forward engineering is a method of developing high-level models or designs in order to incorporate complexities and low-level data. As a result, this type of engineering employs entirely distinct ideas in a variety of packaging and information operations. Forward Engineering is a software engineering technique that includes the SDLC and is used to reproduce an existing application. It is close to meeting all of the users' new re-engineering requirements.
Fig 3: Forward engineering
Characteristics of forward engineering
● Forward engineering is a type of engineering that employs several principles in a number of packaging and information operations.
● In IT, forward engineering is critical since it represents the "typical" development approach.
● The conversion of corporate processes, services, and functions into apps is known as forward engineering.
● The business model is built first in this process. The package is then pushed out of the developed model using a top-down technique.
● From implementation styles and logic to the occurrence of supply code, forward engineering tools are used.
● It enables users to create a business model that can subsequently be translated into data system components.
● These tools are designed to work from the top down. A forward engineering CASE tool is System Creator and Visual Analyst.
Benefits
New items with novel designs and features are introduced to the market thanks to forward engineering. Furthermore, as a new system is developed, there is minimal to no possibility of intellectual property violation.
Challenges of forward engineering
A company's risk of forward engineering is higher. It's difficult to spot problems in the system development when making product design judgments. After the product has been distributed, problems can develop, resulting in callbacks and dissatisfied customers. Because the model must be precise and thorough, forward engineering takes longer to accomplish.
Key takeaway
Forward engineering is the process of adding complexities and lower-level elements to a high-level model or concept. Different principles apply to various software and database procedures in this style of engineering.
Difference between forward engineering and reverse engineering
Key | Forward Engineering | Reverse Engineering |
Definition | Forward engineering is a type of creation or development in which the development is based on the client's or consumer's requirements. Prior to the development of the application, the requirements are provided. | Reverse Engineering, on the other hand, is a style of invention or development in which work is done based on requirements acquired from the existing application or changes/enhancements offered by the client/consumer. |
Execution Time | Forward Engineering takes longer than Reverse Engineering since the application must be built from the ground up and all methods and planning must be completed before actual development can begin. | Reverse engineering, on the other hand, takes less time to design an application because only minor changes and upgrades are required rather than the application's essential operation. |
Proficiency Skill | As previously said, applications must be designed from the ground up, necessitating a high level of skill competency while deciding on techniques and development planning in the case of Forward Engineering. | In the case of reverse engineering, however, a low or medium level of ability is sufficient. |
Nature | We can conclude that the nature of Forward Engineering is Perspective based on the aforementioned points. | Reverse Engineering, on the other hand, can be described as adaptive. |
Example | Any freshly created application or system that is starting or about to start based on supplied criteria is an example of Forward Engineering.
| Reverse engineering mostly consists of research and RND work that may be implemented in an existing application or system to improve its efficiency and functionality. |
References:
- Software Engineering‐A Practitioner’s Approach (Sixth Edition)‐Roger Pressman (TMH)
- Software Engineering (Ninth Edition)‐Ian Summerville (Pearson Education)
- Software Engineering‐Schaum’s Series (TMH)
- Software Project Management ‐ Sanjay Mohapatra (Cengage Learning)
Unit - 6
Project management
Software project management (SPM) is a systematic approach to planning and directing software development initiatives. Software projects are planned, implemented, monitored, and controlled as part of project management.
The art and science of organizing and supervising software projects is known as software project management. It is a sub-discipline of software project management that deals with the planning, implementation, monitoring, and control of software projects.
It is a method of organizing, assigning, and scheduling resources in order to create computer software that meets criteria.
The client and the developers need to know the project's length, duration, and cost in software project management.
Need of Software Project Management
Software is a digital product that does not have a physical form. Software development is a relatively new field, with minimal expertise in creating software products. The majority of software solutions are customized to meet the needs of the client. The most important is that underlying technology evolves at such a quick pace that experience gained from one product may not be applicable to another. Because such economic and environmental restrictions raise the risk of software development, it is critical to effectively manage software projects.
It is vital for an organization to create a high-quality product while staying within the client's budgetary constraints and completing the project on time. As a result, software project management is required to take into account user needs as well as budget and schedule restrictions.
For software projects, the graphic above depicts triple limitations. It is an important component of software development to create a high-quality product while staying within the price constraints of the client and completing the project on time. This triple constrain triangle may be influenced by a number of internal and external factors. Any one of three factors can have a significant impact on the other two.
As a result, software project management is critical for incorporating user needs as well as budget and time restrictions.
Advantages of Software Project Management
● It aids in software development planning.
● Software development is made simple to implement.
● Software project management includes issues such as monitoring and regulating.
● Overall, it reduces the amount of time and money spent on software development.
Key takeaway
Software project management (SPM) is a systematic approach to planning and directing software development initiatives. Software projects are planned, implemented, monitored, and controlled as part of project management.
Software project planning is a work that must be completed before software development can begin. It's there to help with software development, but it doesn't entail any specific action that has anything to do with software production; rather, it's a collection of many procedures that help with software production.
Once a project is determined to be feasible, computer code project managers develop the project. Even before any development activity begins, project design is conducted and finalized. Following are the steps involved in project planning:
Estimating the project's later characteristics:
● Project size - What are the potential drawbacks in terms of the effort and time required to build the product?
● Cost - What percentage of the project's worth is it costing to develop?
● Duration - How long will it take for you to want complete development?
● Effort - What percentage of effort is required?
The accuracy of such estimations will determine the effectiveness of the next designing tasks.
● alternative resources and a planning force
● Plans for worker organization and staffing
● Identifying risks, analyzing them, and devising strategies to mitigate them.
● Various arrangements such as a quality assurance plan, configuration, management arrangement, and so on.
Order of precedence for project planning activities
A project manager's many project-related estimates have already been mentioned. The figure below depicts the sequence in which critical project development activities are carried out. The first action is size estimate, which can be easily identified. Alternative estimations, such as the estimation of effort, cost, resource, and project length, are furthermore significant parts of project development.
Fig 1: Precedence ordering among planning activities
Sliding Window Planning
Because adherence to incorrect time and resource estimates results in schedule slippage, project planning requires extreme caution and attention. Client dissatisfaction and a negative impact on team morale will result from schedule delays. It may potentially result in project failure.
Project design, on the other hand, can be a tough task. Creating accurate blueprints, particularly for huge structures, is quite difficult. Because the correct parameters, the scope of the project, project personnel, and other factors may change over the course of the project, this is a part of the problem. To overcome this disadvantage, most project managers approach project design in stages.
Managers are protected from making large commitments too early by designing a project in stages. Window design is the term for this technique of staggered design. Beginning with an initial set up, the project is planned more precisely in consecutive development stages using the window technique.
At the start of a project, project managers receive only a smattering of information on the project's important aspects. As the project goes through different phases, its data base improves step by step. After each section is completed, the project managers will set up each subsequent section more precisely and with increasing levels of confidence.
Key takeaway
Software project planning is a work that must be completed before software development can begin. It's there to help with software development, but it doesn't entail any specific action that has anything to do with software production; rather, it's a collection of many procedures that help with software production.
In a project, project scheduling refers to a road map of all activities that must be completed in a specific order and within the time slots assigned to each task. Project managers typically define multiple tasks and project milestones and organize them according to a variety of parameters. They look for tasks that are in the critical route of the plan and must be completed in a specified order (due to task interdependency) and within the time allotted. Tasks that are not on the critical path are less likely to have an impact on the project's overall timetable.
For scheduling a project, it is necessary to -
● Determine all of the functionalities that are required to finish the project.
● Break down large tasks into smaller tasks.
● Determine the degree of interdependence between various activities.
● Determine the most likely size for the amount of time it will take to accomplish the tasks.
● Assign resources to various activities.
● Plan the start and end dates for various events.
● Determine the most important path. The set of actions that determine the project's duration is a significant way.
Identifying all of the functions required to finish the project is the first step in arranging a software plan. A strong understanding of the project's complexities and development process aids the supervisor in efficiently identifying the project's vital role. The large functions are then split down into a series of valid little activities that are assigned to different engineers. The structure of the job breakdown After the project manager has broken down the purpose and constructed the work breakdown structure, formalism assists the manager in systematically breaking down the function; he must uncover the dependencies among the tasks. The order in which the various events are carried out is determined by the dependencies among the various activities.
If the outcomes of one action A are required by another activity B, activity A must be scheduled after activity B. Function dependencies, in general, describe a partial ordering among functions, i.e., each service may precede a subset of other functions, but other functions may not have any precedence ordering defined between them (called concurrent function). The pattern of an activity network defines the dependencies between the activities.
Following the processing of the activity network representation, resources are given to each activity. A Gantt chart is commonly used to allocate resources. Following the completion of resource allocation, a PERT chart is created. The PERT chart is a handy tool for monitoring and controlling programmes. The project plan must breakdown the project functions into a series of activities in order to schedule tasks. It is necessary to specify the time frame in which each action should be completed.
A milestone is the point at which an action comes to a finish. By auditing the timely completion of milestones, the project manager keeps track on the project's function. If he examines that the milestones start getting delayed, then he has to handle the activities carefully so that the complete deadline can still be met.
Advantages of Project Scheduling
Project schedules have a number of advantages in our project management:
● Simply put, it guarantees that everyone is on the same page in terms of task completion, dependencies, and deadlines.
● It aids in the early detection of difficulties and concerns such as a lack of or unavailability of resources.
● It also aids in the identification of relationships and the monitoring of the process.
● It allows for efficient budgeting and risk mitigation.
Key takeaway
Project scheduling refers to a road map of all activities that must be completed in a specific order and within the time slots assigned to each task. Project managers typically define multiple tasks and project milestones and organize them according to a variety of parameters.
All activities related to identifying, assessing, and planning for foreseeable and non-predictable hazards in the project are included in risk management. There's a chance you'll be exposed to the following dangers:
● Experienced personnel are departing the project, while fresh personnel are being hired.
● Organizational management changes.
● Changes in the requirements or a misinterpretation of the requirements.
● Underestimation of time and resources necessary.
● Technological advancements, environmental changes, and corporate competitiveness are all factors to consider.
Risk Management Process
In the risk management process, the following activities are involved:
● Identification - Make a list of all potential risks that may arise during the project.
● Categorize - Divide known risks into three categories based on their potential influence on the project: high, medium, and low risk intensity.
● Manage - Examine the likelihood of risks occurring at various stages. Make a strategy for avoiding or dealing with risks. Make an effort to keep their side effects to a minimum.
● Monitor - Keep a close eye on the potential dangers and their early warning signs. Also keep an eye on the consequences of any actions made to lessen or avoid them.
Classification
Risks can be classified into three categories that can harm a software project:
● Project risks
● Technical risks
● Business risks
- Project risks: Budgetary, scheduling, human, resource, and customer-related issues are all examples of project hazards. Schedule slippage is a critical project risk. It's difficult to track and control a software project since software is intangible. Controlling something that cannot be identified is extremely difficult. The plan executive can notice the product taking shape in any production programme, such as vehicle manufacture.
2. Technical risks: Potential technique, implementation, interface, testing, and maintenance issues are all technical hazards. An ambiguous specification, an incomplete specification, a changing specification, technical ambiguity, and technical obsolescence are all part of it. The majority of technical hazards arise from the development team's lack of project expertise.
3. Business risks: This form of risk includes the possibility of developing a fantastic product that no one wants, as well as the possibility of losing budgetary or manpower commitments.
Principle of Risk Management
● Global Perspective - We review the larger system description, design, and implementation in this section. We consider the likelihood and potential consequences of a risk.
● Take a forward-looking view - Consider the threat that might occur in the future and make future preparations for guiding the following events.
● Open Communication - This allows for a free flow of information between the client and the team members, ensuring that everyone is aware of the dangers.
● Integrated management - In this approach, risk management is integrated into the project management process.
● Continuous process - Risks are tracked continuously throughout the risk management paradigm at this step of the process.
In software development, change management refers to the transition from an existing state of a software product to a better state of the product. Modifications to artifacts, such as code changes, process changes, or documentation changes, are controlled, supported, and managed by it. Where CCP (Change Control Process) primarily identifies, documents, and authorizes software application changes.
Each software development process follows the Software Development Life Cycle (SDLC), which ensures that each phase is completed in the proper order to produce a high-quality software product. Despite the fact that Change Management is not included in any of the stages of the SDLC, it is critical to the entire software development process. Change management tools are used for a variety of goals, including adopting, controlling, representing, and enacting the desired change. Change management tools for Flow Charting, Project Planning, Data Collection, and other tasks, for example.
Process of Change Management
When a software application or product undergoes any modifications in an IT environment, it goes through the following sequential processes:
● Creating a request for change
● Reviewing and assessing a request for change
● Planning the change
● Testing the change
● Creating a change proposal
● Implementing changes
● Reviewing change performance
● Closing the process
Importance of Change Management
● For the purpose of improving performance.
● For the purpose of promoting engagement.
● For the purpose of increasing innovation.
● In order to incorporate new technologies.
● For the purpose of adopting new requirements.
● In order to save money.
Source of Change
Various reasons may arise during the development process that necessitate the implementation of certain changes in the product. These sources are as follows :
● Business reorganization
● New Market conditions
● New equipment
● Fixing any bugs/errors
● New customer needs
● Performance or reliability improvement
● Budgetary or scheduling constraints
Key points to be considered during Change Management
● The reason behind the change.
● The outcome of a change.
● The part that has to be modified.
● The individual will evolve.
● Change comes with its own set of risks.
● Change as an alternative.
● Change necessitates resources.
● Changes and their relationship.
Software re-engineering is the process of examining and altering a system in order to reassemble it in a new form. Software re-engineering is the application of Re-Engineering ideas to the software development process. It has a favorable impact on software cost, quality, customer service, and delivery time. We improve software through Software Re-engineering to make it more efficient and effective.
Software Re-engineering is a software development technique that aims to make a software system more maintainable. Re-engineering is the process of examining and altering a system in order to reassemble it in a new form. Reverse engineering, forward engineering, rebuilding, and other sub-processes are all part of this process.
Objectives of Re-engineering
● To describe a cost-effective system evolution alternative.
● The purpose of this document is to describe the activities involved in the software maintenance process.
● To discuss the problems of data re-engineering and to distinguish between software and data re-engineering.
Re-Engineering cost factors
● The quality of the re-engineered software.
● Engineering availability is supported by the tool.
● The degree to which data conversion is required.
● Expert staffing for re-engineering is available.
Software Re-Engineering Activities
Fig 2: Software reengineering activity
- Inventory Analysis
Every software company should keep track of all of its apps.
● Inventory can be as simple as a spreadsheet model with data that provides a complete description of each running application.
● Candidates for re-engineering emerge when this data is sorted according to business criticality, lifespan, current maintainability, and other locally important factors.
● The resource can then be assigned to a re-engineering candidate application.
2. Document reconstructing
A system's documentation either explains how it works or how to use it.
● It is necessary to update the documentation.
● It's possible that properly documenting an application isn't required.
● The system is mission-critical, and it needs to be completely re-documented.
3. Reverse Engineering
Reverse engineering is the process of recovering a design. Data, architectural, and procedural design information are extracted from an existing programme using reverse engineering techniques.
4. Code Reconstructing
● A reconstructing tool is used to analyze the source code in order to reconstruct it. Structured programming construct violations are noticed, and the code is subsequently recreated.
● The rearranged code is then inspected and tested to ensure that no problems have arisen.
5. Data Restructuring
● Reverse engineering is the first step in data rearrangement.
● The current data architecture is examined, and data models that are required are defined.
● Data objects and attributes are identified, and the quality of the existing data structure is assessed.
6. Forward Engineering
Forward Engineering, also known as renovation or reclamation, not only recovers design knowledge from current software, but also uses it to update or reconstitute the system in order to improve its overall quality.
Advantages of Re-engineering
● Reduced Risk - Because the programme is already in place, the risk is lower than if it were developed from scratch. There are numerous issues that might arise during the creation of new software, including development issues, personnel issues, and specification issues.
● Reduction in Costs – Re-engineering is less expensive than designing new software.
● Business Rules Revealed - When a system is re-engineered, business rules that have been embedded in the system are rediscovered.
● Better Use of Existing Personnel - During re-engineering, existing staff expertise can be preserved and expanded to accommodate new capabilities.
Disadvantages of Re-engineering
● There are practical limits to how much reengineering can be done.
● Manual data management is required for major architectural modifications or dramatic reorganization of the systems.
● A re-engineered system is unlikely to last as long as a fresh system built with modern software re-engineering methods.
Key takeaway
Software re-engineering is the process of examining and altering a system in order to reassemble it in a new form. Software re-engineering is the application of Re-Engineering ideas to the software development process.
Restructuring
Restructuring software updates source code and/or data in order to make it more adaptable to future changes. Restructuring, in general, has little effect on the overall programme architecture. It tends to focus on specific module design aspects as well as local data structures defined within modules. Restructuring becomes forward engineering when it extends beyond module boundaries and embraces the software architecture.
Restructuring occurs when an application's basic architecture is sound but its technical internals require improvement. It begins when the majority of the software is usable and just a portion of all modules and data require considerable changes.
Reverse engineering
Reverse engineering is the process of dismantling an object to learn how it works in order to recreate or improve it. The technique, which originated in older industries, is now widely employed in computer hardware and software. Reverse engineering software entails utilizing programme language instructions to revert a program's machine code (the string of 0s and 1s transmitted to the logic processor) back to the source code that it was created in.
Reverse engineering is used for a variety of purposes, including learning; developing new, compatible products that are less expensive than existing ones; improving software interoperability or bridging data between different operating systems or databases; and uncovering undocumented features of commercial products.
● Level of abstraction (ideally want to be able to derive design information at the highest level possible).
● a sense of completion (level of detail provided at a given abstraction level).
● Interactions (degree to which humans are integrated with automated reverse engineering tools).
● Directionality is a term used to describe the ability (one-way means the software engineer doing the maintenance activity is given all information extracted from source code, two-way means the information is fed to a reengineering tool that attempts to regenerate the old program).
● Remove abstractions (meaningful specification of processing performed is derived from old source code).
Restructuring Benefits
● The quality of the application and the documentation has improved.
● Improves productivity and decreases developer irritation by making programmes easier to learn.
● Reduces the amount of time and effort required to maintain software.
● It is simpler to test and debug software.
Types of Restructuring
● Code restructuring
The code is restructured to provide a design that performs the same purpose as the original programme but with superior quality. In general, code restructuring techniques use Boolean algebra to model programme logic before applying a set of transformation rules to produce reformed logic. The goal is to take "spaghetti-bowl" code and turn it into a procedural design that adheres to organized programming principles.
Other restructuring strategies for use with reengineering tools have also been developed. Each programme module and the resources (data kinds, methods, and variables) that are exchanged between it and other modules are represented by a resource exchange diagram. The programme architecture can be redesigned to provide minimal coupling between modules by establishing representations of resource flow.
● Data restructuring
A reverse engineering operation known as source code analysis must be performed before data reorganization can begin. All data definitions, file descriptions, I/O, and interface descriptions in programming language statements are assessed. The goal is to extract data items and objects, as well as obtain information on data flow and comprehend the current data structures. Data analysis is a term used to describe this process.
After the data analysis is finished, the data redesign process begins. A data record standardization phase, in its most basic form, clarifies data definitions in order to create consistency across data item names or physical record formats inside an existing data structure or file format.
Another type of redesign is data name rationalization, which ensures that all data naming conventions comply with local standards and that aliases are removed as data flows through the system.
Physical alterations to current data structures are done to make the data design more effective when restructuring goes beyond standardization and rationalization. This could be a conversion from one file format to another, or in rare circumstances, from one database type to another.
Key takeaway
Restructuring software updates source code and/or data in order to make it more adaptable to future changes. Restructuring, in general, has little effect on the overall programme architecture.
Reverse engineering is the process of dismantling an object to learn how it works in order to recreate or improve it. The technique, which originated in older industries, is now widely employed in computer hardware and software.
Forward engineering is the process of adding complexities and lower-level elements to a high-level model or concept. Different principles apply to various software and database procedures in this style of engineering.
Forward engineering is significant in IT since it represents the 'typical' development approach. For instance, transforming a model into a programming language. If models are more semantically detailed, this will typically result in a loss of semantics or layers of abstraction.
As a result, forward engineering is related to the phrase "reverse engineering," which refers to an endeavor to construct backwards, from a coded set to a model, or to unravel the process of how something was put together.
Forward engineering is a process of developing or constructing an application based on the requirements provided. Renovation and reclamation are other terms for forward engineering. Forward engineering necessitates a high level of expertise. Constructing or developing an application requires more time.
Forward engineering is a method of developing high-level models or designs in order to incorporate complexities and low-level data. As a result, this type of engineering employs entirely distinct ideas in a variety of packaging and information operations. Forward Engineering is a software engineering technique that includes the SDLC and is used to reproduce an existing application. It is close to meeting all of the users' new re-engineering requirements.
Fig 3: Forward engineering
Characteristics of forward engineering
● Forward engineering is a type of engineering that employs several principles in a number of packaging and information operations.
● In IT, forward engineering is critical since it represents the "typical" development approach.
● The conversion of corporate processes, services, and functions into apps is known as forward engineering.
● The business model is built first in this process. The package is then pushed out of the developed model using a top-down technique.
● From implementation styles and logic to the occurrence of supply code, forward engineering tools are used.
● It enables users to create a business model that can subsequently be translated into data system components.
● These tools are designed to work from the top down. A forward engineering CASE tool is System Creator and Visual Analyst.
Benefits
New items with novel designs and features are introduced to the market thanks to forward engineering. Furthermore, as a new system is developed, there is minimal to no possibility of intellectual property violation.
Challenges of forward engineering
A company's risk of forward engineering is higher. It's difficult to spot problems in the system development when making product design judgments. After the product has been distributed, problems can develop, resulting in callbacks and dissatisfied customers. Because the model must be precise and thorough, forward engineering takes longer to accomplish.
Key takeaway
Forward engineering is the process of adding complexities and lower-level elements to a high-level model or concept. Different principles apply to various software and database procedures in this style of engineering.
Difference between forward engineering and reverse engineering
Key | Forward Engineering | Reverse Engineering |
Definition | Forward engineering is a type of creation or development in which the development is based on the client's or consumer's requirements. Prior to the development of the application, the requirements are provided. | Reverse Engineering, on the other hand, is a style of invention or development in which work is done based on requirements acquired from the existing application or changes/enhancements offered by the client/consumer. |
Execution Time | Forward Engineering takes longer than Reverse Engineering since the application must be built from the ground up and all methods and planning must be completed before actual development can begin. | Reverse engineering, on the other hand, takes less time to design an application because only minor changes and upgrades are required rather than the application's essential operation. |
Proficiency Skill | As previously said, applications must be designed from the ground up, necessitating a high level of skill competency while deciding on techniques and development planning in the case of Forward Engineering. | In the case of reverse engineering, however, a low or medium level of ability is sufficient. |
Nature | We can conclude that the nature of Forward Engineering is Perspective based on the aforementioned points. | Reverse Engineering, on the other hand, can be described as adaptive. |
Example | Any freshly created application or system that is starting or about to start based on supplied criteria is an example of Forward Engineering.
| Reverse engineering mostly consists of research and RND work that may be implemented in an existing application or system to improve its efficiency and functionality. |
References:
- Software Engineering‐A Practitioner’s Approach (Sixth Edition)‐Roger Pressman (TMH)
- Software Engineering (Ninth Edition)‐Ian Summerville (Pearson Education)
- Software Engineering‐Schaum’s Series (TMH)
- Software Project Management ‐ Sanjay Mohapatra (Cengage Learning)