Software Engineering

by JustEtc Publications Ltd




Distributed by justEtc

Microsoft Solution Framework



Microsoft Solution Framework
What is Microsoft Solution Framework(MSF)? It is just a software development methodology that ensures that all elements(Process, People, and Tools ) of a project are successfully managed. Also, it provides guidelines on planning, designing, developing, and deploying of projects.

MSF Process Models It is just a combination of the waterfall model and spiral model. Watrfall model goes step by step until the finish of the project. It uses milestones as an indicator of progress. Spiral model is an iterative model. Where the development proceeds in small cycles and the steps are repeated. Waterfall model is good for projects with clear requirements and goals. Spiral model is good for projects that are not clearly defined and need repeated feedback and modification. MSF uses the milestone approach from waterfall model and iterative approach from spiral model. MSF defines some milestones(steps), go all the way and again come back like the spiral model to improve and modify.

MSF Milestones

Envisioning
Planning
Developing
Stabilizing
Deploying
MSF Team Model

Team Members:
Product Management: Mainly deals with customers and define project requirements, also ensures customer expectations are met.

Project Management: Maintains project development and delivery to the customer

Development: Develops according to the specifications.

Testing: Tests and assures product quality

Release Management: Ensures smooth deployment and operations of the software

User Experience: Supports issues of the users.

One person may be assigned to perform multiple roles. MSF also has suggestion on how to combine responsibities such as the developer should not be assigned to any other role.

MSF Disciplines 1. MSF risk management process
2. MSF readiness management process

MSF project management process:

Integrate planning and conduct change control
Define and manage the scope of the project
Prepare a budget and manage costs
Prepare and track schedules
Ensure that right resources are allocated to the project
Manage contracts and vendors and procure project resources
Facilitate team and external communications
Facilitate the risk management process
Document and monitor the team's quality management process
How to use Iterations in MSF projects

Creating versioned releases
Creating living documents
Creating periodic builds

For details please check:
http://www.microsoft.com/technet/solutionaccelerators/msf/default.mspx



UML Resources



Tools to create UML diagrams from PHP Source
Auto Generate class diagrams from php source


http://www.sparxsystems.com/products/ea_downloads.html
http://uml.sourceforge.net/download.php
http://www.excelsoftware.com/php_models.pdf
http://www.codegeneration.net/generator.php?id=220

UML Theory--You can learn and Design by Hand(or visio/MS-Word)
Short, to the point excellent: http://dn.codegear.com/article/31863
Not Bad but lengthy: http://www.jeckle.de/umllinks.htm#tutorials
Just Ok: http://www.sparxsystems.com.au/UML_Tutorial.htm



Personal Character and Programming



If I worked with a programmer who looked busy all the time, I'd  assume that he was not a good programmer 
because he wasn't using his most valuable tool, his brain. -- Steve Mcconnell


Personal Character and Programming
----------------------------------
For a software engineer the only building material is the human intellect and the primary tool is he himself. 

Character is the more decisive factor than intelligence in the make up of a superior programmer.

The best programmers of the world are the most humble. They realize how small their brain is for programming 
and they agree their limitations.

Being humble gives opportunities to learn more about programming


Human brain is really limited to understand an average program fully. So what better programmers do (adopt better habits) are:

1.  Decompose systems into smaller sub-systems. Write short routines. It reduces load from the brain

2. Good programmers review, inspect, and test their codes/designs to compensate for brain limitations

3. Good programmers follow standard and proven conventions to reduce load from their brain


Ways to be a good programmer:

Curiosity is important

Experiment 

Read about problem solving

Read books and periodicals

Read case studies

Network with other programmers

Adopt good programming habits

Avoid laziness


Experince, persistence, and guts are sometimes hurtful to the programmers 

To be a good programmer developing the right programming habits is the most important strategy



Design in construction



Design in construction
When software development does not go through a detailed design phase, developers require to think the design of the part they are working on and how the design fits together with the other components and the interface of the software. It's always better to think about the design and algorithm before coding it. Also, before compiling, it's always better to mentally check your code that the algorithm is right. Also, you can fix/determine/consider some test data and mentally check that the algorithm is generating the expected output. If not, check your design, algorithm, and code.

When the development method goes through a detailed design phase, while coding as a developer you should be clear of the requirements of the part and the design of the part. Then you should also think if your algorithm/implementation will meet the required functionalities and design requirements. Several industry studies show that 16-19% of the developer errors are due to misinterpretation or the misunderstanding of the design and requirements.



Client Focused Software Development: What does client focused mean? Just the Basic



What is it

Client = end user, purchaser of your product/service, for whom you are developing the software. Client Focused Software Development focuses on client's need, client's business, client's business operations. It tries to develop software that reflect clients' need, ambitions, company image, business profit, operational flexibility/improvement, employee satisfaction, operator satisfaction, cost the right/appropriate budget.

. How to achieve?



Resources:



Software Project Failure



In 1994 Standishgroup (http://standishgroup.com/chaos_resources/chronicles.php), documented billions of dollars wastage in failure software development projects and also examined the reasons. Top two reasons are:

  1. Incomplete requirements
  2. Lack of user involvement


Reference: IEEE Computer Magazine, March 2008: Issue on Software Engineering. Page:95



Software Engineering Certification - CSDP 2008 IEEE



Topics:

Resources



Software Engineering Code of Ethics and Professional Practice



Software Engineering Code of Ethics and Professional Practice



Very Small Enterprises (Software) : Software Engineering



Very Small Enterprises (VSE) have significant contribution in software products and service industry. In Europe 85% IT sector companies have only 1 - 10 employees, 78% of Montreal, Canada based companies have < 25 employees, 50% have fewer than 10 [2005], 66% of US companies have 1-10 employees [2002].

Current software engineering standards do not address the needs of these organizations. It is also difficult for VSEs to achieve certifications such as ISO and IEEE and VSEs usually lack the capability to be identified as quality software producers. Most VSEs do not have the resources in terms of number of employees, cost, and time - or see a net benefit in establishing software life cycle processes.

In 2005, WG24 was established to define a software engineering standard for VSEs. WG24 is now justifying the following hypotheses regarding VSEs to find an appropriate standard for them.

Initially, WG24 is analyzing Moprosoft, a Mexican standard based on ISO standard for small and medium enterprises to achieve their objective



Improve your status from "good developer" to "great developer"!



Check this article: Improve your status from "good developer" to "great developer"!



Why things go wrong?



What are the problems?
End user's perspective

A client's perspective
A developer's perspective
Aspects of Poor System Usability Why things go wrong?
Quality Problems
Productivity Problems
Hidden Costs of Poor Design
Ref: Object oriented Analysis and Design using UML by S. Bennett et. al.



Unified Software Development Process





Some random information on Software Engineering