Anda di halaman 1dari 11

SOFTWARE ENGINEERING

SCSJ2203
SEM 1 2013/2014
ASSIGNMENT 1

LECTURER:
PROF. DR. TONY ANWAR

PREPARED BY:
MUHAMMAD AMIRUL BIN ZULKIFLI (SX122606CSRF04)
MOHD AMIN BIN MURAD (SX122593CSRF04)
AMIR ASRAF BIN ABDUL RASHID (SX122578CSRF04)
HELME BIN AHMAD SUHAIME (SX121295CSRS04)
TEUKU MOHD HANIF BIN TARMIZI (SX120304CSRS04)

Chapter 1: Software Engineering Foundations


1. What are the main differences between classical Engineering (e.g.
Mechanical Engineering) and Software Engineering?
Classical Engineering
Classical engineering is engineering

Software Engineering
Software engineering is an engineering

discipline of application for mathematical

discipline which is concerned with all

or physic calculating which done by

aspects of software production.

engineers on developing technology. It is


focused on technical process such as
hardware, tools, building, materials and
process.

2. List and explain some measures to reduce complexity in software


development and in programming?

Program size: measured at the program level by the average number

of statements per program.


Modularity: measured at thesubprogram level by the average number

of statements per subprogram.


Decision structure complexity: measured atthe statement level by

the proportion of IF statements within a program.


Program decomposability: measure the statement level by the
proportion of GOTO statementswithin a program.

3. Explain the differences between programming and software


development?

In my opinion, programming or program are coding write on creating


application for a simple or certain task use and normally not including any
critical process. Software development is a process on developing software
which involves many processes from scratch until after sales support. On
software development there are fundamental activities which are common to
all process such as software specification, software design
andimplementation, software validation and software evolution.The process
by which user needs are translated into a softwareproduct. The process
involves

Translating user needs into software requirements,


Transforming the software requirements into design,
Implementing the design in code,
Testing the code,
Installing and checking out the software for operational use.

4. Name methods, tools, and languages that are based on a common set of
core concepts?
Method: Unified Process, Object-oriented, Unified Modeling Language (UML)
Tools: Rational Unified Process product, UML diagramming
Language: JAVA, C++, ActionScript,

5. Why do managers often believe that software can be developed by


everyone (especially by non software engineers)?

This could be because computers programming is part of Software


Engineering. While programming requires a knowledge of computer
languages and algorithms and data structures, all of which are very important,
software engineering also involves knowledge of projects, maintenance
requirements, documentation standards, software design, etc. Although
someone is working as a programmer, they must have knowledge in software

engineering to develop liable, cost effective, maintainability, planned software


development in software developing.

Chapter 2: Software Process Models


1. Explain the differences between a software process and a software
process model?
Software Process
Software process is a set of activities

Software Process Model


Software process model is an

and associate results which produce a

abstraction or simplified description of a

software product. These activities are

software process which is presented

mostly carried out by software engineers.

from a particular perspective. Models,

There are four fundamental process

by their very nature, are simplifications,

activities which are common to all

so a software process model is an

software process:

abstraction of the actual process which

Software specification
Software design and

is being described. Process models

implementation
Software validation
Software evolution

the software process, software products

may include activities which are part of


and the roles of people involved in
software engineering. Some examples
of the types of software process model
which may produce are:

A workflow model
A data-flow or activity

model
A role / action model

2. What are the main drawbacks of the waterfall model?

The main drawback of the waterfall model is indeed its rigidity. The
development process is followed in a strictly linear order. Developers cannot
repeat or go back to earlier stages once it has been done. While many that
follow conventional engineering approach might argue that requirement
should be solidly defined before hand, and during implementation
stakeholders should not go back to redefine the requirements. The process is:

System Analysis
System Specification
System Design
Module Design
CodingModule Test
Integration System Test
Operation maintenance

3. What are the main differences between the waterfall model and the
spiral model?
Waterfall Model
Waterfall model or software life cycle is

Spiral Model
Spiral model represent the software

cascade from one phase to another

process as sequence of activities with

phase. In principle, the result of each

some back tracking from one activity to

phase is one or more documents which

another and the process represent in

are approved. The following phase

spiral. Each loop represents a phase of

should not start until the previous stage

the software process and the spiral split

has finished. Once the process shifts to

into four sectors. During the entire

the next stage, there are not going back.

development process, user can revisit

In this model customer is not involved.

the different phase anytime to review,


back tracking, reversing or revise the
process. In this model customer are
involved from the beginning of the

process.
4. List application domains where software can/cannot be developed
incrementally?
Cannot be developed incrementally:

Define outline requirement


Assign requirements to increments
Design system architecture

Can be developed incrementally:

Develop system increment


Validate increment
Integrate increment
Validate system

5. Explain the central concepts and elements of the Unied Process?


Phases:

Inception Define the project goals, the deliverables, and the cost and

Check those requirements which have a high risk


Elaboration Analysis and understanding of the application domain ,
Designing the software architecture and Elimination of the highest

project risks
ConstructionImplementing the product based on the architecture
TransitionBeta-release of the product. the Tasks is error correction,
user feedback integration into the system, Measure how good the
system can be used and If necessary, improve the development
process

Disciplines:

Business modelingthe business processes ismodeled using business

use cases.
Requirements Actors who interact with the system are identified and

use cases are developed to model the system requirements.


Analysis and design a design model is created and documented
using architectural models, component models, object models and
sequence models.

Implementation The components in the system are implemented and


structured into implementation sub-systems. Automatic code

generation from design models helps accelerate this process.


Test Testing is an iterative process that is carried out in conjunction
with implementation. System testing follows the completion of the

implementation.
Deployment A product release is created, distributed to users and

installed in their workplace.


Configuration and change management This supporting workflow

managed changes to the system


Project management This supporting workflow manages the system

development
Environment This workflow is concerned with making appropriate
software tools available to the software development team.

6. Why does the Unified Process overcome the drawbacks of the waterfall
model?
The Unified Software Development Process or Unified Process is a
popular iterative and incrementalsoftware development process framework.
Incremental development is an in-between approach which combines the
advantages of waterfall model and evolutionary approach.
The incremental approach to development was suggested by Mills as a
means of reducing rework in the development process and giving customers
some opportunities to delay decisions on their detailed requirements until they
had some experience with the system.

In an incremental development process, customers identify, in outline the


service to be provided by the system. They identify which of the services are
the most important and which are least important to them. A number of
deliver increments are then define, with each increments providing a subset of
the system functionality. The allocation of services to increments depends on
the service priority. The highest priority services are delivered first to the
customer.

7. Can you imagine a project scenario where the waterfall model fits best?

Waterfall model fits best in a project when working for a big client and they
enforce their very formal approach on vendors. It is also useful when working
on fixed-scope, fixed-price contracts and client does not expect rapid change
in the scope. This to make sure that client would not make any changes when
a stage is done and approved by them.

8. What are the core element types a software process model has always
to define?
Specification defines the functionality of the software and constraints

on its operation.
Design and Implementation The software to meet the specification

must be proceed
Validation the software must meet customer requirement
Evolution the software must evolve to meet changing customer needs.

9. List techniques of extreme programming that can be used in non


extreme programming projects too?

Coding.
In XP coding is considered the only important product of the system
development process. XP programmers start to generate codes at the

very beginning.
Testing.
XP emphasizes to always check if a function works is by testing it. XP
uses Unit Tests which are automated tests, and the programmer will

write tests as many as possible to try to break the code has been write.
Listening
Obviously, coding and testing need to be done no matter how a system
is developed, but listening is very important in XP . For XP developers
the ability and expertise in technical aspects should be accompanied
by the ability to be good listeners. This ability will enable them to
understand what customers want and develop solutions which match

customers needs and desires as close as possible.


Designing
XPs simplicity principle does not mean that it can exclude designing
process. Without proper design in the long run system becomes too
complex and projects could come to a halt. It is then important to
create a design structure that organizes the logic in the system so too
many dependencies in the system can be avoided.

10. List prerequisites to apply extreme programming in a software


development project?

Distinguishing between the decisions to be made by business interests

and those to be made by project stakeholders.


Writing unit tests before programming and keeping all of the tests

running at all times.


Integrating and testing the whole systemseveral times a day.
Producing all software in pairs, two programmers at one screen.
Starting projects with a simple design that constantly evolves to add

needed flexibility and remove unneeded complexity.


Putting a minimal system into production quickly and growing it in
whatever directions prove most valuable.

11. Why is extreme programming called extreme programming and not


extreme development?
Extreme programming called extreme programming and not extreme
development because in extreme development it's about programmers, but
the examples are all technological solution such as frameworks, middleware,
XML portals and extensible software in general. Extreme development is likely
not as widely applicable as extreme programming, but there are times when
building a team is more important than the product being worked on. Extreme
programming was less a methodology than a discipline. By that, its meant
that it requires a fair amount of skill and experience to pull off. One has to
adhere to its principles rigorously without being pedantic about following any
particular method.

Anda mungkin juga menyukai