Symptoms of Software Development Problems
1) Not properly understanding the end-users needs.
2) Inability to deal with changing requirements.
3) Modules that do not fit together.
4) Software that is hard to maintain.
5) Late discovery of project flaws.
6) Unacceptable software performance.
7) No coordination between team members.
Root Causes of Software Development Problems
1) Ad hoc requirement.
2) Gap in communication.
3) Overwhelming Complexity.
4) Inadequate testing.
5) Undetected inconsistencies in requirements, designs and implementation.
6) Insufficient Testing.
7) Failure to take care of Risk.
1) Develop Software iteratively.
2) Manage Requirements.
3) Use Component based architectures.
4) Visually model software.
5) Continuously verify software quality.
6) Control changes to software.
Rational Unified Process builds on these 6 best practices to deliver well-defined process.
It is a software engineering process.
It provides a disciplined approach to assigning tasks and responsibility within the organization.
It is a process framework and a process product.
In addition to the 6 best practices, 3 other are important features of RUP
1) Use-Case-Driven Development – which play a major role in requirement, design, test and implementation.
2) Process Configuration – to produce high quality software.
Process describes who, what, how and when.
The work performed by the workers. It is a unit of work an individual is asked to perform that role.
Is a piece of information that is being produced, modified or used by the process.
It can be a Source code / Executables / Document / Use – case or Design model.
3) Tools Support
Use-Case is a sequence of actions the system performs.
Actor is someone or something outside the system and interacts with the system.
Flow of Events sequence of actions between the actor and the system written in simple language.
RUP is a use-case driven approach. This means that the use cases defined for the system are the basis for the entire development process.
Written in simple prose, use cases are understandable by wide range of stakeholders.
Use cases synchronize the content of various models.
Use cases are organized in use-case model, which also expresses the relationships among them.
Scenarios are described instances of use cases.
Use case drive numerous activities in RUP
· Creation and validation of the design model.
· Definition of test cases and test procedures in the test model.
· Planning of Iterations.
· Creation of user manuals.
· Deployment of the system.
Project Management Workflow
PM is the art of completing objectives by managing the risk factor and overcoming the constraints to deliver the project.
PM Workflow has three purposes
1. To provide framework for managing software-intensive projects.
2. To provide practical guidelines for planning, staffing, executing and monitoring projects.
3. To provide framework for managing risk.
Risk is a variable, which can take a value that endangers the success of a project.
It can be direct (over which the project has a large degree of control) or indirect (on which the project has less or no control)
Strategies with Risk
1. Risk avoidance: Reorganize the project such that it cannot be affected by risk.
2. Risk Transfer: Reorganize such that someone or something bears the risk.
3. Risk acceptance: Monitor the symptoms and decide on what to do if it materializes.
· Migrate to Risk: Take immediate proactive steps to reduce the impact.
· Define Contingency plan: Determine what to do if risk becomes problem.
Goals are to
· Improve productivity.
· Improve predictability.
· Improve customer satisfaction.
· Increase revenue.
· Increase reuse.
Is a measurable attribute or entity. It can be a raw data that is used to calculate a metric.
Each metrics has one or more collected metrics.
Planning an iterative Project
· Phase plan.
· Iteration plans.
· Project Manager.
· Project Reviewer.
· Software Development Plan.
Produce acceptance plan.
Risk management plan.
Problem resolution plan.
· Business case.
· Iteration plans.
· Iteration assessment.
· Periodic assessment.
· Work order.
· Conceive new project
Identify and assess risks, develop business case, initiate project and project approval review.
· Evaluate project scope and risk
Done after the project is initiated to give solid base for detailed planning
· Develop software development plan
Risk management plan
Product acceptance plan
Problem resolution plan
Project organization and staffing
Monitoring and control process
Plan phases and iterations
Compile software development plan
· Plan for next iteration
To create iteration plan to guide the next iteration. To adjust software development plan, cost estimates and availability dates
· Monitor and control project
Deal with change request approved by CCB. Monitor project for progress and risks. Report project status. Dealing with issues and problems.
· Manage iteration
To find necessary resources to perform iterations, allocate work and assess the results.
· Close-out phase
Ensure that issues are closed in that phase. Deployment problems are addressed. Project finances are settled.
· Close-out project
Readies the project for termination.
Requirement is a condition that the system needs to meet
Functional Requirements are the behavior of the system with inputs and outputs.
Usability: user documentation, training material and other human factors.
Reliability: frequency and severity of failure, recoverability and accuracy.
Performance: transaction rate, speed, response time and memory usage.
Support: Testing and Maintenance problems and making the system up-to-date.
Workers in Requirements
· System Analyst
Coordinates requirements and use-case modeling.
· Use-Case Specifier
Details all or part of system’s functionality.
· User-Interface Designer
Interaction between user and the system.
Artifacts in Requirement
Business Object Model developed during business model, Vision Document, Use-Case Model and Use cases.Complementary to the above, we can have
· Use-Case Storyboard
· User-interface prototype.
Analysis and Design workflow
To translate the requirements into Specification. To describe how to implement the system.
To translate with use cases and functional requirements, the requirements into classes and subsystems.
Adapt the results of the analysis to the constraints imposed by non-functional requirements.
It is a refinement of analysis. It should be done so that the system can be implemented unambiguously.
· Database Engineer
· Architect Reviewer and Design Reviewer
· Capsule designer for real-time systems
· Design Model blueprint of the system under study. It consists of collaboration of classes aggregated
A Class is a set of objects that share same responsibilities, relationships, attributes and semantics.
A Package is a logical grouping of classes.
· Software Architecture Document
· Define a candidate Architecture
Create an initial sketch
· Refine the architecture
Identify design mechanisms.
Identify design elements.
Incorporate existing design elements.
Describe run-time architecture.
· Analyze behavior
Use-case analysis by designer.
Identify design elements by architect.
Review the design by design reviewer.
· Design components
· Design real-time components
· Design the database
To implement classes and objects. To test developed components. To integrate results of individual implementers or teams.
It consists of 3 components.
Subset of the system. Generally a part of the system.
To integrate work of different groups of the same subsystem.
To integrate different subsystems into a large one.
Incremental integration is code written in small pieces is combined into large one.
Phased integration is integrating multiple components at the same time.
Directed way to reduce risk. To show something concrete to user.
Develops components and performs unit testing
· System Integrator
Who constructs a build
· Code Reviewer
· Implementation subsystem
· Integration and build plan
To make the development of components and the build process as conflict-free as possible.
· Plan the subsystem to be implemented and their order
· Implementer writes code, adapt existing components, compile, link and execute.
· Implementer also fixes bugs.
· Code is reviewed.
To assess end product quality. To verify interactions of components, verify proper integration of components, verify all requirements have been implemented correctly, verify that defects are addressed before software is deployed.
Dimensions of Testing
· Stages of Testing
· Types of Test
Benchmark Test compares to standard existing software measurement
Configuration Test functionality in different hardware and software
Function Test executing the required use cases
Installation Test install successfully in different conditions or configurations
Integrity Test verifies the reliability, robustness and resistance to failure during execution
Load Test performance under operational conditions like max users, max transactions.
Stress Test performance under abnormal conditions like diminished resources.
· Regression Test
Is a representation of what to be tested and how to test.
· Test Cases
Set of test data, execution conditions derived from use case, design documents or code.
· Test Procedures
Set of detailed instructions for the setup, execution and evaluation of test results for test cases.
· Test Scripts
Computer readable instruction to execute the procedures automatically.
· Test Classes and Components
· Test Collaborations
· Test Designer
Plans, design, implement and evaluate tests.
Person responsible for execution of test.
· Test Plan
· Test Model
· Test Results data captured during execution of the tests.
· Defects failed test results
· Plan Test
· Design Test
· Implement Test
· Execute Test in integration stage
· Execute Test in System stage
· Evaluate Test
Configuration and Change Management Workflow
Track and maintain the integrity of evolving project assets like valuable artifacts. To obtain the appropriate versions.
· Change Request Management
· Configuration Management
· Status and Measurement
· Configuration manager
Setting up the product structure in the CM system. Define and allocate workspaces for developers. Extract metrics and status report for PM.
· Change control manager
Overseas the overall change control process.
· Change Request
· Configuration Management Plan
· Metrics and Status Reports
· Create an environment for CM
· Manage releases.
· Monitor and report configuration reports
· Manage change requests.
Support the development organization with both processes and tools.
· Tool selection and acquisition
· Set up tools
· Process configuration
· Process improvement
· Technical services
· Process Engineer
Configuring the process before the project startup.
· Business process analyst for business modeling guidelines
· System analyst for use-case modeling guidelines
· User-interface Designer
· Architect for programming guidelines
· Technical writer for user manual guidelines
· System Administrator maintain hardware and software environment
· Development case
Describes for each process workflow, how the project will apply the process.
· Prepare environment for project
· Prepare environment for iteration
· Prepare guidelines for an iteration
Turn the finished software product over to its users.
To test the final beta version in its operational environment.
Package the delivery software.
Distribute the software
Install the software
Train the end user
Migrate the software
· Deployment Manager
· Project Manager
· Technical Writer
· Course Developer
· Installation artifacts
· Release Notes
· Support material
· Training material
· Print specs
· Release media
· Test Results
· Feedback Results
· Test Evaluation summary
· Plan deployment customer’s willingness with his collaboration and preparation.
· Develop support material for end user to operate, maintain and use the system.
· Test product at development site
· Create release everything for the end user to install and run the software
· Beta Test Release
· Package product
· Provide access
Configuring and Implementing RUP
Configure RUP: The organization should modify the process framework
Implement RUP: The organization should routinely and successfully use RUP.
Address the following areas
1. The people and their competence, skills , motivation and attitude
2. The supporting tools
3. The software development process
Implementing RUP step by step
· Access the current state of
· Set (Revised) Goals
· Identify risks
· Plan the process Implementation
· Execute the process
· Evaluate the process