Showing posts with label Software Architecture (SA). Show all posts
Showing posts with label Software Architecture (SA). Show all posts

Discuss Boehm's staffing principles.

The following are the five staffing principles given by Boehm for staffing a software project:

  1. The Principle of Top Talent: Use better and fewer people. The quality of the people is important. It is better to use less number of people with more skills.
  2. The Principle of Job Matching: Fit the tasks to the skills and motivation of the people available. The skill sets of people are different. The best programmer may not be suitable as an architect or a manager. Similarly, an architect or manager is not suitable as a programmer. Moreover, they should be motivated to do their jobs.
  3. The Principle of Career Progression: An organization does best in the long run by helping its people to self-actualize.Organizational training programs having educational value and project training programs are helpful for the individuals to develop their career.
  4. The Principle of Team Balance: Select people who will complement and harmonize with one another. The psychology of the team members will balance the team. They should be friendly and quickly mingle with their co-members of the team.
  5. The Principle of Phase out: Keeping a misfit on the team doesn't benefit anyone. A misfit gives the reason to find a better person or to live with fewer people. A misfit demotivates other team members, will not self-actualize and destroys the team balance.
Of the five principles, team balance, and job matching are the primary objectives. The top talent and phase out principles are the secondary objectives as they are applied to the context of team balance.

System Development Life Cycle (SDLC)

The entire process of building, deploying, using and updating ab information system is called the System Development Life Cycle. SDLC provides an overall framework for managing the process of system development. SDLC are of two types:
  1. Predictive Approach
  2. Adaptive Approach
1. Predictive Approach
    A predictive approach to the SDLC is an approach that assumes that the development project can be planned and organized in advance and that the new information system can be developed according to the plan. A predictive SDLC's are useful for a building system that is well understood and defined.
Waterfall Model
    The SDLC approach that is farthest to the left on the predictive/adaptive scale that is most predictive is called a waterfall model. It is an SDLC approach that assumes the various phases of a project can be completed sequentially, one phase leads into the next phase. A detailed plan is first developed, then the requirements are thoroughly specified, then the system is designed to the last algorithm, then it is programmed, tested and installed.
Phases:
1. Feasibility Analysis
    In this phase, Business analyst gather all the requirements from the client and document all the required in Software Requirement Specification (SRS).
2. Requirement & Specification
    After the info is gathered, the business analyst removes the inconsistency from the SRS and finalize SRS.
3. Design
    In this phase there are two stages:
  1. LLD (Low Level Design): It includes components, interfaces and packages. Example, UML diagrams.
  2. HLD (High Level Design): It includes classes, operations, relationship. Example, ER-Diagram and DFD.
4. Coding
    Implementation of above design
5. Testing
    Testing the system whether it works successfully or not.
6. Maintenance
    After the system or project has been developed it is mandatory to maintain it to keep update time to time.

Advantages:
1. Divide the problem into distinct phases that may be performed independently.
2. Natural and easy approach to solving the problem.

Disadvantages:
1. Once a requirement is finalized the new item cannot be added.
2. Until the final stage of the development cycle is complete, a working model of software does not 
    lie in the hand of the client.
3. Small changes or error that arise in the completed may cause a lot of problems.

2. Adaptive Approach
    An SDLC approach that is more flexible assuming that the project cannot be planned out completely in advance but must be modified as it progress. Some requirements of the system may yet need to be determined, after some preliminary development work.
Spiral Model
    An adaptive SDLC approach that cycles over and over again through development activities until a project is complete. After the initial planning is completed works begin in earnest of the first prototype. A prototype is a preliminary working model showing some aspect of its larger system.

    In Spiral model (adaptive approach) iteration is a fundamental element of the approach. Iteration means that work-activities analysis, design, implementation are done once, then again and yet again they are repeated. With each iteration, the developers refine the result so that it is clear to what is ultimately needed.

Advantages:
1. It is a evolutionary approach which enables developer and client to understand and react to risk at an evolutionary level.
2. It uses a prototyping as risk reduction mechanism and allows a developer to use the approach at any stage of the development.

Disadvantage:
1. Time-consuming model