Open In App

Improving Software Economics | Set-2

Last Updated : 19 May, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

Software estimation is needed to be based on very careful analysis and should be supported by all. Software economics improvements should come from reducing size, improving software processes, improving team effectiveness, improving automation through software environments, and achieving the required quality. 

Improving Team Effectiveness :
No matter how productive the team is, there are always some ways available with the help of which we can be incorporated to take the productivity of the workplace to a whole new level. Efficiency generally represents a level of performance that explains and describes the process that just uses the lowest amount of inputs to develop or create the greatest or highest amount of outputs. Rather than the sum of the individuals, teamwork is much more efficient and important nowadays. A team is vulnerable whenever it is out of balance. Some of the true statements of team management are given below: 
 

  • With the help of the engineering team that is nominal or are not expert, a project that is well and carefully managed can succeed in achieving their purpose.
  • Even if the team of engineers is highly expert, a project that is not carefully managed can never succeed in achieving its purpose.
  • With the help of a team of software builders or developers that are not experts or are nominal, a system that is well-architected can be developed or built.
  • Even with the help of a team of software builders or developers that are experts, a system that is poorly architected will experience many difficulties.

Boehm (1981) have suggested and offered five staffing principles generally to examine how to staff a software project. These principles are given below: 
 

  1. The principle of Top Talent
    This principle simply suggests using fewer or fewer people that are better. The quality of people is very essential and important. So, it is highly suggested to use a smaller number of peoples with more skills and talent.
  2. The Principle of Job Matching
    This principle simply suggests to fit and adjust and task to the skills and the motivation of the people that are available. The skillset of the people usually varies from one to another. The best programmer might not be suitable as an architect or a manager. In the same way, an architect or manager is not suitable as a programmer. So, it is highly suggested to motive them to do their jobs.
  3. The Principle of Career Progression – 
    This principle states that an organization does best and better in the long run just be providing help to its people to self-actualize. All the training programs of the organization that are having educational value and project training programs are very helpful and essential for all of the individuals to develop their careers.
  4. The Principle of Team Balance – 
    This principle simply suggests to use and select the people who will complement and harmonize with one other. The psychology of all the team members will help in balancing the team. All of them should be friendly and should be quickly mingle with their co-member of the team.
  5. The Principle of Phaseout – 
    This principle suggests that keeping a misfit on the team won’t be going to benefit anyone. A misfit basically gives the reason to identify a better person or to live with fewer people. It might demotivate other team members, will not even self-actualize, and generally destroys the team balance.

Improving Automation through Software Environments : 
Nowadays, many software tools that are available in the market that helps in automating the development and maintenance of the artifacts. Some of these tools can be planning tools, requirement management tools, visual modeling tools, quality assurance tools, and many more. The development environment should also support requirement management, document automation, host/target programming tools, testing, and feature/defect tracking, etc. All of the tools should allow the designer or the developer to easily traverse between various artifacts. Tools and the environments are viewed as the primary deliver vehicle for the process automation and improvement, so the effect and impact are also much higher and greater. Some of the important concepts include: 
 

  • Forward Engineering – 
    It is a process usually applied in the software engineering principles, concepts, and methods to simply recreate an existing application. Forward Engineering is the automation of one artifact from another more abstract representation. Examples include compilers, linkers, etc.
  • Reverse Engineering – 
    It is generally a process of recovering the design, requirement specifications, and functions of a product from its code analysis. Reverse Engineering is the generation of a more abstract representation from an existing artifact. Examples include creating or developing a visual model from source code.
  • Round-trip Engineering – 
    It is actually a functionality of software development tools that simply synchronizes two or more software artifacts that are related such as source code, models, etc. Round-trip Engineering term is used to describe and explain the key capability of environments that usually support iterative development.

Achieving Required Quality : 
Some of the software’s best practices are usually derived from the development process and technologies. All of these practices have a greater impact on the addition of improving cost efficiency. Some of them also permit and allow the improvement in quality for the same cost. Some of the quality improvements with a modern process are given below: 
 

Quality Driver Conventional Process Modern Iterative Processes
Requirements misunderstandings It is usually discovered late Usually resolved early
Development risk It is unknown till date Usually understood and resolved at early stage
Commercial components It is mostly not available It is still a quality driver, but resolving trade-offs is essential to be done at early stage in the life cycle
Change management It is discovered late in the life cycle It is resolved at early stage in the life cycle process
Software Process Rigor It is document based/ It is managed, measured or calculated, and tool supported

Key elements that basically improves the quality of software include focusing on the powerful requirements and use case as early as possible in the overall life cycle process, focusing on the completeness of the requirements and traceability as late as possible in the life cycle process, use of metrics and indicators simply to measure the progress and the quality of architecture, etc. 


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads