Skip to content

Good and Bad Practices

Safa Andaç edited this page Feb 23, 2016 · 3 revisions

Best Practices in Software Development

1. Develop Iteratively

Critical risks are resolved before making large investments Initial iterations enable early user feedback Testing and integration are continuous Objective milestones provide short term focus

2. Manage Requirements

Requirements are dynamic - expect them to change during software development User's own understanding of the requirements evolves over time Gain agreement with user on what the system should do and not how Maintain forward and backward traceability of requirements

3. Use Component Based Architecture

Using components permits reuse Choice of thousands of commercially available components Improved maintainability and extensibility Promotes clean division of work among teams of developers

4. Visually Model Software

Visual modeling improves our ability to manage software complexity Capture the structure and behavior of components Hide or expose details as appropriate for the task Promote unambiguous communication

5. Verify Software Quality

What is quality? - The characteristic of producing a product which meets or exceeds agreed upon requirements by some agreed upon objective measures. Software problems are 100 to 1000 times more costly to find and repair after deployment Develop test suites for each iteration and test for - Functionality Reliability Performance

6. Control Changes to Software

Without explicit control parallel development degrades to chaos Decompose the architecture into subsystems and assign responsibility of each subsystem to a team. Establish secure workspaces for each team i.e. each team is isolated from changes made in other workspaces. Establish an enforceable change control mechanism where Change requests are prioritized Impact of the change request is assessed Plan put in place to introduce change in a particular iteration

Disadvantages of Teamwork

1. Delays

When generating new ideas, the team will have to discuss them. This requires a meeting. The meeting should have a purpose and a goal so that it is efficient and not waste the time of team members. Unfortunately, team meetings can often become social gathering, if not managed properly. It causes delays.

2. Conflict

After forming a team, conflict is a common result. Cognitive conflict results from problems related to differences of opinion. Affective conflict results from personal differences between the team members. Latter is more destructive, resulting in arguments, hostility and resentment.

3. Decision Process

One person can make decisions more quickly than a team. The needs input from several people can prolong the decision-making process and complicate making even the simplest decisions. Consensus can become part of the team’s culture. This can stifle creativity and innovation.

4. Productivity

Productivity may diminish because of several reasons. A period of adjustment may occur after forming new teams. The adjustment may require training and can slow down productivity. Members of a team may not participate equally. A member of a team is given to a part of the task to complete and may not complete in the required time because of his/her unwillingness. It is difficult to identify the weak performers and address the problems accordingly. Many teams are not conducive to using imagination and restrain individuals who do not work well within a team. Some people prefer to work on their own.

Team Members:

#Project: #

  • Requirements
  • [API Docs](API Docs)
  • Plan
  • Themes/Features
  • Personas
  • [User Stories](User Stories and Acceptance Criteria)
  • [Domain Analysis](Domain Analysis)
  • [Responsibility Assignment Matrix](Responsibility Assignment Matrix)
  • [Project Communication Plan](Project Communication Plan)
  • [Test Cases](Test Cases)
  • [Setting Development Environment](Setting Development Environment)

#Diagrams: #

  • [Use Cases and Use Case Diagram](Use Cases)
  • [Use Case Drafts](Use Case Drafts)
  • [Class Diagram](Class Diagram)
  • [Activity Diagram](Activity Diagram)
  • [Sequence Diagrams](Sequence Diagrams)

#Mockups: #

  • [Web Mockups](Web Mockups)
  • [Mobile Mockups](Mobile Mockups)

#Meetings: # Spring Semester

#Milestones: # Spring Semester

  • [Milestone-1 Report](Milestone-1 Report)

      Fall Semester
    
  • [Milestone-1 Report](Milestone-2 Report)

  • [Milestone-2 Report](Milestone-3 Report)

  • [Milestone-3 Report](Milestone-4 Report)

#Group Works: #

#Documentations: #

Clone this wiki locally