CS3043 Assignment 1 (2024)

CS3043Assignment 1

Sample Answers

<![if !supportLists]>1.<![endif]>Whatare the most important differences between generic software product developmentand custom software development? What might this mean in practice for users ofgeneric software products?

Theessential difference is that in generic software product development, the specificationis owned by the product developer. For custom product development, thespecification is owned and controlled by the customer. The implications of thisare significant ¨C the developer can quickly decide to change the specificationin response to some external change (e.g. a competing product) but, when the customerowns the specification, changes have to be negotiated between the customer andthe developer and may have contractual implications.

Forusers of generic products, this means they have no control over the softwarespecification so cannot control the evolution of the product. The developer maydecide to include/exclude features and change the user interface. This could haveimplications for the user¡¯s business processes and add extra training costs whennew versions of the system are installed. It also may limit the customer¡¯s flexibilityto change their own business processes.

<![if !supportLists]>2.<![endif]>Basedon your own knowledge of some of the application types discussed in thetextbook (chapter 1, section 1.1.2), explain, with examples, why differentapplication types require specialized software engineering techniques tosupport their design and development.

Differentapplication types require the use of different development techniques for anumber of reasons:

<![if !supportLists]>a)<![endif]>Costs and frequency of change. Somesystems (such as embedded systems in consumer devices) are extremely expensiveto change; others, must change frequently in responseto changing requirements (e.g. business systems). Systems which are veryexpensive to change need extensive upfront analysis to ensure that therequirements are consistent and extensive validation to ensure that the systemmeets its specification. This is not cost effective for systems that changevery rapidly.

<![if !supportLists]>b)<![endif]>The most important ¡®non-functional¡¯requirements. Different systems have different priorities for non-functionalrequirements. For example, a real-time control system in an aircraft has safetyas its principal priority; an interactive game has responsiveness and usabilityas its priority. The techniques used to achieve safety are not required forinteractive gaming; the extensive UI design required for games is not needed insafety-critical control systems.

<![if !supportLists]>c) <![endif]>The softwarelifetime and delivery schedule. Some software systems have a relatively shortlifetime (many web-based systems), others have alifetime of tens of years (large command and control systems). Some systemshave to be delivered quickly if they are to be useful. The techniques used todevelop short-lifetime, rapid delivery systems (e.g. use of scriptinglanguages, prototyping, etc.) are inappropriate for long-lifetime systems whichrequire techniques that allow for long-term support such as design modelling.

<![if !supportLists]>3.<![endif]>Explainwhy there are fundamental ideas of software engineering that apply to all typesof software systems.

Becauseof all software systems have common quality attributes, including availability,modifiability, performance, security and safety, testability and usability, thefundamental software ideas provides common solutions or tactics to supportthose qualities.

<![if !supportLists]>4.<![endif]>Givingreasons for your answer based on the type of system being developed, suggestthe most appropriate generic software process model that might be used as abasis for managing the development of the following systems:

<![if !supportLists]>a)<![endif]>Asystem to control anti-lock braking in a car

<![if !supportLists]>b)<![endif]>Avirtual reality system to support software maintenance

<![if !supportLists]>c)<![endif]>Auniversity accounting system that replaces an existing system

<![if !supportLists]>d)<![endif]>Aninteractive travel planning system that helps users plan journey with thelowest environment impact

<![if !supportLists]>a) <![endif]>Anti-lockbraking system This is a safety-critical system sorequires a lot of up-front analysis before implementation. It certainly needs aplan-driven approach to development with the requirements carefully analysed. A waterfall model is therefore the mostappropriate approach to use, perhaps with formal transformations between thedifferent development stages.

<![if !supportLists]>b)<![endif]>Virtual reality system This is a systemwhere the requirements will change and there will be an extensive userinterface components. Incremental development with, perhaps, some UIprototyping is the most appropriate model. An agile process may be used.

<![if !supportLists]>c)<![endif]>University accounting system This is a systemwhose requirements are fairly well-known and which will be used in anenvironment in conjunction with lots of other systems such as a research grantmanagement system. Therefore, a reuse-based approach is likely to beappropriate for this.

<![if !supportLists]>d) <![endif]>Interactivetravel planning system System with a complexuser interface but which must be stable and reliable. An incrementaldevelopment approach is the most appropriate as the system requirements willchange as real user experience with the system is gained.

<![if !supportLists]>5.<![endif]>Explainwhy incremental development is the most effective approach for developingbusiness software systems. Why is this model less appropriate for real-timesystems engineering?

Businesssoftware systems usually complex, software intensive, and frequently beingchanges when business goals or processes are changed. So incrementaldevelopment is better.

Real-timesystems usually involve many hardware components which are not easy to changeand cannot be incremental. Also real-time systems usually safety critical whichneeded be built based on well planned process.

<![if !supportLists]>6.<![endif]>Suggestwhy it is important to make a distinction between developing the userrequirements and developing system requirements in the requirements engineeringprocess.

Thereis a fundamental difference between the user and the system requirements thatmean they should be considered separately.

<![if !supportLists]>a)<![endif]>Theuser requirements are intended to describe the system¡¯s functions and featuresfrom a user perspective and it is essential that users understand theserequirements. They should be expressed in natural language and may not beexpressed in great detail, to allow some implementation flexibility. The peopleinvolved in the process must be able to understand the user¡¯s environment andapplication domain.

<![if !supportLists]>b)<![endif]>Thesystem requirements are much more detailed than the user requirements and areintended to be a precise specification of the system that may be part of asystem contract. They may also be used in situations where development isoutsourced and the development team need a complete specification of whatshould be developed. The system requirements are developed after user requirementshave been established.

<![if !supportLists]>7.<![endif]>Explainhow the principles underlying agile methods lead to the accelerated developmentand development of software.

Theprinciples underlying agile development are:

<![if !supportLists]>a)<![endif]>Individual and interactions over processes and tools. By takingadvantages of individual skills and ability and by ensuring that thedevelopment team knows what each other are doing, the overheads of formalcommunication and process assurance are avoided. This means that the team canfocus on the development of working software.

<![if !supportLists]>b)<![endif]>Working software over comprehensive documentation. Thiscontributes to accelerated development because time is not spent developing,checking and managing documentation. Rather, the programmer¡¯s time is focusedon the development and testing of code.

<![if !supportLists]>c)<![endif]>Customer collaboration over contractnegotiation. Rather than spending time developing, analyzing andnegotiating requirements to be included in a system contract, agile developersargue that it is more effective to get feedback from customer¡¯sdirectly during the development about what is required. This allows usefulfunctionality to be developed and delivered earlier than would be possible ifcontracts were required.

<![if !supportLists]>d)<![endif]>Responding to change over following aplan. Agile developers argue (rightly) that being responsive to change ismore effective than following a plan-based process because change is inevitablewhatever process is used. There is significant overhead in changing plans toaccommodate change and the inflexibility of a plan means that work may be donethat is later discarded.

<![if !supportLists]>8.<![endif]>Whenwould you recommend against the use of an agile method for developing asoftware system? Explain your answer.

Agilemethods should probably not be used when the software is being developed byteams 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 ispractically impossible to maintain.

Agilemethods should probably also be avoided for critical systems where theconsequences of a specification error are serious. In those circ*mstances, a systemspecification that is available before development starts makes a detailed specificationanalysis possible.

However,some ideas from agile approaches such as test first development are certainlyapplicable to critical systems.

<![if !supportLists]>9.<![endif]>Discoverambiguities or omissions in the following statement of requirements for part ofa ticket-issuing systems:

Anautomated ticket-issuing system sells rail tickets. Users select theirdestination and input a credit card and a personal identification number. Therail ticket is issued and their credit card account charged. When the user pressesthe start button, a menu display of potential destinations is activated, alongwith a message to the user to select a destination. Once a destination has beenselected, users are requested to input their credit card. Its validity ischecked and the user is then requested to input a personal identifier. When thecredit transaction has been validated, the ticket is issued.

Ambiguitiesand omissions include:

<![if !supportLists]>a)<![endif]>Cana customer buy several tickets for the same destination together or must theybe bought one at a time?

<![if !supportLists]>b)<![endif]>Cancustomers cancel a request if a mistake has been made?

<![if !supportLists]>c)<![endif]>Howshould the system respond if an invalid card is input?

<![if !supportLists]>d)<![endif]>Whathappens if customers try to put their card in before selecting a destination(as they would in ATM machines)?

<![if !supportLists]>e)<![endif]>Mustthe user press the start button again if they wish to buy another ticket to adifferent destination?

<![if !supportLists]>f)<![endif]>Shouldthe system only sell tickets between the station where the machine is situatedand direct connections or should it include all possible destinations?

<![if !supportLists]>10. <![endif]>Rewrite the above description using the structuredapproach described in chapter 4 of the textbook. Resolve the identifiedambiguities in an appropriate way.

<![if !supportLists]>11. <![endif]>Write a set of non-functional requirements for theticket-issuing system, setting out its expected reliability and response time.

Possiblenon-functional requirements for the ticket issuing system include:

<![if !supportLists]>a)<![endif]>Between0600 and 2300 in any one day, the total system down time should not exceed 5minutes.

<![if !supportLists]>b)<![endif]>Between0600 and 2300 in any one day, the recovery time after a system failure shouldnot exceed 2 minutes.

<![if !supportLists]>c)<![endif]>Between2300 and 0600 in any one day, the total system down time should not exceed 20minutes.

Allthese are availability requirements ¨C note that these vary according to thetime of day. Failures when most people are traveling are less acceptable thanfailures when there are few customers.

<![if !supportLists]>d)<![endif]>Afterthe customer presses a button on the machine, the display should be updatedwithin 0.5 seconds.

<![if !supportLists]>e)<![endif]>Theticket issuing time after credit card validation has been received should notexceed 10 seconds.

<![if !supportLists]>f)<![endif]>Whenvalidating credit cards, the display should provide a status message forcustomers indicating that activity is taking place. This tells the customerthat the potentially time consuming activity of validation is still in progressand that the system has not simply failed.

<![if !supportLists]>g)<![endif]>Themaximum acceptable failure rate for ticket issue requests is 1: 10000.

<![if !supportLists]>12. <![endif]>You have been asked to develop a system that will helpwith planning large-scale events and parties such us weddings, graduationcelebrations, birthday parties, etc.

<![if !supportLists]>(a)<![endif]>Modelingentities and their relationships which are involved in planning events andparties using a UML class diagram.

<![if !supportLists]>(b) <![endif]>Modeling the process context for such a system thatshows the activities involved in planning a party (booking a venue, organizinginvitations, etc.), using a UML activity diagram.

<![if !supportLists]>13. <![endif]>Develop a sequence diagram showing the interactionsinvolved when a student registers a course in a university. Courses may havelimited enrolment, so the registration process must include checks that placesare available. Assume that the student accesses an electronic course catalog to find out about available courses.

<![if !vml]>CS3043 Assignment 1 (1)<![endif]>

<![if !supportLists]>1.<![endif]>Drawa UML state diagram of the control software for ONE of the follows:

<![if !supportLists]>¡¤<![endif]>Anautomatic washing machine that has different programs for different types ofclothes.

<![if !supportLists]>¡¤<![endif]>Thesoftware for a DVD player.

<![if !supportLists]>¡¤<![endif]>Atelephone answering system that records incoming messages and displays thenumber of accepted messages on an LED. The system should allow the telephonecustomer to dial in from any location, type a sequence of numbers (identifiedas tones), and play any recorded messages.

<![if !supportLists]>2.<![endif]>Explainwhy design conflicts might arise when designing an architecture for which bothavailability and security requirements are the most important non-functionalrequirements.

<![if !supportLists]>3.<![endif]>Drawa UML class diagram showing a conceptual view and draw a UML sequence diagramshowing a process view of the architecture of ONE of the following systems:

<![if !supportLists]>¡¤<![endif]>Anautomated ticket-issuing system used by passengers at a railway station

<![if !supportLists]>¡¤<![endif]>Acomputer-controlled video conferencing system that allows video, audio andcomputer data to be visible to several participants at the same time.

<![if !supportLists]>¡¤<![endif]>Arobot floor cleaner that is intended to clean relatively clear spaces such ascorridors. The cleaner must be able to sense walls and other obstructions.

<![if !supportLists]>4.<![endif]>Foreach of the following architectural patterns described in the textbook,describe a real-world or example application system which should be designedusing the pattern.

<![if !supportLists]>¡¤<![endif]>MVC

<![if !supportLists]>¡¤<![endif]>Layered

<![if !supportLists]>¡¤<![endif]>Repository

<![if !supportLists]>¡¤<![endif]>Client-server

<![if !supportLists]>¡¤<![endif]>Pipeand filter

<![if !supportLists]>5.<![endif]>Suggestan architecture for a system (such as iTune) that is used to sell and distribute music on theinternet. What architectural patterns are the basis forthis architecture? Explain your answer.

<![if !supportLists]>6.<![endif]>Usingthe basic model of an information system, as presented in Figure 6.16 of thetextbook, suggest the components that might be part of an information systemthat allows users to view information about flights arriving and departing froma particular airport.

<![if !supportLists]>7.<![endif]>Usingthe UML graphical notation for object classes, design the following objectclasses, identifying attributes and operations. Use your own experience todecide on the attributes and operations that should be associated with theseobjects:

<![if !supportLists]>¡¤<![endif]>Atelephone

<![if !supportLists]>¡¤<![endif]>Aprinter for personal computer

<![if !supportLists]>¡¤<![endif]>Apersonal stereo system

<![if !supportLists]>¡¤<![endif]>Abank account

<![if !supportLists]>¡¤<![endif]>Alibrary catalog

<![if !supportLists]>8.<![endif]>Identifypossible objects in ONE of the following systems and develop an object-orienteddesign for them. Using a UML class diagram and associated explanation to showyour design. You may make many reasonable assumptions about the system whenderiving the design.

<![if !supportLists]>¡¤<![endif]>Agroup diary and time management system is intended to support the timetablingof meetings and appointments across a group of co-workers. When an appointmentis to be made that involves a number of people, the system finds a common slotin each of their diaries and arranges the appointment for that time. If nocommon slots are available, it interacts with the user to rearrange his or herpersonal diary to make room for the appointment.

<![if !supportLists]>¡¤<![endif]>Afilling station (gas station) is to be set up for fully automated operation.Drivers swipe their credit card through a reader connected to the pump; thecard is verified by communication with a credit company computer, and fuellimit is established. The driver may then take the fuel required. When fueldelivery is complete and the pump host is returned to its holster, the driver¡¯scredit card account is debited with the cost of the fuel taken. The credit cardis returned after debiting. If the card is invalid, the pump returns it beforefuel is dispensed.

<![if !supportLists]>9.<![endif]>Forthe Observer design pattern described in the textbook, describe a real-world orexample application which should be design using the pattern.

<![if !supportLists]>10. <![endif]>A small company has developed a specialized productthat it configures specially for each customer. New customers usually havespecific requirements to be incorporated into their system, and they pay forthese to be developed. The company has an opportunity to bid for a newcontract, which would more than double its customer base. The new customer alsowishes to have some involvement in the configuration of the system. Explainwhy, in these circ*mstances, it might be a good idea for the company owning thesoftware to make it open source.

Thekey benefits of open source are is that it opens up development to a wide rangeof developers and so accelerates the development and debugging of the product. Doublingthe customer base places immense strains on a small company of they have totake on a lot of new staff and so going open source means that the costs of expansionare reduced.

In this case, because theproduct is specialized to the needs of different users, the company that ownthe software can still charge these users to make the changes to the system.Hence the loss in revenue from selling the software is compensated by theadditional effort available to service more customers.

Furthermore, large companiesare often reluctant to buy from small companies who may go out of business, Tosome extent, open source provides reassurance to customers that, even of theoriginal owners of the software are unavailable, they can get access to thesource code and hence continue to maintain their system.

Finally, open source mayincrease knowledge of the company¡¯s product and so attract more customers.

<![if !supportLists]>11. <![endif]>It states that ¡°testing can only detect the presenceof error, not their absence¡±. Do you agree with this statement? If yes, explainwhy. If not, use an example to show how?

Assumethat exhaustive testing of a program, where every possible valid input is checked,is impossible (true for all but trivial programs). Test cases either do not reveala fault in the program or reveal a program fault. If they reveal a program faultthen they demonstrate the presence of an error. If they do not reveal a fault, however,this simply means that they have executed a code sequence that ¨C for the inputschosen ¨C is not faulty. The next test of the same code sequence ¨C with differentinputs ¨C could reveal a fault.

<![if !supportLists]>12. <![endif]>You have been asked to test a method called ¡°catWhiteSpace¡± in a ¡°Paragraph¡± object that, within theparagraph, replaces sequences if blank characters with a single blank charater. Identify testing partitions for this example andderive a set of tests for the ¡°catWhiteSpace¡± method.

Testingpartitions are:

Stringswith only single blank characters

Stringswith sequences of blank characters in the middle of the string

Stringswith sequences of blank characters at the beginning/end of string

Examplesof tests:

Thequick brown fox jumped over the lazy dog (only single blanks)

Thequick brown fox jumped over the lazy dog (different numbers of blanks in thesequence)

Thequick brown fox jumped over the lazy dog (1st blank is a sequence)

Thequick brown fox jumped over the lazy dog (Last blank is a sequence)

Thequick brown fox jumped over the lazy dog (2 blanks at beginning)

Thequick brown fox jumped over the lazy dog (several blanks at beginning)

Thequick brown fox jumped over the lazy dog (2 blanks at end)

Thequick brown fox jumped over the lazy dog (several blanks at end)

Etc.

<![if !supportLists]>13. <![endif]>What is regression testing? Explain how the use ofautomated tests and a testing framework such as JUnitsimplifies regression testing.

Regressiontesting is the process of running tests for functionality that has already beenimplemented when new functionality is developed or the system is changed. Regressiontests check that the system changes have not introduced problems into thepreviously implemented code.

Automatedtests and a testing framework, such as JUnit,radically simplify regression testing as the entire test set can be run automaticallyeach time a change is made. The automated tests include their own checks thatthe test has been successful or otherwise so the costs of checking the successor otherwise of regression tests is low.

<![if !supportLists]>14. <![endif]>As a software project manager in a company thatspecializes in the development of software for offshore oil industry, you havebeen given the task of discovering the factors that affect the maintainabilityof the systems developed by your company. Suggest how you might set up aprogram to analyze the maintenance process and discover appropriatemaintainability metrics for your company.

This is a very open question, where there are manypossible answers. Basically,the students should identify factors which affect maintainability such as (program and data complexity, use ofmeaningful identifiers, programming language,program documentation etc.). They should then suggest how these can be evaluated in existing systems whosemaintenance cost is known and discuss problemsof interaction. The approach should be to discover those program units which have particularly highmaintenance costs and to evaluate the cost factors for these components and for other components. Then check forcorrelations.

<![if !supportLists]>15. <![endif]>Briefly describe the three main types of softwaremaintenance. Use examples to explain why it sometimes difficult to distinguishbetween them?

Thethree main types of software maintenance are:

<![if !supportLists]>a)<![endif]>Correctivemaintenance or fault repair. The changes made to the system are to repairreported faults which may be program bugs or specification errors or omissions.

<![if !supportLists]>b)<![endif]>Adaptivemaintenance or environmental adaptation. Changing the software to adapt it tochanges in its environment e.g. changes to other software systems.

<![if !supportLists]>c)<![endif]>Perfectivemaintenance or functionality addition. This involves adding new functionalityor features to the system.

Theyare sometimes difficult to distinguish because the same set of changes maycover all three types of maintenance. For example, a reported fault in the systemmay be repaired by upgrading some other software and then adapting the systemto use this new version (corrective + adaptive). The new software may have additionalfunctionality and as part of the adaptive maintenance, new features may beadded to take advantage of this.

<![if !supportLists]>16. <![endif]>Under what circ*mstances might an organization decideto scrap a system when the system assessment suggests that it is of highquality and of high business value?

Examplesof where software might be scrapped and rewritten are:

<![if !supportLists]>a)<![endif]>Whenthe cost of maintenance is high and the organisationhas decided to invest in new hardware. This will involve significant conversioncosts anyway so the opportunity might be taken to rewrite the software.

<![if !supportLists]>b)<![endif]>Whena business process is changed and new software is required to support theprocess.

<![if !supportLists]>c)<![endif]>Whensupport for the tools and language used to develop the software is unavailable.This is a particular problem with early 4GLs where, in many cases, the vendorsare no longer in business.

<![if !supportLists]>17. <![endif]>Do software engineers have a professionalresponsibility to produce code that can be maintained and changed even if thisis not explicitly requested by their employer?

Yes,this is general software quality requirements which all software engineersshould follow, unless it is specifically un-requested by the employer with goodreason such as rapid development or prototyping.

Write your answers in a MS Word file with name¡°cs3043a1.doc¡± or a PDF file with name ¡°cs1043a1.pdf¡±. Submit the file throughthe course website.

CS3043 Assignment 1 (2024)
Top Articles
Latest Posts
Article information

Author: Catherine Tremblay

Last Updated:

Views: 5424

Rating: 4.7 / 5 (67 voted)

Reviews: 90% of readers found this page helpful

Author information

Name: Catherine Tremblay

Birthday: 1999-09-23

Address: Suite 461 73643 Sherril Loaf, Dickinsonland, AZ 47941-2379

Phone: +2678139151039

Job: International Administration Supervisor

Hobby: Dowsing, Snowboarding, Rowing, Beekeeping, Calligraphy, Shooting, Air sports

Introduction: My name is Catherine Tremblay, I am a precious, perfect, tasty, enthusiastic, inexpensive, vast, kind person who loves writing and wants to share my knowledge and understanding with you.