Developing software programs is a complex process that involves problem definition, requirements development, design, coding and debugging, and unit testing, integration, and system testing and maintenance, for example. A variety of software development methodologies exist to structure, plan, and manage this process of software development. Examples of such software development methodologies include agile software development, waterfall, lean development, crystal method, dynamic systems development model (DSDM), extreme programming (XP), and feature driven development (FDD).
The following detailed description references the drawings, wherein:
The following detailed description refers to the accompanying drawings. Wherever possible, the same reference numbers are used in the drawings and the following description to refer to the same or similar parts. It is to be expressly understood, however, that the drawings are for the purpose of illustration and description only. While several examples are described in this document, modifications, adaptations, and other implementations are possible. Accordingly, the following detailed description does not limit the disclosed examples. Instead, the proper scope of the disclosed examples may be defined by the appended claims.
Developing software programs is a complex process that involves problem definition, requirements development, design, coding and debugging, and unit testing, integration, and system testing and maintenance, for example. Because of this, many organizations rely on a well-defined software development methodology to structure, plan, and manage this process of software development. Examples of a software development methodology may include, but not being limited to, agile software development, waterfall, lean development, crystal method, dynamic systems development model (DSDM), extreme programming (XP), and feature driven development (FDD).
A particular software development methodology sets forth and/or requires a particular set of rules to be followed by a user and/or a team of users. A “user,” as used herein, may refer to an administrator, a programmer, a product owner, a business analyst, a customer, and/or any other users who engage in the software development process. Wrong implementations of the required rules, due to lack of experience or misunderstanding of the process, can reduce the velocity and quality of the development. Moreover, in large enterprise environments, it may be technically challenging to manage and track the development progress of multiple development teams and their improvements over time.
Examples disclosed herein provide technical solutions to these technical challenges by providing a comprehensive guiding tool that helps users to follow a set of rules required by a particular software development methodology to improve their compliance to the set of rules. Some of the examples enable identifying a set of rules related to a software development methodology. Each rule of the set of rules may be associated with a rule-specific score. Some of the examples further enable monitoring a software development process, and determining, during the monitoring, whether at least one rule of the set of rules is invoked by an action performed by a user. If determined that a particular rule of the set of rules is invoked, a software development management score may be dynamically adjusted based on the rule-specific score associated with the particular rule. Some of the examples further enable providing a recommended action to increase the software development management score.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used herein, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. The term “plurality,” as used herein, is defined as two or more than two. The term “another,” as used herein, is defined as at least a second or more. The term “coupled,” as used herein, is defined as connected, whether directly without any intervening elements or indirectly with at least one intervening elements, unless otherwise indicated. Two elements can be coupled mechanically, electrically, or communicatively linked through a communication channel, pathway, network, or system. The term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will also be understood that, although the terms first, second, third, etc. may be used herein to describe various elements, these elements should not be limited by these terms, as these terms are only used to distinguish one element from another unless stated otherwise or the context indicates otherwise. As used herein, the term “includes” means includes but not limited to, the term “including” means including but not limited to. The term “based on” means based at least in part on.
The various components (e.g., components 129, 130, and/or 140) depicted in
Software development managements system 110 may comprise a methodology rules engine 121, a dynamic score engine 122, a recommended action engine 123, a user interface engine 124, a score report engine 125, and/or other engines. The term “engine”, as used herein, refers to a combination of hardware and programming that performs a designated function. As is illustrated respect to
Methodology rules engine 121 may identify a set of rules related to a software development methodology. As discussed above, a particular software development methodology sets forth and/or requires a particular set of rules to be followed by a user and/or a team of users. One example of software development methodology includes “waterfall” methodology. The waterfall methodology comprises several phases of development (e.g., requirements, analysis, design, coding, testing, acceptance, etc.) and is designed such that moving to the next phase of development requires the completion of the preceding phase. Development progress flows in a downward fashion; hence the name “waterfall” was conferred onto this model. The development phases, events, activities, actions, tasks, and/or items under each of the phases, and/or other rules may be defined as a set of rules associated with the waterfall methodology.
Another example of software development methodology includes “agile” methodology. This type of development is iterative and incremental (e.g., an iteration is called a “sprint” in scrum methodology, which is one type of agile methodology). In this methodology, the software is developed in small batches such that changes can be easily be introduced into the software product. In the example of scrum methodology, a product backlog refers to a list of product backlog items (PBIs) that are managed for any changes to be made to a particular software product. The product backlog may be used to capture requests for modifying a product (e.g., adding, replacing, and/or deleting features). Each PBI may be represented in the form of a user story that describes a desired feature in narrative form. In this case, a set of rules associated with the scrum methodology may include the following example rules: “a product backlog is defined before a sprint planning meeting,” “a new user story is not added to an active sprint,” “the number of defects that were opened during the sprint is less than a predefined threshold,” and “user stories are completed within a predefined timeframe.”
The set of rules related to a particular software development methodology may be identified in several ways: In some implementations, the set of rules may be pre-defined or otherwise provided by the particular software development methodology. The pre-defined set of rules may be obtained by methodology rules engine 121 and/or further defined and/or customized (e.g., a rule added, deleted, and/or modified) by a user. In other implementations, the set of rules may be manually defined by a user via methodology rules engine 121 by adding, deleting, and/or modifying any portion of the set of rules.
Each rule of the set of rules may be associated with a rule-specific score. The associated score may be given when the rule is invoked (e.g., satisfied or violated) by an action performed by a user (and/or an inaction by the user). A rule-specific score may be numerical (e.g., +5 points, −2 points, etc.), category-based (e.g., satisfied, violated, etc.), and/or of another form. Returning to the example above, the rule requiring that “a product backlog is defined before a sprint planning meeting” may be satisfied by a user's action of defining the product backlog before the sprint planning meeting, but may be violated if the user fails to define the product backlog before the sprint planning meeting. To encourage users to satisfy the rule, a positive rule-specific score (e.g., +3 points) may be associated with this rule, which may be given if the user satisfies the rule. In some implementations, another score may be associated with the same rule, which may be given if the user violates the rule. For example, a score of zero may be given if the user violates the rule, or in some situations, a negative score (e.g., −3 points) may be given.
In another example, the rule requiring that “a new user story is not added to an active sprint” may be violated if a user adds a new user story to an active sprint, but may remain satisfied if the user does not perform this action. To discourage users from violating the rule, a negative rule-specific score (e.g., −5 points) may be associated with this rule, which may be given if the user violates the rule. In some implementations, another score may be associated with the same rule, which may be given if the user does not violate the rule. For example, a score of zero may be given if the user does not violate the rule, or in some situations, a positive score (e.g., +1 point) may be given.
Such rule-specific scores may be pre-defined or otherwise provided by the particular software development methodology, and/or further defined and/or customized (e.g., score modified) by a user via methodology rules engine 121. In some implementations, a rule-specific score for a particular rule may be manually defined by a user via methodology rules engine 121.
Note that a different set of rules and/or different rule-specific scores may apply to different users (or teams). For example, a first user (or a first team) may be expected to comply with a first set of rules while a second user (or a second team) may be expected to comply with a second set of rules that is different from the first set of rules. In another example, both the first and second users (or the first and second teams) may be expected to comply with the same set of rules, but some rules may be associated with different scores for different users (or teams).
Dynamic score engine 122 may monitor a software development process. For example, dynamic score engine 122 may monitor actions performed by users (and/or their inactions) during the software development process. In some implementations, the monitoring may continue for a particular time period (e.g., a particular iteration, sprint, etc,). Dynamic score engine 122 may determine, during the monitoring, whether at least one rule of the set of rules (e.g., identified by methodology rules engine 121) is invoked (e.g., satisfied or violated) by an action performed by a user (and/or by an inaction of a user). For example, dynamic score engine 122 may, during the monitoring, detect that a new user story has been added to an active sprint by a user, and thus determine that the rule requiring that “a new user story is not added to an active sprint” has been invoked (e.g., violated) by the user's action.
Dynamic score engine 122 may determine and/or dynamically adjust a software development management score based on which rules of the set of rules are invoked. A “software development management score,” as used herein, may indicate a measure of compliance with a set of rules associated with a particular software development methodology. A software development management score may represent a measure of compliance by a user and/or a team of users. In some instances, a software development management score may be determined for the particular time period for which the monitoring took place. In this way, a software development management score determined for a user (or a team of users) may be easily compared with a software development management score determined for another user (or another team of users). Moreover, a software development management score determined for one iteration or sprint may be compared to a software development management score determined for another iteration or sprint.
For example, if a first rule of the set of rules is invoked, the rule-specific score associated with the first rule may be added to and/or subtracted from the software development management score. Similarly, if a second rule of the set of rules is invoked, the rule-specific score associated with the second rule may be added to and/or subtracted from the software development management score.
Recommended action engine 123 may identify a current status of the software development process (e.g., as being monitored by dynamic score engine 122). A “current status of the software development process,” as used herein, may comprise information related to: current progress or rate thereof (e.g., a percentage of software development being completed to date, a percentage of software development completed per a unit of time such as 10% completion per week); current development work distribution, current status of development tasks (e.g., user stories) completed, yet to be completed, delayed, etc., current development team membership, and/or any other information related to the software development process.
Recommended action engine 123 may use the current status to determine a recommended action to increase the software development management score. For example, the recommended action, if performed by a user, may increase the software development management score. If the current status indicates that “user stories are not assigned equally among the sprint members” (e.g., one of the set of rules may require the user stories to be assigned equally among the sprint members), the recommended action may be generated to suggest the user to move certain user stories to one member to another member.
In some implementations, recommended action engine 123 may determine which rules of the set of rules are predicted to be violated based on the current status. Recommended action engine 123 may generate an alert message that notifies the user of the rules that are predicted to be violated and/or provide a recommended action that, if performed by a user, satisfies at least one of the rules that are predicted to be violated. For example, this determination (of which rules of the set of rules are predicted to be violated) may be based on projecting the current progress rate forward. Consider the following example: a particular rule of the set of rules is defined that 100% content should be delivered until the end of the 8-week long sprint. Recommended action engine 123 may identify the current status (e.g., at the 4-week mark, 40% of the content is completed) and/or the current progress rate (e.g., 10% completion per week). Recommended action engine 123 may then determine that the particular rule is predicted to be violated (e.g., meaning that 100% content cannot be delivered until the end of the sprint) given the current status (e.g., given that the current progress rate is projected forward). If the current progress rate is projected forward, another 40% of the content can be completed over the next 4 weeks, resulting in 80% completion rather than 100% completion that was originally intended by the particular rule. Note that the rule that is predicted to be violated may be satisfied by performance of a recommended action.
In some implementations, the recommended action may be provided in narrative form. For example, it may state “user stories are not assigned equally among the sprint members. You can increase your score by 5 points by moving 2 user stories from Daniel to Jack.” Note that this may include the recommended action (e.g., moving 2 user stories from Daniel to Jack), a current status and/or a rule to be satisfied by the recommended action (e.g., user stories are not assigned equally among the sprint members), and a rule-specific score associated with the rule to be satisfied by the recommended action (e.g., 5 points).
A recommended action may be tailored to a particular user (e.g., different users may have a different set of recommended actions, the same recommended action in different narrative form, etc.) and/or to a particular development team.
User interface engine 124 may present, via a user interface, the software development management score, a recommended action, a current status and/or a rule to be satisfied by the recommended action, a rule-specific score associated with the rule to be satisfied by the recommended action (e.g., an increase in the software development management score if the recommended action is performed by the user), etc. In some examples, if a cursor pointer hovers over a graphical user element representing the software development management score, user interface engine 124 may cause a display of the recommended action (e.g., moving 2 user stories from Daniel to Jack), a current status and/or a rule to be satisfied by the recommended action (e.g., user stories are not assigned equally among the sprint members), and/or a rule-specific score associated with the rule to be satisfied by the recommended action (e.g., 5 points).
In this way, if a user (e.g., development team lead) is dissatisfied with the current software development management score, the user may easily receive several recommended actions to increase the level of compliance with the set of rules imposed by the given software development methodology.
Score report engine 125 may generate a score report that includes a detailed breakdown of the software development management score. The report may include rules that have been invoked, rule-specific scores associated with those invoked rules, any statistics related to the software development process (e.g., overall development progress rate), recommended actions by recommended action 123, recommended actions that have been performed by a user, and/or other information related to the software development process and/or software development methodology.
In performing their respective functions, engines 121-125 may access data storage 129 and/or other suitable database(s). Data storage 129 may represent any memory accessible to software development managements system 110 that can be used to store and retrieve data. Data storage 129 and/or other database may comprise random access memory (RAM), read-only memory (ROM), electrically-erasable programmable read-only memory (EEPROM), cache memory, floppy disks, hard disks, optical disks, tapes, solid state drives, flash drives, portable compact disks, and/or other storage media for storing computer-executable instructions and/or data. Software development managements system 110 may access data storage 129 locally or remotely via network 50 or other networks.
Data storage 129 may include a database to organize and store data. The database may reside in a single or multiple physical device(s) and in a single or multiple physical location(s). The database may store a plurality of types of data and/or files and associated data or file description, administrative information, or any other data.
In the foregoing discussion, engines 121-125 were described as combinations of hardware and programming. Engines 121-125 may be implemented in a number of fashions. Referring to
In
Referring to
In
Machine-readable storage medium 310 (or machine-readable storage medium 410) may be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. In some implementations, machine-readable storage medium 310 (or machine-readable storage medium 410) may be a non-transitory storage medium, where the term “non-transitory” does not encompass transitory propagating signals. Machine-readable storage medium 310 (or machine-readable storage medium 410) may be implemented in a single device or distributed across devices. Likewise, processor 311 (or processor 411) may represent any number of processors capable of executing instructions stored by machine-readable storage medium 310 (or machine-readable storage medium 410). Processor 311 (or processor 411) may be integrated in a single device or distributed across devices. Further, machine-readable storage medium 310 (or machine-readable storage medium 410) may be fully or partially integrated in the same device as processor 311 (or processor 411), or it may be separate but accessible to that device and processor 311 (or processor 411).
In one example, the program instructions may be part of an installation package that when installed can be executed by processor 311 (or processor 411) to implement software development managements system 110. In this case, machine-readable storage medium 310 (or machine-readable storage medium 410) may be a portable medium such as a floppy disk, CD, DVD, or flash drive or a memory maintained by a server from which the installation package can be downloaded and installed. In another example, the program instructions may be part of an application or applications already installed. Here, machine-readable storage medium 310 (or machine-readable storage medium 410) may include a hard disk, optical disk, tapes, solid state drives, RAM, ROM, EEPROM, or the like.
Processor 311 may be at least one central processing unit (CPU), microprocessor, and/or other hardware device suitable for retrieval and execution of instructions stored in machine-readable storage medium 310. Processor 311 may fetch, decode, and execute program instructions 321, and/or other instructions. As an alternative or in addition to retrieving and executing instructions, processor 311 may include at least one electronic circuit comprising a number of electronic components for performing the functionality of at least one of instructions 321, and/or other instructions.
Processor 411 may be at least one central processing unit (CPU), microprocessor, and/or other hardware device suitable for retrieval and execution of instructions stored in machine-readable storage medium 410. Processor 411 may fetch, decode, and execute program instructions 421-425, and/or other instructions. As an alternative or in addition to retrieving and executing instructions, processor 411 may include at least one electronic circuit comprising a number of electronic components for performing the functionality of at least one of instructions 421-425, and/or other instructions.
In block 521, method 500 may include identifying a set of rules related to a software development methodology. Each rule of the set of rules may be associated with a rule-specific score. Referring back to
In block 522, method 500 may include monitoring a software development process. Referring back to
In block 523, method 500 may include determining, during the monitoring, whether at least one rule of the set of rules is invoked by an action performed by a user. In response to determining that a first rule of the set of rules is affected, method 500 may proceed to block 524. Otherwise, method 500 may return to block 522. Referring back to
In block 524, method 500 may include dynamically adjusting a software development management score based on the rule-specific score associated with the first rule. Referring back to
In block 525, method 500 may include providing a recommended action to increase the software development management score. Referring back to
In block 621, method 600 may include identifying a set of rules related to a software development methodology. Each rule of the set of rules may be associated with a rule-specific score. Referring back to
In block 622, method 600 may include identifying a current status of a software development process. Referring back to
In block 623, method 600 may include determining which rules of the set of rules are predicted to be violated based on the current status. Referring back to
In block 624, method 600 may include providing a recommended action that, when performed by a user, satisfies at least one of the rules that are predicted to be violated. Referring back to
The foregoing disclosure describes a number of example implementations for software development managements. The disclosed examples may include systems, devices, computer-readable storage media, and methods for software development managements. For purposes of explanation, certain examples are described with reference to the components illustrated in
Further, all or part of the functionality of illustrated elements may co-exist or be distributed among several geographically dispersed locations. Moreover, the disclosed examples may be implemented in various environments and are not limited to the illustrated examples. Further, the sequence of operations described in connection with
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2015/064667 | 12/9/2015 | WO | 00 |