Pages

Sunday, 19 June 2011

Module 3 Part 2

Requirement Process
1Module 3(Part 1)

Tuesday, 14 June 2011

Mind Map For Module 2




Please CLICK on the image for enlarge.


Monday, 13 June 2011

Module 2 : Software Processes



A software process is a collection of work activities, actions, tasks, which are performed when software is to be created.

A process model or framework is where these activities, actions, and tasks reside, and that defines their relationship with the process and with one another. Also known as an abstract representation of a software process

Framework activities
Generic activities that are applicable to all software projects, regardless of their size or complexity.
Include communication; planning; modeling, construction; and deployment.

Umbrella activities
Complementary activities applied throughout a software project and help manage and control progress, quality, change, and risk.
Include project tracking and control; risk management; software quality assurance (SQA); technical reviews; configuration management (CM); etc.



Little bit explanation about the type of process flow:

Linear process flow executes the framework activities in sequence, for example Identifying the issue -> gathering data -> studying all the options -> choosing one strategy -> implementing -> testing.


Iterative process flow repeats one or more of the activities before proceeding to the next. It can also assist with revealing design goals of a client who does not know how to define what they want.



Evolutionary process flow executes the activities in a ‘circular’ manner.



Parallel process flow executes one or more activities simultaneously with other activities.


Process Patterns

A process pattern describes a process-related problem that is encountered during software engineering work, identifies the environment in which the problem has been encountered, and suggests one or more proven solution to the problem. Process pattern can be divide into three, which is

  • Task process patterns
  • Stage process patterns
  • Phase process patterns

to read more about process pattern you can go to this link


Process Assessment and Improvement

There were several approaches that have been proposed over the past few decades ago to ensure that the software process meets a set of basic process criteria that have been shown to be a essential for a successful software engineering.






Waterfall Model – represents elements of a linear process flow


Waterfall


V-model - A variation in the representation of the Waterfall model. Illustartes how V&V actions are associated with earlier SE action. In reality, there is no fundamentals difference between the Waterfall model and the V-model.

V



Incremental Model – combines elements of linear and parallel process flows




Evolutionary Model – follows the evolutionary process flow that combines elements of linear and iterative process flows

Prototyping

Spiral


Prototyping

Spiral



Concurrent Model – combines elements of iterative and parallel process flows





How to select process model?


Task Set

Each software engineering action is represented by a number of different task sets – each a collection of software engineering work tasks, related work products, quality assurance points, and project milestones.
A task set defines the actual work to be done to accomplish the objectives of a software engineering action. For example, ” requirements gathering” is an important software engineering action that occurs during the communication activity. The goal of requirements gathering is to understand what various stakeholders want from the software that is to be built.
For a small, relatively simple project, the task set for requirements gathering might look like this :




Both of these task sets achieve requirements gathering, but they are quite different in their depth and formality. The software team chooses the task set that will allow it to achieve the goal of each process activity and software engineering action and still maintain quality and agility.


Friday, 10 June 2011

Module 1 - Introduction to Software Engineering

SOFTWARE


Software, what it is?

Software, by definition, is the collection of computer programs, procedures and documentation that performs different tasks on a computer system.


Examples of software?


(feature software)



What is characteristic of software?

1- Software is developed or engineered, it is not manufactured.

2- Software is custom-built, because the industry is moving toward.

3- Efficiency and usability, software must be used in accordance with planned.

4- Dependability, the software must be trustworthy.


Several Software Application Domains :

SAPAWEE.

S – System software.

A – Application software.

P – Product-line software.

A – Al software.

W – Web Applications (WebApps).

E – Engineering/scientific software.

E – Embedded software.


Explaination.


System software

It is a computer software that manages and controls hardware in order to enable application software to perform its tasks. System software performs the functions like transferring data from memory to the disk or delivering text onto a display device.

Examples : Mac OSX, HD Sector Boot Software, Microsoft Windows.


Application software

Application software is that, which is designed for the end-users and hence known as end-user programs. It employs the capabilities of a computer to execute the tasks that the user wishes to perform on a computer system.

Examples : Web browser, word processing software, spreadsheet software, database software, presentation graphics software.


Production-line software

A software product line (SPL) is a set of software-intensive systems that share a common, managed set of features satisfying the specific needs of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way.

Examples : Personal or business financial applications, Ms Word.


Al software

Artificial intelligence (AI) is the intelligence of machines and the branch of computer science that aims to create it. Make use of non-numerical algorithms to solve a complex problems that are not
amenable to computation or straightforward analysis. Many applications within this area include robotics, expert system pattern recognition, artificial neural networks, theorem proving, and game playing

Examples : Voice recognition, Angry Birds, Pokemon games.


Web Application software

Web application software is used to design, implement, optimize and maintain Web sites and Web clients. Software types include Web browsers, plug-ins, scripting languages, and other similar applications.

Examples : Uniten Online Application System, Facebook, Youtube.


Engineering/Scientific software

In the early year, it was characterized by “number crunching” algorithms. But now, it has changed to conventional numerical algorithms. This software is uses in many area including computer-aided design, system stimulator and other interactive applications.

Examples : Flight simulator, Auto-CAD, Statistical Analysis Software.


Embedded software

It is computer software that plays an integral role in the electronics it is supplied with.

Examples : Software to control robots movement, airplanes, missiles, and the other thousands process control systems.


What is the new of software domain?

  1. Open world computing—pervasive, distributed computing
  2. Ubiquitous computing—wireless networks
  3. Netsourcing—the Web as a computing engine
  4. Open source—”free” source code open to the computing community (a blessing, but also a potential curse!)
  5. Data mining
  6. Grid computing
  7. Cognitive machines
  8. Software for nanotechnologies

# According to the slide, its only has 8 software domains. However, it has more software’s that we don’t know are in the world.


Software Engineering (SE)


What is software engineering?

Institute of Electrical and Electronics Engineers (IEEE) :

1. (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.

2. (2) The study of approaches as in (1).


What are realities in Software Engineering?

SE is a joint effort should be made to understand the problem before a software solution is developed.

Design, which is a crucial activity.

Software should exhibit high quality.

Software should be maintainable.


What is the SE layers?

SE Layers

Explanation’s about process model layer.

Software process is a collection of activities, actions, and tasks that are performed to develop or maintain a software product.

Framework activities:

- Generic activities that are applicable to all software projects, regardless of their size or complexity.

Umbrella activities:

- Complementary activities applied throughout a software project and help manage and control progress, quality, change, and risk.


Essential SE Practices.

Polya suggests:

1. Understand the problem (communication and modeling).

2. Plan a solution (planning and design).

3. Carry out the plan (construction and deployment).

4. Examine the result for accuracy (testing and quality assurance).


What are Hooker’s General SE Principles?


  1. The Reason It All Exists

Software exists to provide value to its users and all decision should be made with this in mind.


  1. KISS (Keep It Simple, Stupid!)

All software design should be as simple as possible but not simpler to ease understanding and maintenance of the software/system.


  1. Maintain the Vision

A clear vision is essential to the success of a software project.


  1. What You Produce, Others Will Consume

Always specify, design, and implement knowing others will have to understand what you are doing.


  1. Be Open to the Future

True “industrial-strength” software systems must endure long lifetime.

Be ready to adapt to changes (in hardware, computing platform etc).


  1. Plan Ahead for Reuse

Reuse reduces the cost and increases the value of the reused components and the systems into which they are incorporated.


  1. Think!

When you think about something (placing clear, complete thought before action), you are more likely to do it right (more importantly, the first time).


What is software myth?

Software Myths is # beliefs about software and the process used to build it - can be traced to the earliest days of computing. Myths have a number of attributes that have made them insidious. For instance, myths appear to be reasonable statements of fact, they have an intuitive feel, and they are often promulgated by experienced practitioners who "know the score". # Erroneous beliefs about software and the process that is used to build it.


What are classifications of software myth?

3 myths are classified:

Management myths

Customer myths

Practitioner myths