0% found this document useful (0 votes)
76 views

CSC 1301 Fundamental of Software Engineering Third Assignment

This document contains a student's assignment submission for their Fundamentals of Software Engineering course. It includes responses to 4 questions about software development processes and requirements engineering. The student provides explanations and examples to justify their positions on topics like incremental development approaches, distinguishing between user and system requirements, the interdependence of design activities, and whether programmers are the best testers of their own code.

Uploaded by

Achyut Neupane
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
76 views

CSC 1301 Fundamental of Software Engineering Third Assignment

This document contains a student's assignment submission for their Fundamentals of Software Engineering course. It includes responses to 4 questions about software development processes and requirements engineering. The student provides explanations and examples to justify their positions on topics like incremental development approaches, distinguishing between user and system requirements, the interdependence of design activities, and whether programmers are the best testers of their own code.

Uploaded by

Achyut Neupane
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Programme Name: BCS

Course Code: CSC 1301


Course Name: Fundamental of Software Engineering
Assignment: Third
Date of Submission: 4 January 2021

Submitted By: Submitted To:


Student Name: Achyut Neupane Faculty Name: Amar Subedi
IUKL ID: Department: PO
Semester: 1st Semester
Intake: September 2021
Q. 1. Customer who do not know the clear idea about system what they needed for the
perform their daily operation; for those customer incremental software development
might be effective. List and explain four points to justify your answer.
A

Fig: Incremental Model of software development

Having no clear ideas in software development field is pretty hard being a customer. For
a customer having no technical knowledge, understanding the system will be difficult.
Being a customer, they must know how the system is operating in a fairly non-technical
way. For this, incremental software development is the best approach.
As shown in above figure, incremental model is divided into iterations of multiple builds
with new feature or function added in every build. Each build involves designing,
developing, testing and implementing phases. New build is combined with older release
until all the functionalities are being implemented.
For a non-technical customer, incremental method is effective. Here are some points to
justify this:
a) A customer, without knowing and technicalities is looking for production pattern
which gives faster result. Incremental model is known to be a faster method of
software development.
b) In incremental model, functionalities in new releases are properly explained to the
customer. They are properly documented and discussed before working in it. So,
customer can easily understand the system partially but detailly and respond to it.
c) During development, changes can occur frequently. Incremental model is the most
effective model for this. If the customer suggests any changes to occur, this can be
done in the next model to be built.
d) The customer should not have to wait to the end for using the system. They can
prioritize the requirements and can start using the system when certain function
has been added.
Q. 2. It is important to make a distinction between developing the user requirements and
developing system requirements in the requirements engineering process. Provide
your suggestion with justification why?
A User requirements are the functions that the user want to see on the program. The user
requirements are in pattern “I need _____ in this program”, and “I expect the system to
________”. User requirements are written fairly in natural language or in form of
diagrams.
System requirement are the procedures that should be followed by the system. These
are the requirements that are essential for the user requirement to function. The system
requirements are in pattern “The system should ______”.
The major distinction between these two are:
a) User requirements must be fairly in communicable language whereas system
requirements are fairly more technical.
b) System requirements should be testable whereas user requirements may not be
testable.
c) User requirements seems like a wish and system requirements seems like a
procedure.
d) In user requirement, user is the subject whereas in system requirement, system is
the object.
A system or program must contain these requirements in order to fully function. Since
these two types of requirements are different than the other, it Is important to make a
distinction between developing these two requirements.
Q. 3. Design activities of database design, interface design, component design and
architectural design are interdependent to each other’s. Explain in four point using
example why these are interdependent.
A Taking an example of an ecommerce, we can state these design as:
a) Database design:
Þ Database design is the design of system data and structure to represent
them in the database.
Þ Database schemas for products, their details, orders, status of orders,
user details, and many more database structure should be designed.
Þ All the data are stored in the database storage.
Þ Database contains the data which is used to populate the components.
b) Component design
Þ Component design is the design for module of the system and using it if
already built.
Þ Different components are designed for product, comments, user reviews,
related products, and many more and included in a single interface as
product preview page.
Þ Components should be reusable. For example, same component can be
used for every product in the interface.
Þ Component is just a wireframe and later populated using the data from
database.
c) Interface design:
Þ Interface design is the design of interfaces between system components.
Þ The interface to show the product preview, comments, user details,
orders are designed for proper user experience.
Þ Every interface is connected to each other.
Þ Interfaces are designed by combining components together.
d) Architectural design
Þ Architectural design is the design of overall structure of the system,
components and relationship.
Þ Overall structure of an ecommerce system is designed. How database,
interface and components and their relationship are discussed.
Þ Whole architecture design is responsible for efficient individual element
design.
Þ This design specifies how sub-system blocks are put in place.
As from example above, we know that components are built and populated with the
data from the database, interface is built by connecting components, the whole system
is designed with switching from one interface to another, and architectural design is the
collection of all the design element, we can prove that all the design elements are
interdependent to each other’s.

Q. 4. Are programmers the best people to test the programs that they have developed?
Provide your suggestion in three points to justify your answer.
A Programmers train themselves to create a product or system according to the
requirements given. The requirements are text-based and program is highly technical.
Aside this, every program, either large or small, it contains bug. Different type of bugs
makes the system to crash or show result outside requirement.
Þ Almost every programmer thinks in a straight way to fulfill the
requirements and complete the tasks. Someone without this focus is
required to give out of the box suggestions and to figure out if the output
is as required or not. A tester, without knowing the code-pattern or
anything tests the system and can give the suggestions in a different
perspective.
Þ If programmers stay testing, they have to invest their continuous effort
and time for the thing they built earlier. So, increase in resources can
speed up the development process.
Þ A programmer believes in their effort and skills. Their main goal is to run
the program or system successfully. There are various testing methods
which are used by the programmers and tested. Once, all the testing is
passed, the program moves forward. But as a tester, they have to try their
own way to figure out how the system can fail. So, tester can list out all
the downsides of the program or the system.
So, a programmer can be a tester but they are not the best people to test the programs.

You might also like