Discussion

Discuss the effect of implementation planning and reason the role of affinity analysis on reengineering effort.  What results are based on affinity analysis? Also discuss, why cost and schedule estimates are done before detailed requirements/design analysis? When, do you think, can these estimates be postponed to a later stage of software development?

 
Discuss the effect of implementation planning and reason the role of affinity analysis on reengineering effort.  What results are based on affinity analysis?
Affinity analysis is a method used to find and understand the relationships between different business processes that are defined through the implementation planning. According to Conger (2008), after gathering the information about the organization to be reengineered, the four main architectures are defined:
  1. Data
  1. Process
  1. Network (e.g. company locations)
  1. Technology (e.g. existing hardware)
Using the Data and Processes Architectures, we, as software engineers, can do further analysis of the organization processes by forming a CRUD Matrix which showcases the required data processing in the system-to-be, including read, update, create, and delete procedures (Conger, 2008).
To push this analysis process to the next level, it is possible to find also the data processing procedures that are related to each other so that the team can work on them consecutively. This method is called affinity analysis in practice, and it is useful to find the processes that work around a common topic and to discover the dependencies among the features to be implemented in the software project. The following figure is retrieved from Conger’s textbook (2008)` and it demonstrates the CRUD Matrix along with two affinity clusters which are the results of this analysis that help support the implementer's decisions.
notion image
 
 
Also discuss, why cost and schedule estimates are done before detailed requirements/design analysis? When, do you think, can these estimates be postponed to a later stage of software development?
There are many scenarios of how projects are usually announced and implemented, but customers or clients post the project announcement as a Request for Proposal (RFP) document that includes the expected implementation duration and costs, with just outlines of the desired system and a small amounts of generic information about the requirements. Project implementers (usually software development service providers) apply for the tender and provide their technical and financial proposals in this stage. Still, they cannot discuss and analyze the requirements in-depth because it is a time-consuming process and it costs money, which is something to avoid in case there is no deal between the client and the service provider.
In my opinion, I think it is good for both parties to mention the requirement/design analysis in the contract as one of the main project stages to be done before kicking off the development stage with an estimation of the costs and time needed. In this way, the client will be informed of this process and the required costs and time, and also aware of its importance on the whole software development life cycle. Once the contract is won and the deal is made, the project implementers can directly start to analyze the requirements and propose a system design in the first weeks of the project.
 
Reference
Conger, S. (2008). The New Software Engineering. The Global Text Project