Process Engineering

Reference is made herein to an employee tracking application case study presented in a prior article. In prior reports, the employee tracking application was estimated to take 111 days and $428,000 in human resources. A sequential life cycle development model was constructed. However, risks associated with the sequential life cycle development included a lack of stakeholder involvement in the development along with late stage testing for two new and vital interfaces. An iterative approach to development was proposed that reduced both of these risk factors. This article addresses the specific processes that will take place in the software development life cycle. In the process, inputs, resources, controls, and outputs at each stage are carefully considered. The result is a more detailed description of the software development process at each stage of development.

Software Development Processes

Business Process Management (BPM) begins with process modeling, “a business-driven exercise in which current and proposed process flows are documented in detail and linked to quantifiable performance metrics” (Silver, 2006, p. 28). The software development process in the present context involves seven processes; project initiation, requirements elicitation and analysis, design, construction, testing, release, and maintenance. Each of these processes can be modeled by examining in detail the inputs, resources, controls and outputs at each phase of the development life cycle.

A diagram representing the business processes which will take place during development of the software application has been included as an attachment to this report. The document represents each stage of development as a process with inputs, resources, controls, and outputs. Inputs are the items which arrive at that stage – the raw material provided in advance. Resources are the information, personnel, and other resources given for the process. Controls monitor the process to ensure the desired outputs are produced. Organizing each stage as a process in this way resulted in important refinements which are summarized in this report.

Process Specifications

Project Initiation. In considering project initiation, the business need, charter, scope, and project objectives were considered inputs. Resources at this stage are primarily related to management personnel in a project manager, a planning task force, and a management approval committee to review and approve any plans as they develop. Outputs of this initial stage include a project plan including duration and cost. Detailed planning documents including a COCOMO (University of Michigan-Dearborn, 2020) effort estimation and activity based estimates (OpenProj, 2019) will help ensure accuracy in the planning outputs. Additionally, a management level stage gate approval (HHS, 2012) of the plans generated provides further control on the suitability of the plans generated.

Outputs for the project initiation phase include guiding documents and controls for the life of the project. The project plan, for example, will include design standards to be used in the design phase, coding standards for the construction phase, and testing standards to be used in the testing phase. Requirements change control as procedures for handling maintenance issues should also be included in the plan document. Control reports for the life of the project are also initiated at this point, including an action item report, project cost report, and staffing report.

Requirements. The project plan and use-case scenarios from the project initiation are important inputs for the requirements processes. As part of formalizing the requirements process, outputs were further defined in terms of the appropriate UML diagrams to be produced. In particular, the requirements process would need to generate an Activity Diagram and a Use-Case Diagram (Miles & Hamilton, 2006, pp. 22-56). .

Design. UML diagrams from the outputs phase would accompany detailed requirements specifications and change control procedures as part of the design process inputs. Similar to the requirements phase, outputs for the design process were more detailed calling for object identification, class definitions, and UML class and system diagrams (Miles & Hamilton, 2006, pp. 63-107). UML Sequence Diagrams constructed in the design phase will provide important details on system procedures, objects and methods, for successful achievement of each required use case (Miles & Hamilton, 2006, pp. 108-130)

Construction. Code construction inputs consist of the object and class definitions and UML diagrams from the requirements analysis and design phases. Important resources for developers here include clearly defined role assignments for each developer and coding standards to be utilized on this project (Schach, 2011, pp. 509-510). Important controls include weekly code reviews, coding defect reports and a code churn, i.e. how often a developer needs to reconstruct portions of code (Gutha, 2015).

Testing. Inputs for testing include the fully-coded application, requirements specifications, and use-case scenarios. In addition to a team of developers for testing, resources for testing include test plan document, including suitable testing approaches and levels for the system (Bruegge & Dutoit, 2010, p. 478). Controls for the testing process include a testing report of test cases submitted, test cases passed and failed, and a test case back log report. A defect tracking report will also be used to track defects found in the testing process, when they are discovered and when they are corrected in the application code. The final control for the testing process is a stage gate review. Outputs including an approved testing log and the final revised coding artifact are forwarded for use in the release process.

Release. With the finished code artifact and approved testing log, the release team is guided by an implementation plan to accomplish rollout of each new release. To monitor their efforts, the release team will maintain an active user report. In addition, after the first release the release team will also monitor the bugs reported by customers by the maintenance team. Important outputs for the release team include user manual and training materials (Ahmed, 2011, p. 203). After each release, code artifacts are returned to the requirements team for preparation of the next release.

Maintenance. The maintenance team collects and reports information concerning customer bugs reported and follows procedures established in the project plan for resolving bugs as they arise. In some cases, the maintenance team will need to initiate change order requests to rectify a verified defect within the system. Change order requests are forwarded to the requirements team to begin the development process for necessary changes.

Summary

This article reports on the refinement of the software development processes for the employee tracking application. Each phase of the software development life cycle is taken as a process with inputs, resources, controls, and outputs. Both inputs and outputs of each phase were further refined, including specification of UML diagrams to be produced in the requirements and design phases. Controls for each process included reports and metrics to be measured as well as stage gate approvals at the project initiation, design, and testing stages. In addition, control reports and metrics for the project overall were identified.

References

Ahmed, A. (2011). Software project management: A process driven approach. Boca Raton: CRC Press. Bruegge, B., & Dutoit, A. H. (2010). Object-oriented software engineering, 3rd Edition. Upper Saddle River: Pearson Education. Coding Club. (2017, February 27). Intro to Github for version control. Retrieved from Coding Club: https://ourcodingclub.github.io/2017/02/27/git.html Department of Health and Human Services. (2012, July 18). Enterprise performance life cycle framework: Overview document. Retrieved from hhs.gov: https://www.hhs.gov/sites/default/files/ocio/eplc-lifecycle-framework.pdf GitHub. (2020). GitHub: Home Page. Retrieved from GitHub: https://github.com/ Gutha, S. (2015, August 31). Code Review Checklist To Perform Effective Code Reviews. Retrieved from EvokeTechnologies: https://www.evoketechnologies.com/blog/code-review-checklist-perform-effective-code-reviews/ Lee, C. (2020, January 29). Metrics in project management. Retrieved from cPrime: https://www.cprime.com/2010/07/metrics-in-project-management/ Martin, R. C. (2009). Clean code (The Robert C. Martin Clean Code Collection, Kindle Edition (2012) ed.). Upper Saddle River: Pearson Education. Miles, R., & Hamilton, K. (2006). Learning UML 2.0. Sebastopol, CA: O’Reilly. OpenProj. (2019, March 10). OpenProj – Project Management. Retrieved from SourceForge: https://sourceforge.net/projects/openproj/ Ruparelia, N. B. (2010). Software development lifecycle models. ACM SIGSOFT Software Engineering Notes, Vol. 35, No. 3, 8-13. Schach, S. (2011). Object-oriented and classical software engineering, 8th edition. New York: McGraw Hill. Silver, B. (2006, February 20). Sketching out BPM. Infoworld, pp. 27-35. Stackify. (2017, September 16). What are software metrics and how can you track them? Retrieved from Stackify: https://stackify.com/track-software-metrics/ University of Michigan-Dearborn. (2020, January 19). Basic COCOMO Model. Retrieved from University of Michigan-Dearborn: CIS, CIS 525: http://groups.umd.umich.edu/cis/course.des/cis525/js/f00/gamel/introduction.html

Leave a Comment

Your email address will not be published. Required fields are marked *