Analysis of Software Development Challenges and Solutions

Verified

Added on  2020/12/03

|6
|2182
|1491
Homework Assignment
AI Summary
This assignment delves into the complexities of software development, addressing challenges such as project delays, high costs, and quality assurance. It explores the iterative nature of software design, the importance of understanding user requirements, and the role of testing and debugging in the development lifecycle. The assignment also examines the Agile methodology, specifically Scrum, highlighting its iterative approach and the use of rapid prototyping for clarifying requirements and gathering user feedback. It further discusses FURPS quality factors, emphasizing the significance of usability, and provides examples of structured programming languages like C, Visual Basic, and Ada. Additionally, the assignment covers concurrency control in Agile processes through pessimistic locking and the advantages of component-based software engineering, emphasizing reusability and adaptability. The content is supplemented by external resources, providing a comprehensive overview of software engineering principles and practices.
Document Page
1.
Why does it takes software so long to get finished?
The process can take a long time to finish due to the many complexities often associated with
designing software. First and one of the harder parts is to understand the requirements, many
times the one requesting the software is non-technical so this needs to be translated to the
development team. This process could be a back and forth between the requester and the
developer. Then you must design a proof of concept to map out the complexities of the project.
The goal is to develop software as a complete package as users of software don’t want
functionality alone it needs be user friendly. Then testing the functionality for example, If you
are developing a web browser, input conditions should be checked against boundary conditions
(typing unwanted inputs how does the browser respond?). We must also consider the requesters
wanting changes as they see different test versions come to life. This combined with testing
every feature and debugging add to a time-consuming process.
q. Why are development cost so high?
a. Every stage that is stated above is performed by either a single person or multiple teams in
case of an enterprise application. There is a minimum cost incurred for using a person or a
resource. Person/ Resource are charged on per hour basis. Every step in the software
development process is estimated roughly. After proof of concept an exact estimation of
resource/hour is allocated and finally the cost is arrived.
q. why can't we find errors before we give the software to our customers?
a. Most cases functional testing is done by developers after which integration, regression, testing
for bugs and performance testing are done by testers. Some bugs like environmental bugs, bugs
that occur because developer does programming on single machine and production environment
has distributed environment cannot be avoided). Sometimes dlls get upgraded, functionality gets
depreciated and the developed software throws error.
Q. Why do we spend so much and effort maintaining existing program?
a. Systems contain critical information about customers. It gives information about business like
who are our customers, what is the market that is good, which markets are bad. Is a particular
product selling good/bad. All the information are critical to the business owners and maintaining
the systems that contain these information is critical. If information is lost business looses
valuable information.
q. Why do we continue to have difficulty in measuring process as software is being developed
and maintained?
a. Process is always difficult to maintain. As many teams are involved in developing software,
some teams can work on same code. In such case communication is essential. If some team takes
partially completed code of other team and puts in production, team A's functionality may work
correctly but the other teams incorrect code can break some other portion of the system. Hence
process is difficult to measure and maintain.
tabler-icon-diamond-filled.svg

Paraphrase This Document

Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser
Document Page
2.
SCRUM :-
Scrum is an iterative process in Agile methodology. It consists of small teams of size 6 to 9
members each. In this SCRUM team members break their work and will be completed in a
particular timeframe. During this time they continuously had meetings and status like standup
calls and scrum meetings etc like this to achieve the work.
QA team also will assist these scrum teams who develops applications or write's code. The QA
team will continuously do their quality testing rigorously before they deliver it to the client.
Also in support environments i.e. as mentioned as continuous engineering also would part in this
in such a way that once the process or product developed is delivered to the client they use those
delivered thing and if they encounter any issues those will be sent back to the scrum teams
anyway to resolve this issues.
So I would say that this method will completely fill my requirements because in SCRUM for
every 15 days or so they take up a new process from the client and implement this and deliver. In
this process even though the very first even if they don’t given full requirements in a time being
during the Scrum process client will however tell their detailed requirement then for
development. So this way all the things will be covered up.
3.
There are many processes within the Agile framework, from Lean to Extreme programming, and
more. There are even other frameworks, such as Scrum. Many of these processes and
frameworks have unique characteristics that will guide specific answers to your questions.
When should you use rapid prototyping?
As early as possible and as often as needed. In Scrum, rapid prototyping can be used by the
Product Owner in clarifying requirements/features with the customer and end-users while the
Prioritized Product Backlog is being created. During the create deliverables process, the Scrum
Team may have questions about feature designs that must be clarified before more work is done.
Using a rapid prototype to explain their questions to the PO and then the PO using the prototype
to get clarifications from the customer would be appropriate.
How should you use rapid prototyping?
It should be used to create clear communications and to imagine and re-imagine
solutions/features and so on.
Rapid prototyping is useful for iterating design concepts in a lo-fi manner to get fast feedback
from users/stakeholders. The rapid nature of these designs allows you to experiment with several
ideas, and as such the earlier you do this in the delivery lifecycle the better.
We have used rapid prototyping in a continuous delivery/improvement fashion on projects,
incorporating them at the point of feature design, and incrementing early on to help us settle on
Document Page
the overall UI/UX of the software. We have also used the same prototypes in early user testing
before building any software, to use the feedback to drive the design. We gained some useful and
at times unexpected feedback, which helped us to hone our concepts in an efficient and
inexpensive way.
4.
https://www.chegg.com/homework-help/questions-and-answers/explain-detail-requirements-
gathering-use-techniques-inception-software-engineers-use-cont-q24241576?
trackid=29c7c3b7681a&strackid=c136cecf3a6a
5.
The most important FURPS quality factor in my perspective is the Usability Factor.
The main reason behind this argument is that it takes into account not only the Software design
factors but also the human factors.
Other FURPS quality measures are only meant to assess the software quality whether it is
reliable or whether its performance is upto the mark or not.
Usability is the degree to which software can be used by specific consumers to achieve specific
goals with efficiency, effectiveness, and satisfaction in a quantifiable context of use.
6.
FORMAT THIS ANWSER
Structured programming languages:
A programming language is called as structured programming language if it uses sequence,
repetition, selection, subroutines and block routines. The use of goto is avoided.
Examples of three programming languages:
C
Visual basic
Ada
Visual Basic:
Visual Basic is a structured-programming language as it supports the structured concepts.
Sequence:
A code block is executed orderly in that order thy have written.
Eg:
x=11;
y=6;
w=x+y;
WriteLine(w);
Repetition or iteration:
A code is block executed repeatedly until certain condition is true. The repetition is done by
using while, for, Do…While loops.
While condition
Statements
End While
Eg:
Document Page
kk=1
While kk<=10
WriteLine(kk)
kk = kk+1
End
Selection:
It uses a blocks of codes to perform the task. One/more code-blocks are implemented based
on the circumstance. The selection-statement is achieved by using “if-else”, nested if-else,
“switch”.
Eg:
If number Mod 2=0
WriteLine(“Even number”)
Else
WriteLine (“Odd Number”)
End If
C
C is also a structured-programming languages as it uses structured programming concepts
such as loops, “if-else”, “switch”, functions and blocks to the perform the required task.
SEQUENCE:
Blocks of code are executed in order.
The addition of 2 numbers can be done by using the sequence-statements,
a=10;
b=5;
c=a+b;
ITERATION OR REPETITION:
Repeat a code block until definite condition is met. The repetition statements here are
while, for, do-while.
To print numbers from 1--10, the following repetition-statement can be used,
i=1;
while(i<=10)
{
printf(“%d\n”, i);
i++;
}
SELECTION:
A code-block is implemented based on the fulfilling-condition. The if-else, nested if-else,
switch are used in this for achieving the selection control.
To print a number is even or odd the following selection statement can be used.
if(number%2==0)
{
printf(“The number is EVEN”);
}
else
{
printf(“The number is ODD”);
}
tabler-icon-diamond-filled.svg

Paraphrase This Document

Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser
Document Page
Ada:
Sequence:
The codes are executed in that order they have written.
Eg:
Ada.Text_IO.Put_Line(aa);
Ada.Text_IO.Put_Line(bb);
Repetition or iteration:
A code block is repeated until certain condition is true. Ada uses “for, while, loop-exit” to
achieve the repetition structure.
Eg:
for kk in 1 .. 10 loop
Ada.Text_IO.Put(kk);
end loop;
Selection:
A code-block is implemented based on the fulfilling-condition.
Eg:
if aa>bb then
Ada.Text_IO.Put_Line(“A is greater”);
else
Ada.Text_IO.Put_Line(“B is greater”);
end if;
7.
https://www.chegg.com/homework-help/software-engineering-a-practitioners-approach-6th-
edition-chapter-11-problem-14p-solution-9780073019338?
trackid=b4dbf5598354&strackid=56972ee6b894
8.
Concurrency control in the agile process can be completed through Pessimistic locking.This is
an approach where an entity is locked in the database. This will limit or prevent otherusers from
working with the information (software) in that database (Christos Papadimitriou,1986). Only
the developer will be able to update or delete the entity. A write lock disallowsanyone from
updating, reading, or deleting the entity. A read lock will ensure that the entity doesnot change.
The hold lock will allow others to read the entity but prevent them to update ordelete it. The lock
scope can be the entire database, a table, a single row or a collection of rows.
9.
https://www.chegg.com/homework-help/questions-and-answers/explain-cost-quality-terms-
prevention-appraisal-failure-give-examples-q24248084?
trackid=932fc070a50c&strackid=bbd8a720405e
10.
Document Page
Software components cannot be defined on the basis of aparticular programming language or
technology. It is im-portant in which manner the component will be used. Also,essential is the
context and the composition without anyadaptions. The component model describes how compo-
nents interact and how they can be composed.
Agile methods are more suitable forsmall and changing projects. On the other hand,
biggerprojects often tend to change more. Hence, it makes senseto include a small amount of
agility in larger.
Agile software development refers to software development methodologies centered round the
idea of iterative development, where requirements and solutions evolve through collaboration
between self-organizing cross-functional teams. The ultimate value in Agile development is that
it enables teams to deliver value faster, with greater quality and predictablity, and greater
aptitude to respond to change.
Components are atomic units, and building with components allows for their reuse in future
development cycles. Since technologies come and go, this is invaluable. If you build your
application in a componentized format, you’re able to swap the best components in and out.
Using a component-based UI approach supports iterative, agile development. Components are
hosted in a library from which teams can access, integrate and modify them throughout the
development process.
The component library can be versioned in the repository, enabling tracking of which
applications are on which version of the approved UX. This also will facilitate the governance
and update process.
Agile Software Development and Component Based Software Engineering are two
fundamentally different methods to serve today's demands of software engineering. By
combining the technical and organizational issues, we introduce an approach for a consequent
integration to allow agile component development in the small and system engineering in the
large, respectively.
chevron_up_icon
1 out of 6
circle_padding
hide_on_mobile
zoom_out_icon
[object Object]