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.

References

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