Thursday, October 13, 2016

Software Development Syllabus


  • Software and Software Development
    • What is Software?
      • Types of software products
      • Other classifications of software
    • Software product attributes
    • The software development process
      • Waterfall model
      • Evolutionary development model
      • Rapid application development
  • Concepts of Programming
    • Amateur Vs Professional programming
    • History of software design
      • Programming in art form
      • Structured programming
      • Unstructured programming
      • Object Oriented Programming
    • Computer Programs
      • Sequential Processing
      • Concurrent Processing
    • Concept of Algorithm
    • Flow Charts
    • Pseudo Codes and Data Declaration
  • Programming in Pascal
    • Pascal Syntaxes
      • Comments
      • Program structure
      • Identifiers
      • Constants
      • Data Types
      • Variables
      • Assignments
      • Operators
      • Inputs and Outputs
    • Control Constructs
      • IF / THEN / ELSE conditions
      • Repetition controls
      • CASE statement
    • Procedures and Functions
    • Recursion
    • Array Processing
    • Records
    • File Processing
  • Data Structures and Algorithms
    • Array searching
      • Linear and Binary Search
    • Array Sorting
      • Selection sort
      • Bubble sort
      • Insertion sort
    • Linked List
      • What is pointer?
      • Constructing a Linked list with pointers to records
  • Testing
    • Objectives and principles of testing
    • Static Vs Dynamic testing
    • What is debugging?
    • Stages dynamic testing
      • Unit testing
      • Integration testing
      • Acceptance testing
    • Software testing strategies
      • Black box and white box testing
    • Static verification
      • Desk checking and Dry running
    • V- Model
  • Documentation
    • What is documentation
    • Types of documentation
      • User documentation
      • System documentation
      • Program documentation
  • File Organization
    • Serial and Sequential Files
    • Indexed serial files
      • Inserting records
      • Searching records
    • Indexed sequential file
      • Inserting records
    • Hash / Random / Direct files
      • Overflow area
      • General overflow area
  • CASE  (Computer Aided Software Engineering) Tools
    • Traditional Vs CASE based development
    • Advantages of CASE tools
    • Components of CASE tools
      • Upper CASE
      • Lower CASE
      • Cross life cycle CASE
    • CASE support in software life cycle
      • Prototyping
      • Structures analysis and design
      • Code generation
      • Test case generation
      • Reverse and Re-Engineering
      • Other usages of CASE tools
  • User Interface Design
    • Types of user interfaces
    • UI Design principles
    • Command line interfaces
    • Graphical user interfaces
    • Web Interfaces
  • System Software
    • Compilers and Interpreters
    • Assemblers
    • Comparison of programming languages

Monday, October 10, 2016

Social Considerations


This is the final lecture note in Information Systems (IS) subject in the BCS Examinations lecture series. I will be creating a whole new lecture series with videos, discussions, more explanations, real world examples and more opportunities to interact with each other. However these lectures are sufficient for students sit for British Computer Society's professional qualifications exams.

 

Dependencies caused by computerization

Modern computers often tend to dc tasks faster, more accurately than their human counterparts. In addition a single machine could often deal with the tasks which would nave otherwise required several human workers. Not to mention the tasks which would not have been possible to carry out without the use of computers. This amazing machine (the computer) although bringing in all these benefits' has implied that cost saving entrepreneurs choose them over human workers. Thus resulting in reduced job opportunities and sometimes loss of jobs for existing employees as well.

Changing work patterns
Several new forms rrf work patterns have emerged during the recent years. Some of these include

Home based work
This is where an individual performs his job function using his PC without even leaving his own home. Such work patterns are usually associated with individuals such as freelance programmers and specialists. The work is done at the users convenience and then submitted to the office through a VPN or through e-mail. The main advantage is that the such jobs are convenient to the individual while at the same time results in cost savings to the organization since there are no transport costs or costs associated with maintaining office space. A slight disadvantage of the system however is that it requires supervision to avoid loss of control.


Flexible work patterns
This is a modern work practice which enables staff to work at their own convenience (ie : to enter and leave the office at their desire). However they must ensure that the work assigned to them is carried out or an adequate amount of hours are worked"

Shift work
This is where several individuals share one job function where each one takes a particular turn at performing it. This type of work practice is common in offices where long hours of work is required such as 24 hour call centers where it would be impossible for a single individual to work such long hours.

Team work
This is where several individuals work together combining strengths and forming synergy to perform a specif job function

Motivation
Motivation is defined as the compulsion or inner influence which causes individuals to perform better than they normally would. Motivation is a key function of almost any modern business organization. It helps keep employees in high spirits and thus leads to increased productivity and efficiency automatically.

Software Quality Control / Assurance (QC)


With increased forms of competition and globalization many firms are adopting a greater emphasis on quality in today's business environment. But what is quality ? Quality can be defined as ensuring that goods and services perform as expected without failure or complications along the way.


  • Importance of quality assurance
  • Ensures that customers are kept satisfied as they get what they desire.
  • Saves costs associated with wastage, replacement, etc.
  • Improves the company's corporate image.


ISO standards

ISO (international standards organization ) standards are a set of internationally accepted standards which define both general (all types of goods) and specific (for specific types of goods and services) standards. The main benefit of complying with such standards is the recognition brought about by complying with such standards. ( ie : a firm following ISO guidelines is more likely to be selected by a client than one which doesn't.) ISO has specific guidelines for the iT industry as well. General standards include the ISO 9002 certification, etc.

Software Quality
Software quality is one of the main concerns of the software developers.

What is software quallty?
There rs no simpie answer to this question. ln fact the answer may depenC on who is answering it. Different people have different views/perspectives of the software quality. For example users' perspective of software quality is different from software engineers perspective. What is more, different groups of software engineers also may have different views" Some aspects of software are more important to programmei's than to nraintenance enErneers and managers.

Achieving a high level of product or service quality is now the objective, If the n'lost organizations" lt is no longer acceptable to deliver poor quality products and then repair problems and defects after they have been delivered to the customer.

The responsibility of quality managers is to ensure that the required level of quality is achieved. Quality management involves defining appropriate procedures and standards and checking that these are followed by all engineers. It depends on developing a 'quality culture' where every one responsible for product development is committed to quality.

Quality management is not just concerned with ensuring that software is developed without faults and informs to its specification. It is also concerned with broader aspects of software quality such as security', reliability, robustness understand ability, test-ability, portability, usability, re-usability, efficiency and so on.

A critical part of quality planning is selecting critical quality attributes and planning how these can be achieved.

Software quality managers are responsible for three kinds of activities:


  • Quality assurance: They must establish organizational procedures and standards which lead to high quality software.
  • Quality planning: They must select appropriate procedures and standards and tailor them for a specific software project.
  • Quality control: They must ensure that procedures and standards are followed by the development team.


Quality assurance is concerned with defining how an organization aims to achieve quality. lt involves defining or selecting standards that should be applied to the software development process or software product.

Quality control involves overseeing the software development process to ensure that quality assurance procedures and standards are being followed. The quality control process has its own set of procedures and reports that must be defined and applied during the development process. As far as possible these procedures should be straight forward and easily understood by the engineers developing the software.

Quality plan should begin at an early stage in the software process. A quality plan should set out the desired product qualities. It should set out how these are to be assessed"  therefore sets out what high quality software actually means. Without such a definition, different engineers may work in an opposing way so that different product attributes are optimized.

Quality Reviews
Reviews are the principal method of validating the quality of a process or product.'They involve a group of people examining part or all of a software process. system or lts associate documentation to discover potential problems. There are two broad classes of review:


  • lnspectron
  • Walkthroughs


The main difference between inspection and walkthroughs is the way review meeting are carried out.

In a walkthrough. the team uses pre-selected analyzed program (code design etc.)

ln an inspection, the team uses a checklist of faults/errors to occur in the analyzed program (code, design etc) This list advance. determine whether they should be prepared in

Sunday, October 9, 2016

Modern IT Industry Practices


Downsizing
Downsizing is a type of strategy mainly used by organizations to cut costs during times of hardship. It involves removing certain employees from the organization. Downsizing ' strategies in general first focus on removing non-essential employees, contract workers and so on until all surplus labor is removed from the organization.

Downsizing could be directed to particular organizational functional departments (accounts), staff levels (line managers) or business units (product A).

Advantages of downsizing

  • The organization can remove all unnecessary workers and thus cut down on a great ProPortion of total costs.
  • Gives rise to a more linear and focused form of operations.


Disadvantages of downsizing

  • The organization may have to incur a large sum of money as redundancy PaYments.
  • Skilled employees may expect redundancies and leave for other organizations'
  • Gives rise to a situation of employee instability'
  • Motivation levels maY droP.


De-layering

De-layering is a specific form type of downsizing which is directed towards removing specific structural levels from an organization. The main benefit of this strategy is the large cost saving brought about by laying off expensive administrative staff. The exercise however is criticized since it overloads work and creates uncertainty in the minds of the remaining staff .

Home based work / Teleworking

Home based work is a recent (since the 90s) work pattern which is being increasingly accepted in almost all countries around the world. Brought about by the development of modern technology such as developments in computer systems, communication networks and the internet, it is now possible for several job functions to be performed by individuals without even having to leave their homes.

The system usually works by sending individuals work assignments by e-mail or over corporate VPNs" The work could then be done at the individuals convenience and once completed submitted back to the office via either e-mail, a VPN or similar

Home based work is becoming increasingly popular in professions such as information systems, software development, accounting and similar consulting services.

The advantages being savings in costs such as those associated with transport, office space, etc. However the system is criticized saying that it promotes inefficiencies, delays.
etc.

Data warehousing
Data warehousing is a recent business IS concept that is concerned with maintaining large corporate repositories (banks) of historic information. The information stored could then be used as input for MIS (management information systems) functions such as trend analysis. It is also possible to drill down through these data items to find detailed information which is relevant to a particular topic of interest.

eg : Corporate data warehouses of MNCs.

Data mining

Data mining is another topic of recent interest that emerged in parallel to the concept of data warehousing. Data mining uses a data warehouse as a data source and then enables extraction of data from the data warehouse, which could then be used to aid decision makers. It is often also defined as a tool for MIS and EIS systems' .,

The following is an illustration of the function of data mining'


Thursday, October 6, 2016

Project Planning, Scheduling and Controlling



A typical software project comprises a lot of activities/processes. These activities belong to two broad categories:

  1. Technical activities
  2. Manage€rial activities


In software development projects, requirement analysis, design, implementation etc are the main activities while project planning and control are the managerial activities. Technical activities result in the use of various products and reports by managerial activities to determine, for example, the progress of the project. Managerial activities provide controls for technical activities.

Projects must be carefully planned. The planning process results in a project plan. When the project has started, its execution must be controlled.

For software development projects, planning usually involves:

  • The determination of software scope.
  • Estimations
  • Prediction concerning h/w and s/w resources.
  • Risk analysis(potential Risk & possible solution)
  • Project scheduling
  • Staff organization panning.


Project control/monitoring is a continuing activity. The managers must keep track of the progress of the project and compare actual and planned progress and cost. Although most organization have formal established mechanisms for monitoring, a skilled manager can often form a clear picture of what is going on by informal discussion with project staff.

A software development plan should be used as the driver for the project. The initial plan is not static but should be modified as the project progresses and more and better information becomes available

Project management functions

  • Scheduling
  • Staffing
  • Overlook operations
  • Appraisal


Scheduling
Scheduling is a form of planning, which is made in order to assist project teams to stick to deadlines and avoid exceeding project time lines. It involves analyzing each individual task and then assigning a suitable time limit for each activity. Scheduling usually takes a more detailed form where time lines are specified in terms of earliest start times, earliest finish times, latest start times, latest finish times, duration and slack. Scheduling projects offer many benefits to project teams.

  • Provides a measure of performance in terms of time requirements.
  • Ensures early identification of slow performance which could be corrected at early stages of the projects.
  • Avoids delayed completions which tend to dissatisfy customers and bring penalties to the organization.


A project consists of a series of activities/task. Some activities can be carried out in parallel so order of the activities is not important. Usually however, some activities must precede some others, for example implementation must precede testing, design must precede implementation etc. As we know each activity should have a well defined beginning and end.

Activity usually requires resources such as people, computer, time and always have certain duration. Project scheduling involves the scheduling of all activities so that the workforce is optimally used.

Several techniques are available to support scheduling. The output from the scheduling process is usually a set of chats showing the work breakdown, task dependencies and staff allocation.

One of the most popular tools to represent the set of activities and their constraints rs an activity network(PERT-Project Evaluation & Review Technique)

Commonly used techniques of scheduling include:

  • Gantt Charts - A form of line based chart which indicates time on one axis and activities on the other. It is easy to interpret and diagrammatically represents a basic schedule.
  • Critical Path Analysis (CPA) / Program evaluation review technique (PERT) - A more complex form of scheduling which enables users to calculate slack and float times as well as deal with many varied forms of activities.


Activity network:

In many projects certain task must be finished before others can begin. If that is the case, then some form of charting which allows the dependency to be shown must be used. This is where an activity network is very useful. An activity network is one of the best way to enable a project to be viewed as an entity, revealing the logical relationships and inter dependencies between the components activities.



Critical Path
critical path is a sequence of dependent project tasks that have the largest sum of the estimated duration. It is the path that have no slack time built in. If any of these tasks fail behind schedule, the project completion date will be delayed.

Slack Time
The slack time available for any task is equal to the difference between the earliest and the latest completion times.

Note:
Task that have slack time can get behind schedule by an amount less than or equal to that slack time without having an impact on the projects final. completion date. understanding the critical path and slack resources in a project are. indispensable to the project manager Knowledge of such project parameters influences the people management decisions to be made by the project manager. Emphasis can be placed on the critical path tasks' and if necessary, resources might be temporary diverted from tasks with slack time to help get one or more critical tasks back on schedule

Like all software project management software packages' Microsoft project automatically determines a critical path and marks those bars and arrows in a predetermined color (usually red color)

Gantt Chart
A Gantt chart is a simple horizontal bar chart that depicts project tasks against a calendar. Each bar represents a named project task. The tasks are vertically listed in the left hand column. On a Gantt Chart, the horizontal axis is the calendar timeline. The popularity of Gantt charts comes from their simplicity- they are easy to learn, read, prepare and use. Gantt Chart clearly depicts the overlap of the scheduled tasks. Because system development tasks frequently overlap, this is a major advantage.

Gantt Chart Example:



Staffing
Staffing is concerned with selecting the right people into a project team, identifying their talents and skills and then assigning them to tasks which they are likely to best perform. Like any other resource the staff resource is also likely to be constrained. The project manager should attempt to do best with the team he has been provided.

In simple terms it is selecting the right individual, with the right skills for the right job/task.

Overlook Operations
Overlooking operations refers to a control mechanism which is used to identify inappropriate (poor) performance and adjust performance to suit expected standards. The process takes the following form.



Appraisal
This is the final function in a project. It involves the comparison of overall performance with initial and revised standards in an attempt to identify non-compliance situations and the reasons for such situations. The overall exercise is done in an effort to;

  • Analyze the successful of the current project and determine reward schemes for those involved.
  • Identify weaknesses and take corrective measures in order to improve future performance.


Project Milestones:
A milestone is an end-point of a software process activity/task (end of requirement analysis. end of detailed design, end of integration & testing etc) resulting in a formal progress report that is presented to management.

So milestones are characterized by finished Documentation. As software managers rely on documentation, milestones play a very important part in project monitoring and control. Therefore, when planning a project, a series of milestones should be established. Of course, indefinite milestones must be avoided

Milestones should be carefully planned. If they are too frequent, too much time to spent on preparing documentation. If they are infrequent, project control is difficult" Some project activities do not have to end at a milestone. Many milestones result in simple documentation, for example, a short report that integration testing has been completed.

Some milestones result in deliverable (i.e. documents/products delivered to the customer). Such milestones usually represent end points of major stages such as requirements analysis, design, implementation etc. In waterfall model of the software process, milestones can be easily defined.


Saturday, October 1, 2016

Project Management - Lecture 01



Many large software projects failed in the 1960's and 1970s. The delivered software was to late, unreliable, cost too much etc. Some projects were abandoned" All these problem contributed to software crisis. The software crisis was mainly caused by the use of insufficient management and the software development techniques and tools which were suitable for small scale projects but did not scale up to large projects'

Project management is broadly similar to the overall management function of an organization. this however restricted in scope and is mainly concerned with managing individuality identifiable activities of relatively short time duration (usually less than l year)

Project management involves :


  • Identifying project objectives
  • Identifying Project deadlines
  • The forming of project teams (ie : Selecting members, identifying talents and skills, etc)
  • prioritizing project requirements and obtaining the maximum possible set of resources at the minimum possible cost
  • Scheduling of activities and assigning of tasks
  • implementing Plans
  • Appraise Project Performance


What is Project Management ?
Project management is the process of planning, organizing, and managing tasks and resources to accomplish a defined objective, usually within constraints on time, resources, or cost

Overview of software project management?

Software managers primarily responsible for software project management. This main activity varies tremendously. It depends on the organization, the nature of the project etc. there are however, two main generic activities such as

Project planning and scheduling - to identify task, mile stones and deliverable and to draw up a project schedule.

Project control and monitoring - to ensure that the work is carried out to the required standards, on time and within budget.

There are several important sub activities related to project planning and control: These include:


  • Staff management plan
  • Estimation plan(cost, time, staffing)
  • Quality management plan
  • Configuration management plan( especially important for software maintenance projects).


Software project management is different from other types of engineering project management in number of ways.


  • They are intangible. The project manager is dependent on documentation to review the progress of the project.
  • We do not have a clear understanding of the software process and there is no standard process for a product in software
  • Large software systems are often one off projects(they are distinct from previous projects, so historical experience is of limited value).

Important Notice!

Dear students and friends. When you commenting please do not mention your email address. Because your email address will be publicly available and visible to all. Soon, it will start sending tons of spams because email crawlers can extract your email from feed text.

To contact me directly regarding any inquiry you may send an email to info@bcslectures.website and I will reply accordingly.