Sunday, 24 July 2011

Module 9: Software Project Management

MIND MAPS
(click to enlarge the image)

Importance of SPM
  1. Building computer software is complex, particularly if it involves many people working over a relatively long time.
  2. That is why software projects need to be managed.

The Management Spectrum

Effective software project management focuses on the four P’s:
  1. People — the most important element of a successful project
  2. Product — the software to be built
  3. Process — the set of framework activities and software engineering tasks to get the job done
  4. Project — all work required to make the product a reality

Four P’s: People
  1. People must be organized to perform software work effectively.
  2. The “people factor” is so important that the Software Engineering Institute has developed People Capability Maturity Model (People-CMM).
  3. People-CMM maturity model defines key practice areas like staffing, communication and coordination, work environment, training, career development, team/ culture development and others.
  4. Organizations that have a higher levels of People-CMM have a higher likelihood of implementing effective  software project management practice.

Four P’s: People ~ Stakeholders
  1. Defined as “individuals or organizations who stand to gain or lose from the success or failure of a system” (Nuseibeh and Easterbrook, 2000).
  2. By definition, stakeholders are those who are impacted by (or have an impact on) the project.
  • Senior managers who define the business issues that often have significant influence on the project.
  • Project (technical) managers who must plan, motivate, organize, and control the practitioners who do software work.
  • Practitioners who deliver the technical skills that are necessary to engineer a product or application.
  • Customers who specify the requirements for the software to be engineered and other stakeholders who have a peripheral interest in the outcome.
  • End-users who interact with the software once it is released for production use.

Four P’s: People ~ Team Leaders
  1. To be effective, the project team must be organized in a way that maximizes each person’s skills and attributes, which is the job of the team leader.
  2. What do we look for when choosing a team leader?
  •  Based on MOI model of leadership by Weinberg (1986): motivation, organization, ideas or innovation.
  •  Based on four traits of effective project manager by Edgemon (1995): problem solving, managerial identity, achievement, influence and team building.

The MOI Model of leadership:
  1. Motivation - the ability to encourage (by “push or pull”) technical people to produce to their best ability.
  2. Organization - the ability to mold existing processes (or invent new ones) that will enable the initial concept to be translated into a final product.
  3. Ideas or innovation - he ability to encourage people to create and feel creative even when they must work within bounds established for a particular software product or application.

Four traits of effective project manager by Edgemon (1995): 
  1. Problem solving -  can diagnose relevant technical and organizational issues, systematically structure a solution or motivate others to develop the solution, apply lesson learns from past projects to new situation and many others.
  2. Managerial identity – a good manager must take charge of the project.
  3. Achievement – reward initiative and accomplishment to optimize the team productivity.
  4. Influence and team building – able to ‘read’ people, understand verbal and nonverbal signal and react to the needs of the people sending the signals.

Four P’s: People ~ Software Team

The following factors must be considered when selecting a software project team structure:
  1. the difficulty of the problem to be solved
  2. the size of the resultant program(s) in lines of code or function points
  3. the time that the team will stay together (team lifetime)
  4. the degree to which the problem can be modularized
  5. the required quality and reliability of the system to be built
  6. the rigidity of the delivery date
  7. the degree of sociability (communication) required for the project

Four P’s: People ~ Agile Team
  1. Agile teams are formed for agile software development.
  2. Agile philosophy encourages customer satisfaction and early incremental delivery of software, small highly motivated project teams, informal methods, minimal software engineering work products, and overall development simplicity.
  3. The distribution of skills must be appropriate to the problem. 
  4. Mavericks (individualist) may have to be excluded from the team, if team cohesiveness is to be maintained.
  5. Agile teams are self-organizing

Four P’s: People ~ Issues 

Software projects get into trouble because of reasons such as:
  1. Scale- the scale of many development efforts is large, leading to complexity, confusion, and significant difficulties in coordinating team members.
  2. Uncertainty-  resulting in a continuing stream of changes
  3. Interoperability-  new software must communicate with existing software and conform to predefined constraints imposed by the system or product.
Formal and informal communication among team members and between multiple teams must be established.
  1. Formal communication – writing, structured meetings, and other non-interactive and impersonal communication channel.
  2. Informal communication – more personal. Members share ideas on an ad hoc basis.

Four P’s: Product

Before project can be planned:
  1. Establish product objectives and scope - communication with the customer and other stakeholders must occur so that product scope and requirements are understood.
  2. Identify technical and management constraints
  3. Consider alternative solutions - enable the managers and practitioners to select a “best” approach, given the constraints imposed by delivery deadlines, budgetary restrictions, personnel availability and other factors.

Four P’s: Product ~ Scope

Scope is defined by answering the following questions:
  1. Context. How does the software to be built fit into a larger system, product, or business context and what constraints are imposed as a result of the context?
  2. Information objectives. What customer-visible data objects (Chapter 8) are produced as output from the software? What data objects are required for input?
  3. Function and performance.  What function does the software perform to transform input data into output? Are any special performance characteristics to be addressed?
Software project scope must be unambiguous and understandable at the management and technical levels.


Four P’s: Product ~ Problem Decomposition
  • Sometimes called partitioning or problem elaboration.
  • A complex problem is partitioned into smaller problems that are more manageable

Four P's ~ Process
  • A process that is appropriate for the people and the product should be selected.

Four p's Process ~ Melding the Product and the Process

  • The job of the project manager (and other team member) is to estimate resource requirements for each matrix cell, and work products to be produced as a consequence of each task.
Four P's Process ~ Project Decomposition
- Factors need to look at when choosing the process model.
  • The costomer who have requested the product and the people who will do the work.
  • Characteristic of the product itself.
  • The project enviroment in which the software team works.
- Type of project and suitable approach :
  • A relatively small project that is similar to past efforts - linear sequential approach might be suitable.
  • The deadline is so tight that full functionality cannot reasonably be delivered - incremental approach might be suitable. 

Four P's : Project
  •         The project must be planned by estimating effort and calendar time to accomplish work tasks.

  •         Some of the required activities: defining work products, establishing quality checkpoints, and identifying mechanisms to monitor and control work defined by the plan.
- Project get into trouble when : 
>Software people don’t understand their customer’s needs.
>The product scope is poorly defined.
>Changes are managed poorly.
>The chosen technology changes.
>Business needs change [or are ill-defined].
>Deadlines are unrealistic.
>Users are resistant.
>Sponsorship is lost [or was never properly obtained].
>The project team lacks people with appropriate skills.
>Managers [and practitioners] avoid best practices and lessons learned.
Four P's Project ~ Common Sense Approach to Projects
How manager act to avoid problem discussed before? 
  •         Start on the right foot.
  •         Maintain momentum. 
  •         Track progress.
  •         Make smart decision.
  •         Conduct a postmortem analysis.
 The W5HH Principle
- A series of question that lead to a definition of key project characteristic and the resultant project plan.


Critical Practices
- Example of practices that is important in software project management:
  • Metrics - based project management. 
  1. Measures of specific attributes of the process, project, and product are used to compute software metrics.
  2. These metrics can be analyzed to provide indicators that guide indicators that guide management and technical actions.
- Empirical cost and schedule estimation.
  • Estimate how much money, efforts, resources, risk, and time that will take to build a system.

Critical Practices
1. Defect tracking againts quality target.

  • Requires that quality targets be set and that tracked defects be analyzed those targets.
  • Involve activities like recording defects in a database.

- Example of quality measures with examples of target values:
i.  Number of defects ~ less than 1 defect per function point.
ii.  Cyclomatic Complexity ~ less than 10 for all modules.
iii. Operator errors ~ less than 1 hour.
iv. Timing ~ less trhan 1 second response time.

2. Earned value tracking
  • Quantitative technique for assessing progress as the software team progress through the work tasks allocated to the project schedule.
3. People awareness management
  • Management of people that involve in project.

      Saturday, 23 July 2011

      Module 8 : Software Evolution

       MIND MAPS
      (click to enlarge the image)
      Software Maintanance
      - Software is released to end users, and
      1. Within days, bug reports filter back to the software engineering org.
      2. Within weeks, one class of users indicates that software must be changed so that it can be accomodate the special needs of their enviroment.
      3. Within months, another corporate group who wanted nothing to do with the software when it was released, now recognized that it may provide them with unexpected benefit. They'll need a few enhancements to make it work in their world.

      Legacy Application Software
      - In IT, legacy application and data are those that have been inherited from:
      i.   Language
      ii.  Platform
      iii. Techniques

      - Most org who use computers have legacy applications and databases that serve crirical business needs.
      - Typically, the challange is to keep the legacy application running while converting it to newer, more efficient code that makes use of technology and programmer skills.
      - Many org are migrating their legacy application to new programming languages and operating system that follow open standart programming interface.

      Software Maintanance and Support
      - Ongoing activities to change and support the software after it is in operation.
      - Include :
      1. Correcting defects
      2. Adapting application to changing business enviroment.
      3. Implementing enhancement at the request of stakeholders.
      4. Supporting users as they integrate an application into their personal and business workflow.

      Maintainable Software
      - It exhibits efffective modularity.
      - It makes use of design patterns that allow ease of understanding.
      - It has been constructed using well-defined coding standarts and conventions, leading to source code that is self-documenting and understandable.
      - It has undergo a variety of quality assurance.

      Supportability Software
      - The capability of supporting a software system over its whole product life.
      - Software should contain facilities to support personnel.
      - Support personnel should have acess to a database.

      Lehman and Belady law respect to software evolution:












      Who performs Maintanance?
      - Separeted maintanance team
      - Part of development team 

        Reengineering
        - To support 'new business rules', existing software may be modified or rebuilt (reengineered)
        - Reengineering may begin with a Business Process Reengineering (BPR) before move on to software reengineering.



        Business Process Reengineering (BPR)
        - The fundamental rethinking and radical redesign of business processes to achieve dramatic improvements in critical contemporary measures of performance, such as cost, quality, service and speed. (Hammer and Champy, 1993)
        Business process : A set of logically related task performed to achieve a defined business outcome.(Devenport and Young, 1990)


                                                                    BPR Model (Six activities)


        Software Reengineering
        - Anactivity that will absorb IT resources for many years.
        - Require systematic strategy.

        General reengineering principles:
        1. Inspect the product.
        2. Inspect the structure of the product, rebuilt if it is weak, remodel if it is structurally sound.
        3. Understand how well the original was built before you rebuilt.
        4. If you begin, use only the best method, tools, resources.
        5. Be disciplined about it - use practices that will result in high quality.

                                                      Software Reengineering Process Model


        Inventory analysis
        - Built a table that contains all application
        - Establish criteria ex:
        1. Name of application.
        2. Year it was originally created.
        3. Number of substantive changes made to it.
        4. Total effort applied to make these changes.
        5. Date of last substantive changes.
        6. Effort applied to make the last change.
        7. System in which it resides.
        8. Applications to which it interfaces.

        Document restructuring
        - Weak documentation is the trademark of many legacy systems.
        - But why do we do about it? What are our options?
        1. Creating documentation is far too time consuming. If the system works, we’ll live with what we have. In some cases, this is the correct approach. 

        2. Documentation must be updated, but we have limited resources. We’ll use a “document when touched” approach. It may not be necessary to fully redocument an application.
           
        3. The system is business critical and must be fully redocumented. Even in this case, an intelligent approach is to reduce documentation to an essential minimum.


        Reverse Engineering
        - Recreate design and specification information from the source code. 
        - The process :
















        Code structuring
        1. Source code is analyzed using a restructuring tool.
        2. Poorly design code segments are redesigned
        3. Violations of structured programming constructs are noted and code is then restructured.
        4. Resultant restructured code is reviewed and tested to ensure no anomalies have been introduced. 
        5. Internal code documentation is updated.
        Code Restructuring
        - Activity :
        1. Interpreting the source code and representing it internally.
        2. Simplifying the internal representation.
        3. Regenerating structured code.
        Data Structuring
        - Is a full-scale reengineering activity
        - In most cases, it begins with a reverse engineering activity.
        i)    Current data architecture is dissected and necessary data models are defined (Chapter 9).
        ii)   Data objects and attributes are identified, and existing data structures are reviewed for quality.
        iii) When data structure is weak, the data are reengineered.
        - Because data architecture has a strong influence on program architecture and the algorithms that populate it, changes to the data will invariably result in either architectural or code-level changes.
        Forward Engineering
        - Forward engineering process applies software engineering principles, concepts, and methods to re-create an existing application.
        - In most cases, forward engineering does not simply create a modern equivalent of an older program.
        - Rather, new user and technology requirements are integrated into the reengineering effort. 

        Economic of Reengineering
        - Reengineering require a lot of resources.
        - Before an organization attempts to reengineer an existing application, it should perform a cost-benefit analysis.

        Monday, 18 July 2011

        Module 7: Software Quality Management

        MIND MAPS

        (click to enlarge the image)

        What is software quality management?

        1. Adopts a number of management principles that can be used by upper management to guide their organizations towards improved software product performance.
           -E.g.: continuous quality improvement, customer focus, process approach, leadership etc.
        2. Concerned with ensuring that the required level of quality is achieved in a software product.
        3. Should aim to develop a ‘quality culture’ where quality is seen as everyone’s responsibility.
        4. Software quality assurance (SQA) is often called quality management!

        Scope of software quality management

        1. Quality management is particularly important for large, complex systems. The quality documentation is a record of progress and supports continuity of development as the development team changes.
        2. For smaller systems, quality management needs less documentation and should focus on establishing a ‘quality culture’.

        Software Quality

        1. In 2005, ComputerWorld [Hil05] lamented that 
           -“bad software plagues nearly every organization that uses computers, causing lost work hours during computer downtime, lost or corrupted data, missed sales opportunities, high IT support and maintenance costs, and low customer satisfaction. 
        2. A year later, InfoWorld [Fos06] wrote about the 
           -“the sorry state of software quality” reporting that the quality problem had not gotten any better.
        3. Today, software quality remains an issue, but who is to blame? 
           -Customers blame developers, arguing that sloppy practices lead to low-quality software. 
           -Developers blame customers (and other stakeholders), arguing that irrational delivery dates and a continuing stream of changes force them to deliver software before it has been fully validated.


        What is quality?

        1. The American Heritage Dictionary defines quality as 
           -“a characteristic or attribute of something.”  
        2. For software, two kinds of quality may be encountered: 
           -Quality of design encompasses requirements, specifications, and the design of the system.
           -Quality of conformance is an issue focused primarily on implementation.
           -User satisfaction = compliant product + good quality + delivery within budget and schedule


        What is software quality?

        1. Software quality can be defined as: 
           -An effective software process applied in a manner that creates a useful product that provides measurable value for those who produce it and those who use it.
        2. Effective process: 
           -establishes the infrastructure that supports any effort at building a high quality software product
           -the management aspects of process create the checks and balances that help avoid project chaos—a key contributor to poor quality. 

        Quality Dimensions and Factors

        1. Can be used as generic quality indicators of a software product.
           -Garvin Quality Dimensions
           -McCall’s Quality Factors
           -ISO 9126 Quality Factors
           -Targeted Factors


        Quality Dimensions and Factors (cnt’d)

        1. Efficiency 
           -The degree t1.o which the software makes optimal use of software resources.
        2. Usability
           -The degree to which the software is easy to learn, use, operate, prepare input for and interpret output from.
        3. Maintainability
           -The ease with which repair maybe made to the software
        4. Reliability 
           -The amount of time that the software is available for use

        The Software Quality Dilemmas
        1. If you produce a software system that has terrible quality, you lose because no one will want to buy it. 
        2. If on the other hand you spend infinite time, extremely large effort, and huge sums of money to build the absolutely perfect piece of software, then it's going to take so long to complete and it will be so expensive to produce that you'll be out of business anyway. 
        3. Either you missed the market window, or you simply exhausted all your resources. 
        4. So people in industry try to get to that magical middle ground where the product is good enough not to be rejected right away, such as during evaluation, but also not the object of so much perfectionism and so much work that it would take too long or cost too much to complete. [Ven03]


        Achieveing Software Quality

        Broad activities that help a software team achieve high quality software:
        1. Quality assurance (QA) – establishes the infrastructure that supports solid software engineering methods, rational project management, and quality control actions. 
        2. Quality assurance (QA) – establishes the infrastructure that supports solid software engineering methods, rational project management, and quality control actions. 
        3. Software engineering method – understand the problem to be solved, create a design that conforms to the problems and exhibit characteristics that lead to software that are reliable, efficient, usable, etc. 
        4. Project management technique –use estimation to verify that delivery dates are achievable, schedule dependencies are understood and conduct risk planning so that problem do not breed chaos.


        Software Quality Assurance (SQA)

        Encompasses:
        1. An SQA process
        2. Specific QA and QC tasks – technical review, audits, multitier testing strategy etc.
        3. Effective SE practice (methods and tools) – risk management
        4. Control of all software work products and changes made to them – change management, security management
        5. A procedure to ensure compliance with standards – IEEE, ISO, CMMI, Six Sigma etc 
        6. Measurement and reporting mechanisms – SQA group

        Role of the SQA Group

        1. Prepares an SQA plan for a project. 
           -The plan identifies:
                  -evaluations to be performed
                  -audits and reviews to be performed
                  -standards that are applicable to the project
                  -procedures for error reporting and tracking
                  -documents to be produced by the SQA group
                  -amount of feedback provided to the software project team
        2. Participates in the development of the project’s software process description. 
           -The SQA group reviews the process description for compliance with organizational policy, internal software standards, externally imposed standards (e.g., ISO-9001), and other parts of the software project plan.
        3. Reviews software engineering activities to verify compliance with the defined software process. 
           -identifies, documents, and tracks deviations from the process and verifies that corrections have been made.
        4. Audits designated software work products to verify compliance with those defined as part of the software process.
           -reviews selected work products; identifies, documents, and tracks deviations; verifies that corrections have been made
           -periodically reports the results of its work to the project manager.
        5. Ensures that deviations in software work and work products are documented and handled according to a documented procedure.
        6. Records any noncompliance and reports to senior management.
           -Noncompliance items are tracked until they are resolved.


        SQA Goals 

        1. Requirements quality. The correctness, completeness, and consistency of the requirements model will have a strong influence on the quality of all work products that follow. 
        2. Design quality. Every element of the design model should be assessed by the software team to ensure that it exhibits high quality and that the design itself conforms to requirements.
        3. Code quality. Source code and related work products (e.g., other descriptive information) must conform to local coding standards and exhibit characteristics that will facilitate maintainability.
        4. Quality control effectiveness. A software team should apply limited resources in a way that has the highest likelihood of achieving a high quality result.

        Statistical SQA
        1. Steps to perform statistical SQA:
           -Collect and categorize information about software errors and defects.
           -Trace each error and defect to its underlying cause (e.g., non-conformance to specifications, design error,   violation of standards, poor communication with the customer).
           -Identify vital few causes of defects (20%) by using the Pareto principle (80% of the defects can be traced to 20 percent of all possible causes)
           -Move to correct the problems that have caused the errors and defects.

         2. Widely used strategy for statistical SQA in the industry is Six Sigma.

        Six-Sigma for Software Engineering

        1. Originally popularized by Motorola in the 1980's
        2. A rigorous and disciplined methodology that uses data and statistical analysis to measure and improve a company’s operational performance
        3. The Six Sigma methodology defines three core steps:
           -Define customer requirements and deliverables and project goals via well-defined methods of customer communication
           -Measure the existing process and its output to determine current quality performance (collect defect metrics)
           -Analyze defect metrics and determine the vital few causes.
        4. If improvement is required when software process exist, Six Sigma suggest two extra steps:
           -Improve the process by eliminating the root causes of defects.
           -Control the process to ensure that future work does not reintroduce the causes of defects.

        ISO 9001:2000 Standard

        1. ISO 9001:2000 is the quality assurance standard that applies to software engineering. 
        2. The standard contains 20 requirements that must be present for an effective quality assurance system. 
        3. The requirements set down by ISO 9001:2000 address topics such as 
           -management responsibility, quality system, contract review, design control, document and data control, product identification and traceability, process control, inspection and testing, corrective and preventive action, control of quality records, internal quality audits, training, servicing, and statistical techniques. 
        4. Update and upgrade  of standard: visit 

        AMIRUL HAFIDZ FADZLI BIN ZULKIFLI  IS085692