CPT203 Software Engineering I TTL

目录

Week1 Introduction 

Week2 Software Process

Week3 Agile Methods


Note the suggested answers are for the purposes to support students’ study only

Week1 Introduction 

1.What are the four important attributes that all professional software should have? Suggest four other attributes that may sometimes be significant.

Maintainability, dependability and security, efficiency, acceptability

Correctness, reusability, portability, usability, interoperability

2.Develop your own answers to the five questions asked on slide 10, software development challenges. Discuss them with your fellow classmates.

  • Why does it take so long to get software finished?
    • Most software has a handful of user requirements, each requirement has to be carefully study and understood. For some software engineering methods, documentation may take up a lot of effort. Requirement change prolong the development schedule. A single change may affect many other areas of the software.

  • Why are development costs so high?
    • The development of a software required a lot of skillful and experience people. They are highly educated and expensive work force. The development of software required not only to study the user requirements carefully, it also need to design the solution and implement the design in term of software. After the implementation, the produced software has to be tested. As you can see, the development of a software is a lengthy process which, spend a lot of expensive manpower.

  • Why can’t we find all errors before we give the software to our customers?
    • Software evaluation technique cannot spot all potential errors. Some errors occur only with the input of some specific data or specific situation where it might happen only in the production environment.
    • Errors in software also occur due to the change of production environment which is not possible to be simulated in the development environment. (For example, change of hardware,

  • Why do we spend so much time and effort maintaining existing programs?
    • If the existing system were in use for some time, it will be difficult (risky and costly) to replace with another system. In the case where are there bugs or new requirement, it is more feasible to maintain and upgrade the existing system.

  • Why do we continue to have difficulty in measuring progress as software is being developed and maintained?
    • Unlike civil engineering, software engineer builds software which is intangible. It is hard to measure the progress of the virtual product which is still in progress. Unlike building a skyscraper, when you say you have built 20 floors, others can count and verify that you have 20 floors. In software development, sometime the halfway done software cannot be verify because unfinished software cannot be executed. Even if you have a halfway done software, it may consist of serious bug which requires unknown amount of time to fix.

3.What is the most important difference between generic software product development and custom software development? What might this mean in practice for users of generic software products?

  1. The essential difference is that in generic software product development, the specification is owned by the product developer. For custom product development, the specification is owned and controlled by the customer. The implications of this are significant – the developer can quickly decide to change the specification in response to some external change (e.g. a competing product) but, when the customer owns the specification, changes have to be negotiated between the customer and the developer and may have contractual implications.
  2. For users of generic products, this means they have no control over the software specification so cannot control the evolution of the product. The developer may decide to include/exclude features and change the user interface. This could have implications for the user’s business processes and add extra training costs when new versions of the system are installed. It also may limit the customer’s flexibility to change their own business processes.

4.Many modern applications require modification frequently (before they are presented to the end user and then after the first version has been put into use). Suggest a few ways to build software to stop deterioration due to change.

  • The software should be modular so that changes will not have a lot of side effects to other part of the software
  • The software must be maintainable
  • Comprehensive testing should put in place to reduce errors.
  • Work closely with the stakeholder to ensure requirements are correctly defined
  • Improve requirement study approach to achieve better requirements study

5.Discuss whether professional engineers should be certified in the same way as doctors or lawyers.

  1. Unprofessional lawyer may cause some people to be suffering financially, physically, or even mentally. Unprofessional doctor may cause his patients to suffer physical damage and maybe financially as well, worst still may cause life. The same reasoning may be applied for engineers.
  2. For example, a civil engineer may cause damage if he build a collapsing bridge or skyscraper. Software engineer may cause damage to users financially. Software engineer who writes code for high-speed train may cause hundreds if not thousands of lives if the code is not properly written and tested.
  3. It is necessary to demand certification of engineers just in the same way doctors and lawyers are certified.

Advantages of certification for engineers:

  1. Certification make the field more competitive since they have been trained according to the standard and binding law, the source of certification can ensure that the software engineer is trusted.
  2. The public opinion of the engineering profession will be better when some form of certification is in place
  3. Certification signals to the potential employers a minimum level of competence and this make is easy for them to screen only engineers that meet the minimum requirement.

It is important to note that certification does not guarantee competence but does guarantee that a minimum standard was reached at the time of the certification.

Week2 Software Process

1.Suggest the most appropriate software process model that could be used as a basis for managing the development of the following systems, justify your suggestion:

  • A system to control anti-lock braking in a car
  • A virtual reality system to support software maintenance
  • A university accounting system that replaces an existing system
  • An interactive travel planning system that helps users plan journeys with the lowest environmental impact
  1. Anti-lock braking system. This is a safety-critical system so requires a lot of up-front analysis before implementation. It certainly needs a plan-driven approach to development with the requirements carefully analysed. A waterfall model is therefore the most appropriate approach to use, perhaps with formal transformations between the different development stages.
  2. Virtual reality system. This is a novel system where the requirements will change and there will be an extensive user interface component. Incremental development with, perhaps, some UI prototyping is the most appropriate model. An agile process may be used.
  3. University accounting system. This is a system whose requirements are fairly well-known and which will be used in an environment in conjunction with lots of other systems such as a research grant management system. Therefore, a reuse-based approach is likely to be appropriate for this.
  4. Interactive travel planning system. System with a complex user interface. An incremental development approach is the most appropriate as the system requirements will change as real user experience with the system is gaine

2.Explain why incremental development is the most effective approach for developing business software systems. Why is this model less appropriate for real-time systems engineering?

  1. Business software systems usually complex, software intensive, and frequently being changes when business goals or processes are changed. So incremental development is better.
  2. Real-time systems usually involve many hardware components which are not easy to change and cannot be incrementally deployed. Also real-time systems usually safety critical which needed be built based on well planned process.

3.Consider the reuse-based process model. Explain why it is essential to have two separate requirements engineering activities in the process.

  1. In a reuse based process, you need two requirements engineering activities because it is essential to adapt the system requirements according to the capabilities of the system/components to be reused. These activities are:
  2. 1. An initial activity where you understand the function of the system and set out broad requirements for what the system should do. These should be expressed in sufficient detail that you can use them as a basis for deciding of a system/component satisfies some of the requirements and so can be reused.
  3. 2. Once systems/components have been selected, you need a more detailed requirements engineering activity to check that the features of the reused software meet the business needs and to identify changes and additions that are required.

4.Suggest why it is important to make a distinction between developing the user requirements and developing system requirements in the requirements engineering process.

  1. There is a fundamental difference between the user and the system requirements that mean they should be considered separately.
  2. 1. The user requirements are intended to describe the system’s functions and features from a user perspective and it is essential that users understand these requirements. They should be expressed in natural language and may not be expressed in great detail, to allow some implementation flexibility. The people involved in the process must be able to understand the user’s environment and application domain.
  3. 2. The system requirements are much more detailed than the user requirements and are intended to be a precise specification of the system that may be part of a system contract. They may also be used in situations where development is outsourced and the development team need a complete specification of what should be developed. The system requirements are developed after user requirements have been established.

5.In waterfall software development process model, we complete one stage and proceed to the next stage. The engineer may revisit the previous stage if refinement is needed. However, it is important that the number of times the engineer revisit the previous stage should be limited. Explain why the number of revisits should be limited using your own statements.

  • Upon completing each stage, the software engineer must present a complete documentation for the stage which represent a lot of effort from the development team.The document must be reviewed, inspected, and finally approved by the relevant authority. If refinement is needed, the documentation must be modified to reflect the refinement. The scope of modification may be large because the refinement may affect other areas of the software.
  • The review, inspection, and approval process must carry out again for the newly modified document, which will consume a lot of time and cost. Therefore, the refinement of the work produced by the previous stage should be limited to ensure the project is not over budget and will complete within schedule.

Week3 Agile Methods

1.Explain why the rapid delivery and deployment of new systems is often more important to businesses than the detailed functionality of these systems.

  • A conventional waterfall or specification-based process is usually prolonged and the final software is delivered to the customer long after it was originally specified. In a fast-moving business environment, this can cause real problems. By the time the software is available for use, the original requirements may have changed so radically that the software is effectively useless. Therefore, for business systems in particular, development processes that focus on rapid software development and delivery are essential
  • 2.Explain how the principles underlying agile methods lead to the accelerated development and deployment of software

The principles underlying agile development are:

  1. Individual and interactions over processes and tools. By taking advantages of individual skills and ability and by ensuring that the development team know what each other are doing, the overheads of formal communication and process assurance are avoided. This means that the team can focus on the development of working software.
  2. Working software over comprehensive documentation. This contributes to accelerated development because time is not spent developing, checking and managing documentation. Rather, the programmer’s time is focused on the development and testing of code.
  3. Customer collaboration over contract negotiation. Rather than spending time developing, analyzing and negotiating requirements to be included in a system contract, agile developers argue that it is more effective to get feedback from customer’s directly during the development about what is required. This allows useful functionality to be developed and delivered earlier than would be possible if contracts were required.
  4. Responding to change over following a plan. Agile developers argue (rightly) that being responsive to change is more effective than following a plan-based process because change is inevitable whatever process is used. There is significant overhead in changing plans to accommodate change and the inflexibility of a plan means that work may be done that is later discarded.

3.When would you recommend against the use of an agile method for developing a software system?

  1. Agile methods should probably not be used when the software is being developed by teams who are not co-located. If any of the individual teams use agile methods, it is very difficult to coordinate their work with other teams. Furthermore, the informal communication which is an essential part of agile methods is practically impossible to maintain unless they are being supported by collaboration tools such as online meeting.
  2. Agile methods should probably also be avoided for critical systems where the consequences of a specification error are serious. In those circumstances, a system specification that is available before development starts makes a detailed specification analysis possible.

Other scenario when Agile methods should be avoided are: -

  1. Project with well-defined requirement
  2. Project that required formal process and/or formal documentation

4.Describe the job responsibility of a Product Owner in a Scrum team.

  1. Product Owner is responsible for a project’s outcome, in a Scrum team. He/She manages the product backlogs, trying to maximize the product’s value.
  2. In the agile software development framework, Scrum, the team self organizes and communicate and practice the agile principles. 
  3. The Product Owner communicates and interact with the stakeholders, end users, and work together with the scrum teams on the functions of the products and product backlogs, so as to ensure the development is on track and satisfying the stakeholders and end users.  

5.Describe the job responsibility of a Scrum Master in a Scrum team.

  1. A Scrum Master is the leader of the agile development team. He/she communicates with the team on the progress, facilitates collaboration among team members, and evaluate the work done by the team.
  2. A Scrum Master guides, motivate the team members, with a deep understanding to the project and development. In details, he/she coaches the members, meets regularly with the team, and provide feedback on their work on deliverables and work efficiency

6.What is the main role of a developer during product backlog grooming?

  1. In agile development team, backlog grooming refines backlogs or story time. This ensures that in the next sprints worth of user stories in the backlog prepared for sprint planning
  2. During backlog grooming, a developer as a participant of backlog grooming meetings, involves in reviewing the backlog items, discussing the items to be developed during the next sprint, offering ideas on the team capacity and responsibilities, and how to assure quality.

7.Write a description for a PBI with user stories, “Change the UI Language”.

  1. User story: change UI language
  2. Description : as a user, I want to be able to change the language used on the UI, so that I can understand the application better
  3. Acceptance Criteria: given … when .. then…
  4. Given that I am in the Setting page, when I click on the ‘change language’ button, then a change language dialog box with a list of available language options will be displayed
  5. AND when I select my preferred language by click on the select box next to the language and click ‘confirm ’ button, then the dialog box closed, route me to the homepage, and then application displays in the language I have chosen and confirmed

8.Write a description for a PBI with user stories, “Remove Item from Shopping Cart”.

  1. User story: Remove Item from Shopping Cart
  2. Description : as a user, I want to be able to remove unwanted items from my shopping cart.
  3. Acceptance Criteria: given … when .. then…
  4. Given that I am on my shopping cart page, when I click its ‘manage my shopping cart’ icon, then the list of all items in my cart will display. One of icons is ‘-’ icon, labelling ‘Delete’ next to each item.
  5. AND when I click on the ‘-’ icon next to the item which I don’t want it anymore, a dialog box appears to display ‘confirm’. After I click the ‘confirm’ option, this item and the number of this item will disappear from my list.  The shopping cart updates with the unwanted item removed.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值