Vous êtes sur la page 1sur 10

Software engineering

Individual assignment
Name: Ahmed nuru
Id: 129/09

Submitted date: 17/05/2019


Submitted to: ato alamirew gedif
1. Name and describe the criteria on which programming or
coding standards should base.
1. Reuse: From the 1960s to the 1990s, most new software was developed from scratch,
by writing all code in a high-level programming language. The only significant reuse or
software was the reuse of functions and objects in programming language libraries.
However, costs and schedule pressure meant that this approach became increasingly
unviable, especially for commercial and Internet-based systems. Consequently, an approach
to development based around the reuse of existing software emerged and is now generally
used for business systems, scientific software, and, increasingly, in embedded systems
engineering.
Software reuse is possible at a number of different levels:
 The abstraction level At this level, you don’t reuse software directly but rather use
knowledge of successful abstractions in the design of your software.
 The object level At this level, you directly reuse objects from a library rather than writing the
code yourself. To implement this type of reuse, you have to find appropriate libraries and
discover if the objects and methods offer the functionality that you need. For example, if you
need to process mail messages in a Java program, you may use objects and methods from a
Java Mail library.
 The component level Components are collections of objects and object classes that operate
together to provide related functions and services. You often have to adapt and extend the
component by adding some code of your own. An example of component-level reuse is where
you build your user interface using a framework. This is a set of general object classes that
implement event handling, display management, etc.2.
 The system level At this level, you reuse entire application systems. This usually involve
some kind of configuration of these systems. This may be done by adding and modifying code
(if you are reusing a software product line) or by using the system’s own configuration
interface. Most commercial systems are now built in this way where generic COTS
(commercial off-the-shelf) systems are adapted and reused. Sometimes this approach may
involve reusing several different systems and integrating these to create a new system.
2. Configuration: Configuration management is the name given to the general process of
managing a changing software system. The aim of configuration management is to support
the system integration process so that all developers can access the project code and
documents in a controlled way, find out what changes have been made, and compile and
link components to create a system. There are, therefore, three fundamental configuration
management activities:
1. Version management, where support is provided to keep track of the different versions of software
components. Version management systems include facilities to coordinate development by several
programmers. They stop one developer overwriting code that has been submitted to the system by
someone else.
2. System integration, where support is provided to help developers define what versions of
components are used to create each version of a system. This description is then used to build a
system automatically by compiling and linking the required components.
3. Problem tracking, where support is provided to allow users to report bugs and other problems, and
to allow all developers to see who is working on these problems and when they are fixed.

4. Host-target development

Most software development is based on a host-target model. Software is developed on one


computer (the host), but runs on a separate machine (the target). More generally, we can
talk about a development platform and an execution platform. A platform is more than just
hardware. It includes the installed operating system plus other supporting software such as a
database management system or, for development platform, an interactive development
environment. Sometimes, the development and execution platforms are the same, making it
possible to develop the software and test it on the same machine. More commonly, however,
they are different so that you need to either move your developed software to the execution
platform for testing or run a simulator on your development machine.
Simulators are often used when developing embedded systems. You simulate hardware
devices, such as sensors, and the events in the environment in which the system will be
deployed. Simulators speed up the development process for embedded systems as each
developer can have their own execution platform with no need to download the software to
the target hardware. However, simulators are expensive to develop and so are only usually
available for the most popular hardware architectures.
If the target system has installed middleware or other software that you need to use, then
you need to be able to test the system using that software. It may be impractical to install
that software on your development machine, even if it is the same as the target platform,
because of license restrictions. In those circumstances, you need to transfer your developed
code to the execution platform to test the system.

2. According to ben shneiderman, list the eight golden rules of


interface design guidelines.
According to ben shneiderman the eight golden rules of interface design guidelines
are;
1) Strive for consistency. ...
2) Seek universal usability. ...
3) Offer informative feedback. ...
4) Design dialogs to yield closure. ...
5) Prevent errors. ...
6) Permit easy reversal of actions. ...
7) Keep users in control. ...
8) Reduce short-term memory load.

3. Describe the importance of metrics in detail.

The goal of tracking and analyzing software metrics is to determine the quality of the current
product or process, improve that quality and predict the quality once the software
development project is complete. On a more granular level, software development managers
are trying to

 Increase return on investment (ROI)


 Identify areas of improvement
 Manage workloads
 Reduce overtime
 Reduce costs

These goals can be achieved by providing information and clarity throughout the
organization about complex software development projects. Metrics are an important
component of quality assurance, management, debugging, performance, and estimating
costs, and they’re valuable for both developers and development team leaders:

 Managers can use software metrics to identify, prioritize, track and communicate any
issues to foster better team productivity. This enables effective management and allows
assessment and prioritization of problems within software development projects. The
sooner managers can detect software problems, the easier and less-expensive the
troubleshooting process.
 Software development teams can use software metrics to communicate the status of
software development projects, pinpoint and address issues, and monitor, improve on,
and better manage their workflow.

Software metrics offer an assessment of the impact of decisions made during software
development projects. This helps managers assess and prioritize objectives and
performance goals.

4. Describe the basic principles of visual design that should be


considered in GUI

 Point ,line and shape :These are the most basic building blocks of any
design, no matter what it is. With these you can create anything you want,
from simple icons to very complex illustrations, everything is made with the
combination of these simple elements. In geometry a point is a combination of
x and y coordinates, add a z axis and you’re in 3D, but let's stick with 2
dimensions for this article.

 Colour : Colours have something that is easily understandable and


unforgettable because they have visual meaning and tones

 Topography:

This is one of the most important, and difficult, things for designer to get right.
It’s not only about what you write but how you present it. Typography is how
your words look like. With the right typeface you can have a banal piece of
text and make it powerful, but that’s not easy to do, what is easy is to
completely mess up a powerful statement just by selecting the wrong typeface.
Typography, as well as colour, allows you to define a tone. Most typefaces are
designed with a purpose, you just need to learn what that is and use it in your
favour. Some typefaces are great for big blocks of text, some work great as
titles. Some are merely functional and super clear and others are just meant to
be fun or used ironically (you know what I'm talking about). There are
thousands of different typefaces to choose from but unless you need
something whimsical or you're trying to make something very specific I would
always advise to stick with the classics. However, if you're felling bold you can
even design your own typeface, although I think that is one of the most
challenging things to do properly as a designer, but if you think you’re up for
the task one thing that you can't forget is…

 Space

The way you balance your space can be a maker or a breaker, especially in
typography.
You need to consider how each element/letter relates to each other, give them the
precise breathing room they need, this is usually referred to as negative space
(positive space are the actual letters). You need to take the negative space as part of
your design and use it well; space can be powerful and help your viewer to navigate
through your design. It can also be a place to rest the eyes. Use it wisely though, too
much space and your design will look unfinished, too little space and your design will
seem too crowded. Managing to find the right ratio between positive and negative
space allows you to create…

 Balance, Rhythm & Contrast

This is when you’re starting to make a bunch of plain elements into something
interesting and appealing. Balance well all the elements on your design by
considering their visual weight. The way you lay elements in the page is crucial,
making some elements heavier than others will help to create contrast and rhythm
and lead your viewer's eyes through your design gracefully and effortlessly.
Something that may help you with rhythm and balance is also to play with…

 Scale: Scale helps you not only creating rhythm contrast and balance but also
hierarchy. Basically not all the elements in your design should have the same
importance, and one of the best ways to convey that is size. Now, this must
serve a purpose. Don’t go for the “make my logo bigger cream” approach and
forget about the space I mentioned before. For instance, take a newspaper
page. What’s the biggest thing in the page? The titles, those are also usually
short. Why? So you can scan the page quickly and see if there’s something
interesting for you to read. Then we have the subtitles that are smaller but give
you a little more information about the article, and finally we have the article
that has the smallest font size but also the most comfortable to read a long
piece of text. So, it’s all about making the size serve a purpose and never
forget about the person who will consume your design. Speaking of
newspaper is time to bring some order with…

 Grid & Alignments :It’s like that oddly satisfying feeling when you're playing
Tetris and you stack that last bar that clears your screen. These are supposed
to be invisible but you'll see them if you open a book or a newspaper, but (no
matter what you’re designing) following a grid will structure your design and
make it more pleasant and easier to digest. Even if you’re making a chaotic
design purposefully, there must be an order for that chaos. Alignment is
especially important with text, there are several ways to align it but my rule of
thumb is to align it left. It always depends on what and for whom you’re
designing of course, but generally, people read from left to right, top to bottom,
which makes text that is centre or right aligned much more difficult to read.

 Framing

This is a key concept in photography but it also applies in visual design.Whether


you’re using a picture, an illustration or something else, framing something
properly makes all the difference. Try to direct the eye to what matters, crop/frame
images to make your subject stand out or to reinforce your message. It’s all about
telling the right story and telling it well. After all this, if you feel there's something
missing, you can play around with…
 Texture & Patterns

Textures are not as trendy as they used to be a while ago but with them you
can add another dimension to your design, making it more three dimensional
and touchable. The texture doesn't have to be in the composition itself, if it's
something that is going to be printed, picking the right paper, add things like
bevel, emboss or UV varnish can make your design pass from banal to
something superb. But pick one, don't go crazy with the special finishing’s.
Patterns are all about repetition, and can be almost considered textures
depending on how you’re using them.

 Visual Concept

This is the idea behind your design. What do you mean with it and what’s the deeper
meaning behind the superficial image. This is what distinguish a great design from
something you can download from a stock website. Design with intent and always have
an idea that connects everything in your design. Pick your fonts carefully and with a
purpose, think about how every tiny part of your design follows that base
concept. Coherence is everything. If your concept is strong you’ll be able to defend it and
sell the idea to your client/boss or whomever you're presenting it to.

5. Name and describe four challenges in software installation


testing
While performing installations testing, the team of testers can come across numerous

challenges that can impact the process testing and make it hectic and challenging. Few of

these challenges are:

 The software product is required to be installed on a diverse system environment that

has several configurations.

 The team needs to validate the installation under numerous system running

conditions.

 Since the process of test case execution is time consuming in installation testing, it

becomes challenging to test an application with multiple test cases on different

configurations.

 As it lacks well defined test coverage criteria, test models, tools, and more it can be

challenging to implement installation testing.


6. List four attributes that you should consider in software
testability process

Testability: “is simply how easily a computer program can be tested.” The following
characteristics lead to testable software:

 Operability: it operates cleanly if implemented with quality in mind

 Observability: the results of each test case are readily observed. Variables
are visible during execution. Source code is available.

 Controllability: the degree to which testing can be automated and optimized

 Decomposability: testing can be targeted; independent modules can be


tested independently.

7. Describe the objective and the attribute of good test


principles.

The main objective of software testing are:

 To find any defects or bugs that may have been created when the software
was being developed

 To increase confidence in the quality of the software

 To prevent defects in the final product

 To ensure the end product meets customer requirements as well as the


company specifications

 To provide customers with a quality product and increase their confidence in


the company

A good test can be defined as one that is:

 Reliable
 Valid
 Practical
 Socially Sensitive

Reliable:
Reliability refers to the accuracy of the obtained test score or to how close the
obtained scores for individuals are to what would be their “true” score, if we could
ever know their true score. Thus, reliability is the lack of measurement error, the less
measurement error the better.
Valid :
Validity will be the topic of our third primer in the series. In the selection context, the
term “validity” refers to whether there is an expectation that scores on the test have a
demonstrable relationship to job performance, or other important job-related criteria.
Validity may also be used interchangeably with related terms such as “job related” or
“business necessity.” For now, we will state that there are a number of ways of
evaluating validity including:

 Content
 Criterion-related
 Construct
 Transfer or transportability
 Validity generalization
A good test will offer extensive documentation of the validity of the test.

Practical:
A good test should be practical. What defines or constitutes a practical test? Well,
this would be a balancing of a number of factors including:

 Length – a shorter test is generally preferred


 Time – a test that takes less time is generally preferred
 Low cost – speaks for itself
 Easy to administer
 Easy to score
 Differentiates between candidates – a test is of little value if all the applicants obtain
the same score
 Adequate test manual – provides a test manual offering adequate information and
documentation
 Professionalism – is produced by test developers possessing high levels of expertise

Socially Sensitive
A consideration of the social implications and effects of the use of a test is critical in public
sector, especially for high stakes jobs such as public safety occupations. The public safety
assessment professional must be considerate of and responsive to multiple group of
stakeholders. In addition, in evaluating a test, it is critical that attention be given to:
 Avoiding adverse Impact – Recent events have highlighted the importance of balance
in the demographics of safety force personnel. Adverse impact refers to differences in
the passing rates on exams between males and females, or minorities and majority
group members. Tests should be designed with an eye toward the minimization of
adverse impact.
 Universal Testing – The concept behind universal testing is that your exams should be
able to be taken by the most diverse set of applicants possible, including those with
disabilities and by those who speak other languages. Having a truly universal test is a
difficult, if not impossible, standard to meet. However, organizations should strive to
ensure that testing locations and environments are compatible with the needs of as
wide a variety of individuals as possible. In addition, organizations should have in
place committees and procedures for dealing with requests for accommodations.

8. Describe the fundamental considerations during unit testing.


 module interface:
Is tested to ensure that information properly flows into and outof the program unit
under test. Tests of data flow across a module interface are required before any
other test is initiated. If data do not enter and exit properly, all other tests are moot.
 local data structure: is examined to ensure that data stored temporarily maintains
its integrity during all steps in an algorithm's execution. In addition, local data
structures should be exercised and the local impact on global data should be
ascertained (if possible) during unit testing.
 Boundary conditions: are tested to ensure that the module operates properly
at boundaries established to limit or restrict processing. Boundary testing is the last (and
probably most important) task of the unit test step. Software often fails at its boundaries.
That is, errors often occur when the nth element of an n-dimensional array is processed,
when the ith repetition of a loop with i passes is invoked, when the maximum or minimum
allowable value is encountered. Test cases that exercise data structure, control flow, and
data values just below, at, and just above maxima and minima are very likely to uncover
errors.
 independent paths:
All (basis paths) through the control structure are exercised to ensure that all
statements in a module have been executed at least once.

 error handling paths:


Selective testing of execution paths is an essential task during the unit test. Test
cases should be designed to uncover errors due to erroneous computations,
incorrect comparisons, or improper control flow. Basis path and loop testing are
effective techniques for uncovering a broad array of path errors.And finally, all
Good design dictates that error conditions be anticipated and error-handling paths
set up to reroute or cleanly terminate processing when an error does occur. Yourdon
[YOU75] calls this approach antibugging. Unfortunately, there is a tendency to
incorporate

.
. 9. Describe the objective of software installation technique.
The objectives of software installation testing are to answer the following questions:
Can the software be properly installed on all specified system configurations?
On the specified system configuration environment, can the software be successfully
installed under each of the validated running conditions?
Does the software demonstrate that its installation functions and behaviors behave
correctly?

Vous aimerez peut-être aussi