Solutions to Software Engineering Foundation-PartⅠ

博客围绕项目构建展开,阐述了成熟流程的必要性,介绍了SEI - CMMi模型,明确了关键角色及其在项目团队中的职责。还提及项目启动活动,重点说明了关键启动文档,如RFP、合同和项目计划等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Building Terminology

Solution to task

Rationale behind solution

What is software?

 

Software is NOT just a set of programs.

 

 

Complete software is a set of programs, related documentation, and data.

 

For example, in the above scenario it is apparent Ken has not provided appropriate manuals and documentation with the software to enable the customer to use the software successfully.

What is Software Engineering?

 

Software Engineering DOES NOT mean only documenting each step of the development cycle.

 

 

Software Engineering is a structured and systematic approach to software development. 

 

Software is developed by using an engineering approach as opposed to hardware that is manufactured. Software Engineering has three aspects to it

People

Technology

Process

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


What is good software?

 

The definition of good software is not limited to delivering bug-free, efficient, and user-friendly software.

A good software should also take care of the following aspects:

 

·                                  It should be delivered on-time

·                                  It must meet all the customer requirements (explicit & implicit)

·                                  It should have good quality

·                                  It should be user-friendly

 

The software described in the scenario is obviously not user-friendly if the employees are facing so many problems in using it.

 

What is good project?

 

A good project is not limited to delivering software that meets the acceptance criteria.

 

A software project is not restricted to meeting the acceptance criteria. The software should fulfil all the explicit and implicit requirements of the customer. It should provide a deployable solution to address the business problem and not just meet specifications.

 

Any software project should meet one or more needs of the business environment, for example:

·                                  Improve responsiveness of the system

·                                  Decrease cost of doing business

·                                  Provide an innovative solution

 

The software created by Ken might be meeting the acceptance criteria for the project but is not providing a successful business solution to the client nor is it leading to business expansion for Ken’ s organization.

Do you follow process or procedure while working on projects?

 

A process is a set of practices performed to achieve a goal. It provides a constructive, high-leverage focus on the result. The process might include tools, methods, materials, and people.

 

There is a procedure to complete each unit of work. A process defines these units of work and establishes the link between them. A process shows flow of procedures and links them based on commonality.

 

People follow a procedure to complete a piece of work but they need a process to know how to do it smarter and better.

 

Had there been a defined process for working on projects, the new team described in the scenario would not have to rewrite the code created by earlier team. It is possible that some of the implicit user requirements might have been lost when the new team redid the coding and this resulted in the problems with deployment of the software. 

 

 

What is your definition of a good developer?

 

Someone with a good productivity.

 

Productivity is a critical attribute of a good developer. However, the productivity must be determined in context of the following:

·                                  Focus on quality

·                                  Focus on software attributes such as efficiency, reusability, maintainability

·                                  Expertise with software tools

·                                  Ability to learn, innovate, and question

Which is critical for the success of a developer – productivity or quality?

 

The developer needs to be more productive to remain competitive in the industry. The QA team manages the quality.  

The critical factor for a developer success is not productivity or quality but productivity and quality. The developer needs to deliver both.

 

Need for a Mature Process

Solution to task

Rationale behind solution

Why is the success of initial projects not being reflected in the new ones?

 

The new projects belong to a different vertical as compared to those completed by the organization in the past. In addition, the new projects are being managed by new teams. The organization lacks a stated process of executing a project. A fire-fighting point (Ed Young) has been identified for the team but other than that the organization is depending on individual capabilities to complete the project successfully.

 

 

The organization has a procedure for executing projects. However, the procedure that they followed for the retail projects might not be applicable as is for the new projects. No code and documents were kept to ensure reusability of components and improve quality of new products.

 

The organization needs a software process that defines how to execute a project. As the processes mature, the organization should be able to repeat the processes across projects and move toward a system when all the processes can be measured and managed. The organization is operating at the highest level of maturity when it is continuously optimising its work processes to enhance efficiency. 

 

Do you think the organization has a mature process?

 

The organization definitely does not have mature processes for software development.

 

For organization to demonstrate a mature process, it should be able to develop quality software efficiently and consistently.

 

 

 

 

 

 

How can organizations measure and improve the maturity of their processes?

 

Organizations can adapt global software management standards such as:

·         ISO 9001/2000 – International Standards Organization (ISO)’s Quality System Requirements that states standards for software system quality requirements.

·         CMM – Capability Maturity Model, which is the most popular software process improvement initiative developed by Software Engineering Institute (SEI).

 

 

 

 

The SEI-CMM explains the activities, methods, and practices that are necessary to improve maturity of software process. The CMM model provides a set of guidelines so that organizations can make a transition from ad hoc, chaotic processes to mature, disciplined software processes. The focus is on identifying key process areas and the best practices that will help in implementing a disciplined software process. The CMM framework provides a mature model that establishes an organization-wide focus as follows:

  • Process of doing things is repeated in subsequent projects. There are policies, procedures, and practices that commit the organization to implementing and performing consistently.

  • Best practices are shared and implemented across projects and teams. Practices are defined such that they can be transferred across project boundaries and can be implemented as an organization-wide standard.

  • Variations in implementing best practices are reduced. The focus is on quantitative measurement and analysis so that capability baselines are established for an organization.

Practices are continuously improved to enhance capability.

 

SEI-CMMi Model

Solution to task

Rationale behind solution

Continuous assessment

The organization is a small organization and as such it does not have too many support groups. There are no defined organizational processes. However, the organization does exhibit expertise in some key process areas, which are a key to its success. Therefore, it is recommended that the organization go for a Continuous model instead of the Staged model.

Project Management & Engineering KPAs within the Continuous model

The organization demonstrates expertise in understanding customer requirements well and converting them into viable technical solutions. As such, it will be best for the organizations to go for SEI-CMMi assessment for Project Management and Engineering process areas.

 

 

Identifying Key Roles

Solution to task

Rationale behind solution

 

Solution 1

 

Key Roles

w        Commercial Project Manager/Program Manager

w        Project Manager

w        Team Leader

w        Team Members/Developers

w        Quality Tester

 

 

This solution identifies the basic roles, which are common to any software project. For example, a Program Manager is required who can interact with the client and the Project Manager can concentrate on the project.

This solution also emphasizes on Quality as planning and management of quality assurance activities is one of the key tasks required for building good projects.

 

Though it clearly emphasizes on the development and testing aspect of the project, the other aspects related to implementation and training are missing.

Solution 2

 

Key Roles

w        Commercial Project Manager/Program Manager

w        Project Manager

w        Team Leader

w        Team Members/Developers

w        Quality Tester

w        Subject Matter Expert

 

 

This solution identifies the role of a subject matter expert.  For example, a Financial Expert would be required to provide technical inputs for the project in the above scenario.

 

The implementation aspect is still missing in the solution.

Solution 3

 

Key Roles

w        Commercial Project Manager/Program Manager

w        Project Manager

w        Team Leader

w        Team Members/ Developers

w        Quality Tester

w        Subject Matter Expert

w        Configuration Manager     

 

 

This solution emphasizes on the implementation of the software and identifies configuration management as another important aspect for the success of a project.

This is the best solution out of the three, because it covers all the aspects and identifies all the roles highlighted in the scenario.

 

Responsibilities Within a Project Team

Solution to task

Rationale behind solution

Responsibility

Role

1. Creating project plan and budget plan

Project Manager

2. Managing the design and implementation of the final product

Technical Lead/Architect

3. Building and testing features designed to meet the specifications and customer expectations

Developer

4. Developing testing strategy, plans and scripts

QA/Tester

5. Maintaining and managing the build environments

Configuration Manager

6. Deciding on the final critical trade-offs

Project Manager

7. Planning and managing product deployment

Configuration Manager

 

8. Providing domain knowledge

Subject Matter Expert

 

 

9. Providing technical direction to the team members

Team Leader

10. Performing Audits

QA/Reviewer

 

1. The Project Manager manages and takes decisions on all the technical aspects of the project. The project plan and cost estimation/plan is created by the Project Manager.

 

2. The Technical Architect is responsible for the complete design and implementation of the product.

 

3. Coding of the project is done by the Developer. The developer also tests each feature.

 

4. All the testing for quality assurance is done by the QA/Tester.

 

5. All aspects related to the project deployment are handled by the Configuration Manager. Building environments is a part of configuration management only.

 

6. As discussed earlier, the final decisions on technical issues are taken by the Project Manager.

 

7. Product deployment is done by the Configuration Manager.

 

8. The Subject Matter Expert has an expertise in specialized areas, therefore knowledge or tips are given by Subject matter Experts on different subjects.

 

9. The Team leader guides the team and handles all internal issues within the team.

 

10. The Reviewer does the final inspection and audits for the project.

 

Project Start-up Activities



Solution to task

Rationale behind solution

 

1.                   The project team did not study the requirements carefully.

 

1.                   The team did not read and discuss the requirements of the project and landed up into crisis. They made assumptions and concentrated on just few requirements.

 

2.                   The issue should have been clarified in the initial stages of the project, also known as the project start-up phase.

 

2.                   The initial phase, also known as a project start-up phase is marked by a certain set of activities known as project start-up activities. All the requirements related to the project are given by the client in this phase.

 

3.                   Request For proposal (RFP) should have stated this information.

 

 

3.                   Prospective clients document

    their requirements, scope and

    terms and conditions into an

    RFP (Request for Proposal). The

    RFP is then floated by the client

    to potential service    providers

    for bidding.

 

4.                   The team should have properly studied the requirements for the project to avoid chaos.

4.                   The team should have studied

    the RFP thoroughly and should

    have planned accordingly. The

    cost and the budget should

    have been planned considering

    the fact that the project is to be

    delivered in three different

    languages.

 

 

 

Critical Start-up Documents- RFP and Contract

Solution to task

Rationale behind solution

 

 

The key components of an RFP are:

 

·          Specifications for accepting a proposal:

§                                             Company description and background.

§                                             Company History

·          Purpose and details of the project.

·          Requirement specifications.

·          Platform and architecture description.

·          Time duration in which the project should be ready for implementation.

 

 

·          Detailed company description should be included in the RFP as it will help the client in analysing and understanding the requirements.

 

·          The need and purpose for the project should be clearly defined along with as comprehensive details of the requirements as possible.

 

·          If possible, a brief description of the technical specifications and constraints of the required project should be included. For example, to be able to run on Windows platform should support all browsers.

 

·          In case there are some time restrictions, it should be mentioned clearly to avoid confusion.

 

 

Critical Start-up Documents - Project Plan

Solution to task

Rationale behind solution

The key components of the Project plan are:

 

 

w              Purpose of document.

 

w              Project description/approach.

 

w              Project scope and objective.

 

w              Project team members/ role and experience.

 

w              Project quality plan.

 

w              Risk management and contingency plan.

 

w              Project pre-requisites.

 

w              Planning assumptions.

w        Project level product flow diagrams.

w        Project financial budget/ timeline.

w        Project level table of resource requirements.

w        Requested / Assigned specific resources.

 

 

 

 

 

·      The Project management team must be clear with the purpose of creating the project plan. As it will help the tem in understanding the need of the plan and requirements of the project.

·      The scope (What to do) and objective of the project must be clearly defined.

·                                                                      Defining roles and experience of the team members helps in establishing confidence of the client in the capabilities of the vendor.

·                                                                      The quality plan is also defined in the beginning and the team should adhere to this plan till the end of the project.

·                                                                      The risks are also identified in the beginning of the project.

·            The plan must describe every detail of the project including the pre-requisites and assumptions so that the entire team and the client has common understanding about the current state and execution requirements of the project.

·            The flow of information and data should be drawn, as graphical representations are easier to understand for all stakeholders.

·            The financial constraints and project timeline must be defined.

·             All the details related to resources including requirements and assignment of resources.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值