The Software Life Cycle

A framework is a Standard way to build and deploy applications. The Software Process Framework is a foundation of complete software engineering process. A generic process framework encompasses  five activities which are given below one by one:

Communication: Understand stakeholder intent and requirements.

Always prepare for meetings.  If the project domain is unfamiliar, do some research on the topic and provide the findings to other members of the team so everyone understands the topics discussed. Appoint a person in charge of every meeting, prior to each meeting. Face-to-face meetings work better, but sometimes not always an option. Take notes, meeting minutes, and document decisions. Distribute notes and decisions to attendees. Upload the documents to a share network resource, in case you need to review prior decisions and notes. Always stay focused throughout the meeting; modularize the discussion. Once something is agreed to, move on; move on even if not agreement, or no clarity (table item). Listen to the needs of the client, do not start to form answers until they are finished. Thus,  there is less of a change you might miss an important detail. Use professional body language: do not roll your eyes nor shake your head.

Planning

Project management software can be used during the lifespan of the project to monitor work on each module, forecasting the development time, estimate required human and technical resource hours, and calculating a critical path for the project. Over planning wasted time, and under planning creates chaos. Work with the stakeholder to understand what is and is not in the scope of project.  Involved stakeholders in discussions, when appropriate. They will help to set priorities, deadlines, which keeps the project on time and on budget. Iterate on the planning, don’t try to do everything at once. Break down tasks into small tasks and have plan how to complete each one. Incorporate risk management throughout each phase of the project; consider what risks are possible as you plan and be realistic.

Managing the quality of a software project and its development processes must meet the requirements and satisfy the user’s experience. Define how you will achieve quality and accommodate change. Track the project of each iteration of the project often;  make adjustments each time plan reviewed. Don’t leave team members out of planning.

Modeling

Adapt models from another project to this one, making needed changes. Explain why you are building each model and build a useful model, not perfect model. Thus, the built model so they can be changed. Do not create models that are not needed, this may waste time and take the project out of scope. When presenting a model ask for feedback on the model by all team members. Encourage team members to share feeling about the state of the model. Ask them what they like and what they do not like.  Using structure charts during the implementation of a system will show users the program modules and the relationships among them. Structure charts consist of rectangle that represent the program modules, with arrows and other symbols that provide additional information. This helps when the analysts and programmers understand the purpose of each module during the designing and testing each module before being run on the entire system.

Construction

Programmer can use the principles of software engineering to manage and improve the quality of the finished system. Working from a specific design, a program will use the purposed programming language to transform the program logic into a program module which the rest of the group can work on simultaneously. To simplify the integration of system components and reduce code development time an integrated development environment (IDE) will make programming easier. Coding each program must be tested to make sure it will function correctly, after the programs will be tested in groups, and finally running the entire system.

Before you write first line of code, make sure you understand problem to be solved and the design principles. Choose the best programming language for this problem, then select programming environment. Select data structures to match design and keep conditional logic simple and minimal. Follow coding standards at your site for variable names, this will help ensure the code can be easily maintained in the future. Write self-documenting code to help yourself and other developments. Create unit tests to help reduce bug and problems in the software. Create nested loops so they can be easily tested. A successful test is one that discovers a bug.

Deployment

Once delivered to the client see if the client can provide feedback on how the application is work. Using the basis of the clients feedback we modify the products for supply better product. To ensure a successful deployment, if possible, try to use a staged deployment model:

#1- Development: A local developer’s workstation.

#1 – Testing: An integration environment where developers merge changes to test that they work together to create a working application. Unit testing will need to be performed on an individual program or modules. This will help to identify and remove execution errors that could cause the program to terminate abnormally, and logic errors that could have been missed during the desk checking. Integration testing will need to occur on two or more programs that might depend on each other.

#3 – Staging: This is where tested changes are run against a production-equivalent environment with data to ensure the application will work properly

#4 – Production – The live production environment.

If an environment of stage is not kept up to date this can lead to out of data testing and possible incorrect environment factors causing promoting a model or application to fail, thus causing rollback  in development.

Why Projects Fail

Executive Management, project Managers, and Team Members are the three sets of players for every project.  Project Management Institute, Inc. identifies four reasons why projects fail: lack of visibility, unclear objectives, resource workload, and gaps in communication.

Visibility into a project entails identifying tasks, reports, and schedules posted in real-time.  Many projects fail because key players are not informed of progress and updates thus leading to confusion.  Unclear objectives entail setting realistic goals and strategies.  Many projects fail because a lack of vision leads to chaos.  Resource workload entails the execution of a reasonable workload.  Overworked employees get burned out and ultimately quit.  Gaps in communication leaves key players uninformed.

Good practices should be communicated with the onset of every new project.  Executive Management must demonstrate effective leadership.  Project Managers must communicate to management and team members.  Team members must receive proper communication so they can effectively perform their job. Project Managers have been known to be overconfident in their abilities.  Overconfidence in meeting budgets, schedules, and project objectives can compromise the project and/or lead to disaster.  If new evidence presents itself along the way, do not ignore it.  Knowing when new evidence needs to be considered to re-evaluate a project could be crucial to success.

Due to eminent failure and unrecoverable costs, knowing when to pull the plug on a project may be a necessary evil.  While objectives need to be prioritized, it is important to understand that priorities and objectives change.  Projects require constant monitoring.  While these four points don’t explain everything that could go wrong, it serves as a reminder for all of us to consider.

Communication Management Plans

A communication management plan is a document that will help guide a project. It is part of the overall plan for the project’s communication for the lifetime of the project, and will also define the communication requirements and how information is distributed during for the project. The Project Manager take a proactive role in ensuring effective communications on a project, taking a contingency approach to communicating with employees and communicate on a personal level. They can also suggested methods or technologies for conveying the information to the team and stakeholders and what will be the frequency of communication.

Project communications management is an important part of the project life span. Failure to communicate during the starting phases of a project may result in an unclear project scope and unrealistic schedule for each phase. A communication management plan’s goal is to ensure a timely and appropriate generation, collections, dissemination, storage and disposition of project information. One of the main things which should be address is the communication requirements for stakeholder; the people who may be impacted by the success or failure of a project. Therefore, inclusion of their perception regarding the project is important for the communication management plan’s success. Having a communication plan for stakeholders is an important element in project management, and needs to be carefully formulated. Its layout generally includes the stakeholder identified roles and the designed management strategy. The information to be communicated must have an appealing format, meaningful content, and good level of detail.

Stakeholder Management is an important discipline that any project manager can use to win support from others, helping to ensure that the projects succeed where others may have failed. Analysis of the project’s stakeholder is the technique used to identify the key people who have to be won over the life span of a project. Building the support that will help the project succeed. A project manager can use the opinions of the main stakeholders to shape projects at an early stage, making it more likely they will support you. Their input can also improve the quality of your project. A project which has gained main support from the stakeholders may win more resources, making more possible that the projects will be successful. By communicating with stakeholders early and frequently, the project manager can ensure that they fully understand what the team is doing and understand the benefits the project.

If issues starts to arise an escalation procedures for will help to resolving issues and may result in a revision procedures for updating the communication management plan. For communication to success each member of the project team needs to have a mixture of technical and soft skills, like social networking communication. If communication is still an issue a glossary of communication terminology can be used to help the project team communication on a more common ground. One popular communications method is weekly reporting method, when every employee composes an e-mail report, communicating the to team about information on their activities of the preceding week, plans for the following week, and any other information deemed relevant to the group.

In conclusion, a communication management plan is an extremely important part of leading a successful project. Project managers define how to format communications with their team members and stakeholders. Having a successful and clear relationship with stakeholders helps a project gain support and resources for a team. The support of stakeholders, a team’s hard and soft skills set contribute greatly to a project’s success and defined by the communication management plan.

Software Quality Management

Quality is defined as the sum of the total characteristics of a software entity that bears on its ability to satisfy or implied needs. The purpose of software project quality management is to ensure that the project will satisfy the needs for which it was undertaken. Managing the quality of a software project and its development processes must meet the requirements and satisfy the user’s experience. Businesses often make quality management a serious discipline a major component of their IT risk reduction strategy.

A software package must conform to the written requirements of the project’s processes and deliverables. When the project is “fit for use” is when the product can be used as it was intended, ensuring the product will satisfy the needs for which it was developed for. In the end the customer will decide of the quality of the software is acceptable or not. Design of experiments is a technique that helps to identify which variables have the most influence on the overall outcome of a process for understanding which variables affect the final outcome is an important part of quality planning.

There are many scope aspects of IT projects that affect the quality of a project are. The biggest aspect is the system’s functionality, the degree to which a system performs its intended function. A system must contain the features that have characteristics which are appealing to the intended user. After the user interacts with a system it must generates outputs which are shown on the screens and reports, it is important to define clearly what the screens and reports look like for a system. A system’s performance will address how the software package will perform to the customer’s intended use. To design a system with high-quality performance, project stakeholder must address many issues. Reliability is the ability of a product or service to perform as expected under normal conditions. Lastly, maintainability addresses the ease of performing maintenance on a product. If a software system breaks down after being implementing within a system, project team must review the project to fix the problem to give the user a future satisfying experience.

Planning quality management is the ability to anticipate situations and prepare actions that bring about the desired outcome. Having a plan for the software development life span help to stop a lot of the issues which comes from developing a software system. The first step is to define the quality to match the requirements of both the business and achieving a satisfying user experience. The second step is to broadcast a simple quality metrics, this helps to reduce defeats, as well as keeping the quality on the minds of the whole development team and expose when efforts fall short. Another possible step it to keep fine tuning the project’s goals to make sure the requirements are being meet and each user test of the system has a satisfying experience. Getting the requirements right the first design phase means the software would need to be reworked less and less retesting and troubleshooting code to test for bugs. Designing a simple application helps to lessen the risk for bugs and is easier to test and rework if needed.

Domain Model vs. Design Model

A domain model is a conceptual model and solution independent. This resulting from a domain and requirements in system analysis, or inception, phase of a development project. This will provide visual representation of the class within the domain, basic relationship between domain classes, and any key attributes of the class. Domain models are also called:

  • Conceptual models
  • Domain object models
  • Analysis Object Models

Using a domain model creates a blueprint saving time by help the design team will gain a better understanding of the system requirements reducing complexity, testing, maintainability. The system will have less bugs and better meet user requirements faster within the project timeline.

Domain Model

A design model is a logical model and platform independent resulting from system design activities in the elaboration phase. This will describe how everything works together, are connected, and interact with each other. design model.

Design Model

Project Phases and Estimate

How accurate do you think an “order of magnitude” cost estimate should be?

A Rough Order of Magnitude (ROM) estimate is an unreliable estimate of the cost and effect to complete a project. This estimate is developed early in the project when there is a lack of detailed information. Some experts say the ROM estimate should be at least ±50% but can variety.

 

Can you compare and contrast a business case for a software project with a business case for replacing windows in a house where energy savings are being used as the reason for replacement?

Both cases would follow the normal project management steps, yet the risk and time line of each would depend on the size of each project. The tools used and skills required to for a software project are different then for replacing a window. After each project is complete there is the issue how much maintain it will require. A software project depending on the number of features and platform may require a on-going team to help maintain and fix bugs as they appear, where replacing a window may not require any maintained depending on the structure and natural factors.

Project Phase Software Project Replacing a Window
Initiation

Show the need and return on investment

System doesn’t meet the needs of our users and/or environment Save money on energy bill or needs to be replaced
Planning

Create schedule, tasks, and allocate resources

System requirements, number of developer & testers, budget allocation How big is the window jam and vender selection; check the rough opening
Execution

Assign tasks to team member and paperwork

Create UML diagrams and assign development tasks How many people will it take to replace the window
Control

Monitor progress and control changes

After end module is compete testers will ensure it works to specification Check for gaps, level, and squareness
Project Close

Closing paperwork & lessons learned

Launch the new system and deliver to users Clean area and verify installation

Agile Methodology vs. Waterfall Model

Waterfall project methodology

1200px-Waterfall_model.svg.png

A model in which every stage of a product’s life cycle takes place in sequence and emphasizes a logical progression of steps. Before moving to the next phase, there is usually a review and sign off process to ensure that all defined goals have been meet. Ideal for projects that have a specific documentation and fixed requirements, estimated timeline, ample resources, and well understood technology.

7 non-overlapping stages

  1. Requirements
  2. Analysis
  3. Design
  4. Coding/Implementation
  5. Testing
  6. Operating/Deployment
  7. Maintenance

Advantages

  • Upfront documentation and planning stages allow for large or shifting teams to remain informed and move towards a common goal
  • Forces structured and disciplined organization
  • Simple to understand, follow, and arrange tasks
  • Defines milestones and deadlines

Disadvantages

  • Design is not adaptive to change
  • Delays testing until end of development life cycle
  • Does not consider error correction
  • Does not handle requests for change, scope adjustments or updates

 

Agile Methodology

1 Fzz56Ps_vQSTPHDO9IomXw.png

An approach to software development under which requirements and solutions evolve through the collaborative effort of self-organizing and cross-function teams and their customers/end users. Contains a set of different projects that are iterations of different stages; focused on improving the quality and feedback from users.

Advantages

  • The client is involved throughout the project and can give feedback to change the product and its features as best suitable for the business and the client.
  • Change requests are easier to implement as the agile methodology follows an adaptive planning method, with plenty of room to accommodate change requests as they come.

Disadvantages

  • Requires experience and quick decision-making ability to accept some changes and postpone other changes for the next sprint.
  • Does not work well if the client or the team does not understand agile methodology and could not keep up with the fast-paced environment.
Agile Waterfall
Iterations Stages
Constant Business Interaction Communication is varied between high/low iterations
Scrum master Project Manager
Can go back to previous iteration Cannot go back to previous stages
Increased speed Increased Quality
Flexible Structed and rigid