Sunday, March 11, 2018

22. People CMM

The P-CMM can be used as a framework for improving the way in which an organisation manages its human assets,  a five-level model from initial to optimizing. Its strategic objectives include: increasing the capability of an organisation involved in software development by increasing the capability of its workforce; aligning the organization and its employee’s motivation; and retention of critical human assets.
image
Please read this link : https://ifs.host.cs.st-andrews.ac.uk/Books/SE9/Web/Management/P-CMM.html
whats the similarity of P-CMM and Agile ?
Similar concept in Agile philosophy in the areas of:
Individuals and interactions over Processes and tools
Working software over Comprehensive documentation
Customer collaboration over Contract negotiation
The agile philosophy re “Individuals and interactions over Processes and tools” gives emphasis to such things as: building projects around motivated individuals; their working environment and support needs; trust, autonomy, and self-organizing teams to get the job done.
Now try to answer September 2017 Question 5 -  part b

Saturday, March 10, 2018

21. Component Based Software Development

What is a Component ?
A component was seen as an element of a software system that could be accessed, using a remote procedure call mechanism, by other components running on separate computers. Components are higher-level abstractions than objects and are defined by their interfaces. They are usually larger than individual objects and all implementation details are hidden from other components

What is CBSE ?
CBSE is the process of defining, implementing, and integrating or composing loosely coupled, independent components into systems.

Benefit of CBSE
It has become as an important software development approach because software systems are becoming larger and more complex. Customers are demanding more dependable software that is delivered and deployed more quickly. The only way that we can cope with complexity and deliver better software more quickly is to reuse rather than reimplement software components

Design Principles of Components
1. Components are independent so they do not interfere with each other’s operation. Implementation details are hidden. The component’s implementation can be changed without affecting the rest of the system.
2. Components communicate through well-defined interfaces. If these interfaces are maintained, one component can be replaced by another, which provides additional or enhanced functionality.
3. Component infrastructures offer a range of standard services that can be used in application systems. This reduces the amount of new code that has to be developed

Essential Requirements for CBSE
1. Independent components that are completely specified by their interfaces. There should be a clear separation between the component interface and its implementation. This means that one implementation of a component can be replaced by another, without changing other parts of the system.
2. Component standards that facilitate the integration of components. These standards are embodied in a component model. They define, at the very minimum, how component interfaces should be specified and how components communicate. Some models go much further and define interfaces that should be implemented by all conformant components. If components conform to standards, then their operation is independent of their programming language. Components written in different languages can be integrated into the same system.
3. Middleware that provides software support for component integration. To make independent, distributed components work together, you need middleware support that handles component communications. Middleware for component support handles low-level issues efficiently and allows you to focus on application-related problems. In addition, middleware for component support may provide support for resource allocation, transaction management, security, and concurrency.
4. A development process that is geared to component-based software engineering.

Problems with CBSE
CBSE is now a mainstream approach to software engineering—it is a good way to build systems. However, when used as an approach to reuse, problems include component trustworthiness, component certification, requirements compromises, and predicting the properties of components, especially when they are integrated with other components.

Stages of CBSE
1. Component qualification – it is the process of finding suitable components  and evaluating/ conducting an assessment of potential benefits and costs of chosen components  . the most suitable qualified components are then selected for further adaptation
2. Component adaptation – the selected components are modified , improved , to prepare for the next step (ie integration)
3. Component composition (integrating) – it is the process of systematically integrating the selected components
4. Component engineering (design for reuse and implementation of ‘new’ components)
How does it differ from Traditional Software Engineering ?
The process of component-based system development differs from ‘traditional’ development processes.
The main difference is in the separation of the development process of components from the development process of systems.
For the system-level process, the emphasis is on finding the proper components and verifying/evaluating and integrating them. For the component-level process, design for reuse is the main concern.
Component assessment is a new (possibly separate) process for finding and evaluating components.

Try this 
March 2017 A3 
c) Component based systems development (CBSD) methods place a lot of emphasis on component reuse, hence they differ from ‘traditional’ systems development methods.
You are asked:
(i) to briefly explain the main differences between ‘traditional’ and CBSD process/life cycle models;
(4 marks)
(ii) to discuss the main stages of CBSD methods.(7 marks)

20. Software Reuse vs Reusability

REUSE 

use of some previously constructed software
Such as a source code , library , component , a requirement , a design

Benefits of Reuse
  • it saves development effort in a new project
  • reused modules could be well  tested and already executed
  • it saves time allocations , resources , budget allocation , therefore it makes project management convenient
  • standardization
** In order to reuse a component , the component should be reusable
there are many levels of software reuse
  • a line of code
  • a function
  • a module
  • a component
  • a package
  • a sub system
  • an entire program
problems of reuse
  • mismatch of requirements of originally build product and new product
  • issues in components such as hidden errors , incompatibilities may be revealed at later adoptations
  • cost of reuse could be high
Software Reusability

it is the ability that a software or a component is constructed in such a way , that it could be easily adopted , modified  or reused in other projects in future. not only codes , but also , documents , test plans , design diagrams , requirements could be developed in a reusable manner. reusability is a tactic management when building , packaging , distributing , installations , deployment , design or maintenance practiced by a project team.

the following are some the reusability principles
1. Develop components as simple as possible , in the smallest size of code
2. make the software adaptable that enables a component to adjust to different environments with minimal effort
3. modularity – it is the ability that a system has to decompose a system in to a module hierarchy (separabe modules ) each module can execute oin its own. the external data required are defined in it s interface
4. Correctness – it means the accuracy and well tested nature of a system
5. extensibility – it is the ability to grow in future . or its ability to extend its internal structure ,depth of processing , number of functionalities , volume of data etc.
6. Generic – a system component should be written in a more generic way that it could be specified in future when the compnent is reused
7. orthogonal – it refers to separation oif specific features from the rest of the system therefore such features can be combined in to many combinations of modules to generate different results .
in addition to the above features : Consistency , fast, less complex , stable, flexible , volatile ( changeable)

Try this past paper question 
March 2017 - Question 3
a) Explain the difference between software reusability and software reuse. (4 marks)
b) Discuss briefly benefits of and problems associated with software reuse. (10 marks)

Sunday, March 4, 2018

19. How I did BCS exams :)

Hello Everyone ,
I know you all must be getting ready for the battle in few weeks.
Twelve years ago , in 2006 April , I too was just like you and making time tables, revision notes , past paper questions , no pay leaves (talk about it ! )
if you are able to read in sinhala, just spend a few minutes to read how I did my BCS exam in 2006 Smile
I am sure it will bring you energy to work hard and pass the exam.. (feel free to comment )
Smile
Here is the link to my blog post :
image[4]
http://sansaare.blogspot.com/2018/03/bcs.html

Friday, February 23, 2018

Wednesday, January 24, 2018

16 Lesson on 21st Jan Software Maintenance

Hello everyone

We learned software maintenance process in a nutshell.
refer to the following material for more detailed information

shortnote

https://www.dropbox.com/s/u8jmwgjfycqvxrk/BCS%20PGD%20SE2%2021st%20Jan%20Maintenance.docx?dl=0

detailed note

https://www.dropbox.com/s/8ff0jzz2y3afxl5/BCS%20P_GD%20SE2%2021st%20Jan%20Maintenance%20extra%201.ppt?dl=0

https://www.dropbox.com/s/rrwak60bjkrv7ln/BCS%20PGD%20SE2%2021st%20Jan%20Maintenance%20extra%202.ppt?dl=0

Software Evolution :
system evolution involves
understanding the program that has to be changed and then implementing these
changes.

In addition to generic topics , you need to have a sound understanding about software evolution methods
1.  Reverse engineering
2. Re-engineering
3. Software Refactoring

Re-engineering
Reengineering may involve

  • re-documenting the system, 
  • refactoring the system architecture, 
  • translating programs to a modern programming language
  • modifying and updating the structure and values of the system’s data.
  • The functionality of the software is not changed and normally, you should try to avoid making major changes to the system architecture.
Why Re-engineer ?

To make legacy software systems easier to maintain, you can reengineer these systems to improve their structure and understandability. The cost of reengineering may be significantly less than the cost
of developing new software.



Reverse Engineering 

Reverse engineering The program is analyzed and information extracted from it.
This helps to document its organization and functionality. Again, this process is
usually completely automated.

Refactoring 

Refactoring is the process of making improvements to a program to slow down degradation
through change. It means modifying a program to improve its structure, to reduce its complexity, or to make it easier to understand.When you refactor a program, you should not add functionality but should concentrate on program improvement. You can therefore think of refactoring as ‘preventative maintenance’ that reduces the problems of future change.

whats the difference between Re-Engineering and Refactoring ?

Reengineering takes place after a system has been maintained for some time and maintenance costs are increasing. You use automated tools to process and reengineer a legacy system to create a
new system that is more maintainable. 

Refactoring is a continuous process of improvement throughout the development and evolution process. It is intended to avoid the structure and code degradation that increases the costs and difficulties of maintaining a system

Can you try this question ? 
March 2016 A2 
b) Explain the differences between reverse engineering, re-engineering and re-structuring in software projects. (6 marks)
c) Outline the process of preventive maintenance and discuss why such maintenance is needed. (9 marks)