201064120_SSAD_Assignment_5_Team_ID_29_[1]
-
Upload
shivani-jain -
Category
Documents
-
view
63 -
download
0
Transcript of 201064120_SSAD_Assignment_5_Team_ID_29_[1]
![Page 1: 201064120_SSAD_Assignment_5_Team_ID_29_[1]](https://reader036.fdocuments.us/reader036/viewer/2022081908/553cbebe4a79593e298b4a2f/html5/thumbnails/1.jpg)
ASSIGNMENT 5B
TEAM ID 29
SIDDHARTH GOYAL – 201064049,
SHRIYAA MITTAL – 201064056,
NITISH ALODIA – 201064062,
ANUBHAV CHATURVEDI – 201064094,
SRICHARAN THOTA – 201064120
![Page 2: 201064120_SSAD_Assignment_5_Team_ID_29_[1]](https://reader036.fdocuments.us/reader036/viewer/2022081908/553cbebe4a79593e298b4a2f/html5/thumbnails/2.jpg)
1.5
The seven categories of software are as follows:
1. System Software
2. Application Software
3. Engineering/Scientific Software
4. Embedded Software
5. Product-line Software
6. Web Applications
7. Artificial intelligence Software
All of these are similar in nature and yet, have special features associated with each of them.
For instance web applications are unique in terms of network intensiveness, concurrency,
unpredictable load, availability, data driven, content sensitive, continuous evolution,
immediacy and security.
But, the same approach to software engineering can be applied to each of them keeping in
view the category the software to be constructed belongs.
It is imperative to identify the stakeholders involved and communicate with every one of
them to consider the requirements, opinions and ideas of all. Else, the end-product would not
be of good quality and would end up being redundant. A project-plan must be made which
defines the tasks to be conducted the, technologies to be used, risks involved, resources
required and a schedule of the work. All categories of softwares would require that every task
to be executed by the final product is modelled taking into account the nitty-gritties of the
requirements. This could be done by specifying use-cases and developing UML diagrams.
Coding is another aspect of software engineering and, probably the most tempting one for
any software developer. It should be noted that the codes are robust and modular. They must
also have the capability to be adaptive to changes in the future. The conclusive and the most
important step is delivering the software to the customer. This could be done periodically or
just once on completion depending on the specifications in the work schedule.
Thus, the details of the software process will vary from one category to another but, the
framework will always remain same.
![Page 3: 201064120_SSAD_Assignment_5_Team_ID_29_[1]](https://reader036.fdocuments.us/reader036/viewer/2022081908/553cbebe4a79593e298b4a2f/html5/thumbnails/3.jpg)
2.7
The waterfall model suggests a systematic sequential approach to software development that
begins with customer satisfaction -
The three software projects that would be amenable to waterfall model will be -
1. A well-understood modification to an existing program
2. A straightforward implementation of a numerical calculation or business rule, even if
it is complex.
3. A constrained enhancement to an existing program
2.10
The Three software projects that would be amenable to incremental process model will be -
1. A project that has significant functionality that must be delivered in a very tight time
frame.
2. Movie playing softwares which can start with basic functionality like playing movie
and listening to music, but can be developed further to include plugins for playing
new formats and better visualisations.
3. Text editing programs, which can be started with basic applications for typing,
deleting, copying and pasting text, but can be developed to include new fonts, spell
checking, inserting pictures, word art, text and background colours etc.
3.2
As it is often said 'The only thing that is constant is CHANGE'. The same applies to Software
development too. Thus software developers must always be on their toes to accept and adopt
changes, instead of evading them. The changes could be in the software being built, the team
members, the work environment or changes due to a new technology.
Agility is more than an effective response to change in the following manner:
Self-organization and motivation are required, team work and communication between group
members is essential.
Working software will be more useful and welcome than just presenting documents to clients
in the meetings.
Requirements cannot be fully collected at the beginning of the software development cycle,
therefore, continuous customer or stakeholder involvement is very important. But, the
distinction between 'us' and 'them' is not there.
Agile development is focused on quick responses to change and continuous development.
Specific tools and techniques such as continuous integration, automated or xUnit test, pair
programming, test driven development, design patterns, domain-driven design, code
![Page 4: 201064120_SSAD_Assignment_5_Team_ID_29_[1]](https://reader036.fdocuments.us/reader036/viewer/2022081908/553cbebe4a79593e298b4a2f/html5/thumbnails/4.jpg)
refactoring and other techniques are often used to improve quality and enhance project
agility.
3.3
In various situations the initial requirements of the software are well defined, but then also
the overall development effort follows a purely linear process. Also, there might be a demand
to make software with limited functionality for some users and to quickly refine and expand
the functionality in later releases. These are the cases where incremental process is
appropriate to use. In other words the incremental or the ITERATIVE process allows proper
evolving of the desired software keeping in view the change of requirements of the users. So
the iterative process makes it easier to manage change. This is also true because the current
release serves as the starting point of the next release and also required changes can be made.
Yes every agile process described in the chapter is iterative because the software is developed
in view of all the changes and also with the goal of going forward to deliver the final
software.
No, it is not possible for a process to complete a project in just one iteration and still be agile
because then no changes will be considered after the iteration thus contradicting agile view of
the process which suggests that the software development team responds appropriately to any
changes suggested by the user.
4.3
“Separation of concerns” Here refers to analysis and design of a software system when done
through a method called “Divide and Conquer” . In this method, we tend to separate the
various problems referred to in the software system and conquer each one of them.
Separation of Concerns (SoC) is the process of separating a computer program into distinct
features that overlap in functionality as little as possible. A concern is any piece of interest or
focus in a program. Typically, concerns are synonymous with features or behaviours.
Progress towards SoC is traditionally achieved through modularity of programming and
encapsulation (or "transparency" of operation), with the help of information hiding. Layered
designs in information systems are also often based on separation of concerns (e.g.,
presentation layer, business logic layer, data access layer, database layer).
Ideally, Each concern delivers distinct functionality that can be developed, and in some cases
validated, independently of other concerns.
4.9
A Project plan is always iterative. The requirements of the mentors keep changing leading to
the change in the project plans and the product. Hence the plan must be adjusted to
accommodate these changes. In addition, iterative, incremental process models dictate
replanning after the delivery of each software increment based on feedback received from
users.
![Page 5: 201064120_SSAD_Assignment_5_Team_ID_29_[1]](https://reader036.fdocuments.us/reader036/viewer/2022081908/553cbebe4a79593e298b4a2f/html5/thumbnails/5.jpg)
Iterations lead to changing the system functionality into increments (portions). In each
increment, a slice of functionality is delivered through cross-discipline work, from the
requirements to the deployment. The unified process groups increments/iterations into
phases: inception, elaboration, construction, and transition.
Inception identifies project scope, risks, and requirements (functional and non-
functional) at a high level but in enough detail that work can be estimated.
Elaboration delivers a working architecture that mitigates the top risks and fulfils the
non-functional requirements.
Construction incrementally fills-in the architecture with production-ready code
produced from analysis, design, implementation, and testing of the functional
requirements.
Transition delivers the system into the production operating environment.
Each of the phases may be divided into 1 or more iterations, which are usually time-boxed
rather than feature-boxed. Architects and analysts work one iteration ahead of developers and
testers to keep their work-product backlog full.
Hence the Project plan is always Iterative.
4.14
I disagree with the statement “ Since we deliver multiple increments to the customer, why
should we be concerned about the quality in the early increments- we can fix problems in the
later iterations.”
I disagree to this statement because
1. Each increment builds on the next and no one wants to build on a low quality foundation.
2. If the first increments are low in quality, customers and users may become concerned
(about the competence of the team); unnecessary tension may develop, and follow-on
communication suffers.
We should understand it form the quote which says
“
Quality is built in to the product from the beginning, not some afterthought applied right
at the end.”
5.2
The first step in software engineering is to understand the problem, the people who want the
solution, nature of the solution desired and the need to communicate with different
stakeholders.
![Page 6: 201064120_SSAD_Assignment_5_Team_ID_29_[1]](https://reader036.fdocuments.us/reader036/viewer/2022081908/553cbebe4a79593e298b4a2f/html5/thumbnails/6.jpg)
Next, is to ask the customer, the user and others, the objectives and their expectations from
the product. It is a key step towards building the software. If it is not carried out or is done so
in a jiffy, the end-product will not be what the end-users wanted and thus, of no use. It may
lead to a lot of changes once you have begun coding which is not an advisable situation.
Also, it would lead to delays and inability to deliver the product on time according to the
work schedule.
Sometimes, it may happen that the customer is busy and is unable to meet the requirements
engineer, i.e. us in this case. It is not desirable, but, may happen. In such a scenario, the role
of the requirements engineer becomes that he identifies the stakeholders, meets up all of
them, except the customer, who is too busy to do so and derives an understanding of the
problem and the solution from them as much as possible. Next, he may prepare the
SRS(Software Requirements Specifications) document and then send it to the customer for a
review. This way the customer will not have to start from scratch with the requirements
engineer and already has something to go upon.
Also, if the issue is that the customer is busy to meet physically, then, virtual meetings can
also conducted for example, on the phone, e-mail, chat, Skype etc.
6.6 (a)
Pothole location: The location in the street of the pothole. The places allowed are near the
curb, and near the middle of the street.
Pothole repair state: The condition of the pothole in terms of what stage of repair it is in. The
states of the pothole: not repaired, work in progress, temporary repair, and repaired.
The scale of a pothole: A ranking, on a scale of one to ten, of the size of a pothole.
The Pothole Tracking and Reporting System (PHTRS) provide a way for citizens of a large
city to report potholes and to report damage they have experienced as the result of a
pothole. The PHTRS keeps track of the potholes and damage and creates work orders for
repair crews. The repair crews use the PHTRS to record information about their effort to
repair potholes. Authorized users of the system can receive a report on potholes and their
repair status and on reported damage.
The PHTRS is an on-line, web-based system.
PHTRS users are from all walks of life, all backgrounds, and all levels of computer literacy
found in the citizenry of a large city. They are expected to be familiar with web browsers and
filling out on-line forms.
![Page 7: 201064120_SSAD_Assignment_5_Team_ID_29_[1]](https://reader036.fdocuments.us/reader036/viewer/2022081908/553cbebe4a79593e298b4a2f/html5/thumbnails/7.jpg)
Use Cases
The PHTRS supports the following uses:
Report a Pothole: A citizen reports the location and size of a pothole. The PHTRS records
this information.
Report Damage: A citizen reports damage due to a pothole. The PHTRS records damage
information and citizen contact information.
Get Work Orders: Work crews receive pothole repair work orders. The PHTRS determines
the number of people in a repair crew, the equipment assigned to the repair crew, and the
potholes the crew is to repair.
Record Repairs: Work crews report the status of pothole repairs they have performed and
the amount of time and materials used on the repairs. The PHTRS records this information.
View Pothole and Damage Reports: Authorized users of the PHTRS view information on
potholes and their repair and on reported damage.
Actors:
Citizens can report potholes and report damage. The citizen initiates this use of the PHTRS.
Work crews can get work orders for potholes needing repair and can record information
about the pothole repair work they have done. A representative of a work crew initiates this
use of the PHTRS.
An authorized user of the PHTRS can view pothole reports and damage reports. The
authorized user initiates this use of the PHTRS.