Solutions to Software Engineering Foundation-PartⅠ

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

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.

 

### 回答1: 《软件工程10解决方案手册》是一本提供软件工程问题解决方案的手册。在软件工程领域,开发人员和团队常常会面临各种挑战和难题,需要寻找适当的解决方法。这本手册提供了一系列解决方案,旨在帮助开发人员更好地应对各种情况。 这本手册包含十个不同的解决方案,每个方案都针对特定的问题和场景。例如,其中一个方案可以是关于如何提高软件开发团队的协作和沟通能力的方法。这可能包括使用协作工具、制定清晰的沟通计划和促进团队合作的活动。另一个方案可能涉及如何管理软件开发过程中的变更和需求变更。这可能包括实施适当的变更管理系统、确保良好的需求收集和分析过程以及及时跟踪和控制变更。 手册中的解决方案还可能涉及软件质量保证、测试策略、项目管理、团队管理等多个方面。每个方案都会详细介绍问题的背景和原因,并提供一系列实际可行的解决方法。这些解决方法通常基于理论知识和过去的经验,经过验证并可操作。 对于软件工程专业的学生或从业人员来说,这本《软件工程10解决方案手册》是一本宝贵的参考资料。它不仅可以帮助他们了解软件开发中常见的问题和挑战,还提供了实用的解决方案来解决这些问题。通过学习和应用手册中的解决方案,开发人员可以提高其技术能力和解决问题的能力,并更有效地完成软件开发任务。 总之,《软件工程10解决方案手册》是一本对软件工程领域的学习和实践都有益处的书籍。它不仅提供了解决问题的方法,还促使开发人员思考如何提高软件开发过程中的质量和效率。对于想要在软件工程领域取得成功的人来说,这本手册将是一个重要的参考工具。 ### 回答2: "Software Engineering 10 Solutions Manual" (软件工程十版解答手册) 提供了软件工程领域教材《Software Engineering》的解答手册。 这本手册针对课本中的习题和问题,提供了详细的解答和方法。学生可以使用它来巩固和加深对软件工程概念和技术的理解。 具体来说,这本手册包含了以下内容: 1. 题目的解答和详细步骤说明,帮助学生理解问题的解决过程。 2. 对于复杂的问题,提供了详细的解决思路和方法,从而引导学生解决类似的问题。 3. 提供了实际案例的解答,帮助学生将理论知识应用到实际情境中。 4. 提供了额外的习题和挑战性问题,帮助学生进一步巩固和扩展知识。 5. 强调了软件工程中的最佳实践和行业标准,如需求工程、软件开发过程、项目管理等方面。 通过使用这本手册,学生可以更深入地理解软件工程的概念和原理,并在解决问题时获得指导和帮助。这对于学生提高自己在软件工程领域的能力和技术很有帮助。 总之,《Software Engineering 10 Solutions Manual》是一本适用于软件工程课程的解答手册,能够帮助学生巩固知识、解决问题,并提升在软件工程领域的能力。 ### 回答3: 《软件工程10版解答手册》是一本为了辅助学习软件工程十版教材的解答手册。这本手册为学生提供了对教材中习题和案例的详细解答,帮助他们更好地理解和掌握软件工程的相关概念和技能。 这本解答手册共包含十个章节,每章都涵盖了教材对应章节的习题和案例。手册中的解答不仅仅是简单的答案,而是通过详细的步骤和解释,帮助学生了解解答的思路和方法。 手册的解答内容涵盖了软件工程的各个方面,包括需求分析、软件设计、编码、测试、配置管理等。通过阅读手册,学生可以更深入地理解软件工程的核心概念和方法,并通过解答实践更好地熟悉和掌握这些概念和方法。 除了对习题和案例的解答,这本手册还提供了一些额外的补充材料和资源,如附加的实例和案例分析。这些额外的材料可以帮助学生拓宽视野,深入理解软件工程在实际项目中的应用。 总之,《软件工程10版解答手册》是一本对软件工程教材进行解答的辅助教材,通过提供详细的解答步骤和解释,帮助学生更好地理解软件工程的概念和方法,并通过实践应用加深对软件工程知识的掌握。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值